465 |
# $row->{nick} = $nick; |
# $row->{nick} = $nick; |
466 |
# } |
# } |
467 |
|
|
468 |
|
$append = 0 if $row->{me}; |
469 |
|
|
470 |
if ($last_row->{nick} ne $nick) { |
if ($last_row->{nick} ne $nick) { |
471 |
# obfu way to find format for me_nick if needed or fallback to default |
# obfu way to find format for me_nick if needed or fallback to default |
472 |
my $fmt = $row->{me} ? ( $args->{fmt}->{me_nick} || $args->{fmt}->{nick} ) : $args->{fmt}->{nick}; |
my $fmt = $row->{me} ? ( $args->{fmt}->{me_nick} || $args->{fmt}->{nick} ) : $args->{fmt}->{nick}; |
630 |
# RSS follow |
# RSS follow |
631 |
# |
# |
632 |
|
|
633 |
my $_rss; |
my $_stat; |
634 |
|
|
635 |
|
|
636 |
sub rss_fetch { |
sub rss_fetch { |
652 |
$total++; |
$total++; |
653 |
|
|
654 |
# seen allready? |
# seen allready? |
655 |
next if $_rss->{$args->{channel}}->{$feed->link}->{$entry->id}++ > 0; |
next if $_stat->{rss}->{seen}->{$args->{channel}}->{$feed->link}->{$entry->id}++ > 0; |
656 |
|
|
657 |
sub prefix { |
sub prefix { |
658 |
my ($txt,$var) = @_; |
my ($txt,$var) = @_; |
681 |
|
|
682 |
if ( $args->{kernel} && $send_rss_msgs ) { |
if ( $args->{kernel} && $send_rss_msgs ) { |
683 |
$send_rss_msgs--; |
$send_rss_msgs--; |
684 |
# FIXME bug! should be save_message |
if ( ! $args->{private} ) { |
685 |
# save_message( channel => $args->{channel}, me => 1, nick => $NICK, message => $msg ); |
# FIXME bug! should be save_message |
686 |
$sth_insert_log->execute( $args->{channel}, 1, $NICK, $msg, 'now()' ); |
# save_message( channel => $args->{channel}, me => 1, nick => $NICK, message => $msg ); |
687 |
|
$sth_insert_log->execute( $args->{channel}, 1, $NICK, $msg, 'now()' ); |
688 |
|
} |
689 |
my ( $type, $to ) = ( 'notice', $args->{channel} ); |
my ( $type, $to ) = ( 'notice', $args->{channel} ); |
690 |
( $type, $to ) = ( 'privmsg', $args->{nick} ) if $args->{private}; |
( $type, $to ) = ( 'privmsg', $args->{nick} ) if $args->{private}; |
691 |
_log(">> $type $to |", $msg); |
_log(">> $type $to |", $msg); |
727 |
|
|
728 |
sub rss_check_updates { |
sub rss_check_updates { |
729 |
my $kernel = shift; |
my $kernel = shift; |
730 |
$_rss->{last_poll} ||= time(); |
$_stat->{rss}->{last_poll} ||= time(); |
731 |
my $dt = time() - $_rss->{last_poll}; |
my $dt = time() - $_stat->{rss}->{last_poll}; |
732 |
warn "## rss_check_updates $dt > $rss_min_delay\n"; |
warn "## rss_check_updates $dt > $rss_min_delay\n"; |
733 |
if ( $dt > $rss_min_delay ) { |
if ( $dt > $rss_min_delay ) { |
734 |
$_rss->{last_poll} = time(); |
$_stat->{rss}->{last_poll} = time(); |
735 |
_log rss_fetch_all( $kernel ); |
_log rss_fetch_all( $kernel ); |
736 |
} |
} |
737 |
} |
} |
934 |
} elsif ($msg =~ m/^rss-update/) { |
} elsif ($msg =~ m/^rss-update/) { |
935 |
$res = rss_fetch_all( $_[KERNEL] ); |
$res = rss_fetch_all( $_[KERNEL] ); |
936 |
} elsif ($msg =~ m/^rss-clean/) { |
} elsif ($msg =~ m/^rss-clean/) { |
937 |
$_rss = undef; |
$_stat->{rss} = undef; |
938 |
$dbh->do( qq{ update feeds set last_update = now() - delay } ); |
$dbh->do( qq{ update feeds set last_update = now() - delay } ); |
939 |
$res = "OK, cleaned RSS cache"; |
$res = "OK, cleaned RSS cache"; |
940 |
} elsif ($msg =~ m/^rss-list/) { |
} elsif ($msg =~ m/^rss-list/) { |
984 |
|
|
985 |
rss_check_updates( $_[KERNEL] ); |
rss_check_updates( $_[KERNEL] ); |
986 |
}, |
}, |
987 |
|
irc_372 => sub { |
988 |
|
_log "<< motd",$_[ARG0],$_[ARG1]; |
989 |
|
}, |
990 |
|
irc_375 => sub { |
991 |
|
_log "<< motd", $_[ARG0], "start"; |
992 |
|
}, |
993 |
|
irc_376 => sub { |
994 |
|
_log "<< motd", $_[ARG0], "end"; |
995 |
|
}, |
996 |
irc_477 => sub { |
irc_477 => sub { |
997 |
_log "<< irc_477: ",$_[ARG1]; |
_log "<< irc_477: ",$_[ARG1]; |
998 |
$_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "register $NICK" ); |
$_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "register $NICK" ); |
1112 |
} |
} |
1113 |
|
|
1114 |
my $search = $q->param('search') || $q->param('grep') || ''; |
my $search = $q->param('search') || $q->param('grep') || ''; |
1115 |
|
my $r_url = $request->url; |
1116 |
|
|
1117 |
|
my @commands = qw( tags last-tag follow stat ); |
1118 |
|
my $commands_re = join('|',@commands); |
1119 |
|
|
1120 |
if ($request->url =~ m#/rss(?:/(tags|last-tag|follow.*)\w*(?:=(\d+))?)?#i) { |
if ($r_url =~ m#/rss(?:/($commands_re.*)\w*(?:=(\d+))?)?#i) { |
1121 |
my $show = lc($1); |
my $show = lc($1); |
1122 |
my $nr = $2; |
my $nr = $2; |
1123 |
|
|
1131 |
my $feed = XML::Feed->new( $type ); |
my $feed = XML::Feed->new( $type ); |
1132 |
$feed->link( $url ); |
$feed->link( $url ); |
1133 |
|
|
1134 |
|
my $rc = RC_OK; |
1135 |
|
|
1136 |
if ( $show eq 'tags' ) { |
if ( $show eq 'tags' ) { |
1137 |
$nr ||= 50; |
$nr ||= 50; |
1138 |
$feed->title( "tags from $CHANNEL" ); |
$feed->title( "tags from $CHANNEL" ); |
1202 |
$feed->add_entry( $feed_entry ); |
$feed->add_entry( $feed_entry ); |
1203 |
} |
} |
1204 |
|
|
1205 |
|
} elsif ( $show =~ m/^stat/ ) { |
1206 |
|
|
1207 |
my $feed_entry = XML::Feed::Entry->new($type); |
my $feed_entry = XML::Feed::Entry->new($type); |
1208 |
$feed_entry->title( "Internal stats" ); |
$feed_entry->title( "Internal stats" ); |
1209 |
$feed_entry->content( |
$feed_entry->content( |
1210 |
'<![CDATA[<pre>' . dump( $_rss ) . '</pre>]]>' |
'<![CDATA[<pre>' . dump( $_stat ) . '</pre>]]>' |
1211 |
); |
); |
1212 |
$feed->add_entry( $feed_entry ); |
$feed->add_entry( $feed_entry ); |
1213 |
|
|
1214 |
} else { |
} else { |
1215 |
_log "unknown rss request ",$request->url; |
_log "unknown rss request $r_url"; |
1216 |
return RC_DENY; |
$feed->title( "unknown $r_url" ); |
1217 |
|
foreach my $c ( @commands ) { |
1218 |
|
my $feed_entry = XML::Feed::Entry->new($type); |
1219 |
|
$feed_entry->title( "rss/$c" ); |
1220 |
|
$feed_entry->link( "$url/rss/$c" ); |
1221 |
|
$feed->add_entry( $feed_entry ); |
1222 |
|
} |
1223 |
|
$rc = RC_DENY; |
1224 |
} |
} |
1225 |
|
|
1226 |
$response->content( $feed->as_xml ); |
$response->content( $feed->as_xml ); |
1227 |
return RC_OK; |
return $rc; |
1228 |
} |
} |
1229 |
|
|
1230 |
if ( $@ ) { |
if ( $@ ) { |