diff options
Diffstat (limited to 'scripts/ignore_log.pl')
-rw-r--r-- | scripts/ignore_log.pl | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/scripts/ignore_log.pl b/scripts/ignore_log.pl new file mode 100644 index 0000000..38c1ca1 --- /dev/null +++ b/scripts/ignore_log.pl @@ -0,0 +1,78 @@ +#!/usr/bin/perl + +# ignore_log.pl (ignore_log -- send [some] ignored events to log), Version 0.1 +# this script is dedicated to bormann@IRCNET. +# +# Copyleft (>) 2004 jsn <jason@nichego.net> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# The complete text of the GNU General Public License can be found +# on the World Wide Web: <URL:http://www.gnu.org/licenses/gpl.html> + +use strict; +use Irssi; + +use POSIX qw/strftime/ ; + +use vars qw($VERSION %IRSSI); + +$VERSION = "0.1"; +%IRSSI = ( + authors => 'Dmitry "jsn" Kim', + contact => 'jason@nichego.net', + name => 'ignore_log', + description => 'script to log ignored messages', + license => 'GPL', + url => 'http://', + changed => '2004-09-10', + changes => 'initial version' +); + +Irssi::print("*****\n* $IRSSI{name} $VERSION loaded."); +Irssi::print("* use `/set ignore_log <filename>' to configure") ; +Irssi::print("* use `/set ignore_log none' to disable ignore logging") ; + +sub handle_public { + my ($srv, $msg, $nick, $addr, $tgt) = @_; + return if lc(Irssi::settings_get_str("ignore_log")) eq "none" ; + write_log($nick, $msg, $tgt) + if $srv->ignore_check($nick, $addr, $tgt, $msg, MSGLEVEL_PUBLIC) ; +} + +sub handle_private { + my ($srv, $msg, $nick, $addr) = @_; + return if lc(Irssi::settings_get_str("ignore_log")) eq "none" ; + write_log($nick, $msg) + if $srv->ignore_check($nick, $addr, "", $msg, MSGLEVEL_MSGS) ; +} + +sub write_log { + my ($nick, $msg, $tgt) = @_ ; + $tgt ||= "->" ; + my ($lfile) = glob Irssi::settings_get_str("ignore_log"); + if (open(LF, ">>", $lfile)) { + my $ts = strftime("%D %H:%M", localtime()) ; + print LF "[$ts] $tgt $nick $msg\n" ; + close LF ; + } else { + Irssi::active_win()->print("can't open file `$lfile': $!") ; + } +} + +Irssi::settings_add_str("ignore_log", "ignore_log", "~/.irssi/ignore.log"); + +Irssi::print("* logging ignored users to `" . + Irssi::settings_get_str("ignore_log") . "'") ; + +Irssi::signal_add_first("message public", "handle_public") ; +Irssi::signal_add_first("message private", "handle_private") ; + |