Improvements to handle rogue 2D adresses
This commit is contained in:
parent
967153c70a
commit
da098064bc
@ -254,20 +254,28 @@ class Address extends Model
|
||||
$ftn = self::parseFTN($address);
|
||||
$do = $ftn['d'] ? Domain::where('name',$ftn['d'])->single() : NULL;
|
||||
|
||||
if ($ftn['z'] === 0)
|
||||
Log::alert(sprintf('%s:! newFTN was parsed an FTN [%s] with a zero zone',self::LOGKEY,$address));
|
||||
|
||||
$zo = Zone::where('zone_id',$ftn['z'])
|
||||
->when($do,fn($query)=>$query->where('domain_id',$do->id))
|
||||
->single();
|
||||
|
||||
$o = new self;
|
||||
$o->zone_id = $zo?->id;
|
||||
$o->region_id = $ftn['r'];
|
||||
$o->host_id = $ftn['n'];
|
||||
$o->node_id = $ftn['f'];
|
||||
$o->point_id = $ftn['p'];
|
||||
|
||||
if ($ftn['z'] === 0) {
|
||||
Log::alert(sprintf('%s:! newFTN was parsed an FTN [%s] with a zero zone, adding empty zone in domain',self::LOGKEY,$address));
|
||||
|
||||
$zo = new Zone;
|
||||
$zo->domain_id = $do?->id;
|
||||
|
||||
} else {
|
||||
$zo = Zone::where('zone_id',$ftn['z'])
|
||||
->when($do,fn($query)=>$query->where('domain_id',$do->id))
|
||||
->single();
|
||||
|
||||
$o->zone_id = $zo?->id;
|
||||
}
|
||||
|
||||
$o->zone()->associate($zo);
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
||||
@ -761,6 +769,9 @@ class Address extends Model
|
||||
if (! $this->relationLoaded('zone'))
|
||||
$this->load(['zone:id,domain_id,zone_id']);
|
||||
|
||||
if (! $this->zone)
|
||||
throw new InvalidFTNException(sprintf('Invalid Zone for FTN address [%d/%d.%d@%s]',$this->host_id ?: $this->region_id,$this->node_id,$this->point_id,$this->domain?->name));
|
||||
|
||||
return sprintf('%d:%s',$this->zone->zone_id,$this->getFTN2DAttribute());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user