public function init() { $this->error = false; if ($this->loadConfig() === false) { $this->error = true; return; } $conn = new connection(null, $this->port, 0); $conn->setSocketClass($this->socketClass); $conn->setIrcClass($this->ircClass); $conn->setCallbackClass($this); $conn->setTimerClass($this->timerClass); $conn->setTransTimeout(15); $conn->init(); if ($conn->getError()) { $this->error == true; return; } $this->httpListener = $conn; $this->html = $this; }
public function init() { $this->error = false; if ($this->loadConfig() === false) { $this->error = true; return; } $conn = new connection(null, $this->port, 0); $conn->setSocketClass($this->socketClass); $conn->setIrcClass($this->ircClass); $conn->setCallbackClass($this); $conn->setTimerClass($this->timerClass); $conn->setTransTimeout(15); $conn->init(); if ($conn->getError()) { $this->error == true; return; } $this->httpListener = $conn; //$this->timerClass->addTimer("httpd_check_listeners", $this, "handleSessions", "", 0.25, false); }
public function connect() { if ($this->host == null || $this->port == null) { return false; } if (!is_object($this->socketClass)) { return false; } if (!is_object($this->ircClass)) { return false; } $conn = new connection($this->host, $this->port, CONNECT_TIMEOUT); $conn->setSocketClass($this->socketClass); $conn->setIrcClass($this->ircClass); $conn->setCallbackClass($this); $conn->setTimerClass($this->timerClass); /* Set Timeouts */ $conn->setTransTimeout($this->transTimeout); $conn->init(); if ($conn->getError()) { $this->setError("Could not allocate socket"); return false; } $this->sockInt = $conn->getSockInt(); $conn->connect(); $this->connection = $conn; return true; }
private function onAccept() { //Get the sockInt from the socketClass $newSockInt = $this->socketClass->hasAccepted($this->sockInt); if ($newSockInt === false) { //False alarm.. just ignore it. return false; } //Create a new connection object for the new socket connection, then return it to onAccept //We must assume that onAccept will handle the connection object. Otherwise it'll die, and the //connection will be orphaned. $newConn = new connection(null, null, 0); $newConn->setSocketClass($this->socketClass); $newConn->setIrcClass($this->ircClass); $newConn->setCallbackClass($this->callbackClass); //Can be overwritten in the onAccept function $newConn->setTimerClass($this->timerClass); $newConn->listen(); //We don't need to call init(), we're already setup. //Setup our connection transmission timeout thing. if ($this->transTimeout > 0) { $this->timerClass->addTimer(irc::randomHash(), $newConn, "transTimeout", "", $this->transTimeout); } $newConn->setTransTimeout($this->transTimeout); //Set handler for our new sockInt to new connection class $this->socketClass->setHandler($newSockInt, $this->ircClass, $newConn, "handle"); //Set our new sockInt $newConn->setSockInt($newSockInt); //Call our callback function for accepting with old object, and new object. $this->callbackClass->onAccept($this, $newConn); return false; }
public function addFile($nick, $host, $port, $type, $filename, $size, $fromTimer = false) { $reverse = false; if ($this->ircClass->getClientConf("mircdccreverse") != "" && $fromTimer == false && $type != DOWNLOAD) { $port = intval($this->ircClass->getClientConf("mircdccreverse")); if ($port == 0) { return NULL; } $args = new argClass(); $args->arg1 = $nick; $args->arg2 = $host; $args->arg3 = $port; $args->arg4 = $type; $args->arg5 = $filename; $args->arg6 = $size; $args->arg7 = time(); $args->arg8 = FILE; $this->ircClass->notice($nick, "DCC: NOTICE: This server is using the mIRC File Server Protocol. Please use ' /dccserver +s on " . $this->ircClass->getClientConf("mircdccreverse") . " ' to recieve files from me! Starting 6 second delay...", 0); $this->ircClass->sendRaw("WHOIS " . $nick); $this->timerClass->addTimer(irc::randomHash(), $this, "reverseTimer", $args, 6); return; } if ($fromTimer == true) { $reverse = DCC_REVERSE; // using mIRC dcc reverse protocol } if ($host == NULL || $port == NULL) { $conn = new connection(null, null, 0); $listening = true; $status = DCC_LISTENING; } else { $conn = new connection($host, $port, CONNECT_TIMEOUT); $listening = false; $status = DCC_CONNECTING; } $conn->setSocketClass($this->socketClass); $conn->setIrcClass($this->ircClass); $conn->setCallbackClass($this); $conn->setTransTimeout(30); $conn->setTimerClass($this->timerClass); $port = $conn->init(); if ($conn->getError()) { $this->ircClass->log("File transfer start error: " . $conn->getErrorMsg()); return false; } $sockInt = $conn->getSockInt(); $id = $this->highestId(); $file = new file($id, $nick, $sockInt, $host, $port, $type, $reverse); if ($file->transferType == UPLOAD) { $this->fileUlCount++; } else { $this->fileDlCount++; } $file->setIrcClass($this->ircClass); $file->setDccClass($this); $file->setSocketClass($this->socketClass); $file->setProcQueue($this->procQueue); $file->setTimerClass($this->timerClass); $file->connection = $conn; $file->status = $status; $file->removed = false; $this->dccList[$sockInt] = $file; $file->initialize($filename, $size); $conn->setCallbackClass($file); if ($listening == true) { $this->timerClass->addTimer(irc::randomHash(), $this, "checkDccTimeout", $file, 30, true); } if ($reverse == true) { $conn->connect(); } return $port; }
public function reconnect() { $this->updateContext(); try { $this->connectStartTime = time(); $conn = new connection($this->getClientConf('server'), $this->getClientConf('port'), CONNECT_TIMEOUT); $this->conn = $conn; $conn->setSocketClass($this->socketClass); $conn->setIrcClass($this); $conn->setCallbackClass($this); $conn->setTimerClass($this->timerClass); $conn->init(); if ($conn->getError()) { throw new ConnectException($conn->getErrorMsg()); } //Bind socket... if ($this->getClientConf('bind') != "") { $conn->bind($this->getClientConf('bind')); } $this->sockInt = $conn->getSockInt(); $conn->connect(); } catch (ConnectException $e) { $this->beginReconnectTimer(); $this->status = STATUS_ERROR; $this->exception = $e; return; } $this->status = STATUS_CONNECTING; $this->updateContext(); return; }