Code improvement to our_address(), reducing arguments
This commit is contained in:
parent
1c270025cf
commit
bba6f93fbc
@ -70,7 +70,7 @@ class HubStats extends Dynamic
|
|||||||
|
|
||||||
$header = "| %-12s | %4d | %3d | %3d | %16s | %5s | %5s |\r\n";
|
$header = "| %-12s | %4d | %3d | %3d | %16s | %5s | %5s |\r\n";
|
||||||
|
|
||||||
$output = sprintf("Hub Status for [%s] as at [%s]\r\n",our_address($this->ao->zone->domain,$this->ao)->ftn,$date);
|
$output = sprintf("Hub Status for [%s] as at [%s]\r\n",our_address($this->ao)->ftn,$date);
|
||||||
$output .= "\r";
|
$output .= "\r";
|
||||||
$output .= "+--------------+------+-----+-----+------------------+-------+-------+\r\n";
|
$output .= "+--------------+------+-----+-----+------------------+-------+-------+\r\n";
|
||||||
$output .= "| FTN | ECHO | NET |FILES| LAST SESSION | MODE |AUTOHLD|\r\n";
|
$output .= "| FTN | ECHO | NET |FILES| LAST SESSION | MODE |AUTOHLD|\r\n";
|
||||||
|
@ -90,7 +90,7 @@ class Tic extends FTNBase
|
|||||||
if (! $this->to)
|
if (! $this->to)
|
||||||
throw new \Exception('No to address defined');
|
throw new \Exception('No to address defined');
|
||||||
|
|
||||||
$sysaddress = our_address($this->to->zone->domain,$this->to);
|
$sysaddress = our_address($this->to);
|
||||||
|
|
||||||
$result = collect();
|
$result = collect();
|
||||||
|
|
||||||
|
@ -829,7 +829,7 @@ class Address extends Model
|
|||||||
public function getPacket(Collection $msgs,string $passwd=NULL): ?Packet
|
public function getPacket(Collection $msgs,string $passwd=NULL): ?Packet
|
||||||
{
|
{
|
||||||
$s = Setup::findOrFail(config('app.id'));
|
$s = Setup::findOrFail(config('app.id'));
|
||||||
$ao = our_address($this->zone->domain,$this);
|
$ao = our_address($this);
|
||||||
|
|
||||||
// If we dont match on the address, we cannot pack mail for that system
|
// If we dont match on the address, we cannot pack mail for that system
|
||||||
if (! $ao) {
|
if (! $ao) {
|
||||||
|
@ -214,7 +214,7 @@ final class Echomail extends Model implements Packet
|
|||||||
{
|
{
|
||||||
Log::info(sprintf('%s:+ Bundling [%s]',self::LOGKEY,$this->id));
|
Log::info(sprintf('%s:+ Bundling [%s]',self::LOGKEY,$this->id));
|
||||||
|
|
||||||
$sysaddress = our_address($this->fftn->zone->domain,$this->fftn);
|
$sysaddress = our_address($this->fftn);
|
||||||
|
|
||||||
if (! $sysaddress)
|
if (! $sysaddress)
|
||||||
throw new \Exception(sprintf('%s:! We dont have an address in this network? (%s)',self::LOGKEY,$this->fftn->zone->domain->name));
|
throw new \Exception(sprintf('%s:! We dont have an address in this network? (%s)',self::LOGKEY,$this->fftn->zone->domain->name));
|
||||||
|
@ -210,7 +210,7 @@ final class Netmail extends Model implements Packet
|
|||||||
// Add our address to the VIA line
|
// Add our address to the VIA line
|
||||||
$via->push(
|
$via->push(
|
||||||
sprintf('%s @%s.UTC %s %d.%d/%s %s',
|
sprintf('%s @%s.UTC %s %d.%d/%s %s',
|
||||||
our_address($this->fftn->zone->domain,$this->fftn)->ftn3d,
|
our_address($this->fftn)->ftn3d,
|
||||||
Carbon::now()->utc()->format('Ymd.His'),
|
Carbon::now()->utc()->format('Ymd.His'),
|
||||||
str_replace(' ','_',Setup::PRODUCT_NAME),
|
str_replace(' ','_',Setup::PRODUCT_NAME),
|
||||||
Setup::PRODUCT_VERSION_MAJ,
|
Setup::PRODUCT_VERSION_MAJ,
|
||||||
|
@ -60,7 +60,7 @@ abstract class Echomails extends Notification //implements ShouldQueue
|
|||||||
$o->datetime = Carbon::now();
|
$o->datetime = Carbon::now();
|
||||||
$o->tzoffset = $o->datetime->utcOffset();
|
$o->tzoffset = $o->datetime->utcOffset();
|
||||||
|
|
||||||
$o->fftn_id = ($x=our_address($mo->fboss_o->zone->domain,$mo->fboss_o))->id;
|
$o->fftn_id = ($x=our_address($mo->fboss_o))->id;
|
||||||
$o->flags = (Message::FLAG_LOCAL);
|
$o->flags = (Message::FLAG_LOCAL);
|
||||||
|
|
||||||
$o->tearline = sprintf('%s (%04X)',Setup::PRODUCT_NAME,Setup::PRODUCT_ID);
|
$o->tearline = sprintf('%s (%04X)',Setup::PRODUCT_NAME,Setup::PRODUCT_ID);
|
||||||
|
@ -48,6 +48,7 @@ abstract class Netmails extends Notification //implements ShouldQueue
|
|||||||
|
|
||||||
protected function setupNetmail(object $notifiable): Netmail
|
protected function setupNetmail(object $notifiable): Netmail
|
||||||
{
|
{
|
||||||
|
// @todo Redirect netmails to Hubs or higher to the admin
|
||||||
$ao = $notifiable->routeNotificationFor(static::via);
|
$ao = $notifiable->routeNotificationFor(static::via);
|
||||||
|
|
||||||
$o = new Netmail;
|
$o = new Netmail;
|
||||||
@ -57,7 +58,7 @@ abstract class Netmails extends Notification //implements ShouldQueue
|
|||||||
$o->datetime = Carbon::now();
|
$o->datetime = Carbon::now();
|
||||||
$o->tzoffset = $o->datetime->utcOffset();
|
$o->tzoffset = $o->datetime->utcOffset();
|
||||||
|
|
||||||
$o->fftn_id = our_address($ao->zone->domain,$ao)->id;
|
$o->fftn_id = our_address($ao)->id;
|
||||||
$o->tftn_id = $ao->id;
|
$o->tftn_id = $ao->id;
|
||||||
$o->flags = (Message::FLAG_LOCAL|Message::FLAG_PRIVATE);
|
$o->flags = (Message::FLAG_LOCAL|Message::FLAG_PRIVATE);
|
||||||
$o->cost = 0;
|
$o->cost = 0;
|
||||||
|
@ -16,7 +16,7 @@ trait MsgID
|
|||||||
{
|
{
|
||||||
// Only create a MSGID for locally generated content
|
// Only create a MSGID for locally generated content
|
||||||
if ((! $this->exists) && ($this->flags & Message::FLAG_LOCAL) && (is_null(Arr::get($this->attributes,'msgid')))) {
|
if ((! $this->exists) && ($this->flags & Message::FLAG_LOCAL) && (is_null(Arr::get($this->attributes,'msgid')))) {
|
||||||
$ftn = our_address($this->fftn->zone->domain,$this->fftn);
|
$ftn = our_address($this->fftn);
|
||||||
$this->attributes['msgid'] = sprintf('%s %08x',$ftn->ftn4d,timew());
|
$this->attributes['msgid'] = sprintf('%s %08x',$ftn->ftn4d,timew());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
use App\Models\{Address,Domain,Setup,Zone};
|
use App\Models\{Address,Domain,Setup};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate CCITT-CRC16 checksum
|
* Calculate CCITT-CRC16 checksum
|
||||||
@ -83,13 +83,14 @@ if (! function_exists('hexstr')) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return our addresses.
|
* Return our addresses.
|
||||||
* If zone provided, limit the list to those within the zone
|
* If domain provided, limit the list to those within the domain - returning a Collection::class
|
||||||
|
* If address provided, return our address that would be used for the provided address - return Address::class
|
||||||
*
|
*
|
||||||
* @param Domain|NULL $do Limit the addresses for the specific domain
|
* @param Domain|Address|null $o - Domain or Address
|
||||||
* @param Address|null $ao If address is presented, show the address we use when talking to that address
|
|
||||||
* @return Collection|Address|NULL
|
* @return Collection|Address|NULL
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
function our_address(Domain $do=NULL,Address $ao=NULL): Collection|Address|NULL
|
function our_address(Domain|Address $o=NULL): Collection|Address|NULL
|
||||||
{
|
{
|
||||||
static $so = NULL;
|
static $so = NULL;
|
||||||
static $our = NULL;
|
static $our = NULL;
|
||||||
@ -102,15 +103,32 @@ function our_address(Domain $do=NULL,Address $ao=NULL): Collection|Address|NULL
|
|||||||
$our = $so->system->akas;
|
$our = $so->system->akas;
|
||||||
}
|
}
|
||||||
|
|
||||||
$filter = $our;
|
// If we dont have any addresses
|
||||||
if ($do)
|
if ($our->count() === 0)
|
||||||
$filter = $our->filter(function($item) use ($do) { return $item->zone->domain_id === $do->id; })->sortBy('role');
|
return NULL;
|
||||||
|
|
||||||
|
// We havent asked for an address/domain, so we'll return them all.
|
||||||
|
if (is_null($o))
|
||||||
|
return $our;
|
||||||
|
|
||||||
|
// We are requesting a list of addresses for a Domain, or a specific Address, and we have more than 1
|
||||||
|
switch (get_class($o)) {
|
||||||
|
case Address::class:
|
||||||
|
$filter = $our->filter(function($item) use ($o) { return $item->zone->domain_id === $o->zone->domain_id; })->sortBy('role');
|
||||||
|
|
||||||
// If we are looking for a specific address, and there is only 1 result, return it, otherwise return what we have
|
// If we are looking for a specific address, and there is only 1 result, return it, otherwise return what we have
|
||||||
if ($ao && config('fido.strict') && ($x=$filter->filter(function($item) use ($ao) { return $item->role <= $ao->role; })->sortBy('role'))->count())
|
if (config('fido.strict') && ($x=$filter->filter(function($item) use ($o) { return $item->role <= $o->role; })->sortBy('role'))->count())
|
||||||
$filter = $x;
|
$filter = $x;
|
||||||
|
|
||||||
return $ao ? $filter->last() : ($do ? $filter : $our);
|
return $filter->last();
|
||||||
|
|
||||||
|
case Domain::class:
|
||||||
|
return $our->filter(function($item) use ($o) { return $item->zone->domain_id === $o->id; })->sortBy('role');
|
||||||
|
|
||||||
|
// We shouldnt get here
|
||||||
|
default:
|
||||||
|
throw new Exception('Unhandled class: '.get_class($o));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user