home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 1.x / plum11.lzh / plum11 / dailylog.plm < prev    next >
Text File  |  1997-08-28  |  4KB  |  143 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, $vchan);
  11.   $nick = &'prefix($prefix);
  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, $name, $mode, $vchan);
  28.   $nick = &'prefix($prefix);
  29.   ($name, $mode) = (split(/\cG/, $chan), '');
  30.   $vchan = &'vchan($name);
  31.   if ($mode =~ /o/i) {
  32.     &dailylog($'userno[$serverno], "+ \@$nick ($prefix) to $vchan");
  33.   } elsif ($mode =~ /v/i) {
  34.     &dailylog($'userno[$serverno], "+ +$nick ($prefix) to $vchan");
  35.   } else {
  36.     &dailylog($'userno[$serverno], "+ $nick ($prefix) to $vchan");
  37.   }
  38.   return ($prefix, $cmd, $chan);
  39. }
  40.  
  41. sub ss_part {
  42.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  43.   local($nick, $vchan);
  44.   $nick = &'prefix($prefix);
  45.   $vchan = &'vchan($chan);
  46.   $msg = '' unless $msg;
  47.   &dailylog($'userno[$serverno], "- $nick from $vchan ($msg)");
  48.   return ($prefix, $cmd, $chan, $msg);
  49. }
  50.  
  51. sub ss_kick {
  52.   local($serverno, $prefix, $cmd, $chan, $whom, $msg) = @_;
  53.   local($nick, $vchan);
  54.   $nick = &'prefix($prefix);
  55.   $vchan = &'vchan($chan);
  56.   &dailylog($'userno[$serverno], "- $whom by $nick from $vchan ($msg)");
  57.   return ($prefix, $cmd, $chan, $whom, $msg);
  58. }
  59.  
  60. sub ss_invite {
  61.   local($serverno, $prefix, $cmd, $me, $chan) = @_;
  62.   local($nick, $vchan);
  63.   $nick = &'prefix($prefix);
  64.   $vchan = &'vchan($chan);
  65.   &dailylog($'userno[$serverno], "Invited by $nick: $vchan");
  66.   return ($prefix, $cmd, $me, $chan);
  67. }
  68.  
  69. sub ss_mode {
  70.   local($serverno, $prefix, $cmd, $chan, @modes) = @_;
  71.   local($nick, $vchan);
  72.   $nick = &'prefix($prefix);
  73.   $vchan = &'vchan($chan);
  74.   &dailylog($'userno[$serverno], "Mode by $nick: $vchan " . join(' ', @modes));
  75.   return ($prefix, $cmd, $chan, @modes);
  76. }
  77.  
  78. sub ss_nick {
  79.   local($serverno, $prefix, $cmd, $newnick) = @_;
  80.   local($nick) = &'prefix($prefix);
  81.   if ($nick eq $'nick[$serverno] || $newnick eq $'nick[$serverno]) {
  82.     &dailylog($'userno[$serverno], "My nick is changed ($nick -> $newnick)");
  83.   } else {
  84.     &dailylog($'userno[$serverno], "$nick -> $newnick");
  85.   }
  86.   return ($prefix, $cmd, $newnick);
  87. }
  88.  
  89. sub ss_quit {
  90.   local($serverno, $prefix, $cmd, $msg) = @_;
  91.   local($nick) = &'prefix($prefix);
  92.   &dailylog($'userno[$serverno], "! $nick ($msg)");
  93.   return ($prefix, $cmd, $msg);
  94. }
  95.  
  96. sub ss_topic {
  97.   local($serverno, $prefix, $cmd, $chan, $topic) = @_;
  98.   local($nick, $vchan);
  99.   $nick = &'prefix($prefix);
  100.   $vchan = &'vchan($chan);
  101.   &dailylog($'userno[$serverno], "Topic of channel $vchan by $nick: $topic");
  102.   return ($prefix, $cmd, $chan, $topic);
  103. }
  104.  
  105. sub sp_privmsg {
  106.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  107.   local($vchan) = &'vchan($chan);
  108.   &dailylog($'userno[$serverno], ">$vchan:$'nick[$serverno]< $msg");
  109.   return ($prefix, $cmd, $chan, $msg);
  110. }
  111.  
  112. sub dailylog {
  113.   local($userno, $msg) = @_;
  114.   local($file, $header, $filemode, $tmp, @time);
  115.   $file = &'property($userno, 'dailylog');
  116.   $file = &'expand($file || $DAILYLOG);
  117.   @time = localtime(time);
  118.   $tmp = sprintf('%04d', $time[5] + 1900);
  119.   $file =~ s/\%y/$tmp/g;
  120.   $tmp = sprintf('%02d', $time[4] + 1);
  121.   $file =~ s/\%m/$tmp/g;
  122.   $tmp = sprintf('%02d', $time[3]);
  123.   $file =~ s/\%d/$tmp/g;
  124.   $header = &'property($userno, 'logheader') || $LOGHEADER;
  125.   $tmp = sprintf('%02d', $time[2]);
  126.   $header =~ s/\%h/$tmp/g;
  127.   $tmp = sprintf('%02d', $time[1]);
  128.   $header =~ s/\%m/$tmp/g;
  129.   $tmp = sprintf('%02d', $time[0]);
  130.   $header =~ s/\%s/$tmp/g;
  131.   if (!-f $file && open(TMP, ">$file")) {
  132.     close(TMP);
  133.     $filemode = oct(&'property($userno, 'filemode') || 0);
  134.     chmod(($filemode || (umask ^ 0666)) | 0200, $file);
  135.   }
  136.   if (open(DAILYLOG, ">>$file")) {
  137.     select((select(DAILYLOG), $| = 1)[0]);
  138.     print DAILYLOG $header, ' ', $msg, "\n";
  139.     close(DAILYLOG);
  140.   }
  141. }
  142.  
  143.