Fix for limiting AKAs, show parent PID that forked child, other minor fixes

This commit is contained in:
Deon George 2023-07-08 18:00:23 +10:00
parent 02105b10fb
commit faeec61aeb
5 changed files with 12 additions and 21 deletions

View File

@ -251,7 +251,8 @@ final class Receive extends Item
if (file_exists($this->file) if (file_exists($this->file)
&& (Storage::disk('local')->lastModified($this->local_path($ao)) === $this->mtime) && (Storage::disk('local')->lastModified($this->local_path($ao)) === $this->mtime)
&& (Storage::disk('local')->size($this->local_path($ao)) === $this->size)) { && (Storage::disk('local')->size($this->local_path($ao)) === $this->size))
{
Log::alert(sprintf('%s:- File already exists - skipping [%s]', self::LOGKEY, $this->file)); Log::alert(sprintf('%s:- File already exists - skipping [%s]', self::LOGKEY, $this->file));
return Protocol::FOP_SKIP; return Protocol::FOP_SKIP;

View File

@ -249,11 +249,15 @@ abstract class Protocol
*/ */
public function onConnect(SocketClient $client): ?int public function onConnect(SocketClient $client): ?int
{ {
$ppid = getmypid();
$pid = pcntl_fork(); $pid = pcntl_fork();
if ($pid === -1) if ($pid === -1)
throw new SocketException(SocketException::CANT_ACCEPT,'Could not fork process'); throw new SocketException(SocketException::CANT_ACCEPT,'Could not fork process');
if ($pid)
Log::info(sprintf('%s:- Running connection in pid [%d] (%d)',self::LOGKEY,$pid,$ppid));
// Parent return ready for next connection // Parent return ready for next connection
return $pid; return $pid;
} }
@ -295,11 +299,12 @@ abstract class Protocol
/** /**
* Our addresses to send to the remote * Our addresses to send to the remote
*
* @return Collection * @return Collection
*/ */
protected function our_addresses(): Collection protected function our_addresses(): Collection
{ {
if ($this->setup->optionGet(Setup::O_HIDEAKA)) { if ($this->setup->optionGet(Setup::O_HIDEAKA,'options_options')) {
$addresses = collect(); $addresses = collect();
foreach (($this->originate ? $this->node->aka_remote_authed : $this->node->aka_remote) as $ao) foreach (($this->originate ? $this->node->aka_remote_authed : $this->node->aka_remote) as $ao)

View File

@ -203,23 +203,9 @@ final class Binkp extends BaseProtocol
// If we are originating, we'll show the remote our address in the same network // If we are originating, we'll show the remote our address in the same network
if ($this->originate) { if ($this->originate) {
if ($this->setup->optionGet(Setup::O_HIDEAKA)) { $addresses = $this->our_addresses();
$addresses = collect();
foreach ($this->node->aka_remote_authed as $ao) $this->msgs(self::BPM_ADR,$addresses->pluck('ftn')->join(' '));
$addresses = $addresses->merge($this->setup->system->match($ao->zone,Address::NODE_ZC|Address::NODE_RC|Address::NODE_NC|Address::NODE_HC|Address::NODE_ACTIVE|Address::NODE_PVT|Address::NODE_POINT));
$addresses = $addresses->unique();
Log::debug(sprintf('%s:- Presenting limited AKAs [%s]',self::LOGKEY,$addresses->pluck('ftn')->join(',')));
} else {
$addresses = $this->setup->system->addresses;
Log::debug(sprintf('%s:- Presenting ALL our AKAs [%s]',self::LOGKEY,$addresses->pluck('ftn')->join(',')));
}
$this->msgs(self::BPM_ADR,$this->setup->system->addresses->pluck('ftn')->join(' '));
} }
} }

View File

@ -38,7 +38,6 @@ class AddressPoll implements ShouldQueue
if (! $this->ao->system->mailer_preferred->count() || ($this->mo && (! $this->ao->system->mailer_preferred->find($this->mo)))) if (! $this->ao->system->mailer_preferred->count() || ($this->mo && (! $this->ao->system->mailer_preferred->find($this->mo))))
throw new \Exception(sprintf('Unable to poll [%s] missing mailer details',$this->ao->ftn)); throw new \Exception(sprintf('Unable to poll [%s] missing mailer details',$this->ao->ftn));
foreach ($this->ao->system->mailer_preferred as $o) { foreach ($this->ao->system->mailer_preferred as $o) {
// If we chose a protocol, skip to find the mailer details for it // If we chose a protocol, skip to find the mailer details for it
if ($this->mo && ($o->id !== $this->mo->id)) if ($this->mo && ($o->id !== $this->mo->id))
@ -51,7 +50,7 @@ class AddressPoll implements ShouldQueue
} catch (SocketException $e) { } catch (SocketException $e) {
Log::error(sprintf('%s:! Unable to connect to [%s]: %s',self::LOGKEY,$this->ao->ftn,$e->getMessage())); Log::error(sprintf('%s:! Unable to connect to [%s]: %s',self::LOGKEY,$this->ao->ftn,$e->getMessage()));
abort(500); exit(1);
} }
switch ($o->name) { switch ($o->name) {

View File

@ -79,7 +79,7 @@ use App\Classes\Protocol\{Binkp,EMSI,DNS};
<h3>Site Permissions</h3> <h3>Site Permissions</h3>
<div class="form-check form-switch"> <div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="hideaka" name="options[hideaka]" value="{{ old('options.hideaka',$o->hideaka ?: Setup::O_HIDEAKA) }}" @if(old('options.hideaka',$o->optionGet(Setup::O_HIDEAKA,'options_options'))) checked @endif> <input class="form-check-input" type="checkbox" id="hideaka" name="options[hideaka]" value="{{ Setup::O_HIDEAKA }}" @if(old('options.hideaka',$o->optionGet(Setup::O_HIDEAKA,'options_options'))) checked @endif>
<label class="form-check-label" for="hideaka">Hide AKA to different Domains</label> <label class="form-check-label" for="hideaka">Hide AKA to different Domains</label>
</div> </div>
</div> </div>