PageRenderTime 43ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/ekg_bot/bot/bot.php

http://insert-magazine.googlecode.com/
PHP | 185 lines | 144 code | 15 blank | 26 comment | 25 complexity | 7813795b38a38dfc974dd98c4c8b2dfa MD5 | raw file
  1. #!/usr/bin/php
  2. <?php
  3. /*
  4. BOT KLASOWY 1.5
  5. Copyright (C) 2007,2008 by uosiu (uosiekspam on server uosiu with a dot info)
  6. GNU GPL v3 published
  7. This script comes without ANY warranty of work, in state 'as is'
  8. Author is not responsible for any demages or data loss or any other weird effects caused by this script
  9. */
  10. //---- USER EDITABLE CONFIGURATION ---
  11. $mysql_host = 'localhost';
  12. $mysql_user = 'uosiu';
  13. $mysql_passwd = 'pierdole';
  14. $mysql_db = 'bot';
  15. $ekg_pipe = '/home/uosiu/rurka';
  16. $zapisz_passwd = 'lo8jesteloelo';
  17. global $zapisz_passwd;
  18. //---- END OF USER EDITABLE CONFIGURATION
  19. mysql_pconnect($mysql_host, $mysql_user, $mysql_passwd);
  20. mysql_select_db($mysql_db);
  21. $odpowiedz = mysql_query("SELECT pause FROM `config` WHERE 1");
  22. $row = mysql_fetch_assoc($odpowiedz);
  23. //--- CHECK THAT BOT ISN'T LOCKED, IF IT IS, THEN WAIT 'TILL IT WON'T
  24. if ($row['pause'] != 0) {
  25. for(;;) {
  26. unset($row);
  27. unset($odpowiedz);
  28. $odpowiedz = mysql_query("SELECT pause FROM `config` WHERE 1");
  29. $row = mysql_fetch_assoc($odpowiedz);
  30. if ($row['pause'] == 0) break;
  31. echo "lock";
  32. sleep(2);
  33. }
  34. }
  35. //--- MAKE OTHER INSTANCES OF BOT LOCKED
  36. $odpowiedz = mysql_query ("UPDATE `bot`.`config` SET `pause` = '1' WHERE `config`.`pause` = 0");
  37. //--- GETTING NICK OF MSG SENDER
  38. $odpowiedz = mysql_query(sprintf("SELECT nick FROM `users` WHERE number = %d LIMIT 1", (int) $argv[1]));
  39. $row = mysql_fetch_assoc($odpowiedz);
  40. $nadawca = $row['nick'];
  41. function zapisany($numer_nadawcy) {
  42. $odpowiedz = mysql_query(sprintf("SELECT nick FROM `users` WHERE number = %d LIMIT 1", (int) $numer_nadawcy));
  43. $row = mysql_fetch_assoc($odpowiedz);
  44. //--- CHECKING THAT USER IS SUBSCRIBED TO SPAMLIST ;)
  45. if (empty($row)) {
  46. return false;
  47. }
  48. else {
  49. return true;
  50. }
  51. }
  52. //--- MSG SENDER NUMBER
  53. $numer_nadawcy = $argv['1'];
  54. //--- EXPLODING MSG
  55. $tmp = explode(' ',$argv[2], 2);
  56. $polecenie = $tmp[0];
  57. $wartosci = $tmp[1];
  58. function zapisani($numer_nadawcy) {
  59. echo $numer_nadawcy;
  60. $a = mysql_query("SELECT nick FROM `users` WHERE 1");
  61. $file = fopen('/home/uosiu/rurka', 'w');
  62. fwrite($file, "/msg $numer_nadawcy ");
  63. while ($b = mysql_fetch_assoc($a)) {
  64. fwrite($file, $b['nick'].', ');
  65. }
  66. fwrite($file, "\n");
  67. fclose($file);
  68. }
  69. function wypisz($numer_nadawcy) {
  70. $a = mysql_query(sprintf("DELETE FROM `users` WHERE number = %d LIMIT 1", (int) $numer_nadawcy));
  71. $b = mysql_fetch_assoc($a);
  72. $file = fopen('/home/uosiu/rurka', 'w');
  73. fwrite($file, "/msg ".$numer_nadawcy." Zostales/as wypisany/a z systemu wysylkowego klasy 2F\n");
  74. fclose($file);
  75. }
  76. function ping($numer_nadawcy) {
  77. $file = fopen('/home/uosiu/rurka', 'w');
  78. fwrite($file, "/msg ".$numer_nadawcy." pong\n");
  79. fclose($file);
  80. }
  81. function zapisz($numer_nadawcy, $password, $nick) {
  82. $file = fopen('/home/uosiu/rurka' ,'w');
  83. //---IF USER ISN'T SUBSCRIBED, THEN ADD TO DB
  84. if (!zapisany($numer_nadawcy)) {
  85. global $zapisz_passwd;
  86. if ( $password == $zapisz_passwd) {
  87. fwrite($file, "/msg $numer_nadawcy Zostales/as zapisany/a do systemu wysylkowego klasy 2F. Witamy!\n");
  88. $a = mysql_query("INSERT INTO `bot`.`users` (`ID`, `number`, `nick`, `pause`) VALUES ( NULL, '$numer_nadawcy', '$nick', '0')");
  89. }
  90. else {
  91. fwrite($file, "/msg $numer_nadawcy ...\n");
  92. }
  93. }
  94. //--- ELSE NOTIFY, THAT (S)HE IS ALREADY SUBSCRIBED
  95. else {
  96. fwrite($file, "/msg $numer_nadawcy Juz jestes zapisany/a!\n");
  97. }
  98. fclose($file);
  99. }
  100. function msg($numer_nadawcy, $nadawca, $tresc) {
  101. $file = fopen('/home/uosiu/rurka' ,'w');
  102. //--- GET LIST OF GADU-GADU NUMBERS OF ACTIVE SUBSCRIBED USERS
  103. // $a = mysql_query(sprintf("SELECT number FROM `users` WHERE pause = '0' AND number != '%d'"), (int) $numer_nadawcy);
  104. $a = mysql_query(sprintf("SELECT number FROM `users` WHERE pause = '0' AND number != '$numer_nadawcy'", (int) $numer_nadawcy));
  105. //--- AND SEND A MESSAGE TO EACH OF THEM
  106. while ($b = mysql_fetch_assoc($a)) {
  107. // if ($numer_nadawcy != $b['number']) {
  108. fwrite($file, "/msg ".$b['number']." <".$nadawca."> $tresc\n");
  109. sleep(1);
  110. // }
  111. }
  112. fclose($file);
  113. //}
  114. }
  115. function pause($numer_nadawcy) {
  116. $file = fopen('/home/uosiu/rurka' ,'w');
  117. $odpowiedz = mysql_query(sprintf("SELECT pause FROM `users` WHERE number = %d LIMIT 1", (int) $numer_nadawcy));
  118. $row = mysql_fetch_assoc($odpowiedz);
  119. if ($row['pause'] == '0') {
  120. $odpowiedz = mysql_query(sprintf("UPDATE `bot`.`users` SET `pause` = '1' WHERE number = %d LIMIT 1", (int) $numer_nadawcy));
  121. fwrite($file, "/msg ".$numer_nadawcy." zapauzowano\n");
  122. }
  123. else {
  124. $odpowiedz = mysql_query(sprintf("UPDATE `bot`.`users` SET `pause` = '0' WHERE number = %d LIMIT 1", (int) $numer_nadawcy));
  125. fwrite($file, "/msg ".$numer_nadawcy." odpauzowano\n");
  126. }
  127. fclose($file);
  128. }
  129. //--- PROCESSING MSG
  130. switch ($polecenie) {
  131. case "zapisz":
  132. $cos = explode(' ', $wartosci, 2);
  133. //zapisz($numer_nadawcy, password, nick)
  134. zapisz($numer_nadawcy, $cos[0], $cos[1]);
  135. break;
  136. case "wypisz":
  137. wypisz($numer_nadawcy);
  138. break;
  139. case "zapisani":
  140. if ( zapisany($numer_nadawcy) ) {
  141. zapisani($numer_nadawcy);
  142. }
  143. break;
  144. case "msg":
  145. if ( zapisany($numer_nadawcy) ) {
  146. msg($numer_nadawcy, $nadawca, $wartosci);
  147. }
  148. break;
  149. case "ping":
  150. if ( zapisany($numer_nadawcy) ) {
  151. ping($numer_nadawcy);
  152. }
  153. break;
  154. case "pause" :
  155. if ( zapisany($numer_nadawcy) ) {
  156. pause($numer_nadawcy);
  157. }
  158. break;
  159. default:
  160. if ( zapisany($numer_nadawcy) ) {
  161. msg($numer_nadawcy, $nadawca, $argv[2]);
  162. }
  163. else {
  164. $file = fopen('/home/uosiu/rurka' ,'w');
  165. fwrite($file, "/msg ".$numer_nadawcy." Nie masz uprawnien do pracy w tym systemie\n");
  166. }
  167. break;
  168. }
  169. $odpowiedz = mysql_query ("UPDATE `bot`.`config` SET `pause` = '0' WHERE `config`.`pause` = 1");
  170. ?>