/[irc-logger]/trunk/bin/irc-logger.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/bin/irc-logger.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 106 by dpavlin, Sun Mar 9 19:22:16 2008 UTC revision 116 by dpavlin, Wed Mar 12 17:21:07 2008 UTC
# Line 47  log all conversation on irc channel Line 47  log all conversation on irc channel
47    
48  ## CONFIG  ## CONFIG
49    
50    my $irc_config = {
51            nick => 'irc-logger',
52            server => 'irc.freenode.net',
53            port => 6667,
54            ircname => 'Anna the bot: try /msg irc-logger help',
55    };
56    
57  my $HOSTNAME = `hostname -f`;  my $HOSTNAME = `hostname -f`;
58  chomp($HOSTNAME);  chomp($HOSTNAME);
59    
60  my $NICK = 'irc-logger';  
 $NICK .= '-dev' if ($HOSTNAME =~ m/llin/);  
 my $CONNECT = {  
         Server => 'irc.freenode.net',  
         Nick => $NICK,  
         Ircname => "try /msg $NICK help",  
 };  
61  my $CHANNEL = '#razmjenavjestina';  my $CHANNEL = '#razmjenavjestina';
 $CHANNEL = '#irc-logger' if ($HOSTNAME =~ m/llin/);  
 my $IRC_ALIAS = "log";  
62    
63  if ( $HOSTNAME =~ m/lugarin/ ) {  if ( $HOSTNAME =~ m/llin/ ) {
64          $CONNECT->{Server} = 'irc.carnet.hr';          $irc_config->{nick} = 'irc-logger-llin';
65    #       $irc_config = {
66    #               nick => 'irc-logger-llin',
67    #               server => 'localhost',
68    #               port => 6668,
69    #       };
70            $CHANNEL = '#irc-logger';
71    } elsif ( $HOSTNAME =~ m/lugarin/ ) {
72            $irc_config->{server} = 'irc.carnet.hr';
73          $CHANNEL = '#riss';          $CHANNEL = '#riss';
74  }  }
75    
76  warn dump( $HOSTNAME, $CONNECT );  my @channels = ( $CHANNEL );
77    
78    warn "# config = ", dump( $irc_config ), $/;
79    
80    my $NICK = $irc_config->{nick} or die "no nick?";
81    
82  my $DSN = 'DBI:Pg:dbname=' . $NICK;  my $DSN = 'DBI:Pg:dbname=' . $NICK;
83    
# Line 101  GetOptions( Line 112  GetOptions(
112  #       confess "fatal error";  #       confess "fatal error";
113  #};  #};
114    
 open(STDOUT, '>', $log_path) || warn "can't redirect log to $log_path: $!";  
   
