home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 1.x / plum10b8.lzh / plum10b8 / dailylog.plm < prev    next >
Text File  |  1997-06-25  |  4KB  |  129 lines

  1. package dailylog;
  2.  
  3. $DAILYLOG = 'log%m%d';
  4. $LOGHEADER = '%h:%m';
  5.  
  6. $_ = 'dailylog';
  7.  
  8. sub ss_privmsg {
  9.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  10.   local($nick, $user, $host) = &'prefix($prefix);
  11.   local($vchan);
  12.   if ($chan =~ /^[\#\&]/) {
  13.     $vchan = &'vchan($chan);
  14.     if (&'exist($'nameslist{$'userno[$serverno], $chan}, $nick, "\+$nick", "\@$nick")) {
  15.       &dailylog($'userno[$serverno], "<$vchan:$nick> $msg");
  16.     } else {
  17.       &dailylog($'userno[$serverno], "($vchan:$nick) $msg");
  18.     }
  19.   } else {
  20.     &dailylog($'userno[$serverno], "=$nick= $msg");
  21.   }
  22.   return ($prefix, $cmd, $chan, $msg);
  23. }
  24.  
  25. sub ss_join {
  26.   local($serverno, $prefix, $cmd, $chan) = @_;
  27.   local($nick, $user, $host) = &'prefix($prefix);
  28.   local($vchan) = &'vchan($chan);
  29.   &dailylog($'userno[$serverno], "+ $nick ($prefix) to $vchan");
  30.   return ($prefix, $cmd, $chan);
  31. }
  32.  
  33. sub ss_part {
  34.   local($serverno, $prefix, $cmd, $chan) = @_;
  35.   local($nick, $user, $host) = &'prefix($prefix);
  36.   local($vchan) = &'vchan($chan);
  37.   &dailylog($'userno[$serverno], "- $nick from $vchan");
  38.   return ($prefix, $cmd, $chan);
  39. }
  40.  
  41. sub ss_kick {
  42.   local($serverno, $prefix, $cmd, $chan, $whom, $reason) = @_;
  43.   local($nick, $user, $host) = &'prefix($prefix);
  44.   local($vchan) = &'vchan($chan);
  45.   &dailylog($'userno[$serverno], "- $whom by $nick from $vchan ($reason)");
  46.   return ($prefix, $cmd, $chan, $whom, $reason);
  47. }
  48.  
  49. sub ss_invite {
  50.   local($serverno, $prefix, $cmd, $me, $chan) = @_;
  51.   local($nick, $user, $host) = &'prefix($prefix);
  52.   local($vchan) = &'vchan($chan);
  53.   &dailylog($'userno[$serverno], "Invited by $nick: $vchan");
  54.   return ($prefix, $cmd, $me, $chan);
  55. }
  56.  
  57. sub ss_mode {
  58.   local($serverno, $prefix, $cmd, $chan, @modes) = @_;
  59.   local($nick, $user, $host) = &'prefix($prefix);
  60.   local($vchan) = &'vchan($chan);
  61.   &dailylog($'userno[$serverno], "Mode by $nick: $vchan " . join(' ', @modes));
  62.   return ($prefix, $cmd, $chan, @modes);
  63. }
  64.  
  65. sub ss_nick {
  66.   local($serverno, $prefix, $cmd, $newnick) = @_;
  67.   local($nick, $user, $host) = &'prefix($prefix);
  68.   if ($nick eq $'nick[$serverno] || $newnick eq $'nick[$serverno]) {
  69.     &dailylog($'userno[$serverno], "My nick is changed ($nick -> $newnick)");
  70.   } else {
  71.     &dailylog($'userno[$serverno], "$nick -> $newnick");
  72.   }
  73.   return ($prefix, $cmd, $newnick);
  74. }
  75.  
  76. sub ss_quit {
  77.   local($serverno, $prefix, $cmd, $msg) = @_;
  78.   local($nick, $user, $host) = &'prefix($prefix);
  79.   &dailylog($'userno[$serverno], "! $nick ($msg)");
  80.   return ($prefix, $cmd, $msg);
  81. }
  82.  
  83. sub ss_topic {
  84.   local($serverno, $prefix, $cmd, $chan, $topic) = @_;
  85.   local($nick, $user, $host) = &'prefix($prefix);
  86.   local($vchan) = &'vchan($chan);
  87.   &dailylog($'userno[$serverno], "Topic of channel $vchan by $nick: $topic");
  88.   return ($prefix, $cmd, $chan, $topic);
  89. }
  90.  
  91. sub sp_privmsg {
  92.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  93.   local($vchan) = &'vchan($chan);
  94.   &dailylog($'userno[$serverno], ">$vchan:$'nick[$serverno]< $msg");
  95.   return ($prefix, $cmd, $chan, $msg);
  96. }
  97.  
  98. sub dailylog {
  99.   local($userno, $msg) = @_;
  100.   local($file, $header, $filemode, $tmp, @time);
  101.   $file = &'property($userno, 'dailylog');
  102.   $file = &'expand($file || $DAILYLOG);
  103.   @time = localtime(time);
  104.   $tmp = sprintf('%04d', $time[5] + 1900);
  105.   $file =~ s/\%y/$tmp/g;
  106.   $tmp = sprintf('%02d', $time[4] + 1);
  107.   $file =~ s/\%m/$tmp/g;
  108.   $tmp = sprintf('%02d', $time[3]);
  109.   $file =~ s/\%d/$tmp/g;
  110.   $header = &'property($userno, 'logheader') || $LOGHEADER;
  111.   $tmp = sprintf('%02d', $time[2]);
  112.   $header =~ s/\%h/$tmp/g;
  113.   $tmp = sprintf('%02d', $time[1]);
  114.   $header =~ s/\%m/$tmp/g;
  115.   $tmp = sprintf('%02d', $time[0]);
  116.   $header =~ s/\%s/$tmp/g;
  117.   if (!-f $file && open(TMP, ">$file")) {
  118.     close(TMP);
  119.     $filemode = oct(&'property($userno, 'filemode') || 0);
  120.     chmod(($filemode || (umask ^ 0666)) | 0200, $file);
  121.   }
  122.   if (open(DAILYLOG, ">>$file")) {
  123.     select((select(DAILYLOG), $| = 1)[0]);
  124.     print DAILYLOG $header, ' ', $msg, "\n";
  125.     close(DAILYLOG);
  126.   }
  127. }
  128.  
  129.