--- trunk/bin/irc-logger.pl 2008/05/19 11:12:49 137 +++ trunk/bin/irc-logger.pl 2009/02/06 14:17:44 142 @@ -139,12 +139,13 @@ # protect HTML from wiki modifications sub e { my $t = shift; - return 'uri_unescape{' . uri_escape($t, '^a-zA-Z0-9') . '}'; + eval { $t = 'uri_unescape{' . uri_escape($t, '^a-zA-Z0-9') . '}'; }; + return $t; } $m =~ s/($escape_re)/$escape{$1}/gs; $m =~ s#($RE{URI}{HTTP})#e(qq{$1})#egs; - $m =~ s#\/(\w+)\/#$1#gs; +# $m =~ s#\/(\w+)\/#$1#gs; $m =~ s#$tag_regex#e(qq{$1})#egs; $m =~ s#\*(\w+)\*#$1#gs; $m =~ s#_(\w+)_#$1#gs; @@ -255,13 +256,20 @@ eval { $sth->execute( $value, $nick, $channel, $name ) }; - # error or no result - if ( $@ || ! $sth->rows ) { + if ( $@ ) { + # error + _log("META ERROR: $@"); + } elsif ( ! $sth->rows ) { + # no result -> add new $sth = $dbh->prepare(qq{ insert into meta (value,nick,channel,name,changed) values (?,?,?,?,now()) }); - $sth->execute( $value, $nick, $channel, $name ); - warn "## created $nick/$channel/$name = $value\n"; + eval { $sth->execute( $value, $nick, $channel, $name ); }; + if ( $@ ) { + _log "META ERROR: $@"; + } else { + _log "META: created $nick/$channel/$name = $value\n"; + } } else { - warn "## updated $nick/$channel/$name = $value\n"; + _log "META: updated $nick/$channel/$name = $value\n"; } return $value; @@ -556,8 +564,11 @@ " " . $a->{message}; eval { $sth_insert_log->execute($a->{channel}, $a->{me}, $a->{nick}, $a->{message}, $a->{time}); }; - _log "ERROR: can't archive ", $a->{message} if $@; - $cloud->add_tag( id => $dbh->last_insert_id(undef,undef,"log",undef), %$a ); + if ( $@ ) { + _log "ERROR: can't archive ", $a->{message}; + } else { + $cloud->add_tag( id => $dbh->last_insert_id(undef,undef,"log",undef), %$a ); + } } @@ -626,7 +637,8 @@ warn "## RSS fetch first $send_rss_msgs items from", $args->{url} if $debug; - my $feed = XML::Feed->parse( \$args->{xml} ); + my $feed; + eval { $feed = XML::Feed->parse( \$args->{xml} ) }; if ( ! $feed ) { _log "can't fetch RSS ", $args->{url}, XML::Feed->errstr; return; @@ -1283,7 +1295,8 @@ $rc = RC_DENY; } - $response->content( $feed->as_xml ); + eval { $response->content( $feed->as_xml ); }; + $rc = RC_INTERNAL_SERVER_ERROR if $@; return $rc; } @@ -1415,7 +1428,7 @@ } my $html = qq{
}; - foreach my $tag (@tags) { + foreach my $tag ( sort { lc($a->{name}) cmp lc($b->{name}) } @tags) { $html .= sprintf(qq{%s\n}, $tag->{level}, $tag->{url}, $tag->{count}, $tag->{name} );