18 |
|
|
19 |
## CONFIG |
## CONFIG |
20 |
|
|
21 |
my $NICK = 'irc-logger-dev'; |
my $NICK = 'irc-logger'; |
22 |
my $CONNECT = |
my $CONNECT = |
23 |
{Server => 'irc.freenode.net', |
{Server => 'irc.freenode.net', |
24 |
Nick => $NICK, |
Nick => $NICK, |
91 |
time => '{%s} ', |
time => '{%s} ', |
92 |
time_channel => '{%s %s} ', |
time_channel => '{%s %s} ', |
93 |
nick => '%s: ', |
nick => '%s: ', |
94 |
|
me_nick => '***%s ', |
95 |
message => '%s', |
message => '%s', |
96 |
}, |
}, |
97 |
message_filter => sub { |
filter => { |
98 |
# modify message content |
message => sub { |
99 |
return shift; |
# modify message content |
100 |
|
return shift; |
101 |
|
} |
102 |
} |
} |
103 |
); |
); |
104 |
|
|
105 |
|
Order is important. Fields are first passed through C<filter> (if available) and |
106 |
|
then throgh C<< sprintf($fmt->{message}, $message >> if available. |
107 |
|
|
108 |
=cut |
=cut |
109 |
|
|
110 |
sub get_from_log { |
sub get_from_log { |
116 |
time => '{%s} ', |
time => '{%s} ', |
117 |
time_channel => '{%s %s} ', |
time_channel => '{%s %s} ', |
118 |
nick => '%s: ', |
nick => '%s: ', |
119 |
|
me_nick => '***%s ', |
120 |
message => '%s', |
message => '%s', |
121 |
}; |
}; |
122 |
|
|
125 |
time::date as date, |
time::date as date, |
126 |
time::time as time, |
time::time as time, |
127 |
channel, |
channel, |
128 |
|
me, |
129 |
nick, |
nick, |
130 |
message |
message |
131 |
from log |
from log |
177 |
my $append = 1; |
my $append = 1; |
178 |
|
|
179 |
if ($last_row->{nick} ne $row->{nick}) { |
if ($last_row->{nick} ne $row->{nick}) { |
180 |
$msg .= sprintf($args->{fmt}->{nick}, $row->{nick}); |
# obfu way to find format for me_nick if needed or fallback to default |
181 |
|
my $fmt = $row->{me} ? ( $args->{fmt}->{me_nick} || $args->{fmt}->{nick} ) : $args->{fmt}->{nick}; |
182 |
|
$fmt ||= '%s'; |
183 |
|
|
184 |
|
my $nick = $row->{nick}; |
185 |
|
$nick = $args->{filter}->{nick}->($nick) if (ref($args->{filter}->{nick}) eq 'CODE'); |
186 |
|
|
187 |
|
$msg .= sprintf( $fmt, $nick ); |
188 |
$append = 0; |
$append = 0; |
189 |
} |
} |
190 |
|
|
191 |
if (ref($args->{message_filter}) eq 'CODE') { |
$args->{fmt}->{message} ||= '%s'; |
192 |
|
if (ref($args->{filter}->{message}) eq 'CODE') { |
193 |
$msg .= sprintf($args->{fmt}->{message}, |
$msg .= sprintf($args->{fmt}->{message}, |
194 |
$args->{message_filter}->( |
$args->{filter}->{message}->( |
195 |
$row->{message} |
$row->{message} |
196 |
) |
) |
197 |
); |
); |
440 |
my $style = <<'_END_OF_STYLE_'; |
my $style = <<'_END_OF_STYLE_'; |
441 |
p { margin: 0; padding: 0.1em; } |
p { margin: 0; padding: 0.1em; } |
442 |
.time, .channel { color: #808080; font-size: 60%; } |
.time, .channel { color: #808080; font-size: 60%; } |
443 |
.nick { color: #0000ff; font-size: 80%; } |
.nick { color: #000000; font-size: 80%; padding: 2px; font-family: courier, courier new, monospace ; } |
444 |
.message { color: #000000; font-size: 100%; } |
.message { color: #000000; font-size: 100%; } |
445 |
.search { float: right; } |
.search { float: right; } |
446 |
|
.col-0 { background: #ffff66 } |
447 |
|
.col-1 { background: #a0ffff } |
448 |
|
.col-2 { background: #99ff99 } |
449 |
|
.col-3 { background: #ff9999 } |
450 |
|
.col-4 { background: #ff66ff } |
451 |
_END_OF_STYLE_ |
_END_OF_STYLE_ |
452 |
|
|
453 |
|
my $max_color = 4; |
454 |
|
|
455 |
|
my %nick_enumerator; |
456 |
|
|
457 |
sub root_handler { |
sub root_handler { |
458 |
my ($request, $response) = @_; |
my ($request, $response) = @_; |
459 |
$response->code(RC_OK); |
$response->code(RC_OK); |
486 |
fmt => { |
fmt => { |
487 |
time => '<span class="time">%s</span> ', |
time => '<span class="time">%s</span> ', |
488 |
time_channel => '<span class="channel">%s %s</span> ', |
time_channel => '<span class="channel">%s %s</span> ', |
489 |
nick => '<span class="nick">%s:</span> ', |
nick => '%s: ', |
490 |
|
me_nick => '***%s ', |
491 |
message => '<span class="message">%s</span>', |
message => '<span class="message">%s</span>', |
492 |
}, |
}, |
493 |
message_filter => sub { |
filter => { |
494 |
my $m = shift || return; |
message => sub { |
495 |
$m =~ s/($escape_re)/$escape{$1}/gs; |
my $m = shift || return; |
496 |
$m =~ s#($RE{URI}{HTTP})#<a href="$1">$1</a>#gs; |
$m =~ s/($escape_re)/$escape{$1}/gs; |
497 |
return $m; |
$m =~ s#($RE{URI}{HTTP})#<a href="$1">$1</a>#gs; |
498 |
|
return $m; |
499 |
|
}, |
500 |
|
nick => sub { |
501 |
|
my $n = shift || return; |
502 |
|
if (! $nick_enumerator{$n}) { |
503 |
|
my $max = scalar keys %nick_enumerator; |
504 |
|
$nick_enumerator{$n} = $max + 1; |
505 |
|
} |
506 |
|
return '<span class="nick col-' . |
507 |
|
( $nick_enumerator{$n} % $max_color ) . |
508 |
|
'">' . $n . '</span>'; |
509 |
|
}, |
510 |
}, |
}, |
511 |
) |
) |
512 |
) . |
) . |