]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
added a blacklist option, added host and port as new options
authorterminaldweller <redacted>
Mon, 21 Aug 2023 12:01:27 +0000 (15:31 +0330)
committerterminaldweller <redacted>
Mon, 21 Aug 2023 12:01:27 +0000 (15:31 +0330)
scripts/irssi_logger.pl

index 35717dd430a2eace733e3c2cbb5e4dfab63e62f0..43434a14feed85a448a42ad74824a9e8e7f7a48b 100644 (file)
@@ -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!");
git clone https://git.99rst.org/PROJECT