Guest User

Untitled

a guest
Mar 12th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 KB | None | 0 0
  1. #!/usr/bin/perl
  2. # SDF-COMMODE AUTO MODARATOR
  3. use Net::Telnet;
  4. #use strict;
  5. use warnings;
  6.  
  7. # allowed masters
  8. my @masters = ( 'pi','i0n','smj');
  9. # BAD GUYS
  10. my @enemys= ( '' );
  11. # Varible Declarations
  12. my $server = "";
  13. my $buffer ="";
  14.  
  15. #Authentication info
  16. my $host = 'sdf.lonestar.org';
  17. my $username = 'comzor';
  18. my $password = 'comzor2008';
  19.  
  20. # Function for checking username against list of masters
  21. sub enemy_check {
  22. my $name = shift;
  23. # if submited with server, strip it out (warning: this is sloppy :P
  24. if ($name =~ m/@/) { $name =~ s/@.*$//; }
  25. foreach $enemy (@enemys) {
  26. if ($enemy =~ $name) {
  27. return 1;
  28. }
  29. }
  30. return 0;
  31. }
  32. sub master_check {
  33. my $name = shift;
  34. # #loop through array and compare
  35. # # return 1 if master, 0 if not
  36. foreach my $mast (@masters) {
  37. if ($mast eq $name) {
  38. return 1;
  39. }
  40. }
  41. return 0;
  42. }
  43. # usage: psh_login($user,$pass)
  44. sub psh_login {
  45. my $user= shift;
  46. my $pass = shift;
  47. #login to sdf, conect to a preval shell, and start com
  48. $server = new Net::Telnet (Prompt => '/(.){1,4}/');
  49. $server->open($host) or die "connect:[ $! ]";
  50. $server->waitfor('/login:.*$/') or die "waiting for login...";
  51. $server->print("$user");
  52. $server->waitfor('/Password:.*$/') or die "waiting for pass...";
  53. $server->print("$pass");
  54. $server->waitfor('/Please\spress\syour\sBACKSPACE\skey:.*$/') or die "waiting for backspace prompt...";
  55. $server->print("\b");
  56. $server->waitfor('/\[CONTINUE\].*$/');
  57. $server->print("");
  58. $server->waitfor('/sdf/') or die "waiting for shell prompt...";
  59. $server->print("com");
  60. $server->waitfor('/COMMODE/');
  61. }
  62. psh_login($username, $password, $host) or die "login: $1 ";
  63.  
  64.  
  65. # function for returning users in a room
  66. sub who_in {
  67.  
  68. my $room = shift;
  69. #my $who_buffer = "";
  70. #my $buf = "";
  71. my @who;
  72. # set the timeout to 5 seconds
  73. $server->timeout(5);
  74. # Ask COMMODE whos in the room
  75. $server->print("W$room");#$my_cap = 0;
  76. # read a line from the input buffer untill it finds 3 blank lines
  77. do {
  78. $buf = $server->getline();
  79. if ($buf eq "") { $my_cap++;} else {
  80. $who_buffer = $who_buffer . $buf;
  81. }
  82. } until ( $my_cap = 4 );
  83. # replace spaces or newlines to a single space
  84. $who_buffer =~ s/(\s|\n)+?/\s/m;
  85. #split $who_buffer by spaces into the @who array
  86. @who = split(/\s/, $who_bufer);
  87. #set the timeout back to endless
  88. $server->timeout(undef);
  89. $server->print("@who");
  90. }
  91.  
  92. print "WARNING: Endlessloop...\n\n";
  93.  
  94. #Set the server not to time-out on an endless read
  95. $server->timeout(undef);
  96.  
  97. #DONT SPAM LOBBY
  98. $server->print("gbotlab");
  99.  
  100. #Empty input buffer to save processing time
  101. $server->buffer_empty;
  102.  
  103. # Start a loop while $server exists
  104. do {
  105.  
  106. #read input buffer one line at a time
  107. $buffer = $server->getline();
  108. # strip esc chars
  109. $buffer =~ s/\e\[[\d+\;?]+m//;
  110. $buffer =~ s/\e\[\d+m//;
  111. ### Command Function Parsing ###
  112. # test funtion 1 pm enabled
  113. if ($buffer =~ m/\!poke/) {
  114. $server->print("vROAR!!!! ");
  115. }
  116. # Goto function (master protected) Pm enabled
  117. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!g\s(.*)/ ) {
  118. if ((master_check($1)) == 1) {
  119. $server->print("v yes, $1");
  120. $server->print("g$2");
  121. } else { $server->print("vYour not my master."); };
  122.  
  123. }
  124. # PM Bomb (master protected) pm enabled
  125. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!b\s(.*)\-\-(.*)/) {
  126. if ((master_check($1)) == 1) {
  127. for (1 .. 20) {
  128. $server->print("s$2");
  129. $server->print("$3");
  130. }
  131. } else { $server->print("vYou're not my master."); };
  132. }
  133. #Dump this code (master enabled)
  134. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!dump/) {
  135. if ((master_check($1)) == 1) {
  136. # open itself and print contents to com
  137. open (ME, $0) or $server->("vERROR: [ $! ]");
  138. while (<ME>) {
  139. #if string contains password, replace with set amount of x's
  140. s/$password/XXXXXXXXXXXXXXXXXX/;
  141. $server->put("v$_");
  142. sleep 1;
  143. }
  144. close ME;
  145. } else { $server->print("vYou're not my master."); };
  146. }
  147. # Auto Zap (enemy aware)
  148. elsif ($buffer =~ m/^\[\d{2}:\d{2}:\d{2}\]\s(.*)\shas\sjoined\s/ ) {
  149. if ((enemy_check($1)) == 1) {
  150. $server->print("Z$1");
  151. $server->print("accessdenied");
  152. } else { #$server->print("v$1 clear");
  153. }
  154.  
  155.  
  156. }
  157. #Netris Cheat (master protected) pm enabled --STILL UNDER DEVOLPMENT--
  158. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!n\s(.*)/) {
  159. if ((master_check($1)) == 1) {
  160. $server->print("n$2");
  161. sleep 1;
  162. for (1 .. 5) {
  163. $buffer = $buffer . $server->getline();
  164. }
  165. $buffer = $server->getline ;
  166.  
  167. if ($buffer =~ m/you\sare\sin/) {
  168. $server->print("vnotvalidplayer");
  169. } else {
  170. $server->waitfor('/Netris/');
  171. $server->print("<drop>") x 20;
  172.  
  173. #flush netris game from input buffer
  174. $server->buffer_empty;
  175. }
  176.  
  177.  
  178. } else { $server->print("vYou're not my master."); };
  179. }
  180. # who test
  181. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!w\s(.*)/) {
  182. my @test = who_in($2);
  183. $server->print("v@test");
  184. }
  185. # exit command (master checked) pm enabled
  186. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!q/) {
  187. if ((master_check($1)) == 1) {
  188. $server->print("vBye, Bye!");
  189. sleep 1;
  190. $server->put("q");
  191. $server->print("logout");
  192. die;
  193. } else { $server->print("vYou're not my master."); };
  194. }
  195. #elsif ($THIS_SHOULD_NOT_HAPPEN) {
  196. #die "huh?";
  197. #}
  198. else {
  199. #$server->print("a error: command not reconized");
  200. }
  201. ################################
  202.  
  203. print "$buffer";
  204. $buffer = "";
  205. } while ($server);
  206. #this last newline must be here for !dump ThAnks for reading
Add Comment
Please, Sign In to add comment