*
* void setValidateServer(String $name, String $password)
* sets additional security relevant information about the remote server.
+ *
+ * void setEventHandler(EventHandler $event_handler)
+ * sets the EventHandlder
*/
require_once("Client.class.php");
require_once("Numerics.class.php");
const FLAG_SECURITY_QUIT = 0x0002; //local connection abort because of security issues
const FLAG_NOT_CONNECTABLE = 0x0004; //remote server is not connectable
const FLAG_BURST_PENDING = 0x0008; //we still have to burst
+ const FLAG_CONNECTED = 0x0010; //connected and synced (ready)
+ const FLAG_GOT_PASS = 0x0020; //got PASS from the remote Server
private $flags = 0;
public function __construct() {
$this->flags |= self::FLAG_SECURITY_QUIT;
$this->send("ERROR", "Incorrect password received.");
$this->client->disconnect();
+ return;
}
+ $this->flags |= self::FLAG_GOT_PASS;
}
}
$this->client->disconnect();
return;
}
+ if($this->getSetting("their_password") && !($this->flags & self::FLAG_GOT_PASS)) {
+ $this->flags |= self::FLAG_SECURITY_QUIT;
+ $this->send("ERROR", "PASS missing.");
+ $this->client->disconnect();
+ return;
+ }
$new_server = new P10_Server($args[0], substr($args[5],0,2), $this->server, $args[2], $args[3], $args[7]);
$this->server->addServer($new_server);
$this->flags |= self::FLAG_P10SESSION | self::FLAG_BURST_PENDING;
}
private function recv_end_of_burst_ack($from, $args) {
- //nothing to do here?
+ $this->flags |= self::FLAG_CONNECTED;
}
private function recv_server_quit($from, $args) {
}
private function recv_burst($from, $args) {
- //AK B #aide 1292621006 +tn ALAMH:o
$name = $args[0];
$create_time = $args[1];
$channel = P10_Channel::getChannelByName($name);
- if($name == null)
+ if($channel == null)
$channel = new P10_Channel($name);
$modes = $channel->getModes();
$userstr = $args[count($args)-1];
$userstr = $args[count($args)-2];
$modeparamcount--;
}
- $users = explode(":",$userstr);
+ $users = explode(",",$userstr);
$isop = false; $isvoice = false;
foreach($users as $user) {
$uexp = explode(":", $user);
- if(strlen($uexp[0]) != 6) {
+ if(strlen($uexp[0]) != 5) {
trigger_error("burst parse error: '".$uexp[0]."' is not an user numeric.", E_USER_ERROR);
return;
}