1. <?php
  2. /*My XAT BOT*/
  3. $xatuser = "Chat(bot)"; //Damnit
  4. $uid = "241861280";
  5. $picurl = "http://i185.photobucket.com/albums/x49/dotred/b.png";
  6. $homeurl = "http://www.xatstuff.com";
  7. $roomid = "17460274";
  8. $smilies = array(":)", ":D", ":P", ";)", "(d)", "(x)");
  9. $commands_enabled = true;
  10. $owners = array("177412559", "16393", "121040483", "6804916");
  11. $port = 10025;
  12. $addr = "174.36.242.34";
  13. $i = 0; //DONT CHANGE PLZ
  14. // Output basic HTML header
  15.  
  16. // Create a socket object
  17. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  18. if ($socket < 0)
  19. {
  20. trace("Socket errror: " . socket_strerror($socket));
  21. die();
  22. }
  23. else
  24. trace("Socket object created");
  25.  
  26. // Establish connection
  27. $result = socket_connect($socket, $addr, $port);
  28.  
  29. // Check connection
  30. if ($result < 0)
  31. {
  32. trace ("Received: " . socket_strerror($result));
  33. }
  34. else
  35. {
  36. trace("Connection successfull");
  37. $handShake = "<y m=\"1\" />" . chr(0);
  38. //$handShake = "<y r=\"" . $roomid . "\" />" . chr(0);
  39. //$handShake = "<policy-file-request/>" . chr(0);
  40. trace("Sending: " . $handShake);
  41. socket_write($socket, $handShake, strlen($handShake));
  42.  
  43. // Wait for server response
  44. while(true)
  45. {
  46. $err = false;
  47. $out = socket_read($socket, 1024) or $err = true;
  48. if($err == true){
  49. trace("Socket closed");
  50. exec("C:\\www\\xatbot.bat");
  51. exit();
  52. }
  53. if($out){
  54. trace("Received: " . $out);
  55. if(stripos($out, "<cross-domain") > -1){
  56. trace("Connected to Xat. Sending chat connection");
  57. $send = "<y m=\"1\">" . chr(0);
  58. } else if (stripos($out, "<y") > -1 ) {
  59. $yi = stribet($out, '<y i="', '" c=');
  60. //$yc = stribet($out, 'c="', '"');
  61. //$send = "<j2 l4=\"1623\" l3=\"1479\" l2=\"0\" q=\"1\" y=\"" . $yi . '" k="1743250365" k3="0" z="11" p="0" c="' . $roomid . '" f="2" u="2" d0="0" n="' . $xatuser . '" a="' . $picurl . '" h="' . $homeurl . '" v="0" />' . chr(0);
  62. $send = "<j2 l4=\"1637\" l3=\"1482\" l2=\"0\" y=\"" . $yi . "\" k=\"3787785620\" k3=\"0\" z=\"11\" p=\"0\" c=\"" . $roomid . "\" f=\"0\" u=\"" . $uid . "\" d0=\"0\" n=\"" . $xatuser . "\" a=\"" . $picurl . "\" h=\"" . $homeurl . "\" v=\"1\" />" . chr(0);
  63. trace("Sending: " . $send);
  64. socket_write($socket, $send, strlen($send));
  65. } else if(stripos($out, "<done />") > -1){
  66. trace("Connected to chat successfully!");
  67. $done = true;
  68. } else if(stripos($out, "<u") > -1 && $done == true){
  69. $nB = true;
  70. $isBanned = 0;
  71. $isGagged = 0;
  72. $isForever = 0;
  73. $ui = stribet($out, "u=\"", "\"");
  74. $uj = strbet($out, "n=\"", "\"");
  75. $ur = strbet($out, "f=\"", "\"");
  76. $uq = strbet($out, "q=\"", "\"");
  77. $online = (xInt($uq) & 1) != 0;
  78. if($us & 1 || $ur & 8){
  79. $notBanned = 1;
  80. }
  81. if($ur & 16){
  82. $isBanned = 1;
  83. }
  84. if($ur & 256){
  85. $isGagged = 1;
  86. }
  87. if($ur & 64){
  88. $isForever = 1;
  89. }
  90.  
  91. trace("Banned: " . $isBanned . "; Gagged: " . $isGagged . "; Forever: " . $isForever . "; Not-Banned: " . $notBanned . "; Online: " . $online);
  92. if($isBanned || $isGagged || $isForever){
  93. $nB = false;
  94. }
  95. if($notBanned){
  96. $nB = true;
  97. }
  98. if(!$online){
  99. $nB = false;
  100. }
  101. trace("NB stat: " . $nB);
  102. if($nB){
  103. $send = "<p u=\"" . $ui . "\" t=\"Welcome, " . $uj . "!\" s=\"2\" u=\"" . $uid . "\" />" . chr(0);
  104. trace("Sending: " . $send);
  105. socket_write($socket, $send, strlen($send));
  106. }
  107. } else if(stripos($out, "<m") > -1){
  108. $message = stribet($out, "t=\"", "\"");
  109. $uid_part = stribet($out, "u=\"", "\"");
  110. $senduid = explode("_", $uid_part);
  111. trace("User " . $senduid[0] . " said: " . $message);
  112. if(in_array($senduid[0], $owners)){
  113. if(strtolower($message) == "bot enable commands"){
  114. $commands_enabled = true;
  115. }
  116. if(strtolower($message) == "bot disable commands"){
  117. $commands_enabled = false;
  118. }
  119. }
  120. if(filter($message)){
  121. $send = "<c p=\"Autobanning user for swearing\" u=\"" . $senduid[0] . "\" t=\"/g3600\" />" . chr(0);
  122. trace("Auto banning user");
  123. socket_write($socket, $send, strlen($send));
  124. }
  125. if($commands_enabled){
  126. if(stristr($message, "banme")){
  127. $send = "<c p=\"Autobanning user for no reason\" u=\"" . $senduid[0] . "\" t=\"/g3600\" />" . chr(0);
  128. trace("Auto banning user");
  129. socket_write($socket, $send, strlen($send));
  130. }
  131. if(stristr($message, "kickme")){
  132. $send = "<c p=\"Automatically kicking user for no reason\" u=\"" . $senduid[0] . "\" t=\"/k\" />" . chr(0);
  133. trace("Kicking user");
  134. socket_write($socket, $send, strlen($send));
  135. }
  136. if(stristr($message, "guestme")){
  137. $send = "<c u=\"" . $senduid[0] . "\" t=\"/r\" />" . chr(0);
  138. trace("Guesting user");
  139. socket_write($socket, $send, strlen($send));
  140. }
  141. if(stristr($message, "memberme")){
  142. $send = "<c u=\"" . $senduid[0] . "\" t=\"/e\" />" . chr(0);
  143. trace("Membering user");
  144. socket_write($socket, $send, strlen($send));
  145. }
  146. }
  147. } else if(stripos($out, "<p") > -1){
  148. if($commands_enabled){
  149. $message = stribet($out, "t=\"", "\"");
  150. $uid_part = stribet($out, "u=\"", "\"");
  151. $senduid = explode("_", $uid_part);
  152. if(filter($message)){
  153. $send = "<c p=\"Autobanning user for swearing\" u=\"" . $senduid[0] . "\" t=\"/g3600\" />" . chr(0);
  154. trace("Auto banning user");
  155. socket_write($socket, $send, strlen($send));
  156. }
  157. if(stristr($message, "banme")){
  158. $send = "<c p=\"Autobanning user for no reason\" u=\"" . $senduid[0] . "\" t=\"/g3600\" />" . chr(0);
  159. trace("Auto banning user");
  160. socket_write($socket, $send, strlen($send));
  161. }
  162. if(stristr($message, "kickme")){
  163. $send = "<c p=\"Automatically kicking user for no reason\" u=\"" . $senduid[0] . "\" t=\"/k\" />" . chr(0);
  164. trace("Kicking user");
  165. socket_write($socket, $send, strlen($send));
  166. }
  167. if(stristr($message, "guestme")){
  168. $send = "<c u=\"" . $senduid[0] . "\" t=\"/r\" />" . chr(0);
  169. trace("Guesting user");
  170. socket_write($socket, $send, strlen($send));
  171. }
  172. if(stristr($message, "memberme")){
  173. $send = "<c u=\"" . $senduid[0] . "\" t=\"/e\" />" . chr(0);
  174. trace("Membering user");
  175. socket_write($socket, $send, strlen($send));
  176. }
  177. }
  178. trace($senduid[0]);
  179. if(in_array($senduid[0], $owners)){
  180. if(strtolower($message) == "bot enable commands"){
  181. $commands_enabled = true;
  182. }
  183. if(strtolower($message) == "bot disable commands"){
  184. $commands_enabled = false;
  185. }
  186. $spl = explode(" ", $message);
  187. if($spl[0] == "ban"){
  188. $banuid = $spl[1];
  189. $length = $spl[2] * 60 * 60;
  190. $send = "<c p=\"Banning for no reason\" u=\"" . $banuid . "\" t=\"/g" . $length . "\" />" . chr(0);
  191. trace("Force banning user");
  192. socket_write($socket, $send, strlen($send));
  193. }
  194. $spl = explode(" ", $message);
  195. if($spl[0] == "say"){
  196. trace("Forced to speak");
  197. $msg = str_ireplace("say ", "", $message);
  198. $send = "<m t=\"" . $msg . "\" u=\"" . $uid . "\" />" . chr(0);
  199. socket_write($socket, $send, strlen($send));
  200. }
  201. }
  202. } else if(stripos($out, "<idle />")){
  203. exec("C:\\www\\xatbot.bat");
  204. trace("Socket closed");
  205. exit();
  206. } else if(stripos($out, "<c")){
  207. exec("C:\\www\\xatbot.bat");
  208. trace("Socket closed");
  209. exit();
  210. }
  211. }
  212. if($i == 100){
  213. $i = 0;
  214. $send = "<m t=\"" . $smilies[array_rand($smilies)] ."\" u=\"" . $uid . "\" />" . chr(0);
  215. socket_write($socket, $send, strlen($send));
  216. }
  217. $i = $i + 1;
  218. }
  219.  
  220. // Close html tags
  221. socket_close($socket);
  222. }
  223.  
  224. function trace($msg)
  225. {
  226. echo "--> " . $msg . "\n";
  227. }
  228. function stribet($inputstr, $delimiterLeft, $delimiterRight) {
  229. $posLeft = stripos($inputstr, $delimiterLeft) + strlen($delimiterLeft);
  230. $posRight = stripos($inputstr, $delimiterRight, $posLeft);
  231. return substr($inputstr, $posLeft, $posRight - $posLeft);
  232. }
  233. function strbet($inputstr, $delimiterLeft, $delimiterRight) {
  234. $posLeft = strpos($inputstr, $delimiterLeft) + strlen($delimiterLeft);
  235. $posRight = strpos($inputstr, $delimiterRight, $posLeft);
  236. return substr($inputstr, $posLeft, $posRight - $posLeft);
  237. } //Does the same as stribet but case sensitive
  238. function parseInt($string) {
  239. // return intval($string);
  240. if(preg_match('/(\d+)/', $string, $array)) {
  241. return $array[1];
  242. } else {
  243. return false;
  244. }
  245. }
  246. function xInt($arg){
  247. $loc1 = parseInt($arg);
  248. if ($loc1 === false){
  249. return(0);
  250. } // end if
  251. return($loc1);
  252. } // End of the function
  253.  
  254. function filter($text){
  255. $badWordsArray = explode("\r\n", file_get_contents("swears.txt"));
  256. foreach($badWordsArray as $badWord) {
  257. if(stristr($text, $badWord) !== false){
  258. trace("BAD WORD FOUND: " . $badWord);
  259. return true;
  260. }
  261. }
  262. return false;
  263. }
  264.  
  265.  
  266. ?>