115  sub _log {  sub _log {
116          print strftime($TIMESTAMP,localtime()) . ' ' . join(" ",@_) . $/;          print strftime($TIMESTAMP,localtime()) . ' ' . join(" ",map { ref($_) ? dump( $_ ) : $_ } @_) . $/;
117  }  }
118    
119    open(STDOUT, '>', $log_path) && warn "log to $log_path: $!\n";
120    
121  # HTML formatters  # HTML formatters
122    
123  my %escape = ('<'=>'&lt;', '>'=>'&gt;', '&'=>'&amp;', '"'=>'&quot;');  my %escape = ('<'=>'&lt;', '>'=>'&gt;', '&'=>'&amp;', '"'=>'&quot;');
# Line 149  my $filter = { Line 160  my $filter = {
160          },          },
161  };  };
162    
163    # POE IRC
164    my $poe_irc = POE::Component::IRC->spawn( %$irc_config ) or
165            die "can't start ", dump( $irc_config ), ": $!";
166    
167    my $irc = $poe_irc->session_id();
168    _log "IRC session_id $irc";
169    
170  my $dbh = DBI->connect($DSN,"","", { RaiseError => 1, AutoCommit => 1 }) || die $DBI::errstr;  my $dbh = DBI->connect($DSN,"","", { RaiseError => 1, AutoCommit => 1 }) || die $DBI::errstr;
171  $dbh->do( qq{ set client_encoding = 'UTF-8' } );  $dbh->do( qq{ set client_encoding = 'UTF-8' } );
172    
# Line 630  if ($import_dircproxy) { Line 648  if ($import_dircproxy) {
648  # RSS follow  # RSS follow
649  #  #
650    
651  my $_rss;  my $_stat;
652    
653    
654  sub rss_fetch {  sub rss_fetch {
# Line 652  sub rss_fetch { Line 670  sub rss_fetch {
670                  $total++;                  $total++;
671    
672                  # seen allready?                  # seen allready?
673                  next if $_rss->{$args->{channel}}->{$feed->link}->{$entry->id}++ > 0;                  next if $_stat->{rss}->{seen}->{$args->{channel}}->{$feed->link}->{$entry->id}++ > 0;
674    
675                  sub prefix {                  sub prefix {
676                          my ($txt,$var) = @_;                          my ($txt,$var) = @_;
# Line 678  sub rss_fetch { Line 696  sub rss_fetch {
696                  $msg .= prefix( ' | ' , $entry->title );                  $msg .= prefix( ' | ' , $entry->title );
697                  $msg .= prefix( ' | ' , $link );                  $msg .= prefix( ' | ' , $link );
698  #               $msg .= prefix( ' id ' , $entry->id );  #               $msg .= prefix( ' id ' , $entry->id );
699                    if ( my $tags = $entry->category ) {
700                            $tags =~ s!^\s+!!;
701                            $tags =~ s!\s*$! !;
702                            $tags =~ s!\s+!// !g;
703                            $msg .= prefix( ' ' , $tags );
704                    }
705    
706                  if ( $args->{kernel} && $send_rss_msgs ) {                  if ( $args->{kernel} && $send_rss_msgs ) {
707                          $send_rss_msgs--;                          $send_rss_msgs--;
# Line 688  sub rss_fetch { Line 712  sub rss_fetch {
712                          }                          }
713                          my ( $type, $to ) = ( 'notice', $args->{channel} );                          my ( $type, $to ) = ( 'notice', $args->{channel} );
714                          ( $type, $to ) = ( 'privmsg', $args->{nick} ) if $args->{private};                          ( $type, $to ) = ( 'privmsg', $args->{nick} ) if $args->{private};
715                          _log(">> $type $to |", $msg);                          _log(">> $type $to", $msg);
716                          $args->{kernel}->post( $IRC_ALIAS => $type => $to, $msg );                          $args->{kernel}->post( $irc => $type => $to, $msg );
717                          $updates++;                          $updates++;
718                  }                  }
719          }          }
# Line 727  sub rss_fetch_all { Line 751  sub rss_fetch_all {
751    
752  sub rss_check_updates {  sub rss_check_updates {
753          my $kernel = shift;          my $kernel = shift;
754          $_rss->{last_poll} ||= time();          $_stat->{rss}->{last_poll} ||= time();
755          my $dt = time() - $_rss->{last_poll};          my $dt = time() - $_stat->{rss}->{last_poll};
756          warn "## rss_check_updates $dt > $rss_min_delay\n";          warn "## rss_check_updates $dt > $rss_min_delay\n";
757          if ( $dt > $rss_min_delay ) {          if ( $dt > $rss_min_delay ) {
758                  $_rss->{last_poll} = time();                  $_stat->{rss}->{last_poll} = time();
759                  _log rss_fetch_all( $kernel );                  _log rss_fetch_all( $kernel );
760          }          }
761  }  }
# Line 739  sub rss_check_updates { Line 763  sub rss_check_updates {
763  # seed rss seen cache so we won't send out all items on startup  # seed rss seen cache so we won't send out all items on startup
764  _log rss_fetch_all;  _log rss_fetch_all;
765    
 #  
 # POE handing part  
 #  
   
 my $ping;                                               # ping stats  
   
 POE::Component::IRC->new($IRC_ALIAS);  
   
