# # Logs URLs this script is just a hack. hack it to suit you # if you want to. # # table format; # #+-----------+---------------+------+-----+---------+-------+ #| Field | Type | Null | Key | Default | Extra | #+-----------+---------------+------+-----+---------+-------+ #| inserttime| timestamp(14) | YES | | NULL | | #| nick | char(10) | YES | | NULL | | #| target | char(255) | YES | | NULL | | #| line | char(255) | YES | | NULL | | #+-----------+---------------+------+-----+---------+-------+ use DBI; use Irssi; use Irssi::Irc; use vars qw($VERSION %IRSSI); $VERSION = "1.0"; %IRSSI = ( authors => "Tom Wesley", contact => "tom\@tomaw.org", name => "MySQL Logger and Searcher", description => "Logs channel activity to MySQL", license => "GPLv2", ); $dsn = 'DBI:mysql:irssi:localhost'; $db_user_name = 'foo'; $db_password = 'bar'; sub cmd_logurl { my ($server, $data, $nick, $mask, $target) = @_; db_insert($nick, $target, $server->{tag}, $data); return 1; } sub cmd_own { my ($server, $data, $target) = @_; return cmd_logurl($server, $data, $server->{nick}, "", $target); } sub cmd_topic { my ($server, $target, $data, $nick, $mask) = @_; return cmd_logurl($server, $data, $nick, $mask, $target); } sub db_insert { my ($nick, $target, $tag, $line)=@_; my $dbh = DBI->connect($dsn, $db_user_name, $db_password); my $sql="insert into logs (inserttime, nick, target, tag, line) values (NOW()".",". $dbh->quote($nick) ."," . $dbh->quote($target) ."," . $dbh->quote($tag) . "," . $dbh->quote($line) .")"; my $sth = $dbh->do($sql); $dbh->disconnect(); } sub cmd_search { my ($arg) = @_; my @args = split(/ /, $arg); my $dbh = DBI->connect($dsn, $db_user_name, $db_password); my $sql = $dbh->prepare("select nick, tag, line from logs where match(line) against(" . $dbh->quote($args[0]) .") order by inserttime desc;"); $sql->execute(); while (my($nick,$tag,$line)=$sql->fetchrow_array) { print($nick.":".$line); } $dbh->disconnect(); } Irssi::signal_add_last('message public', 'cmd_logurl'); Irssi::signal_add_last('message own_public', 'cmd_own'); Irssi::signal_add_last('message topic', 'cmd_topic'); Irssi::command_bind('search','cmd_search');