Name: UserAgent FullName: User-agent specified behaviors and user-agent name logging URI: IW:SuikaWiki:"Wiki//UserAgentList" MODULE: our $LoggingName; sub add ($) { my $s = shift; return unless length $s; $s =~ s/([^\x20-\x24\x26-\x7E])/sprintf '%%%02X', unpack 'C', $1/ge; my %ua; for (split /\n/, SuikaWiki::Plugin->get_data (content => [qw/Wiki Log UserAgent/])) { if (/^-{(\d+)} (.+)$/) { my ($t, $n) = ($1, $2); $n =~ tr/\x0A\x0D//d; $ua{$n} = $t; } } $ua{$s}++; my $s = qq(#?SuikaWiki/0.9\n); for (sort {$ua{$a} <=> $ua{$b}} keys %ua) { $s .= sprintf qq(-{%d} %s\n), $ua{$_}, $_; } ## TODO: SuikaWiki::Plugin->set_data (content => [qw/Wiki Log UserAgent/] => $s, -touch => 0); } if ($LoggingName) { push @{$SuikaWiki::Plugin::On{WikiDatabaseLoaded}}, sub { add ($main::ENV{HTTP_USER_AGENT}) if ($main::form{mycmd} eq 'read' || $main::form{mycmd} eq 'default'); }; }; POD:TO DO: - better storing format - Logging method should be more customizable (what mode? what's except?...) POD:LICENSE: Copyright 2003 Wakaba %%GNUGPL2%%