766  POE::Session->create( inline_states => {  POE::Session->create( inline_states => {
767          _start => sub {                _start => sub {      
768                  $_[KERNEL]->post($IRC_ALIAS => register => 'all');                  $_[KERNEL]->post( $irc => register => 'all' );
769                  $_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT);                  $_[KERNEL]->post( $irc => connect => {} );
770      },      },
771            irc_001 => sub {
772                    my ($kernel,$sender) = @_[KERNEL,SENDER];
773                    my $poco_object = $sender->get_heap();
774                    _log "connected to",$poco_object->server_name();
775                    $kernel->post( $sender => join => $_ ) for @channels;
776                    undef;
777            },
778      irc_255 => sub {    # server is done blabbing      irc_255 => sub {    # server is done blabbing
779                  $_[KERNEL]->post($IRC_ALIAS => join => $CHANNEL);                  $_[KERNEL]->post( $irc => join => $CHANNEL);
                 $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" );  
780      },      },
781      irc_public => sub {      irc_public => sub {
782                  my $kernel = $_[KERNEL];                  my $kernel = $_[KERNEL];
# Line 786  POE::Session->create( inline_states => { Line 808  POE::Session->create( inline_states => {
808      },      },
809          irc_ping => sub {          irc_ping => sub {
810                  _log( "pong ", $_[ARG0] );                  _log( "pong ", $_[ARG0] );
811                  $ping->{ $_[ARG0] }++;                  $_stat->{ping}->{ $_[ARG0] }++;
812                  rss_check_updates( $_[KERNEL] );                  rss_check_updates( $_[KERNEL] );
813          },          },
814          irc_invite => sub {          irc_invite => sub {
# Line 796  POE::Session->create( inline_states => { Line 818  POE::Session->create( inline_states => {
818    
819                  _log "invited to $channel by $nick";                  _log "invited to $channel by $nick";
820    
821                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, "how nice of you to invite me to $channel, I'll be right there..." );                  $_[KERNEL]->post( $irc => privmsg => $nick, "how nice of you to invite me to $channel, I'll be right there..." );
822                  $_[KERNEL]->post($IRC_ALIAS => join => $channel);                  $_[KERNEL]->post( $irc => 'join' => $channel );
823    
824          },          },
825          irc_msg => sub {          irc_msg => sub {
# Line 815  POE::Session->create( inline_states => { Line 837  POE::Session->create( inline_states => {
837    
838                          $res = "usage: /msg $NICK comand | commands: stat - user/message stat | last - show backtrace | grep foobar - find foobar";                          $res = "usage: /msg $NICK comand | commands: stat - user/message stat | last - show backtrace | grep foobar - find foobar";
839    
840                  } elsif ($msg =~ m/^msg\s+(\S+)\s+(.*)$/i) {                  } elsif ($msg =~ m/^(privmsg|notice)\s+(\S+)\s+(.*)$/i) {
841    
842                          _log ">> /msg $1 $2";                          _log ">> /$1 $2 $3";
843                          $_[KERNEL]->post( $IRC_ALIAS => privmsg => $1, $2 );                          $_[KERNEL]->post( $irc => $1 => $2, $3 );
844                          $res = '';                          $res = '';
845    
846                  } elsif ($msg =~ m/^stat.*?\s*(\d*)/i) {                  } elsif ($msg =~ m/^stat.*?\s*(\d*)/i) {
# Line 848  POE::Session->create( inline_states => { Line 870  POE::Session->create( inline_states => {
870    
871                          foreach my $res (get_from_log( limit => $limit )) {                          foreach my $res (get_from_log( limit => $limit )) {
872                                  _log "last: $res";                                  _log "last: $res";
873                                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, $res );                                  $_[KERNEL]->post( $irc => privmsg => $nick, $res );
874                          }                          }
875    
876                          $res = '';                          $res = '';
# Line 862  POE::Session->create( inline_states => { Line 884  POE::Session->create( inline_states => {
884                                          search => $what,                                          search => $what,
885                                  )) {                                  )) {
886                                  _log "search [$what]: $res";                                  _log "search [$what]: $res";
887                                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, $res );                                  $_[KERNEL]->post( $irc => privmsg => $nick, $res );
888                          }                          }
889    
890                          $res = '';                          $res = '';
# Line 897  POE::Session->create( inline_states => { Line 919  POE::Session->create( inline_states => {
919                                  " : " . ( $stat->{vote}->{'-'} || 0 ) . " --" .                                  " : " . ( $stat->{vote}->{'-'} || 0 ) . " --" .
920                                  " from " . ( join(", ", @nicks) || 'nobody' );                                  " from " . ( join(", ", @nicks) || 'nobody' );
921    
922                          $_[KERNEL]->post( $IRC_ALIAS => notice => $nick, $res );                          $_[KERNEL]->post( $irc => notice => $nick, $res );
923    
924                  } elsif ($msg =~ m/^ping/) {                  } elsif ($msg =~ m/^ping/) {
925                          $res = "ping = " . dump( $ping );                          $res = "ping = " . dump( $_stat->{ping} );
926                  } elsif ($msg =~ m/^conf(?:ig)*\s*(last-size|twitter)*\s*(.*)/) {                  } elsif ($msg =~ m/^conf(?:ig)*\s*(last-size|twitter)*\s*(.*)/) {
927                          if ( ! defined( $1 ) ) {                          if ( ! defined( $1 ) ) {
928                                  my $sth = $dbh->prepare(qq{ select name,value,changed from meta where nick = ? and channel = ? });                                  my $sth = $dbh->prepare(qq{ select name,value,changed from meta where nick = ? and channel = ? });
# Line 934  POE::Session->create( inline_states => { Line 956  POE::Session->create( inline_states => {
956                  } elsif ($msg =~ m/^rss-update/) {                  } elsif ($msg =~ m/^rss-update/) {
957                          $res = rss_fetch_all( $_[KERNEL] );                          $res = rss_fetch_all( $_[KERNEL] );
958                  } elsif ($msg =~ m/^rss-clean/) {                  } elsif ($msg =~ m/^rss-clean/) {
959                          $_rss = undef;                          $_stat->{rss} = undef;
960                          $dbh->do( qq{ update feeds set last_update = now() - delay } );                          $dbh->do( qq{ update feeds set last_update = now() - delay } );
961                          $res = "OK, cleaned RSS cache";                          $res = "OK, cleaned RSS cache";
962                  } elsif ($msg =~ m/^rss-list/) {                  } elsif ($msg =~ m/^rss-list/) {
963                          my $sth = $dbh->prepare(qq{ select url,name,last_update,active,channel,nick,private from feeds });                          my $sth = $dbh->prepare(qq{ select url,name,last_update,active,channel,nick,private from feeds });
964                          $sth->execute;                          $sth->execute;
965                          while (my @row = $sth->fetchrow_array) {                          while (my @row = $sth->fetchrow_array) {
966                                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, join(' | ',@row) );                                  $_[KERNEL]->post( $irc => privmsg => $nick, join(' | ',@row) );
967                          }                          }
968                          $res = '';                          $res = '';
969                  } elsif ($msg =~ m!^rss-(add|remove|stop|start)(?:-(private))?\s+(http://\S+)\s*(.*)!) {                  } elsif ($msg =~ m!^rss-(add|remove|stop|start)(?:-(private))?\s+(http://\S+)\s*(.*)!) {
# Line 979  POE::Session->create( inline_states => { Line 1001  POE::Session->create( inline_states => {
1001    
1002                  if ($res) {                  if ($res) {
1003                          _log ">> [$nick] $res";                          _log ">> [$nick] $res";
1004                          $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, $res );                          $_[KERNEL]->post( $irc => privmsg => $nick, $res );
1005                  }                  }
1006    
1007                  rss_check_updates( $_[KERNEL] );                  rss_check_updates( $_[KERNEL] );
1008          },          },
1009            irc_372 => sub {
1010                    _log "<< motd",$_[ARG0],$_[ARG1];
1011            },
1012            irc_375 => sub {
1013                    _log "<< motd", $_[ARG0], "start";
1014            },
1015            irc_376 => sub {
1016                    _log "<< motd", $_[ARG0], "end";
1017            },
1018    #       irc_433 => sub {
1019    #               print "# irc_433: ",$_[ARG1], "\n";
1020    #               warn "## indetify $NICK\n";
1021    #               $_[KERNEL]->post( $irc => privmsg => 'nickserv', "IDENTIFY $NICK" );
1022    #       },
1023    #       irc_451 # please register
1024          irc_477 => sub {          irc_477 => sub {
1025                  _log "<< irc_477: ",$_[ARG1];                  _log "<< irc_477: ",$_[ARG1];
1026                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "register $NICK" );                  _log ">> IDENTIFY $NICK";
1027                    $_[KERNEL]->post( $irc => privmsg => 'NickServ', "IDENTIFY $NICK" );
1028          },          },
1029          irc_505 => sub {          irc_505 => sub {
1030                  _log "<< irc_505: ",$_[ARG1];                  _log "<< irc_505: ",$_[ARG1];
1031                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "register $NICK" );                  _log ">> register $NICK";
1032  #               $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "set hide email on" );                  $_[KERNEL]->post( $irc => privmsg => 'NickServ', "register $NICK" );
1033  #               $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "set email dpavlin\@rot13.org" );  #               $_[KERNEL]->post( $irc => privmsg => 'nickserv', "IDENTIFY $NICK" );
1034    #               $_[KERNEL]->post( $irc => privmsg => 'nickserv', "set hide email on" );
1035    #               $_[KERNEL]->post( $irc => privmsg => 'nickserv', "set email dpavlin\@rot13.org" );
1036          },          },
1037          irc_registered => sub {          irc_registered => sub {
1038                  _log "## registrated $NICK, /msg nickserv IDENTIFY $NICK";                  _log "<< registered $NICK";
                 $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" );  
1039          },          },
1040          irc_disconnected => sub {          irc_disconnected => sub {
1041                  _log "## disconnected.. sleeping for $sleep_on_error seconds and reconnecting again";                  _log "## disconnected.. sleeping for $sleep_on_error seconds and reconnecting again";
1042                  sleep($sleep_on_error);                  sleep($sleep_on_error);
1043                  $_[KERNEL]->post( $IRC_ALIAS => connect => $CONNECT);                  $_[KERNEL]->post( $irc => connect => {} );
1044          },          },
1045          irc_socketerr => sub {          irc_socketerr => sub {
1046                  _log "## socket error... sleeping for $sleep_on_error seconds and retry";                  _log "## socket error... sleeping for $sleep_on_error seconds and retry";
1047                  sleep($sleep_on_error);                  sleep($sleep_on_error);
1048                  $_[KERNEL]->post( $IRC_ALIAS => connect => $CONNECT);                  $_[KERNEL]->post( $irc => connect => {} );
1049            },
1050            irc_notice => sub {
1051                    _log "<< notice from ", $_[ARG0], $_[ARG1], $_[ARG2];
1052                    my $m = $_[ARG2];
1053                    if ( $m =~ m!/msg.*(NickServ).*(IDENTIFY)!i ) {
1054                            _log ">> suggested to $1 $2";
1055                            $_[KERNEL]->post( $irc => privmsg => $1, "$2 $NICK" );
1056                    } elsif ( $m =~ m!\Q$NICK\E.*registered!i ) {
1057                            _log ">> registreted, so IDENTIFY";
1058                            $_[KERNEL]->post( $irc => privmsg => 'nickserv', "IDENTIFY $NICK" );
1059                    } else {
1060                            warn "## ignore $m\n";
1061                    }
1062          },          },
 #       irc_433 => sub {  
 #               print "# irc_433: ",$_[ARG1], "\n";  
 #               warn "## indetify $NICK\n";  
 #               $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" );  
 #       },  
 #       irc_451 # please register  
