More work to ensure messages from a node are valid for the domain, and fix domain flatten to check for zone if one is supplied
This commit is contained in:
parent
e611dcbe11
commit
cc04ddd7b3
@ -236,7 +236,7 @@ class MessageProcess implements ShouldQueue
|
||||
->single();
|
||||
|
||||
if (! $ea) {
|
||||
Log::alert(sprintf('%s:! Echoarea [%s] doesnt exist for zone [%d]',self::LOGKEY,$this->msg->echoarea,$this->msg->fboss_o->zone->zone_id));
|
||||
Log::alert(sprintf('%s:! Echoarea [%s] doesnt exist for zone [%d-%d]',self::LOGKEY,$this->msg->echoarea,$this->msg->fboss_o->zone->domain_id,$this->msg->fboss_o->zone->zone_id));
|
||||
|
||||
Notification::route('netmail',$this->pktsrc)->notify(new EchoareaNotExist($this->msg));
|
||||
return;
|
||||
@ -244,6 +244,14 @@ class MessageProcess implements ShouldQueue
|
||||
|
||||
Log::debug(sprintf('%s:- Processing echomail [%s] in [%s].',self::LOGKEY,$this->msg->msgid,$this->msg->echoarea));
|
||||
|
||||
if (! $this->pktsrc->zone->domain->zones->pluck('zone_id')->contains($this->msg->fboss_o->zone->zone_id)) {
|
||||
Log::alert(sprintf('%s:! The message [%s] is from a different zone [%d] than the packet sender [%d]',
|
||||
self::LOGKEY,
|
||||
$this->msg->msgid,
|
||||
$this->msg->fboss_o->zone->zone_id,
|
||||
$this->pktsrc->zone->zone_id));
|
||||
}
|
||||
|
||||
// Check for duplicate messages
|
||||
// FTS-0009.001
|
||||
if ($this->msg->msgid) {
|
||||
@ -295,16 +303,22 @@ class MessageProcess implements ShouldQueue
|
||||
}
|
||||
|
||||
// @todo Can the sender create it if it doesnt exist?
|
||||
|
||||
// Can the system send messages to this area?
|
||||
if (! $ea->sec_write || ($this->pktsrc->security < $ea->sec_write)) {
|
||||
Log::alert(sprintf('%s:! FTN [%s] is not allowed to post [%s] to [%s].',self::LOGKEY,$this->msg->fboss,$this->msg->msgid,$ea->name));
|
||||
if (! $this->msg->rescanned->count())
|
||||
Notification::route('netmail',$this->pktsrc)->notify(new EchoareaNoWrite($this->msg));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// If the node is not subscribed
|
||||
if ($this->pktsrc->echoareas->search(function($item) use ($ea) { return $item->id === $ea->id; }) === FALSE)
|
||||
if ($this->pktsrc->echoareas->search(function($item) use ($ea) { return $item->id === $ea->id; }) === FALSE) {
|
||||
Log::alert(sprintf('%s:! FTN [%s] is not subscribed to [%s] for [%s].',self::LOGKEY,$this->msg->fboss,$ea->name,$this->msg->msgid));
|
||||
|
||||
if (! $this->msg->rescanned->count())
|
||||
Notification::route('netmail',$this->pktsrc)->notify(new EchoareaNotSubscribed($this->msg));
|
||||
}
|
||||
|
||||
// We know about this area, store it
|
||||
$o = new Echomail;
|
||||
|
@ -530,7 +530,7 @@ class Address extends Model
|
||||
$do = $zo?->domain;
|
||||
}
|
||||
|
||||
if ($do && $do->flatten)
|
||||
if ($do && $do->flatten && (($ftn['z'] === 0) || $do->zones->pluck('zone_id')->contains($ftn['z'])))
|
||||
$o = self::findZone($do,$ftn['n'],$ftn['f'],$ftn['p'],$trashed);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user