Advertisement
Guest User

Untitled

a guest
May 9th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.56 KB | None | 0 0
  1. <?php
  2.  
  3. class aMessage {
  4.     var $nick, $user, $host, $sender, $cmd, $param, $mess, $wline;
  5. }
  6.  
  7. class aIRC {
  8.     var $cM, $lastping, $pongwait, $pingsent, $host, $port, $cNick, $oldNick, $joinnick, $username, $logfile, $realname, $joinchan, $con, $auth, $firstcon, $mTableName, $cTableName, $server, $cmdChar, $locked, $pingpong, $masterNick, $quit, $MySQLServer, $MySQLDatabase, $MySQLAccountName, $MySQLAccountpassword;
  9. }
  10.  
  11. $IRC = new aIRC;
  12. $IRC->cM = new aMessage;
  13. $IRC->cM->param = array();
  14. $IRC->host = "92.61.33.10"; //irc.freenode.net
  15. $IRC->port = 8001;
  16. $IRC->joinchan = array("#Tootoot222", "#SRL", "#mixster", "#SRL-School");
  17. $IRC->joinnick = "Furry";
  18. $IRC->username = "Furry";
  19. $IRC->realname = "Furry";
  20. $IRC->cNick = $IRC->joinnick;
  21. $IRC->oldNick = $IRC->joinnick . "_";
  22. $IRC->auth = "";
  23. $IRC->server = "";
  24. $IRC->cmdChar = "!";
  25. $IRC->locked = false;
  26. $IRC->pingpong = false;
  27.  
  28. $IRC->MySQLServer = "localhost";   
  29. $IRC->MySQLDatabase = "ircbotv2";
  30. $IRC->MySQLAccountName = "root";
  31. $IRC->MySQLAccountpassword = "";
  32. $IRC->mTableName = "masters3";
  33. $IRC->cTableName = "cmd";
  34.  
  35. $IRC->logfile = fopen("logfile.txt", "a");
  36. fwrite($IRC->logfile, "\r\n*** Log opened on " . date("D M jS H:i:s", time()) . " ***\r\n");
  37.  
  38. function output($message) {
  39.     global $IRC;
  40.     $out = "[" . date("H:i:s") . "] " . $message . "\r\n";
  41.     echo($out);
  42.     fwrite($IRC->logfile, $out);
  43. }
  44.  
  45. function send($data, $out = true) {
  46.     if(!trim($data)) {
  47.       return;
  48.     }
  49.     global $IRC;
  50.     $a = explode("\r\n", $data);
  51.     foreach($a as $aa) {
  52.         fputs($IRC->fp, $aa . "\r\n");
  53.         if($out) {
  54.             output("-> " . $aa);
  55.         }
  56.     }
  57. }
  58.  
  59. function startsWith($haystack, $needle) {
  60.     if(is_array($needle)) {
  61.         foreach($needle as $n) {
  62.             if(strpos($haystack, $n) === 0) {
  63.                 return($n);
  64.             }
  65.         }
  66.     }
  67.     return(strpos($haystack, $needle) === 0);
  68. }
  69.  
  70. function instr($haystack, $needle) {
  71.     return((strpos($haystack, $needle) != 0) || (strpos($haystack, $needle) === 0));
  72. }
  73.  
  74. function isNumber($s) {
  75.     $l = sizeof($s);
  76.     if($l == 0) {
  77.         return false;
  78.     }
  79.     for($i = 0; $i < $l; $i++) {
  80.         if(!in_array($s[$i], array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9"))) {
  81.             return false;
  82.         }
  83.     }
  84.     return true;
  85. }
  86.  
  87. function dumpDB($header) {
  88.     global $IRC;
  89.     if(!file_exists("./DB_backup/")) {
  90.         mkdir("./DB_backup/");
  91.     }
  92.     $basename = "db_backup";
  93.     $n = 1;
  94.     while(file_exists($filename = ("./DB_backup/" . $basename . $n . ".txt"))) {
  95.         $n++;
  96.     }
  97.     if(!$fh = fopen($filename, 'w')) {
  98.         return("failed to open file: " . $filename);
  99.     }
  100.     fwrite($fh, "//" . date("D M jS H:i:s", time()) . "\r\n\r\n");
  101.     if($header) {
  102.         fwrite($fh, $header . "\r\n\r\n\r\n");
  103.     }
  104.     $q = mysql_query("SELECT * FROM " . $IRC->cTableName, $IRC->con);
  105.     while($row = mysql_fetch_array($q)) {
  106.         fwrite($fh, "//" . strtoupper($row["name"]) . ":\r\n" . $row["code"] . "\r\n\r\n\r\n");
  107.     }
  108.     fclose($fh);
  109.     return(true);
  110. }
  111.  
  112. function fetchcmdcode($cmd) {
  113.     global $IRC;
  114.     $row = mysql_fetch_array(mysql_query("SELECT code FROM " . $IRC->cTableName . " WHERE name='" . $cmd . "'", $IRC->con));
  115.     return($row["code"]);
  116. }
  117.  
  118. function evalbound($cmd) {
  119.     eval(fetchcmdcode(strtoupper($cmd)));
  120. }
  121.  
  122. function fetchmasters($sel = true, $item = "*", $privs = 1, $ins = false, $upd = false, $new = "") {
  123.     global $IRC;
  124.     if($sel) {
  125.         $q = mysql_query("SELECT " . $item . " FROM " . $IRC->mTableName, $IRC->con);
  126.         $r = array();
  127.         while($row = mysql_fetch_array($q)) {
  128.             $r[] = $row["name"];
  129.         }
  130.     }elseif($ins) {
  131.         mysql_query("INSERT INTO " . $IRC->mTableName . "(name, cname, privs) VALUES ('" . $item . "', '" . strtoupper($item) . "', " . $privs . ")", $IRC->con);
  132.     }elseif($upd) {
  133.         mysql_query("UPDATE " . $IRC->mTableName . " SET name='" . $new . "', cname='" . strtoupper($new) . "' WHERE cname='" . strtoupper($item) . "'");
  134.     }else {
  135.         if($item) {
  136.             $n = " WHERE cname='" . strtoupper($item) . "'";
  137.         }
  138.         mysql_query("DELETE FROM " . $IRC->mTableName . $n, $IRC->con);
  139.     }
  140.     return($r);
  141. }
  142.  
  143. function isMaster($nick) {
  144.     global $IRC;
  145.     foreach(($IRC->masterNick = fetchmasters()) as $n) {
  146.         if(strtolower($n) == strtolower($nick)) {
  147.             return(true);
  148.         }
  149.     }
  150.     return(false);
  151. }
  152.  
  153. function handleNumberCommands() {
  154.     global $IRC;
  155.     switch($IRC->cM->cmd) {
  156.         case "001":
  157.             $IRC->server = $IRC->cM->host;
  158.             output($IRC->cM->mess);
  159.             if($IRC->firstcon) {
  160.                 send("NICK :" . $IRC->joinnick);
  161.                 $IRC->cNick = $IRC->joinnick;
  162.                 send("PRIVMSG NickServ :ID " . $IRC->joinnick . " " . $IRC->auth);
  163.                 foreach($IRC->joinchan as $c) {
  164.                     send("JOIN " . $c);
  165.                 }
  166.                 $IRC->firstcon = false;
  167.             }
  168.             break;
  169.         case "005":
  170.         case "252":
  171.         case "254":
  172.             output(trim($IRC->cM->param[0], $IRC->cNick . " ") . " " . $IRC->cM->mess);
  173.             break;
  174.         case "332":
  175.             output("Topic for " . $IRC->cM->param[1] . " is: " . $IRC->cM->mess);
  176.             break;
  177.         case "333":
  178.             output("Topic for " . $IRC->cM->param[1] . " set by " . $IRC->cM->param[2] . " on " . date("D M jS H:i:s", $IRC->cM->param[3]));
  179.             break;
  180.         case "421":
  181.             output("Unknown command: \"" . $IRC->cM->param[1] . "\"");
  182.             break;
  183.         case '433':
  184.             output("Nickname \"" . $IRC->cM->param[1] . "\" is already in use.");
  185.             $IRC->cNick = $IRC->oldNick;
  186.             if($IRC->firstcon) {
  187.                 send("NICK :" . $IRC->joinnick . rand(100, 999));
  188.                 $IRC->cNick = $IRC->joinnick;
  189.                 send("PRIVMSG NickServ :ghost " . $IRC->joinnick . " " . $IRC->auth);
  190.             }          
  191.             break;
  192.         case '474':
  193.             output('Unable to join channel ' . $IRC->cM->param[1] . ': ' . $IRC->cM->mess);
  194.             break;
  195.         default:
  196.             output($IRC->cM->mess);
  197.             break;
  198.     }
  199.     return true;
  200. }
  201.  
  202. function handleBotCommands() {
  203.     global $IRC;
  204.     if((startsWith($IRC->cM->mess, $IRC->cmdChar)) && (strlen($IRC->cM->mess) > strlen($IRC->cmdChar)) && (strtolower($IRC->cM->nick) != strtolower($IRC->cNick))) {
  205.         $ismaster = isMaster($IRC->cM->nick);
  206.         $ispm = strtolower($IRC->cM->param[0]) == strtolower($IRC->cNick);
  207.         if((!$IRC->locked) || ($ismaster)) {
  208.             $a = explode(" ", substr($IRC->cM->mess, strlen($IRC->cmdChar)));
  209.             for($i = 1; $i < sizeof($a); $i++) {
  210.                 $r = $r . $a[$i] . " ";
  211.             }
  212.             $r = trim($r);
  213.             eval(fetchcmdcode(strtoupper($a[0])));
  214.             if($ismaster) {
  215.                 switch(strtoupper($a[0])) {
  216.                     case "BIND":
  217.                         switch(strtoupper($a[1])) {
  218.                             case "ADD":
  219.                                 for($i = 3; $i < sizeof($a); $i++) {
  220.                                     $o = $o . $a[$i] . " ";
  221.                                 }
  222.                                 $o = trim($o);
  223.                                 if(!$o) {
  224.                                     break;
  225.                                 }
  226.                                 send("PRIVMSG " . $IRC->cM->param[0] . " :Binding command " . strtoupper($a[2]));
  227.                                 dumpDB("//" . $IRC->cM->nick . "; Binding command " . strtoupper($a[2]) . "\r\n\r\n//Old code:\r\n" . fetchcmdcode(strtoupper($a[2])) . "\r\n\r\n//New code:\r\n" . $o);
  228.                                 mysql_query("DELETE FROM " . $IRC->cTableName . " WHERE name='" . strtoupper($a[2]) . "'", $IRC->con);
  229.                                 mysql_query("INSERT INTO " . $IRC->cTableName . "(name, code) VALUES ('" . strtoupper($a[2]) . "', '" . $o . "')", $IRC->con);
  230.                                 break;
  231.                             case "DEL":
  232.                                 dumpDB("//" . $IRC->cM->nick . "; Deleting command " . strtoupper($a[2]) . "\r\n\r\n//Old code:\r\n" . fetchcmdcode(strtoupper($a[2])));
  233.                                 mysql_query("DELETE FROM " . $IRC->cTableName . " WHERE name='" . strtoupper($a[2]) . "'", $IRC->con);
  234.                                 send("PRIVMSG " . $IRC->cM->param[0] . " :Command '" . strtoupper($a[2]) . "' was deleted.");
  235.                                 break;
  236.                             case "REN":
  237.                                 if(!(sizeof($a) > 3) ) {
  238.                                     break;
  239.                                 }
  240.                                 $h = "//" . $IRC->cM->nick . "; Renaming command \"" . strtoupper($a[2]) . "\" to \"" . strtoupper($a[3]) . "\"";
  241.                                 if($c = fetchcmdcode(strtoupper($a[2]))) {
  242.                                     $h = $h . "\r\nDeleting old code:\r\n" . $c;
  243.                                     mysql_query("DELETE FROM " . $IRC->cTableName . " WHERE name='" . strtoupper($a[3]) . "'", $IRC->con);
  244.                                 }
  245.                                 dumpDB($h);
  246.                                 mysql_query("UPDATE " . $IRC->cTableName . " SET name='" . strtoupper($a[3]) . "' WHERE name='" . strtoupper($a[2]) . "'");
  247.                                 send("PRIVMSG " . $IRC->cM->param[0] . " :Command '" . strtoupper($a[2]) . "' was renamed to '" . strtoupper($a[3]) . "'.");
  248.                                 break;
  249.                             case "LNK":
  250.                                 send("PRIVMSG " . $IRC->cM->param[0] . " :Linking command " . strtoupper($a[2]) . " to " . strtoupper($a[3]));
  251.                                 dumpDB("//" . $IRC->cM->nick . "; Linking command " . strtoupper($a[2]) . " to " . strtoupper($a[3]));
  252.                                 mysql_query("DELETE FROM " . $IRC->cTableName . " WHERE name='" . strtoupper($a[3]) . "'", $IRC->con);
  253.                                 mysql_query("INSERT INTO " . $IRC->cTableName . "(name, code) VALUES ('" . strtoupper($a[3]) . "', 'evalbound(\"" . $a[2] . "\");')", $IRC->con);
  254.                                 break;
  255.                         }
  256.                         break;
  257.                 }
  258.             }
  259.         }
  260.     }
  261. }
  262.  
  263. function handleChatCommands() {
  264.     global $IRC;
  265.     if(!$IRC->cM->nick) {
  266.         return false;
  267.     }
  268.     $chr1 = chr(001);
  269.     if((startsWith($IRC->cM->mess[0], $chr1)) && ($IRC->cM->mess[strlen($IRC->cM->mess) - 1] == $chr1)) {
  270.         $a = explode(" ", $IRC->cM->mess);
  271.         $tok = "";
  272.         for($i = 1; $i < sizeof($a); $i++) {
  273.             $tok = $tok . $a[$i] . " ";
  274.         }
  275.         $tok = trim(substr($tok, 0, strlen($tok) - 1));
  276.         if($tok) {
  277.             $tok2 = strtoupper(substr($a[0], 1));
  278.             if($tok2 != "ACTION") {
  279.                 $tok = ": " . $tok;
  280.             }
  281.         }else {
  282.             $tok2 = strtoupper(substr($a[0], 1, strlen($tok2) - 1));
  283.         }
  284.         if($tok2 != "ACTION") {
  285.             output($IRC->cM->nick . " [" . $IRC->cM->user . "@" . $IRC->cM->host . "] requested CTCP " . $tok2 . " from " . $IRC->cM->param[0] . $tok);
  286.         }
  287.         switch($tok2) {
  288.             case "ACTION":
  289.                 output("[" . $IRC->cM->param[0] . "] * " . $IRC->cM->nick . " " . $tok);
  290.                 break;
  291.             case "PING":
  292.                 send("NOTICE " . $IRC->cM->nick . " :" . $chr1 . "PING " . time() . $chr1);
  293.                 break;
  294.             case "TIME":
  295.                 send("NOTICE " . $IRC->cM->nick . " :" . $chr1 . "TIME " . date("D M jS H:i:s") . $chr1);
  296.                 break;
  297.             case "VERSION":
  298.                 send("NOTICE " . $IRC->cM->nick . " :" . $chr1 . "VERSION Toot PHP Bot v2" . $chr1);
  299.                 break;
  300.             case "FINGER":
  301.                 send("NOTICE " . $IRC->cM->nick . " :" . $chr1 . "FINGER wat" . $chr1);
  302.                 break;
  303.         }
  304.         return true;
  305.     }
  306.     if(strtolower($IRC->cM->param[0]) != strtolower($IRC->cNick)) {
  307.         output("[" . $IRC->cM->param[0] . "] <" . $IRC->cM->nick . "> " . $IRC->cM->mess);
  308.     }else {
  309.         output("*" . $IRC->cM->nick . "* " . $IRC->cM->mess);
  310.     }
  311.     if(startsWith($IRC->cM->mess, $IRC->cmdChar)) {
  312.         handleBotCommands();
  313.     }
  314.     return true;
  315. }
  316.  
  317. function handleNormalCommands() {
  318.     global $IRC;
  319.     switch(strtoupper(trim($IRC->cM->cmd))) {
  320.         case "KICK":
  321.             if($IRC->cM->param[1] == $IRC->cNick) {
  322.                 $who = "You were";
  323.             }else {
  324.                 $who = $IRC->cM->param[1] . " was";
  325.             }
  326.             output("-!- " . $who . " kicked from " . $IRC->cM->param[0] . " by " . $IRC->cM->nick . " [" . $cMessage->mess . "]");
  327.             if($IRC->cM->param[1] == $IRC->cNick) {
  328.                 send("JOIN :" . $IRC->cM->param[0]);
  329.             }
  330.             break;
  331.         case "MODE":
  332.             $t = array();
  333.             if(strtolower($IRC->cNick) == strtolower($IRC->cM->param[0])) {
  334.                 $o = $IRC->cM->mess;
  335.             }else {
  336.                 for($i = 1; $i < sizeof($IRC->cM->param); $i++) {
  337.                     $o = $o . $IRC->cM->param[$i] . " ";
  338.                 }
  339.                 $o = trim($o);
  340.             }
  341.             if($IRC->cM->nick) {
  342.                 output("-!- mode/" . $IRC->cM->param[0] . " [" . $o . "] by " . $IRC->cM->nick);
  343.             }else {
  344.                 output("-!- mode/" . $IRC->cM->param[0] . " [" . $o . "] by " . $IRC->cM->host);
  345.             }
  346.             break;
  347.         case "NOTICE":
  348.             output("-" . $IRC->cM->nick . " [" . $IRC->cM->user . "@" . $IRC->cM->host . "]- " . $IRC->cM->mess);
  349.             break;
  350.         case "PRIVMSG":
  351.             return handleChatCommands();
  352.         case "PART":
  353.             output("-!- " . $IRC->cM->nick . " [" . $IRC->cM->user . "@" . $IRC->cM->host . "] has left " . $IRC->cM->param[0] . " [" . $IRC->cM->mess . "]");
  354.             break;
  355.         case "JOIN":
  356.             output("-!- " . $IRC->cM->nick . " [" . $IRC->cM->user . "@" . $IRC->cM->host . "] has joined " . $IRC->cM->mess);
  357.             break;
  358.         case "QUIT":
  359.             output("-!- " . $IRC->cM->nick . " [" . $IRC->cM->user . "@" . $IRC->cM->host . "] has quit [" . $IRC->cM->mess . "]");
  360.             break;
  361.         case "NICK":
  362.             if(strtolower($IRC->cM->mess) == strtolower($IRC->cNick)) {
  363.                 $who = "You are";
  364.                 $IRC->cNick = $IRC->cM->mess;
  365.             }else {
  366.                 $who = $IRC->cM->nick . " is";
  367.             }
  368.             output("-!- " . $who . " now known as " . $IRC->cM->mess);
  369.             if(isMaster($IRC->cM->nick)) {
  370.                 foreach(($IRC->masterNick = fetchmasters()) as $n) {
  371.                     if(strtolower($n) == strtolower($IRC->cM->nick)) {
  372.                         mysql_query("UPDATE " . $IRC->mTableName . " SET name='" . $IRC->cM->mess . "', cname='" . strtoupper($IRC->cM->mess) . "' WHERE cname='" . strtoupper($n) . "'");
  373.                     }
  374.                 }
  375.             }
  376.             if(strtolower($IRC->cM->nick) == strtolower($IRC->cNick)) {
  377.                 $IRC->cNick = $IRC->cM->mess;
  378.             }
  379.             break;
  380.         case "TOPIC":
  381.             output("-!- " . $IRC->cM->nick . " changed the topic of " . $IRC->cM->param[0] . " to: " . $IRC->cM->mess);
  382.             break;
  383.         case "PONG":
  384.             if($IRC->pingpong) {
  385.                 output("-!- Server PONG reply from " . $IRC->cM->host . ": " . $IRC->cM->param[0] . "; Time since PING request sent: " . (microtime(true) - $IRC->pingsent));
  386.             }
  387.             $IRC->lastping = time();
  388.             $IRC->pongwait = false;
  389.             break;
  390.         default:
  391.             return false;
  392.     }
  393.     return true;
  394. }
  395.  
  396. function parseMessage($buffer) {
  397.     global $IRC;
  398.     $a = explode("\n", $buffer);
  399.     foreach($a as $rawdata) {
  400.         if(!($IRC->cM->wline = trim($rawdata))) {
  401.             return;
  402.         }
  403.         switch($s = startsWith(strtoupper($IRC->cM->wline), array(":", "NOTICE", "PING", "ERROR"))) {
  404.             case ":":
  405.                 $IRC->cM->mess = substr($IRC->cM->wline, 1);
  406.                 $p = strpos($IRC->cM->mess, " ");
  407.                 $IRC->cM->host = substr($IRC->cM->mess, 0, $p);
  408.                 $IRC->cM->mess = substr($IRC->cM->mess, $p + 1);
  409.                 if(($p = strpos($IRC->cM->host, "!")) || ($p === 0)) {
  410.                     $IRC->cM->nick = substr($IRC->cM->host, 0, $p);
  411.                     $IRC->cM->host = substr($IRC->cM->host, $p + 1);
  412.                     if(($p = strpos($IRC->cM->host, "@")) || ($p === 0)) {
  413.                         $IRC->cM->user = substr($IRC->cM->host, 0, $p);
  414.                         $IRC->cM->host = substr($IRC->cM->host, $p + 1);
  415.                     }
  416.                 }
  417.                 $IRC->cM->cmd = substr($IRC->cM->mess, 0, $p = strpos($IRC->cM->mess, " "));
  418.                 $IRC->cM->mess = substr($IRC->cM->mess, $p + 1);
  419.                 if(!(($p = strpos($IRC->cM->mess, ":")) || ($p === 0))) {
  420.                     $p = strlen($IRC->cM->mess);
  421.                 }
  422.                 $IRC->cM->param = explode(" ", trim(substr($IRC->cM->mess, 0, $p)));
  423.                 $IRC->cM->mess = substr($IRC->cM->mess, $p + 1);
  424.                 if(isNumber($IRC->cM->cmd)) {
  425.                     if(handleNumberCommands()) {
  426.                         break;
  427.                     }
  428.                 }
  429.                 if(handleNormalCommands()) {
  430.                     break;
  431.                 }
  432.                 output("Unknown message: " . $IRC->cM->wline);
  433.                 break;
  434.             case "NOTICE":
  435.                 $IRC->cM->mess = substr($IRC->cM->wline, strpos($IRC->cM->wline, ":") + 1);
  436.                 $ss = $IRC->server;
  437.                 if(startsWith(strtoupper($IRC->cM->wline), "NOTICE AUTH")) {
  438.                     $ss = $IRC->host;
  439.                 }
  440.                 output("!" . $ss . " " . $IRC->cM->mess);
  441.                 break;
  442.             case "PING":
  443.                 if($IRC->pingpong) {
  444.                     output($rawdata);
  445.                 }
  446.                 $IRC->cM->wline[1] = "O";
  447.                 send($IRC->cM->wline, $IRC->pingpong);
  448.                 break;
  449.             case "ERROR":
  450.                 break;
  451.             default:
  452.                 output("Unknown message: " . $IRC->cM->wline);
  453.                 break;
  454.         }
  455.     }
  456. }
  457.  
  458. function onConnect() {
  459.     global $IRC;
  460.     send("USER " . $IRC->username . " * * :" . $IRC->realname);
  461.     send("NICK " . $IRC->joinnick);
  462.     $IRC->cNick = $IRC->joinnick;
  463.     if($IRC->auth) {
  464.         send("PRIVMSG NickServ :ID " . $IRC->joinnick . " " . $IRC->auth);
  465.     }
  466.     foreach($IRC->joinchan as $c) {
  467.         send("JOIN " . $c);
  468.     }
  469. }
  470.  
  471. if(!$IRC->con = mysql_connect($IRC->MySQLServer, $IRC->MySQLAccountName, $IRC->MySQLAccountpassword)){
  472.     output("MySQL error in fetchcmdcode: " . mysql_error());
  473.     mysql_close($IRC->con);
  474.     die;
  475. }
  476. mysql_select_db($IRC->MySQLDatabase, $IRC->con);
  477.  
  478. $IRC->connected = false;
  479. $IRC->lastping = time();
  480. $IRC->pongwait = false;
  481. $IRC->pingsent = microtime(true);
  482. $IRC->masterNick = fetchmasters();
  483.    
  484. while(!$IRC->quit) {
  485.     if((($IRC->pongwait) && ((time() - $IRC->lastping) > 300)) || ((!$IRC->connected) || (feof($IRC->fp) && (!($IRC->quit))))) {
  486.         if($IRC->connected) {
  487.             send("QUIT :Lost connection");
  488.             fclose($IRC->fp);
  489.         }
  490.         $IRC->connected = false;
  491.         output("-!- Attempting to open connection to " . $IRC->host . ":" . $IRC->port);
  492.         if($IRC->fp = fsockopen($IRC->host, $IRC->port, $errno, $errdesc)) {
  493.             $IRC->firstcon = true;
  494.             output("-!- Connection established to " . $IRC->host . ":" . $IRC->port);
  495.             $IRC->connected = true;
  496.             onConnect();
  497.             $IRC->lastping = time();
  498.             $IRC->pongwait = false;
  499.         }else {
  500.             sleep(30);
  501.             continue;
  502.         }
  503.     }
  504.     if((!$IRC->pongwait) && (time() - $IRC->lastping) > 30) {
  505.         $IRC->pongwait = true;
  506.         $IRC->pingsent = microtime(true);
  507.         send("PING :" . $IRC->server, $IRC->pingpong);
  508.     }
  509.     if($rawdata = fgets($IRC->fp, 1024)) {
  510.         parseMessage($rawdata);
  511.     }
  512. }
  513. fclose($IRC->fp);
  514. fclose($IRC->logfile);
  515. mysql_close($IRC->con);
  516. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement