my $user = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<);
my $dbh;
+my %blacklist = ();
my $sql = qq~
~;
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();
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 {
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!");