Add packet name for incoming netmails, dont send back messages to sender for areafix messages
This commit is contained in:
parent
bc19f9aa82
commit
63e3397aee
@ -30,7 +30,7 @@ class File extends FileBase implements \Iterator
|
|||||||
|
|
||||||
case NULL:
|
case NULL:
|
||||||
case 'bin':
|
case 'bin':
|
||||||
if ((strcasecmp($this->getExtension(),'pkt') === 0) || ($path instanceof UploadedFile && (strcasecmp($path->getClientOriginalExtension(),'pkt') === 0))) {
|
if ($this->isPacket() || ($path instanceof UploadedFile && (strcasecmp($path->getClientOriginalExtension(),'pkt') === 0))) {
|
||||||
$this->canHandle = TRUE;
|
$this->canHandle = TRUE;
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
@ -81,6 +81,16 @@ class File extends FileBase implements \Iterator
|
|||||||
|
|
||||||
/* METHODS */
|
/* METHODS */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the file is a mail packet
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function isPacket(): bool
|
||||||
|
{
|
||||||
|
return (strcasecmp($this->getExtension(),'pkt') === 0);
|
||||||
|
}
|
||||||
|
|
||||||
public function itemName(): string
|
public function itemName(): string
|
||||||
{
|
{
|
||||||
return ($this->isArchive && $this->valid()) ? Arr::get(stream_get_meta_data($this->current()),'uri') : $this->getFilename();
|
return ($this->isArchive && $this->valid()) ? Arr::get(stream_get_meta_data($this->current()),'uri') : $this->getFilename();
|
||||||
@ -90,4 +100,36 @@ class File extends FileBase implements \Iterator
|
|||||||
{
|
{
|
||||||
return $this->isArchive ? Arr::get($this->zipfile,'size') : $this->getSize();
|
return $this->isArchive ? Arr::get($this->zipfile,'size') : $this->getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the name of the file, without a node ID prefix
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function rawName(): string
|
||||||
|
{
|
||||||
|
return preg_replace('/^[0-9A-F]{4}-/','',$this->getFilename());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the packet name
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public function pktName(): ?string
|
||||||
|
{
|
||||||
|
if ($this->isArchive) {
|
||||||
|
$this->zipfile = $this->z->statIndex($this->counter,\ZipArchive::FL_UNCHANGED);
|
||||||
|
|
||||||
|
$f = $this->z->getStream($this->zipfile['name']);
|
||||||
|
if (! $f)
|
||||||
|
throw new \Exception(sprintf('%s:Failed getting ZipArchive::stream (%s)',self::LOGKEY,$this->z->getStatusString()));
|
||||||
|
|
||||||
|
return preg_replace('/.pkt$/i','',Arr::get(stream_get_meta_data($f),'uri'));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return $this->isPacket() ? preg_replace('/.pkt$/i','',$this->rawName()) : NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -150,9 +150,9 @@ final class Receive extends Item
|
|||||||
try {
|
try {
|
||||||
// Dispatch job.
|
// Dispatch job.
|
||||||
if ($queue)
|
if ($queue)
|
||||||
MessageProcess::dispatch($msg);
|
MessageProcess::dispatch($msg,$f->pktName());
|
||||||
else
|
else
|
||||||
MessageProcess::dispatchSync($msg);
|
MessageProcess::dispatchSync($msg,$f->pktName());
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Log::error(sprintf('%s:! Got error dispatching message [%s] (%d:%s-%s).',self::LOGKEY,$msg->msgid,$e->getLine(),$e->getFile(),$e->getMessage()));
|
Log::error(sprintf('%s:! Got error dispatching message [%s] (%d:%s-%s).',self::LOGKEY,$msg->msgid,$e->getLine(),$e->getFile(),$e->getMessage()));
|
||||||
|
@ -48,7 +48,7 @@ class PacketProcess extends Command
|
|||||||
$this->info(sprintf('Processing message from [%s] with msgid [%s]',$msg->fboss,$msg->msgid));
|
$this->info(sprintf('Processing message from [%s] with msgid [%s]',$msg->fboss,$msg->msgid));
|
||||||
|
|
||||||
// Dispatch job.
|
// Dispatch job.
|
||||||
Job::dispatchSync($msg,$this->option('nobot'));
|
Job::dispatchSync($msg,$f->pktName(),$this->option('nobot'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,12 +21,14 @@ class MessageProcess implements ShouldQueue
|
|||||||
|
|
||||||
private Message $msg;
|
private Message $msg;
|
||||||
private bool $skipbot;
|
private bool $skipbot;
|
||||||
|
private string $packet;
|
||||||
|
|
||||||
public function __construct(Message $msg,bool $skipbot=FALSE)
|
public function __construct(Message $msg,string $packet,bool $skipbot=FALSE)
|
||||||
{
|
{
|
||||||
// Some checks
|
// Some checks
|
||||||
$this->msg = $msg;
|
$this->msg = $msg;
|
||||||
$this->skipbot = $skipbot;
|
$this->skipbot = $skipbot;
|
||||||
|
$this->packet = $packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -43,6 +45,9 @@ class MessageProcess implements ShouldQueue
|
|||||||
// @todo Enable checks to reject duplicate
|
// @todo Enable checks to reject duplicate
|
||||||
// @todo Enable checks to see if this is a file request or file send
|
// @todo Enable checks to see if this is a file request or file send
|
||||||
|
|
||||||
|
$o = $this->create_netmail($this->msg);
|
||||||
|
$o->recv_pkt = $this->packet;
|
||||||
|
|
||||||
// Determine if the message is to this system, or in transit
|
// Determine if the message is to this system, or in transit
|
||||||
if ($ftns->search(function($item) { return $this->msg->tftn == $item->ftn; }) !== FALSE) {
|
if ($ftns->search(function($item) { return $this->msg->tftn == $item->ftn; }) !== FALSE) {
|
||||||
// @todo Check if it is a duplicate message
|
// @todo Check if it is a duplicate message
|
||||||
@ -60,13 +65,17 @@ class MessageProcess implements ShouldQueue
|
|||||||
|
|
||||||
// We'll ignore messages from *fix users
|
// We'll ignore messages from *fix users
|
||||||
if (in_array(strtolower($this->msg->user_from),['filefix','areafix'])) {
|
if (in_array(strtolower($this->msg->user_from),['filefix','areafix'])) {
|
||||||
Log::info(sprintf('Ignoring Netmail to the Hub from (%s) [%s] - its from a bot.',$this->msg->user_from,$this->msg->fftn));
|
|
||||||
|
|
||||||
$o = $this->create_netmail($this->msg);
|
|
||||||
$o->local = TRUE;
|
$o->local = TRUE;
|
||||||
|
|
||||||
$o->save();
|
$o->save();
|
||||||
|
|
||||||
|
Log::info(sprintf('%s:Ignoring Netmail [%d-%s] to the Hub from (%s) [%s] - its from a bot.',
|
||||||
|
self::LOGKEY,
|
||||||
|
$o->id,
|
||||||
|
$this->msg->msgid,
|
||||||
|
$this->msg->user_from,
|
||||||
|
$this->msg->fftn)
|
||||||
|
);
|
||||||
|
|
||||||
$processed = TRUE;
|
$processed = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,19 +131,19 @@ class MessageProcess implements ShouldQueue
|
|||||||
|
|
||||||
// If in transit, store for collection
|
// If in transit, store for collection
|
||||||
} else {
|
} else {
|
||||||
Log::info(sprintf('%s:Netmail [%s] in transit to (%s) [%s] from (%s) [%s].',
|
|
||||||
self::LOGKEY,
|
|
||||||
$this->msg->msgid,
|
|
||||||
$this->msg->user_to,$this->msg->tftn,
|
|
||||||
$this->msg->user_from,$this->msg->fftn,
|
|
||||||
));
|
|
||||||
|
|
||||||
// @todo Check if the message is to a system we know about
|
// @todo Check if the message is to a system we know about
|
||||||
// @todo In transit loop checking
|
// @todo In transit loop checking
|
||||||
// @todo In transit TRACE response
|
// @todo In transit TRACE response
|
||||||
|
|
||||||
$o = $this->create_netmail($this->msg);
|
|
||||||
$o->save();
|
$o->save();
|
||||||
|
|
||||||
|
Log::info(sprintf('%s:Netmail [%d-%s] in transit to (%s) [%s] from (%s) [%s].',
|
||||||
|
self::LOGKEY,
|
||||||
|
$o->id,
|
||||||
|
$this->msg->msgid,
|
||||||
|
$this->msg->user_to,$this->msg->tftn,
|
||||||
|
$this->msg->user_from,$this->msg->fftn,
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Else we are echomail
|
// Else we are echomail
|
||||||
@ -185,6 +194,7 @@ class MessageProcess implements ShouldQueue
|
|||||||
// @todo This duplicate message may have gone via a different path, be nice to record it.
|
// @todo This duplicate message may have gone via a different path, be nice to record it.
|
||||||
//$o->path()->sync($o->path->pluck('id')->merge($this->msg->pathaddress)->toArray());
|
//$o->path()->sync($o->path->pluck('id')->merge($this->msg->pathaddress)->toArray());
|
||||||
// @todo if we have an export for any of the seenby addresses, remove it
|
// @todo if we have an export for any of the seenby addresses, remove it
|
||||||
|
// @todo add received packet details
|
||||||
$o->seenby()->sync($o->seenby->pluck('id')->merge($this->msg->seenaddress)->filter()->toArray());
|
$o->seenby()->sync($o->seenby->pluck('id')->merge($this->msg->seenaddress)->filter()->toArray());
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -636,6 +636,7 @@ class Address extends Model
|
|||||||
public function netmailWaiting(): Collection
|
public function netmailWaiting(): Collection
|
||||||
{
|
{
|
||||||
return Netmail::whereIn('tftn_id',(($x=$this->children) ? $x->pluck('id') : collect())->push($this->id))
|
return Netmail::whereIn('tftn_id',(($x=$this->children) ? $x->pluck('id') : collect())->push($this->id))
|
||||||
|
->where('local',FALSE)
|
||||||
->whereNull('sent_at')
|
->whereNull('sent_at')
|
||||||
->get();
|
->get();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user