home *** CD-ROM | disk | FTP | other *** search
/ The Elite Hackers Toolkit / TheEliteHackersToolkitVolume1_1998.rar / HACKERS.BIN / appcraks / MESSAGEB.ZIP / ADMIN.CGI next >
Text File  |  1997-08-22  |  6KB  |  239 lines

  1. #!/usr/local/bin/perl
  2.  
  3. ######################################################################
  4. #  BEFORE TRYING TO EDIT THIS SCRIPT, READ THE README FILE
  5. ###################################################################### 
  6. #
  7. #     Dream Catchers CGI Scripts               Feel free to modify 
  8. #     Message Board Administration             this script to your 
  9. #     Created by Seth Leonard                  needs, but please
  10. #     for Dream Catchers Technologies, Inc.    keep this portion so
  11. #                                              that I get credit.  
  12. #     http://dreamcatchersweb.com/scripts      The same goes for 
  13. #                                              distribution.
  14. #
  15. #     (c)1996/1997 Dream Catchers Technologies, Inc.,
  16. #     All Rights Reserved
  17. #
  18. ######################################################################
  19.  
  20. $passwordfile = "password.txt";
  21.  
  22. $messagedir = "messages";
  23. $responsedir = "responses";
  24.  
  25. $adminscript = "http://dreamcatchersweb.com/scripts/cgi-bin/admin.cgi";
  26.  
  27. ############################################################################
  28.  
  29. read(STDIN, $namevalues, $ENV{'CONTENT_LENGTH'});
  30.  
  31. @pairs = split(/&/, $namevalues);
  32.     foreach $pair (@pairs) {
  33.     ($name, $value) = split(/=/, $pair);
  34.     $value =~ tr/+/ /;
  35.     $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  36.     $value =~ s/<!--(.|\n)*-->//g;
  37.     $value =~ s/<([^>]|\n)*>//g;
  38.     $INPUT{$name} = $value;
  39. }
  40.  
  41. $action = $INPUT{'action'};
  42.  
  43. if ($action eq 'delete') {
  44.     &delete;
  45. }
  46.  
  47. if ($action eq 'change') {
  48.     &change;
  49. }
  50.  
  51. ############################################################################
  52. # HTML PAGE TO DELETE ENTRIES
  53. ############################################################################
  54.  
  55. opendir (MESSAGES, "$messagedir");
  56. @files = readdir(MESSAGES);
  57. close (MESSAGES);
  58.  
  59. $numberoffiles = @files;
  60. $numberoffiles -= 1;
  61.  
  62. @rmessages = @files[2..$numberoffiles];
  63. @messages = reverse(@rmessages);
  64.  
  65. $messagenumber = @messages;
  66.  
  67. print ("Content-type: text/html\n\n");
  68.  
  69. print <<"html";
  70.  
  71. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  72. <HTML>
  73. <HEAD>
  74. <TITLE>Delete Entries</TITLE>
  75. </HEAD>
  76. <BODY bgcolor=ffffff>
  77. <form method=post action=$adminscript>
  78. <input type=hidden name=action value=delete>
  79. <b>Password:</b> <input type=text name=password size=12>
  80. <hr>
  81. <b>You currently have $messagenumber messages posted</b>.<br><br><i>Please enter the number of messages you would like to remain on the board.  For example, if you enter '100', your board will only show 100 messages. The oldest messages will be deleted.  
  82.  
  83. All messages deleted will also have their responses deleted. The number that you will cut to is only shown on the main board, so you could cut it to 100 messages, but still have 300 responses to those 100 messages.</i>
  84. <hr>
  85. <b>Cut Board Messages to : <input type=text name=number size=5></b> <input type=submit value="Delete"></form>
  86. <hr>
  87. <form method=post action=$adminscript>
  88. <input type=hidden name=action value=change>
  89. <b>Change Administration Password</b><br><br>
  90. Old Password: <input type=text name=password size=12> New Password: <input type=text name=newpassword size=12> <input type=submit value="Change Password"></form><hr>
  91. <a href=http://dreamcatchersweb.com/scripts/>©1997 Dream Catchers Technologies, Inc.</a>
  92. </BODY>
  93. </HTML>
  94.  
  95. html
  96.  
  97. exit;
  98.  
  99.  
  100. ############################################################################
  101. # CHANGE PASSWORD
  102. ############################################################################
  103.  
  104. sub change {
  105.  
  106. $userpassword = crypt($INPUT{'password'}, sb);
  107.  
  108. open (USER, "$passwordfile");
  109. $password = <USER>;
  110. close (USER);
  111.  
  112. chop ($password) if ($password =~ /\n$/);
  113.  
  114. unless ($password eq $userpassword) {
  115.     print ("Content-type: text/html\n\n");
  116.     print ("<html><BODY BGCOLOR=ffffff>\n");
  117.     print ("<font size=5>You Entered an Illegal Password</font>\n");
  118.     print ("</body></html>\n");
  119.     exit;
  120. }
  121.  
  122. $newpassword = crypt($INPUT{'newpassword'}, sb);
  123.  
  124. open (USER, ">$passwordfile");
  125. print USER ("$newpassword");
  126. close (USER);
  127.  
  128. print ("Content-type: text/html\n\n");
  129. print ("<html><BODY BGCOLOR=ffffff>\n");
  130. print ("<font size=5>Your New Password is $INPUT{'newpassword'}</font>\n");
  131. print ("</body></html>\n");
  132.  
  133. exit;
  134.  
  135. }
  136.  
  137. ############################################################################
  138. # DELETE MESSAGES
  139. ############################################################################
  140.  
  141. sub delete {
  142.  
  143. $userpassword = crypt($INPUT{'password'}, sb);
  144.  
  145. open (USER, "$passwordfile");
  146. $password = <USER>;
  147. close (USER);
  148.  
  149. chop ($password) if ($password =~ /\n$/);
  150.  
  151. unless ($password eq $userpassword) {
  152.     print ("Content-type: text/html\n\n");
  153.     print ("<html><BODY BGCOLOR=ffffff>\n");
  154.     print ("<font size=5>You Entered an Illegal Password</font>\n");
  155.     print ("</body></html>\n");
  156.     exit;
  157. }
  158.  
  159. opendir (MESSAGES, "$messagedir");
  160. @files = readdir(MESSAGES);
  161. close (MESSAGES);
  162.  
  163. $numberoffiles = @files;
  164. $numberoffiles -= 1;
  165.  
  166. @rmessages = @files[2..$numberoffiles];
  167.  
  168. foreach $message (@rmessages) {
  169.         $x = 1;
  170.         while ($x < @rmessages) {
  171.                 if ($rmessages[$x - 1] > $rmessages[$x]) {
  172.                         @rmessages[$x - 1, $x] = @rmessages[$x, $x - 1];
  173.                 }
  174.                 $x++;
  175.         }
  176. }
  177.  
  178. @messages = reverse(@rmessages);
  179.  
  180. $messagenumber = @messages;
  181.  
  182. $deletepast = $INPUT{'number'};
  183. $messagenumber -= 1;
  184.  
  185. @deletemessages = @messages[$deletepast..$messagenumber];
  186.  
  187. $deletenumber = 0;
  188.  
  189. foreach $deletemessage (@deletemessages) {
  190.  
  191.     unlink ("$messagedir/$deletemessage");
  192.  
  193.     chop ($deletemessage);
  194.     chop ($deletemessage);
  195.     chop ($deletemessage);
  196.     chop ($deletemessage);
  197.  
  198.     $deleted[$deletenumber] = $deletemessage;
  199.     $deletenumber += 1;
  200.  
  201. }
  202.  
  203. opendir (MESSAGES, "$responsedir");
  204. @files = readdir(MESSAGES);
  205. close (MESSAGES);
  206.  
  207. $numberoffiles = @files;
  208. $numberoffiles -= 1;
  209.  
  210. @responses = @files[2..$numberoffiles];
  211.  
  212. foreach $response (@responses) {
  213.  
  214.     open (RESPONSE, "$responsedir/$response");
  215.     ($subject, $name, $postunder, $responses, $date, $puser, $post) = <RESPONSE>;
  216.     close (RESPONSE);
  217.  
  218.     chop ($postunder) if ($postunder =~ /\n$/);
  219.  
  220.     chop ($response);
  221.     chop ($response);
  222.     chop ($response);
  223.     chop ($response);
  224.  
  225.     foreach $deleted (@deleted) {
  226.         if ($postunder eq $deleted) {
  227.             $deleted[$deletenumber] = $response;
  228.             $deletenumber += 1;
  229.             unlink ("$responsedir/$response.txt");
  230.         }
  231.     }
  232. }
  233.  
  234. print ("Location: $adminscript\n\n");
  235.  
  236. exit;
  237.  
  238. }
  239.