2021-07-15 14:54:23 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Jobs;
|
|
|
|
|
|
|
|
use Illuminate\Bus\Queueable;
|
|
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
|
|
use Illuminate\Queue\SerializesModels;
|
|
|
|
|
|
|
|
use App\Classes\FTN\Message;
|
|
|
|
use App\Models\Setup;
|
|
|
|
|
|
|
|
class ProcessPacket implements ShouldQueue
|
|
|
|
{
|
|
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
|
|
|
|
|
|
private Message $msg;
|
|
|
|
|
|
|
|
public function __construct(Message $msg)
|
|
|
|
{
|
|
|
|
// Some checks
|
|
|
|
$this->msg = $msg;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* When calling ProcessPacket - we assume that the packet is from a valid source
|
|
|
|
*/
|
|
|
|
public function handle()
|
|
|
|
{
|
|
|
|
// Load our details
|
|
|
|
$ftns = Setup::findOrFail(config('app.id'))->system->addresses;
|
|
|
|
|
|
|
|
// If we are a netmail
|
|
|
|
if ($this->msg->isNetmail()) {
|
|
|
|
// @todo Enable checks to reject old messages
|
|
|
|
|
|
|
|
// Determine if the message is to this system, or in transit
|
2021-07-18 12:10:21 +00:00
|
|
|
if ($ftns->search(function($item) { return $this->msg->tftn == $item->ftn; }) !== FALSE) {
|
2021-07-15 14:54:23 +00:00
|
|
|
// @todo Check if it is a duplicate message
|
|
|
|
// @todo Check if the message is from a system we know about
|
|
|
|
|
|
|
|
$processed = FALSE;
|
|
|
|
|
|
|
|
// If the message is to a bot, we'll process it
|
|
|
|
foreach (config('process.robots') as $class) {
|
|
|
|
if ($processed = $class::handle($this->msg)) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// If not processed, no users here!
|
|
|
|
if (! $processed) {
|
|
|
|
dump('message not processed, no users here');
|
|
|
|
}
|
|
|
|
|
|
|
|
// If in transit, store for collection
|
|
|
|
} else {
|
|
|
|
// @todo Check if the message is to a system we know about
|
|
|
|
// @todo In transit loop checking
|
|
|
|
// @todo In transit TRACE response
|
|
|
|
|
|
|
|
dump('netmail in transit');
|
|
|
|
}
|
|
|
|
|
|
|
|
// Else we are echomail
|
|
|
|
} else {
|
|
|
|
dump('echomail');
|
|
|
|
// Determine if we know about this echo area
|
|
|
|
// Can the sender create it if it doesnt exist?
|
|
|
|
// Create it, or
|
|
|
|
|
|
|
|
// Else record in bad area
|
|
|
|
|
|
|
|
// We know about this area, store it
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|