use Exporter;
use Onis::Config qw(get_config);
-use Onis::Users qw(ident_to_name);
+use Onis::Users qw(chatter_to_name);
use Onis::Data::Persistent;
use Onis::Parser::Persistent qw(get_absolute_time);
qw(
store unsharp calculate_nicks
- get_all_nicks get_channel get_main_nick nick_to_ident ident_to_nick nick_to_name
- get_total_lines nick_rename print_output register_plugin
+ get_all_nicks get_channel get_main_nick
+ nick_to_ident ident_to_nick
+ nick_to_name ident_to_name
+ get_total_lines get_most_recent_time nick_rename print_output register_plugin
);
@Onis::Data::Core::ISA = ('Exporter');
our %NickToIdent = ();
our %IdentToNick = ();
+=head1 CONFIGURATION OPTIONS
+
+=over 4
+
+=item B<unsharp>: I<medium>;
+
+Sets the amount of unsharping onis should do. Valid options are I<none>,
+I<light>, I<medium> and I<hard>.
+
+=over 4
+
+=item I<none>
+
+does not do any unsharping.
+
+=item I<light>
+
+Leaves IP-addresses as they are. The deepest subdomains containing numbers have
+those numbers removed. So C<dsl-084-056-107-131.arcor-ip.net> becomes
+C<dsl-*-*-*-*.arcor-ip.net>.
+
+=item I<medium>
+
+Removes the last byte from IP-adresses. So C<84.56.107.131> becomes
+C<84.56.107.*>. Hostnames have the deepest subdomains removed if they contain
+numers, so C<dsl-084-056-107-131.arcor-ip.net> becomes C<*.arcor-ip.net> while
+C<shell.franken.de> is not modified. This is the default and recommended
+behavior.
+
+=item I<hard>
+
+Handles IP-addresses as I<medium>. Hostnames have all subdomains removed, so
+C<p5493EC60.dip.t-dialin.net> becomes C<*.t-dialin.net> and C<shell.franken.de>
+becomes C<*.franken.de>.
+
+=back
+
+=cut
+
our $UNSHARP = 'MEDIUM';
if (get_config ('unsharp'))
{
}
}
+=item B<channel>: I<name>;
+
+Sets the name of the channel. This is mostly automatically figured out, use
+this if onis doesn't get it right or you want another name..
+
+=back
+
+=cut
+
# TODO
# - lastrun
-# - total lines
-my $VERSION = '$Id: Core.pm,v 1.14 2004/10/31 15:00:32 octo Exp $';
+my $VERSION = '$Id$';
print STDERR $/, __FILE__, ": $VERSION" if ($::DEBUG);
return (1);
$counter++;
$GeneralCounters->put ('lines_total', $counter);
+ my ($time) = $GeneralCounters->get ('most_recent_time');
+ $time ||= 0;
+ $time = $data->{'epoch'} if ($time < $data->{'epoch'});
+ $GeneralCounters->put ('most_recent_time', $time);
+
$LinesThisRun++;
}
I<login@123.123.123.123>) and "unsharps it". The unsharp version is then
returned.
-What unsharp exactly does is described in the F<README>.
-
=cut
sub unsharp
{
my $chatter = $_;
my ($nick, $ident) = split (m/!/, $chatter);
- my $name = ident_to_name ($ident);
my ($counter) = $ChatterList->get ($chatter);
$nicks->{$nick}{$ident} = 0 unless (defined ($nicks->{$nick}{$ident}));
for (keys %{$nicks->{$this_nick}})
{
my $ident = $_;
- my $name = ident_to_name ($ident);
+ my $name = chatter_to_name ("$this_nick!$ident");
my $num = $nicks->{$this_nick}{$ident};
$this_total += $num;
sub get_channel
{
- my $chan = '#unknown'
- ;
+ my $chan = '#unknown';
if (get_config ('channel'))
{
$chan = get_config ('channel');
}
# Fix network-safe channel named (RFC 2811)
- if ($chan =~ m/^![A-Z0-9]{5}.+/)
+ if ($chan =~ m/^![A-Z0-9]{5}(.+)/)
{
- $chan =~ s/[A-Z0-9]{5}//;
+ $chan = '!' . $1;
}
return ($chan);
=item I<$name> = B<nick_to_name> (I<$nick>)
-Return the name associated with I<$nick>. This function uses B<ident_to_name>
-(see L<Onis::Users>).
+Return the name associated with I<$nick>.
=cut
if ($ident)
{
- return (ident_to_name ($ident));
+ return (chatter_to_name ("$nick!$ident"));
+ }
+ else
+ {
+ return ('');
+ }
+}
+
+=item I<$name> = B<ident_to_name> (I<$ident>)
+
+Returns the name associated with I<$ident>.
+
+=cut
+
+sub ident_to_name
+{
+ my $ident = shift;
+ my $nick = ident_to_nick ($ident);
+
+ if ($nick)
+ {
+ return (chatter_to_name ("$nick!$ident"));
}
else
{
return ($total, $LinesThisRun);
}
+=item I<$epoch> = B<get_most_recent_time> ()
+
+Returns the epoch of the most recent line received from the parser.
+
+=cut
+
+sub get_most_recent_time
+{
+ my ($time) = $GeneralCounters->get ('most_recent_time');
+ $time ||= 0;
+
+ return ($time);
+}
+
=item B<nick_rename> (I<$old_nick>, I<$new_nick>)
Keeps track of a nick's hostname if the nick changes.
sub print_output
{
- # FIXME FIXME FIXME
- if (!get_total_lines ())
+ my ($total, $this) = get_total_lines ();
+
+ if (!$total)
{
print STDERR <<'MESSAGE';