addalias.pl 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. #!/usr/bin/perl -w
  2. use strict;
  3. print "Content-Type: text/html\n\n";
  4. my (%oldnicks, @users, @nick, %form);
  5. sub htmlheader
  6. {
  7. print <<HTML
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  9. <html>
  10. <head>
  11. <title>IRC statistics - user addition page</title>
  12. </head>
  13. <style type="text/css">
  14. body,td {
  15. font-family: verdana, arial, sans-serif;
  16. font-size: 12px;
  17. }
  18. </style>
  19. <body>
  20. HTML
  21. }
  22. sub htmlfooter
  23. {
  24. print <<HTML
  25. </body>
  26. </html>
  27. HTML
  28. }
  29. sub read_config
  30. {
  31. open(FILE, "<pisg.cfg") or die("Error opening file: $!");
  32. my $i = 0;
  33. while(<FILE>) {
  34. if($_ =~ /^<user/) {
  35. $users[$i] = $_;
  36. chomp $users[$i];
  37. $i++;
  38. }
  39. }
  40. close(FILE);
  41. my $search = 0;
  42. $i = 0;
  43. foreach(@users) {
  44. if($users[$i] =~ /nick=/) {
  45. if ($users[$i] =~ /nick="(\S+)"(.*)/) {
  46. $nick[$i] = $1;
  47. $oldnicks{$nick[$i]}{'nick'} = $nick[$i];
  48. }
  49. if ($users[$i] =~ /alias="(\S+)".*/ or $users[$i] =~ /alias="(.*)"\s.* / or $users[$i] =~ /alias="(.*)">/ ) {
  50. my $alias = $1;
  51. $oldnicks{$nick[$i]}{'alias'} = $alias;
  52. }
  53. if ($users[$i] =~ /link="(\S+)"(.*)/) {
  54. my $link = $1;
  55. $oldnicks{$nick[$i]}{'link'} = $link;
  56. }
  57. if ($users[$i] =~ /pic="(\S+)"(.*)/) {
  58. my $pic = $1;
  59. $oldnicks{$nick[$i]}{'pic'} = $pic;
  60. }
  61. if ($users[$i] =~ /sex="(\S+)"(.*)/) {
  62. my $sex = $1;
  63. $oldnicks{$nick[$i]}{'sex'} = $sex;
  64. }
  65. if($users[$i] =~ /ignore="(\S+)"(.*)/) {
  66. my $ignore = $1;
  67. if($ignore eq "y" or $ignore eq "Y") {
  68. $ignore = 1;
  69. } else {
  70. $ignore = 0;
  71. }
  72. $oldnicks{$nick[$i]}{'ignore'} = $ignore;
  73. }
  74. } else {
  75. $search = 1;
  76. }
  77. $i++;
  78. }
  79. return $search;
  80. }
  81. sub get_request
  82. {
  83. my $input;
  84. if ($ENV{'REQUEST_METHOD'} eq 'GET') {
  85. $input = $ENV{'QUERY_STRING'}
  86. } else {
  87. read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
  88. }
  89. my @formfields = split(/&/, $input);
  90. foreach my $field (@formfields) {
  91. my ($name, $value) = split(/=/, $field);
  92. $value =~ tr/+/ /;
  93. $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  94. $value =~ s/<!--(.|\n)*-->//g;
  95. $form{$name} = $value;
  96. }
  97. if ($form{'ignore'} eq "on") { $form{'ignore'} = 1; }
  98. }
  99. sub check_if_found
  100. {
  101. my $found = 0;
  102. foreach (@nick) {
  103. if ($oldnicks{$_}{'nick'} eq $form{'nick'}) {
  104. $found = 1;
  105. }
  106. }
  107. if ($found eq "1") {
  108. print "<p>The nickname you've choosen is already configured with the following settings:</p>\n";
  109. print "<table>\n <tr>\n";
  110. print " <td>Nickname:</td>\n <td>$oldnicks{$form{'nick'}}{'nick'}</td>\n";
  111. print " </tr>\n";
  112. if($oldnicks{$form{'nick'}}{'alias'}) {
  113. print " <tr>\n";
  114. print " <td>Aliases:</td>\n <td>$oldnicks{$form{'nick'}}{'alias'}</td>\n";
  115. print " </tr>\n";
  116. }
  117. if($oldnicks{$form{'nick'}}{'link'}) {
  118. print " <tr>\n";
  119. if($oldnicks{$form{'nick'}}{'link'} =~ /^http:|ftp:/) {
  120. print " <td>Link:</td>\n <td><a href=\"$oldnicks{$form{'nick'}}{'link'}\">$oldnicks{$form{'nick'}}{'link'}</a></td>\n";
  121. }
  122. elsif ($oldnicks{$form{'nick'}}{'link'} =~ /(.*)@(.*).(.*)/) {
  123. print " <td>Link:</td>\n <td><a href=\"mailto:$oldnicks{$form{'nick'}}{'link'}\">$oldnicks{$form{'nick'}}{'link'}</a></td>\n";
  124. } else {
  125. print " <td>Link:</td>\n <td>$oldnicks{$form{'nick'}}{'link'}</td>\n";
  126. }
  127. print " </tr>\n";
  128. }
  129. if($oldnicks{$form{'nick'}}{'pic'}) {
  130. print " <tr>\n";
  131. print " <td>Userpic:</td>\n <td valign=\"middle\"><a href=\"$oldnicks{$form{'nick'}}{'pic'}\"><img src=\"$oldnicks{$form{'nick'}}{'pic'}\" border=\"0\"></a></td>\n";
  132. print " </tr>\n";
  133. }
  134. if($oldnicks{$form{'nick'}}{'sex'}) {
  135. print " <tr>\n";
  136. print " <td>Sex:</td>\n <td valign=\"middle\">$oldnicks{$form{'nick'}}{'sex'}</td>\n";
  137. print " </tr>\n";
  138. }
  139. if($oldnicks{$form{'nick'}}{'ignore'} eq "1") {
  140. print " <tr>\n";
  141. print " <td>Ignore:</td>\n <td>Yes</td>\n";
  142. print " </tr>\n";
  143. }
  144. print "</table>\n";
  145. print "<p>Please click <a href=\"javascript:history.back()\">here</a> to choose an other nickname</p>\n";
  146. exit(0);
  147. }
  148. }
  149. sub checks
  150. {
  151. if(!$form{'nick'}) {
  152. print "You haven't entered a nickname.. Your request will be ignored<br>";
  153. print "Please click <a href=\"javascript:history.back()\">here</a> to choose an other nickname";
  154. exit(0);
  155. }
  156. if($form{'nick'} and !$form{'alias'} and !$form{'link'} and !$form{'pic'} and !$form{'ignore'} and !$form{'sex'}) {
  157. print "You've entered a nickname but haven't configured any settings for that nickname<br>\n";
  158. print "Please click <a href=\"javascript:history.back()\">here</a> to configure some settings for the nickname";
  159. exit(0);
  160. }
  161. }
  162. sub add_line
  163. {
  164. my $line_to_add = "<user";
  165. if($form{'nick'}) {
  166. $line_to_add .= " nick=\"$form{'nick'}\"";
  167. }
  168. if($form{'alias'}) {
  169. $line_to_add .= " alias=\"$form{'alias'}\"";
  170. }
  171. if($form{'link'}) {
  172. $line_to_add .= " link=\"$form{'link'}\"";
  173. }
  174. if($form{'pic'}) {
  175. $line_to_add .= " pic=\"$form{'pic'}\"";
  176. }
  177. if($form{'sex'}) {
  178. $line_to_add .= " sex=\"$form{'sex'}\"";
  179. }
  180. if($form{'ignore'} eq "1") {
  181. $line_to_add .= " ignore=\"y\"";
  182. }
  183. $line_to_add .= ">";
  184. print <<HTML
  185. You nickname was successfully added.:<br>\n
  186. <table>
  187. <tr>
  188. <td>Nickname:</td><td>$form{'nick'}</td>
  189. </tr>
  190. HTML
  191. ;
  192. if($form{'alias'}) {
  193. print " <tr>\n";
  194. print " <td>Aliases:</td><td>$form{'alias'}</td>\n";
  195. print " </tr>\n";
  196. }
  197. if($form{'link'}) {
  198. print " <tr>\n";
  199. print " <td>Link:</td><td><a href=\"$form{'link'}\">$form{'link'}</a></td>\n";
  200. print " </tr>\n";
  201. }
  202. if($form{'pic'}) {
  203. print " <tr>\n";
  204. print " <td>Userpic:</td><td><img src=\"$form{'pic'}\"></td>\n";
  205. print " </tr>\n";
  206. }
  207. if($form{'sex'}) {
  208. print " <tr>\n";
  209. print " <td>Sex:</td><td>$form{'sex'}</td>\n";
  210. print " </tr>\n";
  211. }
  212. if($form{'ignore'} eq "1") {
  213. print " <tr>\n";
  214. print " <td>Ignore:</td><td>Yes</td>\n";
  215. print " </tr>\n";
  216. }
  217. open(FILE, ">>pisg.cfg") or die("Error opening file: $!");
  218. print FILE "$line_to_add\n";
  219. close(FILE);
  220. }
  221. sub main
  222. {
  223. htmlheader();
  224. my $search = read_config();
  225. get_request();
  226. if ($search ne "1") {
  227. check_if_found();
  228. }
  229. checks();
  230. add_line();
  231. htmlfooter();
  232. }
  233. main();