home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_32_1.lzh / module / log / daily.plm < prev    next >
Text File  |  1999-02-20  |  10KB  |  339 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
  2. # $Id: daily.plm,v 2.30 1999/02/04 13:52:14 hasegawa Exp $
  3. # copyright (c)1997-1999 Yoshinori Hasegawa <hasegawa@madoka.org>
  4.  
  5. package log_daily;
  6.  
  7. $DIRECTORY = '.';
  8. $FILE = 'log%m%d';
  9. $HEADER = '%H:%M';
  10. $COMMAND = &'list('privmsg', 'join', 'part', 'kick' ,'invite', 'mode', 'nick', 'quit', 'topic');
  11.  
  12. $_ = 'log_daily';
  13.  
  14. sub ss_privmsg {
  15.   local($serverno, $prefix, $cmd, @params) = @_;
  16.   local($nick, $vchan);
  17.   if ($params[1] && &savecommand($'userno[$serverno], $cmd)) {
  18.     $nick = &'prefix($prefix);
  19.     if (&'channel($params[0])) {
  20.       $vchan = &'alias($params[0]);
  21.       if (&'exist($'nameslist{$serverno, $params[0]}, $nick, "\+$nick", "\@$nick")) {
  22.         &writelog($serverno, "<$vchan:$nick> $params[1]");
  23.       } else {
  24.         &writelog($serverno, "($vchan:$nick) $params[1]");
  25.       }
  26.     } else {
  27.       &writelog($serverno, "=$nick= $params[1]");
  28.     }
  29.   }
  30.   return ($prefix, $cmd, @params);
  31. }
  32.  
  33. sub ss_notice {
  34.   local($serverno, $prefix, $cmd, @params) = @_;
  35.   local($nick, $vchan);
  36.   if ($params[1] && &savecommand($'userno[$serverno], $cmd)) {
  37.     $nick = &'prefix($prefix);
  38.     if (&'channel($params[0])) {
  39.       $vchan = &'alias($params[0]);
  40.       if (&'exist($'nameslist{$serverno, $params[0]}, $nick, "\+$nick", "\@$nick")) {
  41.         &writelog($serverno, "<$vchan:$nick> $params[1]");
  42.       } else {
  43.         &writelog($serverno, "($vchan:$nick) $params[1]");
  44.       }
  45.     } else {
  46.       &writelog($serverno, "=$nick= $params[1]");
  47.     }
  48.   }
  49.   return ($prefix, $cmd, @params);
  50. }
  51.  
  52. sub ss_join {
  53.   local($serverno, $prefix, $cmd, @params) = @_;
  54.   local($nick, $name, $mode, $vchan);
  55.   if (&savecommand($'userno[$serverno], $cmd)) {
  56.     $nick = &'prefix($prefix);
  57.     ($name, $mode) = (split(/\cG/, $params[0]), '');
  58.     $vchan = &'alias($name);
  59.     if (index($mode, 'o') != -1) {
  60.       &writelog($serverno, "+ \@$nick ($prefix) to $vchan");
  61.     } elsif (index($mode, 'v') != -1) {
  62.       &writelog($serverno, "+ +$nick ($prefix) to $vchan");
  63.     } else {
  64.       &writelog($serverno, "+ $nick ($prefix) to $vchan");
  65.     }
  66.   }
  67.   return ($prefix, $cmd, @params);
  68. }
  69.  
  70. sub ss_part {
  71.   local($serverno, $prefix, $cmd, @params) = @_;
  72.   local($nick, $vchan);
  73.   if (&savecommand($'userno[$serverno], $cmd)) {
  74.     $nick = &'prefix($prefix);
  75.     $vchan = &'alias($params[0]);
  76.     &writelog($serverno, "- $nick from $vchan ($params[1])");
  77.   }
  78.   return ($prefix, $cmd, @params);
  79. }
  80.  
  81. sub ss_kick {
  82.   local($serverno, $prefix, $cmd, @params) = @_;
  83.   local($nick, $vchan);
  84.   if (&savecommand($'userno[$serverno], $cmd)) {
  85.     $nick = &'prefix($prefix);
  86.     $vchan = &'alias($params[0]);
  87.     &writelog($serverno, "- $params[1] by $nick from $vchan ($params[2])");
  88.   }
  89.   return ($prefix, $cmd, @params);
  90. }
  91.  
  92. sub ss_invite {
  93.   local($serverno, $prefix, $cmd, @params) = @_;
  94.   local($nick, $vchan);
  95.   if (&savecommand($'userno[$serverno], $cmd)) {
  96.     $nick = &'prefix($prefix);
  97.     $vchan = &'alias($params[1]);
  98.     &writelog($serverno, "Invited by $nick: $vchan");
  99.   }
  100.   return ($prefix, $cmd, @params);
  101. }
  102.  
  103. sub ss_mode {
  104.   local($serverno, $prefix, $cmd, @params) = @_;
  105.   local($nick, $vchan, @mode);
  106.   @mode = @params;
  107.   shift(@mode);
  108.   if (&savecommand($'userno[$serverno], $cmd)) {
  109.     $nick = &'prefix($prefix);
  110.     if (&'channel($params[0])) {
  111.       $vchan = &'alias($params[0]);
  112.       &writelog($serverno, "Mode by $nick: $vchan " . join(' ', @mode));
  113.     } else {
  114.       &writelog($serverno, "Mode by $nick: $params[0] " . join(' ', @mode));
  115.     }
  116.   }
  117.   return ($prefix, $cmd, @params);
  118. }
  119.  
  120. sub ss_nick {
  121.   local($serverno, $prefix, $cmd, @params) = @_;
  122.   local($nick);
  123.   if (&savecommand($'userno[$serverno], $cmd)) {
  124.     $nick = &'prefix($prefix);
  125.     if ($nick eq $'nick[$serverno] || $params[0] eq $'nick[$serverno]) {
  126.       &writelog($serverno, "My nick is changed ($nick -\> $params[0])");
  127.     } else {
  128.       &writelog($serverno, "$nick -\> $params[0]");
  129.     }
  130.   }
  131.   return ($prefix, $cmd, @params);
  132. }
  133.  
  134. sub ss_quit {
  135.   local($serverno, $prefix, $cmd, @params) = @_;
  136.   local($nick);
  137.   if (&savecommand($'userno[$serverno], $cmd)) {
  138.     $nick = &'prefix($prefix);
  139.     &writelog($serverno, "! $nick ($params[0])");
  140.   }
  141.   return ($prefix, $cmd, @params);
  142. }
  143.  
  144. sub ss_topic {
  145.   local($serverno, $prefix, $cmd, @params) = @_;
  146.   local($nick, $vchan);
  147.   if (&savecommand($'userno[$serverno], $cmd)) {
  148.     $nick = &'prefix($prefix);
  149.     $vchan = &'alias($params[0]);
  150.     &writelog($serverno, "Topic of channel $vchan by $nick: $params[1]");
  151.   }
  152.   return ($prefix, $cmd, @params);
  153. }
  154.  
  155. sub sp_privmsg {
  156.   local($serverno, $prefix, $cmd, @params) = @_;
  157.   local($chan, $vchan);
  158.   if ($params[1] && &savecommand($'userno[$serverno], $cmd)) {
  159.     foreach $chan (split(/\,/, $params[0])) {
  160.       if (&'channel($chan)) {
  161.         $vchan = &'alias($chan);
  162.         &writelog($serverno, ">$vchan:$'nick[$serverno]< $params[1]");
  163.       } else {
  164.         &writelog($serverno, ">$chan< $params[1]");
  165.       }
  166.     }
  167.   }
  168.   return ($prefix, $cmd, @params);
  169. }
  170.  
  171. sub sp_notice {
  172.   local($serverno, $prefix, $cmd, @params) = @_;
  173.   local($chan, $vchan);
  174.   if ($params[1] && &savecommand($'userno[$serverno], $cmd)) {
  175.     foreach $chan (split(/\,/, $params[0])) {
  176.       if (&'channel($chan)) {
  177.         $vchan = &'alias($chan);
  178.         &writelog($serverno, ">$vchan:$'nick[$serverno]< $params[1]");
  179.       } else {
  180.         &writelog($serverno, ">$chan< $params[1]");
  181.       }
  182.     }
  183.   }
  184.   return ($prefix, $cmd, @params);
  185. }
  186.  
  187. sub savecommand {
  188.   local($userno, $cmd) = @_;
  189.   local($save);
  190.   $save = &'property($userno, 'command');
  191.   if (defined($save)) {
  192.     $save = '';
  193.     foreach $mask (&'property($userno, 'command')) {
  194.       $save = &'add($save, split(/\,/, $mask));
  195.     }
  196.   } else {
  197.     $save = $COMMAND;
  198.   }
  199.   return &'exist($save, $cmd);
  200. }
  201.  
  202. sub writelog {
  203.   local($fileno, $msg) = @_;
  204.   local($userno, $file, $name, $code, $dir, $name, $header, $mode);
  205.   $userno = $'userno[$fileno];
  206.   $file = &'property($userno, 'file') || $FILE;
  207.   ($name, $code) = &filename($file);
  208.   if ($name !~ /^[\\\/]/) {
  209.     $dir = &'expand(&'property($userno, 'directory') || $DIRECTORY);
  210.     $name = "$dir/$name";
  211.   }
  212.   $name = &'date($name);
  213.   $header = &'property($userno, 'header');
  214.   $header = $HEADER unless defined($header);
  215.   $header = &'date($header);
  216.   $msg = &jis_code($msg, $code) if $code;
  217.   if (!-e $name) {
  218.     if (open(FILE, ">$name")) {
  219.       close(FILE);
  220.       $mode = &'property($userno, 'mode');
  221.       if (defined($mode)) {
  222.         chmod(oct($mode), $name);
  223.       }
  224.     }
  225.   }
  226.   if (open(FILE, ">>$name")) {
  227.     print FILE $header, ' ', $msg, "\n";
  228.     close(FILE);
  229.   }
  230. }
  231.  
  232. sub filename {
  233.   local($file) = @_;
  234.   local($idx, $name, $code);
  235.   return ('', '') unless $file;
  236.   if (($idx = rindex($file, ';')) != -1) {
  237.     $name = substr($file, 0, $idx);
  238.     $code = substr($file, $idx + 1);
  239.   } else {
  240.     $name = $file;
  241.     $code = '';
  242.   }
  243.   return (&'expand($name), $code);
  244. }
  245.  
  246. sub jis_code {
  247.   local($line, $list) = @_;
  248.   local($code);
  249.   $code = (split(/\,/, "\L$list\E"))[0];
  250.   if ($code eq 'euc') {
  251.     $line = &'jis_euc($line);
  252.   } elsif ($code eq 'jis') {
  253.     $line = &'jis_jis($line);
  254.   } elsif ($code eq 'sjis') {
  255.     $line = &'jis_sjis($line);
  256.   }
  257.   return $line;
  258. }
  259.  
  260. __END__
  261. --><HTML><HEAD>
  262. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
  263. <LINK REV="made" HREF="mailto:hasegawa@madoka.org">
  264. <TITLE>log/daily.plm</TITLE></HEAD><BODY>
  265.  
  266. $B%*%s%i%$%s%I%-%e%a%s%H(B
  267.  
  268.  
  269. <HR><H3>$BL>A0(B</H3>
  270.  
  271. log/daily.plm - $B%a%C%;!<%8$r%m%0$KJ]B8$9$k(B
  272.  
  273.  
  274. <HR><H3>$B@bL@(B</H3>
  275.  
  276. $B%m%0$r;XDj$7$?%U%!%$%k$KJ]B8$7$^$9!#(B
  277.  
  278.  
  279. <HR><H3>$B%W%m%Q%F%#(B</H3>
  280.  
  281. <DL>
  282. <DT>  log.daily.directory $B%G%#%l%/%H%j(B
  283. </DT>
  284. <DD>    $B%m%0$r:n@.$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#(B
  285.         $B%G%#%l%/%H%j$O(Bplum$B$r<B9T$7$?%G%#%l%/%H%j$+$i$NAjBP%Q%9$K$J$j$^$9!#(B
  286.         UNIX$B$J$i!V(B~/$B!W$d!V(B~user$B!W$H$$$&;XDj$b$G$-$^$9!#(B
  287. </DD>
  288. <DT>  log.daily.file $B%U%!%$%kL>(B[;({jis|euc|sjis})]
  289. </DT>
  290. <DD>    $B%m%0$rJ]B8$9$k%U%!%$%k$r;XDj$7$^$9!#(B
  291.         %$B$G$O$8$^$kJ8;z$,$"$k$HBP1~$9$kF|IU$KJQ49$5$l$^$9!#(B
  292.         $B%G%U%)%k%H$G$O!V(Blog%m%d$B!W$G$9!#(B
  293.         $B%U%!%$%kL>$N8e$KJ]B8$9$k4A;z%3!<%I$r;XDj$9$k$3$H$,$G$-$^$9!#(B
  294.         $B4A;z%3!<%I$rJ#?t;XDj$7$?>l9g$O:G=i$K;XDj$7$?4A;z%3!<%I$GJ]B8$5$l!"(B
  295.         $B>JN,$7$?>l9g$O!V(Bjis$B!W$r;XDj$7$?$3$H$HF1$8$K$J$j$^$9!#(B
  296.         $B$^$?!V(Beuc$B!W$H!V(Bsjis$B!W$rF1;~$K;XDj$9$k$3$H$O$G$-$^$;$s!#(B
  297. </DD>
  298. <DT>  log.daily.header $B$X%C%@(B
  299. </DT>
  300. <DD>    $B%m%0$K=PNO$9$k;~9o$N%U%)!<%^%C%H$r;XDj$7$^$9!#(B
  301.         %$B$G$O$8$^$kJ8;z$,$"$k$HBP1~$9$k;~4V$KJQ49$5$l$^$9!#(B
  302.         $B%G%U%)%k%H$G$O!V(B%H:%M$B!W$G$9!#(B
  303. </DD>
  304. <DT>  log.daily.mode $B%U%!%$%k%b!<%I(B
  305. </DT>
  306. <DD>    $B%m%0$N%U%!%$%k%b!<%I$r$3$3$G;XDj$7$?CM$K$7$^$9!#(B
  307. </DD>
  308. <DT>  log.daily.command ({invite|join|kick|mode|nick|notice|part|privmsg|quit|topic})
  309. </DT>
  310. <DD>    $BJ]B8$9$k%a%C%;!<%8$N<oN`$r;XDj$7$^$9!#(B
  311.         $B%G%U%)%k%H$G$O!V(Bnotice$B!W0J30$N$9$Y$F$G$9!#(B
  312. </DD>
  313. </DL>
  314.  
  315.  
  316. <HR><H3>$B@_DjNc(B</H3>
  317.  
  318. <PRE>
  319. + log/daily.plm
  320. log.daily.file: log/log%y%m%d;euc
  321. </PRE>
  322.  
  323. $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
  324. $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
  325.  
  326. <PRE>
  327. + log/daily.plm
  328. log.daily.file: log%+1O%m%d
  329. log.daily.command: privmsg,topic,join,part,kick,nick
  330. </PRE>
  331.  
  332. $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
  333. $B!V(Bnick$B!W$N(B6$B<oN`$K$7$^$9!#(B
  334. $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
  335. $B!V(B%m$B!W!"!V(B%d$B!W$O$=$l$>$l8=:_$NG/!"7n!"F|$KJQ49$5$l$^$9!#(B
  336. $B%m%0%U%!%$%k$N%U%!%$%kL>$OKhF|(B23$B;~$KMbF|$NF|IU$N$b$N$KJQ$o$j$^$9!#(B
  337.  
  338. </BODY></HTML>
  339.