--- trunk/bin/irc-logger.pl 2008/03/09 21:13:15 109 +++ trunk/bin/irc-logger.pl 2008/03/12 17:21:07 116 @@ -61,9 +61,9 @@ my $CHANNEL = '#razmjenavjestina'; if ( $HOSTNAME =~ m/llin/ ) { - $irc_config->{nick} = 'irc-logger-dev'; + $irc_config->{nick} = 'irc-logger-llin'; # $irc_config = { -# nick => 'irc-logger-dev', +# nick => 'irc-logger-llin', # server => 'localhost', # port => 6668, # }; @@ -112,12 +112,12 @@ # confess "fatal error"; #}; -open(STDOUT, '>', $log_path) || warn "can't redirect log to $log_path: $!"; - sub _log { - print strftime($TIMESTAMP,localtime()) . ' ' . join(" ",@_) . $/; + print strftime($TIMESTAMP,localtime()) . ' ' . join(" ",map { ref($_) ? dump( $_ ) : $_ } @_) . $/; } +open(STDOUT, '>', $log_path) && warn "log to $log_path: $!\n"; + # HTML formatters my %escape = ('<'=>'<', '>'=>'>', '&'=>'&', '"'=>'"'); @@ -160,6 +160,13 @@ }, }; +# POE IRC +my $poe_irc = POE::Component::IRC->spawn( %$irc_config ) or + die "can't start ", dump( $irc_config ), ": $!"; + +my $irc = $poe_irc->session_id(); +_log "IRC session_id $irc"; + my $dbh = DBI->connect($DSN,"","", { RaiseError => 1, AutoCommit => 1 }) || die $DBI::errstr; $dbh->do( qq{ set client_encoding = 'UTF-8' } ); @@ -689,6 +696,12 @@ $msg .= prefix( ' | ' , $entry->title ); $msg .= prefix( ' | ' , $link ); # $msg .= prefix( ' id ' , $entry->id ); + if ( my $tags = $entry->category ) { + $tags =~ s!^\s+!!; + $tags =~ s!\s*$! !; + $tags =~ s!\s+!// !g; + $msg .= prefix( ' ' , $tags ); + } if ( $args->{kernel} && $send_rss_msgs ) { $send_rss_msgs--; @@ -699,8 +712,8 @@ } my ( $type, $to ) = ( 'notice', $args->{channel} ); ( $type, $to ) = ( 'privmsg', $args->{nick} ) if $args->{private}; - _log(">> $type $to |", $msg); - $args->{kernel}->post( irc => $type => $to, $msg ); + _log(">> $type $to", $msg); + $args->{kernel}->post( $irc => $type => $to, $msg ); $updates++; } } @@ -750,16 +763,6 @@ # seed rss seen cache so we won't send out all items on startup _log rss_fetch_all; -# -# POE handing part -# - -my $poe_irc = POE::Component::IRC->spawn( %$irc_config ) or - die "can't start ", dump( $irc_config ), ": $!"; - -my $irc = $poe_irc->session_id(); -_log "session_id $irc"; - POE::Session->create( inline_states => { _start => sub { $_[KERNEL]->post( $irc => register => 'all' ); @@ -774,7 +777,6 @@ }, irc_255 => sub { # server is done blabbing $_[KERNEL]->post( $irc => join => $CHANNEL); - $_[KERNEL]->post( $irc => privmsg => 'nickserv', "IDENTIFY $NICK" ); }, irc_public => sub { my $kernel = $_[KERNEL]; @@ -835,10 +837,10 @@ $res = "usage: /msg $NICK comand | commands: stat - user/message stat | last - show backtrace | grep foobar - find foobar"; - } elsif ($msg =~ m/^msg\s+(\S+)\s+(.*)$/i) { + } elsif ($msg =~ m/^(privmsg|notice)\s+(\S+)\s+(.*)$/i) { - _log ">> /msg $1 $2"; - $_[KERNEL]->post( $irc => privmsg => $1, $2 ); + _log ">> /$1 $2 $3"; + $_[KERNEL]->post( $irc => $1 => $2, $3 ); $res = ''; } elsif ($msg =~ m/^stat.*?\s*(\d*)/i) { @@ -1013,13 +1015,22 @@ irc_376 => sub { _log "<< motd", $_[ARG0], "end"; }, +# irc_433 => sub { +# print "# irc_433: ",$_[ARG1], "\n"; +# warn "## indetify $NICK\n"; +# $_[KERNEL]->post( $irc => privmsg => 'nickserv', "IDENTIFY $NICK" ); +# }, +# irc_451 # please register irc_477 => sub { _log "<< irc_477: ",$_[ARG1]; - $_[KERNEL]->post( $irc => privmsg => 'nickserv', "register $NICK" ); + _log ">> IDENTIFY $NICK"; + $_[KERNEL]->post( $irc => privmsg => 'NickServ', "IDENTIFY $NICK" ); }, irc_505 => sub { _log "<< irc_505: ",$_[ARG1]; - $_[KERNEL]->post( $irc => privmsg => 'nickserv', "register $NICK" ); + _log ">> register $NICK"; + $_[KERNEL]->post( $irc => privmsg => 'NickServ', "register $NICK" ); +# $_[KERNEL]->post( $irc => privmsg => 'nickserv', "IDENTIFY $NICK" ); # $_[KERNEL]->post( $irc => privmsg => 'nickserv', "set hide email on" ); # $_[KERNEL]->post( $irc => privmsg => 'nickserv', "set email dpavlin\@rot13.org" ); }, @@ -1036,20 +1047,21 @@ sleep($sleep_on_error); $_[KERNEL]->post( $irc => connect => {} ); }, -# irc_433 => sub { -# print "# irc_433: ",$_[ARG1], "\n"; -# warn "## indetify $NICK\n"; -# $_[KERNEL]->post( $irc => privmsg => 'nickserv', "IDENTIFY $NICK" ); -# }, -# irc_451 # please register irc_notice => sub { - _log "<< notice",$_[ARG0]; - if ( $_[ARG0] =~ m!/msg\s+NickServ\s+IDENTIFY!i ) { + _log "<< notice from ", $_[ARG0], $_[ARG1], $_[ARG2]; + my $m = $_[ARG2]; + if ( $m =~ m!/msg.*(NickServ).*(IDENTIFY)!i ) { + _log ">> suggested to $1 $2"; + $_[KERNEL]->post( $irc => privmsg => $1, "$2 $NICK" ); + } elsif ( $m =~ m!\Q$NICK\E.*registered!i ) { + _log ">> registreted, so IDENTIFY"; $_[KERNEL]->post( $irc => privmsg => 'nickserv', "IDENTIFY $NICK" ); + } else { + warn "## ignore $m\n"; } }, irc_snotice => sub { - _log "<< snotice",$_[ARG0]; + _log "<< snotice", $_[ARG0]; #dump( $_[ARG0],$_[ARG1], $_[ARG2] ); if ( $_[ARG0] =~ m!/(QUOTE)\s+(PASS\s+\d+)!i ) { warn ">> $1 | $2\n"; $_[KERNEL]->post( $irc => lc($1) => $2); @@ -1069,6 +1081,8 @@ # http server +_log "WEB archive at $url"; + my $httpd = POE::Component::Server::HTTP->new( Port => $http_port, PreHandler => { @@ -1115,7 +1129,7 @@ $style .= ".col-${max_color} { background: $c }\n"; $max_color++; } -warn "defined $max_color colors for users...\n"; +_log "WEB defined $max_color colors for users..."; sub root_handler { my ($request, $response) = @_; @@ -1237,7 +1251,7 @@ $feed->add_entry( $feed_entry ); } else { - _log "unknown rss request $r_url"; + _log "WEB unknown rss request $r_url"; $feed->title( "unknown $r_url" ); foreach my $c ( @commands ) { my $feed_entry = XML::Feed::Entry->new($type);