home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_15_2.lzh / module / log / daily.plm < prev    next >
Text File  |  1997-11-21  |  9KB  |  286 lines

  1. # <!-- -*- perl -*-
  2. # $Id: daily.plm,v 2.2 1997/11/22 01:52:26 hasegawa Exp $
  3. # copyright (c)1997 pupu_j <hasegawa@agusa.nuie.nagoya-u.ac.jp>
  4.  
  5. package log_daily;
  6.  
  7. $DIRECTORY = '.';
  8. $FILE = 'log%m%d';
  9. $HEADER = '%H:%M';
  10. $MODE = umask() ^ 0666;
  11. $SAVE = &'list('privmsg', 'join', 'part', 'kick' ,'invite', 'mode', 'nick', 'quit', 'topic');
  12.  
  13. $_ = 'log_daily';
  14.  
  15. sub ss_privmsg {
  16.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  17.   local($nick, $vchan);
  18.   if (&savecommand($'userno[$serverno], $cmd)) {
  19.     $nick = &'prefix($prefix);
  20.     if ($chan =~ /^[\#\&\+\-]/) {
  21.       $vchan = &'alias($chan);
  22.       if (&'exist($'nameslist{$'userno[$serverno], $chan}, $nick, "\+$nick", "\@$nick")) {
  23.         &writelog($'userno[$serverno], "<$vchan:$nick> $msg");
  24.       } else {
  25.         &writelog($'userno[$serverno], "($vchan:$nick) $msg");
  26.       }
  27.     } else {
  28.       &writelog($'userno[$serverno], "=$nick= $msg");
  29.     }
  30.   }
  31.   return ($prefix, $cmd, $chan, $msg);
  32. }
  33.  
  34. sub ss_notice {
  35.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  36.   local($nick, $vchan);
  37.   if (&savecommand($'userno[$serverno], $cmd)) {
  38.     $nick = &'prefix($prefix);
  39.     if ($chan =~ /^[\#\&\+\-]/) {
  40.       $vchan = &'alias($chan);
  41.       if (&'exist($'nameslist{$'userno[$serverno], $chan}, $nick, "\+$nick", "\@$nick")) {
  42.         &writelog($'userno[$serverno], "<$vchan:$nick> $msg");
  43.       } else {
  44.         &writelog($'userno[$serverno], "($vchan:$nick) $msg");
  45.       }
  46.     } else {
  47.       &writelog($'userno[$serverno], "=$nick= $msg");
  48.     }
  49.   }
  50.   return ($prefix, $cmd, $chan, $msg);
  51. }
  52.  
  53. sub ss_join {
  54.   local($serverno, $prefix, $cmd, $chan) = @_;
  55.   local($nick, $name, $mode, $vchan);
  56.   if (&savecommand($'userno[$serverno], $cmd)) {
  57.     $nick = &'prefix($prefix);
  58.     ($name, $mode) = (split(/\cG/, $chan), '');
  59.     $vchan = &'alias($name);
  60.     if (index($mode, 'o') != -1) {
  61.       &writelog($'userno[$serverno], "+ \@$nick ($prefix) to $vchan");
  62.     } elsif (index($mode, 'v') != -1) {
  63.       &writelog($'userno[$serverno], "+ +$nick ($prefix) to $vchan");
  64.     } else {
  65.       &writelog($'userno[$serverno], "+ $nick ($prefix) to $vchan");
  66.     }
  67.   }
  68.   return ($prefix, $cmd, $chan);
  69. }
  70.  
  71. sub ss_part {
  72.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  73.   local($nick, $vchan);
  74.   if (&savecommand($'userno[$serverno], $cmd)) {
  75.     $nick = &'prefix($prefix);
  76.     $vchan = &'alias($chan);
  77.     $msg = '' unless $msg;
  78.     &writelog($'userno[$serverno], "- $nick from $vchan ($msg)");
  79.   }
  80.   return ($prefix, $cmd, $chan, $msg);
  81. }
  82.  
  83. sub ss_kick {
  84.   local($serverno, $prefix, $cmd, $chan, $whom, $msg) = @_;
  85.   local($nick, $vchan);
  86.   if (&savecommand($'userno[$serverno], $cmd)) {
  87.     $nick = &'prefix($prefix);
  88.     $vchan = &'alias($chan);
  89.     &writelog($'userno[$serverno], "- $whom by $nick from $vchan ($msg)");
  90.   }
  91.   return ($prefix, $cmd, $chan, $whom, $msg);
  92. }
  93.  
  94. sub ss_invite {
  95.   local($serverno, $prefix, $cmd, $me, $chan) = @_;
  96.   local($nick, $vchan);
  97.   if (&savecommand($'userno[$serverno], $cmd)) {
  98.     $nick = &'prefix($prefix);
  99.     $vchan = &'alias($chan);
  100.     &writelog($'userno[$serverno], "Invited by $nick: $vchan");
  101.   }
  102.   return ($prefix, $cmd, $me, $chan);
  103. }
  104.  
  105. sub ss_mode {
  106.   local($serverno, $prefix, $cmd, $chan, @modes) = @_;
  107.   local($nick, $vchan);
  108.   if (&savecommand($'userno[$serverno], $cmd)) {
  109.     $nick = &'prefix($prefix);
  110.     $vchan = &'alias($chan);
  111.     &writelog($'userno[$serverno], "Mode by $nick: $vchan " . join(' ', @modes));
  112.   }
  113.   return ($prefix, $cmd, $chan, @modes);
  114. }
  115.  
  116. sub ss_nick {
  117.   local($serverno, $prefix, $cmd, $newnick) = @_;
  118.   local($nick);
  119.   if (&savecommand($'userno[$serverno], $cmd)) {
  120.     $nick = &'prefix($prefix);
  121.     if ($nick eq $'nick[$serverno] || $newnick eq $'nick[$serverno]) {
  122.       &writelog($'userno[$serverno], "My nick is changed ($nick -> $newnick)");
  123.     } else {
  124.       &writelog($'userno[$serverno], "$nick -> $newnick");
  125.     }
  126.   }
  127.   return ($prefix, $cmd, $newnick);
  128. }
  129.  
  130. sub ss_quit {
  131.   local($serverno, $prefix, $cmd, $msg) = @_;
  132.   local($nick);
  133.   if (&savecommand($'userno[$serverno], $cmd)) {
  134.     $nick = &'prefix($prefix);
  135.     &writelog($'userno[$serverno], "! $nick ($msg)");
  136.   }
  137.   return ($prefix, $cmd, $msg);
  138. }
  139.  
  140. sub ss_topic {
  141.   local($serverno, $prefix, $cmd, $chan, $topic) = @_;
  142.   local($nick, $vchan);
  143.   if (&savecommand($'userno[$serverno], $cmd)) {
  144.     $nick = &'prefix($prefix);
  145.     $vchan = &'alias($chan);
  146.     &writelog($'userno[$serverno], "Topic of channel $vchan by $nick: $topic");
  147.   }
  148.   return ($prefix, $cmd, $chan, $topic);
  149. }
  150.  
  151. sub sp_privmsg {
  152.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  153.   local($vchan);
  154.   if (&savecommand($'userno[$serverno], $cmd)) {
  155.     $vchan = &'alias($chan);
  156.     &writelog($'userno[$serverno], ">$vchan:$'nick[$serverno]< $msg");
  157.   }
  158.   return ($prefix, $cmd, $chan, $msg);
  159. }
  160.  
  161. sub savecommand {
  162.   local($userno, $cmd) = @_;
  163.   local($save);
  164.   $save = &'property($userno, 'save');
  165.   if (defined($save)) {
  166.     $save = '';
  167.     foreach $mask (&'property($userno, 'save')) {
  168.       $save = &'add($save, split(/\,/, "\L$mask\U"));
  169.     }
  170.   } else {
  171.     $save = $SAVE;
  172.   }
  173.   return &'exist($save, "\L$cmd\E");
  174. }
  175.  
  176. sub writelog {
  177.   local($userno, $msg) = @_;
  178.   local($file, $directory, $name, $header, $mode, $kanji);
  179.   $file = &'property($userno, 'file');
  180.   $file = $FILE unless defined($file);
  181.   $file = &'expand($file);
  182.   if ($file =~ /^\//) {
  183.     $name = $file;
  184.   } else {
  185.     $directory = &'property($userno, 'directory');
  186.     $directory = $DIRECTORY unless defined($directory);
  187.     $directory = &'expand($directory);
  188.     $directory .= '/' unless $directory =~ /\/$/;
  189.     $name = $directory . $file;
  190.   }
  191.   $name = &'date($name);
  192.   $header = &'property($userno, 'header');
  193.   $header = $HEADER unless defined($header);
  194.   $header = &'date($header);
  195.   $kanji = &'property($userno, 'kanji') || '';
  196.   if ("\L$kanji\E" eq 'euc') {
  197.       $msg = &'jis_euc($msg);
  198.   } elsif ("\L$kanji\E" eq 'jis') {
  199.       $msg = &'jis_jis($msg);
  200.   } elsif ("\L$kanji\E" eq 'sjis') {
  201.       $msg = &'jis_sjis($msg);
  202.   }
  203.   if (!-w $name) {
  204.     if (!-f $name && open(FILE, ">$name")) {
  205.       close(FILE);
  206.     }
  207.     $mode = &'property($userno, 'mode');
  208.     if (defined($mode)) {
  209.       $mode = oct($mode) | 0200;
  210.     } else {
  211.       $mode = $MODE | 0200;
  212.     }
  213.     chmod($mode, $name) if -f $name;
  214.   }
  215.   if (open(FILE, ">>$name")) {
  216.     select((select(FILE), $| = 1)[0]);
  217.     print FILE $header, ' ', $msg, "\n";
  218.     close(FILE);
  219.   }
  220. }
  221.  
  222. __END__
  223. --><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  224. <HTML><HEAD><TITLE> log/daily.plm </TITLE></HEAD><BODY>
  225.  
  226. $B%*%s%i%$%s%I%-%e%a%s%H(B
  227.  
  228. <HR><H3> $BL>A0(B </H3>
  229.  
  230. log/daily.plm - $B%a%C%;!<%8$r%m%0$KJ]B8$9$k(B
  231.  
  232.  
  233. <HR><H3> $B@bL@(B </H3>
  234.  
  235. $B%m%0$r;XDj$7$?%U%!%$%k$KJ]B8$7$^$9!#(B
  236.  
  237.  
  238. <HR><H3> $B%W%m%Q%F%#(B </H3>
  239.  
  240. <DL>
  241. <DT> log.daily.directory $B%G%#%l%/%H%j(B
  242. <DD>    $B%m%0$r:n@.$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#(B
  243.         $B%G%#%l%/%H%j$O(Bplum$B$r<B9T$7$?%G%#%l%/%H%j$+$i$NAjBP%Q%9$K$J$j$^$9!#(B
  244.         UNIX$B$J$i!V(B~/$B!W$d!V(B~user$B!W$H$$$&;XDj$b$G$-$^$9!#(B
  245. <DT> log.daily.file $B%U%!%$%kL>(B
  246.         $B%m%0$rJ]B8$9$k%U%!%$%k$r;XDj$7$^$9!#(B
  247.         %$B$G$O$8$^$kJ8;z$,$"$k$HBP1~$9$kF|IU$KJQ49$5$l$^$9!#(B
  248.         $B%G%U%)%k%H$G$O!V(Blog%m%d$B!W$G$9!#(B
  249. <DT> log.daily.header $B$X%C%@(B
  250. <DD>    $B%m%0$K=PNO$9$k;~9o$N%U%)!<%^%C%H$r;XDj$7$^$9!#(B
  251.         %$B$G$O$8$^$kJ8;z$,$"$k$HBP1~$9$k;~4V$KJQ49$5$l$^$9!#(B
  252.         $B%G%U%)%k%H$G$O!V(B%H:%M$B!W$G$9!#(B
  253. <DT> log.daily.mode $B%U%!%$%k%b!<%I(B
  254. <DD>    $B%m%0$N%U%!%$%k%b!<%I$r$3$3$G;XDj$7$?CM$K$7$^$9!#(B
  255. <DT> log.daily.kanji {euc|jis|sjis}
  256. <DD>    $B=PNO$9$k%m%0$N4A;z%3!<%I$r;XDj$7$^$9!#(B
  257.         $B%G%U%)%k%H$G$O(BJIS$B$G=PNO$7$^$9!#(B
  258. <DT> log.daily.save ({invite|join|kick|mode|nick|notice|part|privmsg|quit|topic})
  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(Bnotice$B!W0J30$N$9$Y$F$G$9!#(B
  261. </DL>
  262.  
  263.  
  264. <HR><H3> $B@_DjNc(B </H3>
  265.  
  266. <PRE>
  267. + log/daily.plm
  268. log.daily.file: log/log%y%m%d
  269. log.daily.kanji: euc
  270. </PRE>
  271.  
  272. $B%m%0$r!V(Blog/log%y%m%d$B!W$KJ]B8$7$^$9!#$^$?!"%m%0$N4A;z%3!<%I$r(BEUC$B$K$7$^$9!#(B
  273. $B!V(B%y$B!W!"!V(B%m$B!W!"!V(B%d$B!W$O$=$l$>$l8=:_$NG/!"7n!"F|$KJQ49$5$l$^$9!#(B
  274.  
  275. <PRE>
  276. + log/daily.plm
  277. log.daily.save: privmsg,topic,join,part,kick,nick
  278. </PRE>
  279.  
  280. $BJ]B8$9$k%m%0$r!V(Bprivmsg$B!W!"!V(Btopic$B!W!"!V(Bjoin$B!W!"!V(Bpart$B!W!"!V(Bkick$B!W!"(B
  281. $B!V(Bnick$B!W$N(B6$B<oN`$K$7$^$9!#(B
  282. $B%m%0$N%U%!%$%k$O%+%l%s%H%G%#%l%/%H%j$N!V(Blog%m%d$B!W$K$J$j$^$9!#(B
  283. $B!V(B%m$B!W!"!V(B%d$B!W$O$=$l$>$l8=:_$NG/!"7n!"F|$KJQ49$5$l$^$9!#(B
  284.  
  285. </BODY></HTML>
  286.