From d49cd475f11855494ec557529219959fe6220882 Mon Sep 17 00:00:00 2001 From: terminaldweller Date: Mon, 21 Aug 2023 15:31:27 +0330 Subject: [PATCH 1/3] added a blacklist option, added host and port as new options --- scripts/irssi_logger.pl | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/scripts/irssi_logger.pl b/scripts/irssi_logger.pl index 35717dd43..43434a14f 100644 --- a/scripts/irssi_logger.pl +++ b/scripts/irssi_logger.pl @@ -23,6 +23,7 @@ my $user = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<); my $dbh; +my %blacklist = (); my $sql = qq~ @@ -63,8 +64,10 @@ ~; 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 @@ sub log { 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!"); From d32d350fbf35d5fa7c08a970fcec86cbb607af8c Mon Sep 17 00:00:00 2001 From: terminaldweller Date: Mon, 21 Aug 2023 18:18:20 +0330 Subject: [PATCH 2/3] upped the version, blacklist now updates without need for reloading the script --- scripts/irssi_logger.pl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/irssi_logger.pl b/scripts/irssi_logger.pl index 43434a14f..2cbacd0de 100644 --- a/scripts/irssi_logger.pl +++ b/scripts/irssi_logger.pl @@ -11,7 +11,7 @@ # - postgresql # - postgresql-contrib (pg_trgm) -$VERSION = "1.0"; +$VERSION = "1.1"; %IRSSI = ( authors => "Aaron Bieber", contact => "deftly\@gmail.com", @@ -134,6 +134,10 @@ sub log { write_db($nick, $message, $target) } +sub setup_changed { + %blacklist = map{$_ => undef} split /\s+/, Irssi::settings_get_str('il_blacklist'); +} + Irssi::signal_add_last('message public', 'log'); Irssi::signal_add_last('message own_public', 'log_me'); @@ -145,5 +149,8 @@ sub log { # a space separated list of channel names to exclude from logging Irssi::settings_add_str('irssi_logger', 'il_blacklist', ""); +Irssi::signal_add('setup changed' => 'setup_changed'); + + %blacklist = map{$_ => undef} split /\s+/, Irssi::settings_get_str('il_blacklist'); Irssi::print("irssi_logger loaded!"); From 8d5b2b1734b4c0d1577f20419f40410ca0eb7536 Mon Sep 17 00:00:00 2001 From: terminaldweller Date: Wed, 23 Aug 2023 07:45:50 +0330 Subject: [PATCH 3/3] removed the unnecessary else --- scripts/irssi_logger.pl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/irssi_logger.pl b/scripts/irssi_logger.pl index 2cbacd0de..c6097aa6a 100644 --- a/scripts/irssi_logger.pl +++ b/scripts/irssi_logger.pl @@ -105,9 +105,7 @@ sub connect_db { sub write_db { my ($nick, $message, $target) = @_; - if (exists $blacklist{$target}) { - # dont log - } else { + if (!exists $blacklist{$target}) { my @vals; my $date = strftime("%Y-%m-%d %H:%M:%S", localtime);