From: terminaldweller Date: Mon, 21 Aug 2023 12:01:27 +0000 (+0330) Subject: added a blacklist option, added host and port as new options X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=d49cd475f11855494ec557529219959fe6220882;p=irssi-scripts.irssi.org.git added a blacklist option, added host and port as new options --- diff --git a/scripts/irssi_logger.pl b/scripts/irssi_logger.pl index 35717dd..43434a1 100644 --- a/scripts/irssi_logger.pl +++ b/scripts/irssi_logger.pl @@ -23,6 +23,7 @@ $VERSION = "1.0"; my $user = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<); my $dbh; +my %blacklist = (); my $sql = qq~ @@ -63,8 +64,10 @@ CREATE index logs_nick_idx on logs (nick) ~; sub db_init { + my $dbhost = Irssi::settings_get_str('il_host'); + my $dbport = Irssi::settings_get_str('il_port'); my ($dbname, $dbuser, $dbpass) = @_; - my $mdbh = DBI->connect("dbi:Pg:dbname=$dbname", $dbuser, $dbpass) || Irssi::print("Can't connect to postgres! " . DBI::errstr); + my $mdbh = DBI->connect("DBI:Pg:database=$dbname;host=$dbhost;port=$dbport", $dbuser, $dbpass) || Irssi::print("Can't connect to postgres! " . DBI::errstr); my $sth = $mdbh->prepare($check_db); $sth->execute(); @@ -90,29 +93,35 @@ sub connect_db { my $dbname = Irssi::settings_get_str('il_dbname') || $user; my $dbuser = Irssi::settings_get_str('il_dbuser') || $user; my $dbpass = Irssi::settings_get_str('il_dbpass') || ""; + my $dbhost = Irssi::settings_get_str('il_host'); + my $dbport = Irssi::settings_get_str('il_port'); db_init($dbname, $dbuser, $dbpass); Irssi::print("Connecting to the database"); - return DBI->connect("dbi:Pg:dbname=$dbname", $dbuser, $dbpass) || Irssi::print("Can't connect to db!" . DBI::errstr); + return DBI->connect("DBI:Pg:database=$dbname;host=$dbhost;port=$dbport", $dbuser, $dbpass) || Irssi::print("Can't connect to db!" . DBI::errstr); } sub write_db { my ($nick, $message, $target) = @_; - my @vals; - my $date = strftime("%Y-%m-%d %H:%M:%S", localtime); + if (exists $blacklist{$target}) { + # dont log + } else { + my @vals; + my $date = strftime("%Y-%m-%d %H:%M:%S", localtime); - $dbh = connect_db() unless $dbh; + $dbh = connect_db() unless $dbh; - push(@vals, $date); - push(@vals, $nick); - push(@vals, $message); - push(@vals, $target); + push(@vals, $date); + push(@vals, $nick); + push(@vals, $message); + push(@vals, $target); - defined or $_ = "" for @vals; + defined or $_ = "" for @vals; - $dbh->do($sql, undef, @vals) || Irssi::print("Can't log to DB! " . DBI::errstr); + $dbh->do($sql, undef, @vals) || Irssi::print("Can't log to DB! " . DBI::errstr); + } } sub log_me { @@ -131,5 +140,10 @@ Irssi::signal_add_last('message own_public', 'log_me'); Irssi::settings_add_str('irssi_logger', 'il_dbname', $user); Irssi::settings_add_str('irssi_logger', 'il_dbuser', $user); Irssi::settings_add_str('irssi_logger', 'il_dbpass', ""); +Irssi::settings_add_str('irssi_logger', 'il_host', "127.0.0.1"); +Irssi::settings_add_str('irssi_logger', 'il_port', "5432"); +# a space separated list of channel names to exclude from logging +Irssi::settings_add_str('irssi_logger', 'il_blacklist', ""); +%blacklist = map{$_ => undef} split /\s+/, Irssi::settings_get_str('il_blacklist'); Irssi::print("irssi_logger loaded!");