home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_28_2.lzh / module / log / recent.plm < prev    next >
Text File  |  1998-10-15  |  8KB  |  277 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
  2. # $Id: recent.plm,v 2.11 1998/07/31 09:45:07 hasegawa Exp $
  3. # copyright (c)1997-1998 pupu_j <hasegawa@agusa.nuie.nagoya-u.ac.jp>
  4.  
  5. package log_recent;
  6.  
  7. $HEADER = '%H:%M';
  8. $LINE = 50;
  9. $COMMAND = &'list('privmsg');
  10.  
  11. $_ = 'log_recent';
  12.  
  13. sub client_open {
  14.   local($clientno) = @_;
  15.   foreach $log (&'array($recent[$'userno[$clientno]])) {
  16.     &'c_print($clientno, '', 'NOTICE', $'nick[$clientno], $log);
  17.   }
  18. }
  19.  
  20. sub ss_privmsg {
  21.   local($serverno, $prefix, $cmd, @params) = @_;
  22.   local($nick, $vchan);
  23.   if ($params[1] && &savecommand($'userno[$serverno], $cmd)) {
  24.     $nick = &'prefix($prefix);
  25.     if ($params[0] =~ /^[\#\&\+]/) {
  26.       $vchan = &'alias($params[0]);
  27.       if (&'exist($'nameslist{$serverno, $params[0]}, $nick, "\+$nick", "\@$nick")) {
  28.         &writelog($serverno, "<$vchan:$nick> $params[1]");
  29.       } else {
  30.         &writelog($serverno, "($vchan:$nick) $params[1]");
  31.       }
  32.     } else {
  33.       &writelog($serverno, "=$nick= $params[1]");
  34.     }
  35.   }
  36.   return ($prefix, $cmd, @params);
  37. }
  38.  
  39. sub ss_notice {
  40.   local($serverno, $prefix, $cmd, @params) = @_;
  41.   local($nick, $vchan);
  42.   if ($params[1] && &savecommand($'userno[$serverno], $cmd)) {
  43.     $nick = &'prefix($prefix);
  44.     if ($params[0] =~ /^[\#\&\+]/) {
  45.       $vchan = &'alias($params[0]);
  46.       if (&'exist($'nameslist{$serverno, $params[0]}, $nick, "\+$nick", "\@$nick")) {
  47.         &writelog($serverno, "<$vchan:$nick> $params[1]");
  48.       } else {
  49.         &writelog($serverno, "($vchan:$nick) $params[1]");
  50.       }
  51.     } else {
  52.       &writelog($serverno, "=$nick= $params[1]");
  53.     }
  54.   }
  55.   return ($prefix, $cmd, @params);
  56. }
  57.  
  58. sub ss_join {
  59.   local($serverno, $prefix, $cmd, @params) = @_;
  60.   local($nick, $name, $mode, $vchan);
  61.   if (&savecommand($'userno[$serverno], $cmd)) {
  62.     $nick = &'prefix($prefix);
  63.     ($name, $mode) = (split(/\cG/, $params[0]), '');
  64.     $vchan = &'alias($name);
  65.     if (index($mode, 'o') != -1) {
  66.       &writelog($serverno, "+ \@$nick ($prefix) to $vchan");
  67.     } elsif (index($mode, 'v') != -1) {
  68.       &writelog($serverno, "+ +$nick ($prefix) to $vchan");
  69.     } else {
  70.       &writelog($serverno, "+ $nick ($prefix) to $vchan");
  71.     }
  72.   }
  73.   return ($prefix, $cmd, @params);
  74. }
  75.  
  76. sub ss_part {
  77.   local($serverno, $prefix, $cmd, @params) = @_;
  78.   local($nick, $vchan);
  79.   if (&savecommand($'userno[$serverno], $cmd)) {
  80.     $nick = &'prefix($prefix);
  81.     $vchan = &'alias($params[0]);
  82.     &writelog($serverno, "- $nick from $vchan ($params[1])");
  83.   }
  84.   return ($prefix, $cmd, @params);
  85. }
  86.  
  87. sub ss_kick {
  88.   local($serverno, $prefix, $cmd, @params) = @_;
  89.   local($nick, $vchan);
  90.   if (&savecommand($'userno[$serverno], $cmd)) {
  91.     $nick = &'prefix($prefix);
  92.     $vchan = &'alias($params[0]);
  93.     &writelog($serverno, "- $params[1] by $nick from $vchan ($params[2])");
  94.   }
  95.   return ($prefix, $cmd, @params);
  96. }
  97.  
  98. sub ss_invite {
  99.   local($serverno, $prefix, $cmd, @params) = @_;
  100.   local($nick, $vchan);
  101.   if (&savecommand($'userno[$serverno], $cmd)) {
  102.     $nick = &'prefix($prefix);
  103.     $vchan = &'alias($params[1]);
  104.     &writelog($serverno, "Invited by $nick: $vchan");
  105.   }
  106.   return ($prefix, $cmd, @params);
  107. }
  108.  
  109. sub ss_mode {
  110.   local($serverno, $prefix, $cmd, @params) = @_;
  111.   local($nick, $vchan, @mode);
  112.   @mode = @params;
  113.   shift(@mode);
  114.   if (&savecommand($'userno[$serverno], $cmd)) {
  115.     $nick = &'prefix($prefix);
  116.     if ($params[0] =~ /^[\#\&\+]/) {
  117.       $vchan = &'alias($params[0]);
  118.       &writelog($serverno, "Mode by $nick: $vchan " . join(' ', @mode));
  119.     } else {
  120.       &writelog($serverno, "Mode by $nick: $params[0] " . join(' ', @mode));
  121.     }
  122.   }
  123.   return ($prefix, $cmd, @params);
  124. }
  125.  
  126. sub ss_nick {
  127.   local($serverno, $prefix, $cmd, @params) = @_;
  128.   local($nick);
  129.   if (&savecommand($'userno[$serverno], $cmd)) {
  130.     $nick = &'prefix($prefix);
  131.     if ($nick eq $'nick[$serverno] || $params[0] eq $'nick[$serverno]) {
  132.       &writelog($serverno, "My nick is changed ($nick -\> $params[0])");
  133.     } else {
  134.       &writelog($serverno, "$nick -\> $params[0]");
  135.     }
  136.   }
  137.   return ($prefix, $cmd, @params);
  138. }
  139.  
  140. sub ss_quit {
  141.   local($serverno, $prefix, $cmd, @params) = @_;
  142.   local($nick);
  143.   if (&savecommand($'userno[$serverno], $cmd)) {
  144.     $nick = &'prefix($prefix);
  145.     &writelog($serverno, "! $nick ($params[0])");
  146.   }
  147.   return ($prefix, $cmd, @params);
  148. }
  149.  
  150. sub ss_topic {
  151.   local($serverno, $prefix, $cmd, @params) = @_;
  152.   local($nick, $vchan);
  153.   if (&savecommand($'userno[$serverno], $cmd)) {
  154.     $nick = &'prefix($prefix);
  155.     $vchan = &'alias($params[0]);
  156.     &writelog($serverno, "Topic of channel $vchan by $nick: $params[1]");
  157.   }
  158.   return ($prefix, $cmd, @params);
  159. }
  160.  
  161. sub sp_privmsg {
  162.   local($serverno, $prefix, $cmd, @params) = @_;
  163.   local($chan, $vchan);
  164.   if ($params[1] && &savecommand($'userno[$serverno], $cmd)) {
  165.     foreach $chan (split(/\,/, $params[0])) {
  166.       if ($chan =~ /^[\#\&\+]/) {
  167.         $vchan = &'alias($chan);
  168.         &writelog($serverno, ">$vchan:$'nick[$serverno]< $params[1]");
  169.       } else {
  170.         &writelog($serverno, ">$chan< $params[1]");
  171.       }
  172.     }
  173.   }
  174.   return ($prefix, $cmd, @params);
  175. }
  176.  
  177. sub sp_notice {
  178.   local($serverno, $prefix, $cmd, @params) = @_;
  179.   local($chan, $vchan);
  180.   if ($params[1] && &savecommand($'userno[$serverno], $cmd)) {
  181.     foreach $chan (split(/\,/, $params[0])) {
  182.       if ($chan =~ /^[\#\&\+]/) {
  183.         $vchan = &'alias($chan);
  184.         &writelog($serverno, ">$vchan:$'nick[$serverno]< $params[1]");
  185.       } else {
  186.         &writelog($serverno, ">$chan< $params[1]");
  187.       }
  188.     }
  189.   }
  190.   return ($prefix, $cmd, @params);
  191. }
  192.  
  193. sub savecommand {
  194.   local($userno, $cmd) = @_;
  195.   local($save);
  196.   $save = &'property($userno, 'command');
  197.   if (defined($save)) {
  198.     $save = '';
  199.     foreach $mask (&'property($userno, 'command')) {
  200.       $save = &'add($save, split(/\,/, $mask));
  201.     }
  202.   } else {
  203.     $save = $COMMAND;
  204.   }
  205.   return &'exist($save, $cmd);
  206. }
  207.  
  208. sub writelog {
  209.   local($serverno, $log) = @_;
  210.   local($userno, @log, $header, $line);
  211.   $userno = $'userno[$serverno];
  212.   $header = &'property($userno, 'header');
  213.   $header = $HEADER unless defined($header);
  214.   $header = &'date($header);
  215.   @log = &'array($recent[$userno]);
  216.   push(@log, "$header $log");
  217.   $line = &'property($userno, 'line');
  218.   $line = $LINE unless defined($line);
  219.   while (scalar(@log) > $line) {
  220.     shift(@log);
  221.   }
  222.   $recent[$userno] = &'list(@log);
  223. }
  224.  
  225. __END__
  226. --><HTML><HEAD>
  227. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
  228. <LINK REV="made" HREF="mailto:hasegawa@agusa.nuie.nagoya-u.ac.jp">
  229. <TITLE>log/recent.plm</TITLE></HEAD><BODY>
  230.  
  231. $B%*%s%i%$%s%I%-%e%a%s%H(B
  232.  
  233.  
  234. <HR><H3>$BL>A0(B</H3>
  235.  
  236. log/recent.plm - $B%/%i%$%"%s%H$r@\B3$7$?$H$-$K:G6a$N%a%C%;!<%8$rAw$k(B
  237.  
  238.  
  239. <HR><H3>$B@bL@(B</H3>
  240.  
  241. $B:G6a$N%a%C%;!<%8$r;XDj$7$??t$@$1J]B8$7$F$*$-!"(B
  242. $B%/%i%$%"%s%H$r@\B3$7$?$H$-$K!"$=$l$rAw$j$^$9!#(B
  243.  
  244.  
  245. <HR><H3>$B%W%m%Q%F%#(B</H3>
  246.  
  247. <DL>
  248. <DT>  log.recent.header $B$X%C%@(B
  249. </DT>
  250. <DD>    $B%m%0$N;~9o$N%U%)!<%^%C%H$r;XDj$7$^$9!#(B
  251.         %$B$G$O$8$^$kJ8;z$,$"$k$H!"BP1~$9$k;~4V$KJQ49$5$l$^$9!#(B
  252. </DD>
  253. <DT>  log.recent.line $B9T?t(B
  254. </DT>
  255. <DD>    $B%m%0$r;D$99T?t$r;XDj$7$^$9!#%G%U%)%k%H$G$O(B50$B9T$G$9!#(B
  256. </DD>
  257. <DT>  log.recent.command ({invite|join|kick|mode|nick|notice|part|privmsg|quit|topic})
  258. </DT>
  259. <DD>    $BJ]B8$9$k%a%C%;!<%8$N<oN`$r;XDj$7$^$9!#(B
  260.         $B%G%U%)%k%H$G$O!V(Bprivmsg$B!W$@$1$G$9!#(B
  261. </DD>
  262. </DL>
  263.  
  264.  
  265. <HR><H3>$B@_DjNc(B</H3>
  266.  
  267. <PRE>
  268. log.recent.header: %H%M%S
  269. log.recent.command: notice,privmsg,topic
  270. </PRE>
  271.  
  272. $B$X%C%@$r!V(B%H%M%S$B!W$K$7!"%m%0$N<oN`$r!V(Bnotice$B!W!"!V(Bprivmsg$B!W!"!V(Btopic$B!W(B
  273. $B$N(B3$B<oN`$K$7$^$9!#(B
  274. $B!V(B%H$B!W!"!V(B%M$B!W!"!V(B%S$B!W$O$=$l$>$l8=:_$N;~!"J,!"IC$KJQ49$5$l$^$9!#(B
  275.  
  276. </BODY></HTML>
  277.