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