1063          irc_snotice => sub {          irc_snotice => sub {
1064                  _log "<< snotice",$_[ARG0];                  _log "<< snotice", $_[ARG0]; #dump( $_[ARG0],$_[ARG1], $_[ARG2] );
1065                  if ( $_[ARG0] =~ m!/(QUOTE)\s+(PASS\s+\d+)!i ) {                  if ( $_[ARG0] =~ m!/(QUOTE)\s+(PASS\s+\d+)!i ) {
1066                          warn ">> $1 | $2\n";                          warn ">> $1 | $2\n";
1067                          $_[KERNEL]->post( $IRC_ALIAS => lc($1) => $2);                          $_[KERNEL]->post( $irc => lc($1) => $2);
1068                  }                  }
1069          },          },
1070      _child => sub {},      _child => sub {},
# Line 1035  POE::Session->create( inline_states => { Line 1081  POE::Session->create( inline_states => {
1081    
1082  # http server  # http server
1083    
1084    _log "WEB archive at $url";
1085    
1086  my $httpd = POE::Component::Server::HTTP->new(  my $httpd = POE::Component::Server::HTTP->new(
1087          Port => $http_port,          Port => $http_port,
1088          PreHandler => {          PreHandler => {
# Line 1081  foreach my $c (@cols) { Line 1129  foreach my $c (@cols) {
1129          $style .= ".col-${max_color} { background: $c }\n";          $style .= ".col-${max_color} { background: $c }\n";
1130          $max_color++;          $max_color++;
1131  }  }
1132  warn "defined $max_color colors for users...\n";  _log "WEB defined $max_color colors for users...";
1133    
1134  sub root_handler {  sub root_handler {
1135          my ($request, $response) = @_;          my ($request, $response) = @_;
# Line 1103  sub root_handler { Line 1151  sub root_handler {
1151          }          }
1152    
1153          my $search = $q->param('search') || $q->param('grep') || '';          my $search = $q->param('search') || $q->param('grep') || '';
1154            my $r_url = $request->url;
1155    
1156            my @commands = qw( tags last-tag follow stat );
1157            my $commands_re = join('|',@commands);
1158    
1159          if ($request->url =~ m#/rss(?:/(tags|last-tag|follow.*)\w*(?:=(\d+))?)?#i) {          if ($r_url =~ m#/rss(?:/($commands_re.*)\w*(?:=(\d+))?)?#i) {
1160                  my $show = lc($1);                  my $show = lc($1);
1161                  my $nr = $2;                  my $nr = $2;
1162    
# Line 1118  sub root_handler { Line 1170  sub root_handler {
1170                  my $feed = XML::Feed->new( $type );                  my $feed = XML::Feed->new( $type );
1171                  $feed->link( $url );                  $feed->link( $url );
1172    
1173                    my $rc = RC_OK;
1174    
1175                  if ( $show eq 'tags' ) {                  if ( $show eq 'tags' ) {
1176                          $nr ||= 50;                          $nr ||= 50;
1177                          $feed->title( "tags from $CHANNEL" );                          $feed->title( "tags from $CHANNEL" );
# Line 1187  sub root_handler { Line 1241  sub root_handler {
1241                                  $feed->add_entry( $feed_entry );                                  $feed->add_entry( $feed_entry );
1242                          }                          }
1243    
1244                    } elsif ( $show =~ m/^stat/ ) {
1245    
1246                          my $feed_entry = XML::Feed::Entry->new($type);                          my $feed_entry = XML::Feed::Entry->new($type);
1247                          $feed_entry->title( "Internal stats" );                          $feed_entry->title( "Internal stats" );
1248                          $feed_entry->content(                          $feed_entry->content(
1249                                  '<![CDATA[<pre>' . dump( $_rss ) . '</pre>]]>'                                  '<![CDATA[<pre>' . dump( $_stat ) . '</pre>]]>'
1250                          );                          );
1251                          $feed->add_entry( $feed_entry );                          $feed->add_entry( $feed_entry );
1252    
1253                  } else {                  } else {
1254                          _log "unknown rss request ",$request->url;                          _log "WEB unknown rss request $r_url";
1255                          return RC_DENY;                          $feed->title( "unknown $r_url" );
1256                            foreach my $c ( @commands ) {
1257                                    my $feed_entry = XML::Feed::Entry->new($type);
1258                                    $feed_entry->title( "rss/$c" );
1259                                    $feed_entry->link( "$url/rss/$c" );
1260                                    $feed->add_entry( $feed_entry );
1261                            }
1262                            $rc = RC_DENY;
1263                  }                  }
1264    
1265                  $response->content( $feed->as_xml );                  $response->content( $feed->as_xml );
1266                  return RC_OK;                  return $rc;
1267          }          }
1268    
1269          if ( $@ ) {          if ( $@ ) {

Legend:
Removed from v.106  
changed lines
  Added in v.116

  ViewVC Help
Powered by ViewVC 1.1.26