<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Support\Arr; use App\Classes\File; use App\Classes\FTN\Packet; use App\Jobs\MessageProcess as Job; use App\Models\Address; class PacketProcess extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'packet:process' .' {file : Packet to process}' .' {--N|nobot : Dont process bots}' .' {ftn? : System the packet is from}'; /** * The console command description. * * @var string */ protected $description = 'Process Packet'; /** * Execute the console command. * * @return mixed * @throws \App\Classes\FTN\InvalidPacketException */ public function handle() { $f = new File($this->argument('file')); $s = $this->argument('ftn') ? Address::findFTN($this->argument('ftn'))->system : NULL; foreach ($f as $packet) { foreach (Packet::process($packet,$f->itemName(),$f->itemSize(),$s) as $msg) { // @todo Quick check that the packet should be processed by us. // @todo validate that the packet's zone is in the domain. $this->info(sprintf('Processing message from [%s] with msgid [%s]',$msg->fboss,$msg->msgid)); // Dispatch job. Job::dispatchSync($msg,$this->option('nobot')); } } } }