Guest User

Untitled

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