/[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 12 by dpavlin, Sun Mar 12 13:33:20 2006 UTC revision 13 by dpavlin, Sun Mar 12 14:19:00 2006 UTC
# Line 39  my $DSN = 'DBI:Pg:dbname=irc-logger'; Line 39  my $DSN = 'DBI:Pg:dbname=irc-logger';
39    
40    
41    
42  use POE qw(Component::IRC Wheel::FollowTail);  use POE qw(Component::IRC Wheel::FollowTail Component::Server::HTTP);
43    use HTTP::Status;
44  use DBI;  use DBI;
45  use Encode qw/from_to/;  use Encode qw/from_to/;
46    
# Line 77  values (?,?,?) Line 78  values (?,?,?)
78   my @messages = get_from_log(   my @messages = get_from_log(
79          limit => 42,          limit => 42,
80          search => '%what to stuff in ilike%',          search => '%what to stuff in ilike%',
81            fmt => {
82                    time => '{%s} ',
83                    time_channel => '{%s %s} ',
84                    nick => '%s: ',
85                    message => '%s',
86            },
87   );   );
88    
89  =cut  =cut
# Line 86  sub get_from_log { Line 93  sub get_from_log {
93    
94          $args->{limit} ||= 10;          $args->{limit} ||= 10;
95    
96            $args->{fmt} ||= {
97                    time => '{%s} ',
98                    time_channel => '{%s %s} ',
99                    nick => '%s: ',
100                    message => '%s',
101            };
102    
103          my $sql = qq{          my $sql = qq{
104                  select                  select
105                          time::date as date,                          time::date as date,
# Line 130  sub get_from_log { Line 144  sub get_from_log {
144    
145                  my $msg = '';                  my $msg = '';
146    
147                  $msg .= "{$t";                  if ($last_row->{channel} ne $row->{channel}) {
148                  $msg .= ' ' . $row->{channel} if ($last_row->{channel} ne $row->{channel});                          $msg .= sprintf($args->{fmt}->{time_channel}, $t, $row->{channel});
149                  $msg .= "} ";                  } else {
150                            $msg .= sprintf($args->{fmt}->{time}, $t);
151                    }
152    
153                  my $append = 1;                  my $append = 1;
154    
155                  if ($last_row->{nick} ne $row->{nick}) {                  if ($last_row->{nick} ne $row->{nick}) {
156                          $msg .= $row->{nick} . ': ';                          $msg .= sprintf($args->{fmt}->{nick}, $row->{nick});
157                          $append = 0;                          $append = 0;
158                  }                  }
159    
160                  $msg .= $row->{message};                  $msg .= sprintf($args->{fmt}->{message}, $row->{message});
161    
162                  if ($append && @msgs) {                  if ($append && @msgs) {
163                          $msgs[$#msgs] .= " " . $msg;                          $msgs[$#msgs] .= " " . $msg;
# Line 359  POE::Session->create Line 375  POE::Session->create
375     },     },
376    );    );
377    
378    # http server
379    
380    my $httpd = POE::Component::Server::HTTP->new(
381            Port => 8000,
382            ContentHandler => { '/' => \&root_handler },
383            Headers        => { Server => 'irc-logger' },
384    );
385    
386    my $style = <<'_END_OF_STYLE_';
387    .time, .channel { color: #808080; font-size: 60%; }
388    .nick { color: #0000ff; font-size: 80%; }
389    .message { color: #000000; font-size: 100%; }
390    _END_OF_STYLE_
391    
392    sub root_handler {
393            my ($request, $response) = @_;
394            $response->code(RC_OK);
395            $response->content_type('text/html');
396            $response->content(
397                    qq{<html><head><title>$NICK</title><style type="text/css">$style</style></head><body>} .
398                    "irc-logger url: " . $request->uri . '<br/>' .
399                    join("<br/>",
400                            get_from_log(
401                                    limit => 100,
402                                    fmt => {
403                                            time => '<span class="time">%s</span> ',
404                                            time_channel => '<span class="channel">%s %s</span> ',
405                                            nick => '<span class="nick">%s:</span> ',
406                                            message => '<span class="message">%s</span>',
407                                    },
408                            )
409                    ) .
410                    qq{</body></html>}
411            );
412            return RC_OK;
413    }
414    
415  POE::Kernel->run;  POE::Kernel->run;

Legend:
Removed from v.12  
changed lines
  Added in v.13

  ViewVC Help
Powered by ViewVC 1.1.26