require_once("P10_ModeSets.class.php");
class Uplink {
- private $client = new Client();
+ private $client;
private $settings = array();
private $server;
private $flags = 0;
public function __construct() {
- $this->setSettings("recv_timeout", 1000);
+ $this->client = new Client();
+ $this->setSetting("recv_timeout", 1000);
}
public function initialize() {
if(($this->flags & self::FLAG_SECURITY_QUIT) || ($this->flags & self::FLAG_NOT_CONNECTABLE)) {
sleep(1);
}
- $state = $this->client->connect($host, $port, $this->getSettings("bind"), $this->getSettings("ssl"), $this->getSettings("recv_timeout"));
+ $state = $this->client->connect($host, $port, $this->getSetting("bind"), $this->getSetting("ssl"), $this->getSetting("recv_timeout"));
if(!$state) {
usleep($this->getSetting("recv_timeout") / 1000);
$this->flags |= self::FLAG_NOT_CONNECTABLE;
}
}
- public function setUplink($host, $port, $ssl = false, $bind = null) {
+ public function setUplinkHost($host, $port, $ssl = false, $bind = null) {
$this->setSetting("host", $host);
$this->setSetting("port", $port);
$this->setSetting("ssl", $ssl);
case "EA":
$this->recv_end_of_burst_ack($from, $arguments);
break;
+ case "SQ":
+ $this->recv_server_quit($from, $arguments);
+ break;
+ case "Q":
+ $this->recv_quit($from, $arguments);
+ break;
//default
default:
//unknown cmd
}
private function recv_nick($from, $args) {
- if(count($args) == 2) {
+ if(count($args) <= 2) {
//Nick change
$user = P10_User::getUserByNum($from);
if($user == null) {
//nothing to do here?
}
+ private function recv_server_quit($from, $args) {
+ $server = P10_Server::getServerByName($args[0]);
+ if($server == null) {
+ trigger_error("Server (".$args[0].") not found.", E_USER_ERROR);
+ return;
+ }
+ $server->disconnectServer();
+ }
+
+ private function recv_quit($from, $args) {
+ $user = P10_User::getUserByNum($from);
+ if($user == null) {
+ trigger_error("Server tries to quit an user that does not exist or was not found on recv_quit.", E_USER_ERROR);
+ return;
+ }
+ $user->quit($args[0]);
+ }
+
/********************************************************************************************
* SERVER FUNCTIONS *
********************************************************************************************/