<?php namespace App\Classes\FTN\Process\Echomail; use Carbon\Carbon; use Carbon\CarbonInterface; use Illuminate\Support\Facades\Log; use App\Classes\FTN\{Message,Process}; use App\Models\{Echoarea,Echomail,Setup}; /** * Process messages to Test * * @package App\Classes\FTN\Process */ final class Test extends Process { private const LOGKEY = 'RT-'; private static array $logo = [ 'Ú¿ÚÄ¿ÚÄ¿Ú¿', ' ³ ³ÄÙÀÄ¿ ³ ', ' Á ÀÄÙÀÄÙ Á ' ]; private const testing = ['test','testing']; public static function handle(Message $msg): bool { if ((strtolower($msg->user_to) !== 'all') || ! in_array(strtolower($msg->subject),self::testing)) return FALSE; Log::info(sprintf('%s:- Processing TEST message from (%s) [%s]',self::LOGKEY,$msg->user_from,$msg->fftn)); $ftns = Setup::findOrFail(config('app.id'))->system->match($msg->fboss_o->zone)->first(); $reply = sprintf("Your test was received here on %s and it looks like you sent it on %s. If that is correct, then it took %s to get here.\r", Carbon::now()->utc()->toDateTimeString(), $msg->date->utc()->toDateTimeString(), $msg->date->diffForHumans(['parts'=>3,'syntax'=>CarbonInterface::DIFF_ABSOLUTE]) ); $reply .= "\r"; $reply .= "\r"; $reply .= "------------------------------ BEING MESSAGE ------------------------------\r"; $reply .= sprintf("TO: %s\r",$msg->user_to); $reply .= sprintf("SUBJECT: %s\r",$msg->subject); $reply .= $msg->message."\r"; $reply .= "------------------------------ CONTROL LINES ------------------------------\r"; $reply .= sprintf("DATE: %s\r",$msg->date->utc()->format('Y-m-d H:i:s')); $reply .= sprintf("MSGID: %s\r",$msg->msgid); foreach ($msg->kludge as $k=>$v) $reply .= sprintf("@%s: %s\r",strtoupper($k),$v); foreach ($msg->via as $via) $reply .= sprintf("VIA: %s\r",$via); $reply .= "------------------------------ END MESSAGE ------------------------------\r"; $eo = Echoarea::where('name',$msg->echoarea)->single(); $o = new Echomail; $o->to = $msg->user_from; $o->from = Setup::PRODUCT_NAME; $o->subject = 'Test Reply'; $o->datetime = Carbon::now(); $o->tzoffset = $o->datetime->utcOffset(); $o->echoarea_id = $eo?->id; $o->reply = $msg->msgid; $o->fftn_id = $ftns->id; $o->flags = Message::FLAG_LOCAL; $o->msg = static::format_msg($reply,self::$logo); $o->tagline = 'I ate a clock yesterday, it was very time-consuming.'; $o->tearline = sprintf('%s (%04X)',Setup::PRODUCT_NAME,Setup::PRODUCT_ID); $o->origin = sprintf('%s (%s)',Setup::PRODUCT_NAME,$ftns->ftn4d); $o->kludges = collect(['chrs'=>$msg->kludge->get('chrs') ?: 'CP437 2']); $o->save(); return TRUE; } }