<?php namespace App\Console\Commands\Debug; use Illuminate\Console\Command; use App\Models\Address; class PacketDump extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'debug:packet:dump'. ' {type : Type of packet, netmail|echomail }'. ' {ftn : FTN}'. ' {file? : filename}'; /** * The console command description. * * @var string */ protected $description = 'Create an outgoing FTN packet'; /** * Execute the console command. * * @return int * @throws \Exception */ public function handle(): int { $ao = Address::findFTN($this->argument('ftn')); switch (strtolower($this->argument('type'))) { case 'netmail': $pkt = $ao->getNetmail(); break; case 'echomail': $pkt = $ao->getEchomail(); break; default: $this->error('Unknown type: '.$this->argument('type')); throw new \Exception('Unknown type: '.$this->argument('type')); } if (is_null($pkt)) { $this->info(sprintf('No packet for [%s] of type [%s]',$this->argument('ftn'),$this->argument('type'))); return self::SUCCESS; } if (! $this->argument('file')) { $this->info('Item Name:'.$pkt->name); $this->info('Item Type:'.get_class($pkt)); $this->info('Dump:'); echo hex_dump((string)$pkt); } else { $f = fopen($this->argument('file'),'w+'); fputs($f,(string)$pkt); fclose($f); } return self::SUCCESS; } }