Remove CommProtocolReceive commands, Remove protocol onConnect() functions, pass Setup::class to protocols

This commit is contained in:
2024-11-09 08:58:09 +11:00
parent 72ad1307c5
commit bf3fce252d
10 changed files with 31 additions and 203 deletions

View File

@@ -3,7 +3,6 @@
namespace App\Classes;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use App\Classes\File\{Receive,Send};
@@ -138,9 +137,13 @@ abstract class Protocol
abstract protected function protocol_session(bool $force_queue=FALSE): int;
public function __construct()
/**
* @param Setup $setup
* @throws \Exception
*/
public function __construct(Setup $setup)
{
$this->setup = Config::get('setup',Setup::findOrFail(config('app.id')));
$this->setup = $setup;
// Some initialisation details
switch (get_class($this)) {
@@ -267,20 +270,27 @@ abstract class Protocol
* Incoming Protocol session
*
* @param SocketClient $client
* @return int|null
* @return int
* @throws SocketException
*/
public function onConnect(SocketClient $client): ?int
public function onConnect(SocketClient $client): int
{
$pid = pcntl_fork();
if ($pid === -1)
throw new SocketException(SocketException::CANT_ACCEPT,'Could not fork process');
// If our parent returns a PID, we've forked
if ($pid)
Log::info(sprintf('%s:+ New connection from [%s], thread [%d] created',self::LOGKEY,$client->address_remote,$pid));
// Parent return ready for next connection
// This is the new thread
else {
Log::withContext(['pid'=>getmypid()]);
$this->session($client,(new Address));
}
return $pid;
}
@@ -347,10 +357,10 @@ abstract class Protocol
}
/**
* Initialise our Session
* Setup a session with a remote client
*
* @param SocketClient $client
* @param Address|null $o
* @param SocketClient $client Socket details of session
* @param Address|null $o If we have an address, we originated a session to this Address
* @return int
* @throws \Exception
*/

View File

@@ -12,7 +12,6 @@ use App\Classes\Crypt;
use App\Classes\Node;
use App\Classes\Protocol as BaseProtocol;
use App\Classes\Sock\Exception\SocketException;
use App\Classes\Sock\SocketClient;
use App\Exceptions\{FileGrewException,InvalidFTNException};
use App\Models\{Address,Setup};
@@ -142,27 +141,6 @@ final class Binkp extends BaseProtocol
*/
private Crypt $crypt_out;
/**
* Incoming BINKP session
*
* @param SocketClient $client
* @return int|null
* @throws SocketException
*/
public function onConnect(SocketClient $client): ?int
{
// If our parent returns a PID, we've forked
if (! parent::onConnect($client)) {
Log::withContext(['pid'=>getmypid()]);
$this->session($client,(new Address));
$this->client->close();
exit(0);
}
return NULL;
}
/**
* BINKD handshake
*

View File

@@ -6,7 +6,6 @@ use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use App\Classes\Protocol as BaseProtocol;
use App\Classes\Sock\SocketClient;
use App\Models\{Address,Domain,Mailer};
/**
@@ -64,22 +63,6 @@ final class DNS extends BaseProtocol
public const DNS_TYPE_OPT = 41; // OPT Records
public const DNS_TYPE_DS = 43; // DS Records (Delegation signer RFC 4034)
public function onConnect(SocketClient $client): ?int
{
// If our parent returns a PID, we've forked
if (! parent::onConnect($client)) {
Log::withContext(['pid'=>getmypid()]);
$this->client = $client;
$this->protocol_session();
Log::debug(sprintf('%s:= onConnect - Connection closed [%s]',self::LOGKEY,$client->address_remote));
exit(0);
}
return NULL;
}
protected function protocol_init(): int
{
// N/A

View File

@@ -7,7 +7,6 @@ use Illuminate\Support\Facades\Log;
use App\Classes\Protocol as BaseProtocol;
use App\Classes\Sock\Exception\SocketException;
use App\Classes\Sock\SocketClient;
use App\Exceptions\InvalidFTNException;
use App\Interfaces\CRC as CRCInterface;
use App\Interfaces\Zmodem as ZmodemInterface;
@@ -82,27 +81,6 @@ final class EMSI extends BaseProtocol implements CRCInterface,ZmodemInterface
'1'=>self::P_ZMODEM,
];
/**
* Incoming EMSI session
*
* @param SocketClient $client
* @return int|null
* @throws SocketException
*/
public function onConnect(SocketClient $client): ?int
{
// If our parent returns a PID, we've forked
if (! parent::onConnect($client)) {
Log::withContext(['pid'=>getmypid()]);
$this->session($client,(new Address));
$this->client->close();
exit(0);
}
return NULL;
}
/**
* Send our welcome banner
*

View File

@@ -202,27 +202,6 @@ final class Zmodem extends Protocol implements CRCInterface,ZmodemInterface
private string $rxbuf = '';
private string $txbuf = '';
/**
* @param SocketClient $client
* @return null
* @throws SocketException
*/
public function onConnect(SocketClient $client): ?int
{
// If our parent returns a PID, we've forked
if (! parent::onConnect($client)) {
Log::withContext(['pid'=>getmypid()]);
$this->session($client);
$this->client->close();
Log::info(sprintf('%s:= onConnect - Connection closed [%s]',self::LOGKEY,$client->address_remote));
exit(0);
}
return NULL;
}
/**
* Initialise our session
*/

View File

@@ -141,7 +141,11 @@ final class SocketServer {
continue;
}
$this->handler[0]->{$this->handler[1]}($r);
// If the handler returns a value, then that is the main thread
if (! $this->handler[0]->{$this->handler[1]}($r)) {
$r->close();
exit(0);
}
}
}