Complete rework of packet parsing and packet generation

This commit is contained in:
2024-05-17 22:10:54 +10:00
parent 1650d07d5c
commit 29710c37c2
30 changed files with 1394 additions and 1403 deletions

View File

@@ -50,8 +50,8 @@ class PacketAddress extends Command
exit(1);
}
$o = $o->where('id',$this->argument('dbid'))->get();
echo hex_dump($ao->system->packet($ao)->generate($o->where('id',$this->argument('dbid'))->get()));
dd(hex_dump($ao->getPacket($o)));
return Command::SUCCESS;
}
}

View File

@@ -7,7 +7,7 @@ use Illuminate\Support\Facades\Storage;
use App\Classes\File;
use App\Classes\FTN\Packet;
use App\Models\Address;
use App\Models\{Address,Echomail};
class PacketInfo extends Command
{
@@ -31,7 +31,7 @@ class PacketInfo extends Command
* Execute the console command.
*
* @return mixed
* @throws \App\Classes\FTN\InvalidPacketException
* @throws \App\Exceptions\InvalidPacketException
*/
public function handle()
{
@@ -55,27 +55,38 @@ class PacketInfo extends Command
$this->alert(sprintf('File Name: %s',$x));
$this->info(sprintf('Packet Type : %s (%s)',$pkt->type,get_class($pkt)));
$this->info(sprintf('From : %s to %s',$pkt->fftn,$pkt->tftn));
$this->info(sprintf('Dated : %s (%s)',$pkt->date,$pkt->date->timestamp));
$this->info(sprintf('Password : %s (%s)',$pkt->password,$pkt->password ? 'SET' : 'NOT set'));
$this->info(sprintf('Messages : %d',$pkt->messages->count()));
$this->info(sprintf('From : %s to %s',$pkt->fftn->ftn,$pkt->tftn->ftn));
$this->info(sprintf('Dated : %s (%s) [%s]',$pkt->date,$pkt->date->timestamp,$pkt->date->tz->toOffsetName()));
$this->info(sprintf('Password : %s (%s)',$pkt->password ?: '-',$pkt->password ? 'SET' : 'NOT set'));
$this->info(sprintf('Messages : %d',$pkt->count()));
$this->info(sprintf('Tosser : %d (%s) version %s',$pkt->software->code,$pkt->software->name,$pkt->software_ver));
$this->info(sprintf('Capabilities: %x',$pkt->capability));
$this->info(sprintf('Has Errors : %s',$pkt->errors->count() ? 'YES' : 'No'));
$this->info(sprintf('Messages : %d',$pkt->count()));
foreach ($pkt as $msg) {
try {
$this->warn(sprintf('- Date : %s',$msg->date));
$this->warn(sprintf(' - Flags : %s',$msg->flags()->filter()->keys()->join(', ')));
$this->warn(sprintf(' - From : %s (%s)',$msg->user_from,$msg->fftn));
$this->warn(sprintf(' - To : %s (%s)',$msg->user_to,$msg->tftn));
$this->warn(sprintf(' - Subject: %s',$msg->subject));
$this->warn(sprintf(' - Area : %s',$msg->echoarea));
echo "\n";
if ($msg->errors)
try {
$this->warn(sprintf('- Date : %s (%s)',$msg->datetime,$msg->datetime->tz->toOffsetName()));
$this->warn(sprintf(' - Errors : %s',$msg->errors?->errors()->count() ? 'YES' : 'No'));
$this->warn(sprintf(' - Flags : %s',$msg->flags()->keys()->join(', ')));
$this->warn(sprintf(' - Cost : %d',$msg->cost));
$this->warn(sprintf(' - From : %s (%s)',$msg->from,$msg->fftn->ftn));
if ($msg instanceof Echomail)
$this->warn(sprintf(' - To : %s',$msg->to));
else
$this->warn(sprintf(' - To : %s (%s)',$msg->to,$msg->tftn->ftn));
$this->warn(sprintf(' - Subject: %s',$msg->subject));
if ($msg instanceof Echomail)
$this->warn(sprintf(' - Area : %s',$msg->echoarea->name));
if ($msg->errors) {
echo "\n";
$this->error("Errors:");
foreach ($msg->errors->errors()->all() as $error)
$this->line(' - '.$error);
$this->error(' - '.$error);
}
} catch (\Exception $e) {
$this->error('! ERROR: '.$e->getMessage());

View File

@@ -2,13 +2,12 @@
namespace App\Console\Commands;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
use App\Classes\File;
use App\Classes\FTN\Packet;
use App\Jobs\MessageProcess as Job;
use App\Jobs\PacketProcess as Job;
use App\Models\Address;
class PacketProcess extends Command
@@ -35,7 +34,7 @@ class PacketProcess extends Command
* Execute the console command.
*
* @return void
* @throws \App\Classes\FTN\InvalidPacketException
* @throws \App\Exceptions\InvalidPacketException
*/
public function handle()
{
@@ -56,17 +55,8 @@ class PacketProcess extends Command
exit(1);
}
foreach ($f as $packet) {
foreach ($pkt = Packet::process($packet,$f->itemName(),$f->itemSize(),$a?->zone->domain) as $msg) {
// @todo Quick check that the packet should be processed by us.
$this->info(sprintf('Processing message from [%s] with msgid [%s] in (%s)',$msg->fboss,$msg->msgid,$f->pktName()));
$x = Job::dispatchSync($rel_name,$a->zone->domain,$this->option('dontqueue'));
// Dispatch job.
if ($this->option('dontqueue'))
Job::dispatchSync($msg,$f->pktName(),$a,$pkt->fftn_o,Carbon::now(),$this->option('nobot'));
else
Job::dispatch($msg,$f->pktName(),$a,$pkt->fftn_o,Carbon::now(),$this->option('nobot'));
}
}
dd(['job completed'=>$x]);
}
}

View File

@@ -27,7 +27,7 @@ class PacketSystem extends Command
* Execute the console command.
*
* @return mixed
* @throws \App\Classes\FTN\InvalidPacketException
* @throws \App\Exceptions\InvalidPacketException
*/
public function handle()
{