Esempio n. 1
0
File: dcc.php Progetto: tseeker/LWB5
 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;
 }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 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;
 }