Use regex for received file evaluation. Fixes recording received packet names

This commit is contained in:
Deon George 2023-11-23 23:17:13 +11:00
parent 455fed52ee
commit 0800c48928
5 changed files with 14 additions and 10 deletions

View File

@ -25,6 +25,8 @@ class Packet extends FTNBase implements \Iterator, \Countable
private const BLOCKSIZE = 1024;
protected const PACKED_MSG_LEAD = "\02\00";
public const regex = '([[:xdigit:]]{4})(?:-(\d{4,10}))?-(.+)';
public const PACKET_TYPES = [
'2.2' => FTNBase\Packet\FSC45::class,
'2+' => FTNBase\Packet\FSC48::class,

View File

@ -182,10 +182,10 @@ class Tic extends FTNBase
$this->file->recv_tic = preg_replace('/\.[Tt][Ii][Cc]$/','',$filename);
$m = [];
if (preg_match('/^(([0-9A-F]{4})-)?(([0-9]{4,10})-)?(.*).[Tt][Ii][Cc]$/',$filename,$m)) {
$aid = $m[2];
$mtime = $m[4];
$this->file->recv_tic = $m[5];
if (preg_match(sprintf('/^%s\.[Tt][Ii][Cc]$/',Packet::regex),$filename,$m)) {
$aid = $m[1];
$mtime = $m[2];
$this->file->recv_tic = $m[3];
}
$ldesc = '';

View File

@ -7,6 +7,8 @@ use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Log;
use Symfony\Component\HttpFoundation\File\File as FileBase;
use App\Classes\FTN\Packet;
class File extends FileBase implements \Iterator
{
private const LOGKEY = 'F--';
@ -108,7 +110,7 @@ class File extends FileBase implements \Iterator
*/
public function rawName(): string
{
return preg_replace('/^[0-9A-F]{4}-([0-9]+)-]/','',$this->getFilename());
return preg_replace(sprintf('/^%s\.pkt$/i',Packet::regex),'\3\4',$this->getFilename());
}
/**
@ -129,7 +131,7 @@ class File extends FileBase implements \Iterator
return preg_replace('/.pkt$/i','',Arr::get(stream_get_meta_data($f),'uri'));
} else {
return $this->isPacket() ? preg_replace('/.pkt$/i','',$this->rawName()) : NULL;
return $this->isPacket() ? $this->rawName() : NULL;
}
}
}

View File

@ -45,8 +45,8 @@ class PacketInfo extends Command
if ($this->argument('ftn')) {
$a = Address::findFTN($this->argument('ftn'));
} elseif (preg_match('/^(([0-9A-F]+)-)+/',$this->argument('file'),$m)) {
$a = Address::findOrFail(hexdec($m[2]));
} elseif (preg_match(sprintf('/^%s\.pkt$/',Packet::regex),$this->argument('file'),$m)) {
$a = Address::findOrFail(hexdec($m[1]));
}
foreach ($f as $packet) {

View File

@ -48,8 +48,8 @@ class PacketProcess extends Command
if ($this->argument('ftn')) {
$a = Address::findFTN($this->argument('ftn'));
} elseif (preg_match('/^(([0-9A-F]+)-([0-9]+))+/',$this->argument('file'),$m)) {
$a = Address::findOrFail(hexdec($m[2]));
} elseif (preg_match(sprintf('/^%s\.pkt$/',Packet::regex),$this->argument('file'),$m)) {
$a = Address::findOrFail(hexdec($m[1]));
} else {
$this->error('Unable to determine sender FTN address');