#!/usr/bin/perl ### script global information $docpath="/home/gotom/doc/irclog/irc.linux"; $redirector="http://www.gotom.jp/~gotom/cgi-bin/redirector.cgi/"; $urltitle="IRC URLs:"; $rsslink="http://www.gotom.jp/~gotom/cgi-bin/ircurl.cgi"; ### script information $laststring="by gotom\@sanori.org (2006-05-13)"; $softwarename="plum-logurl.cgi"; ### getting data $scriptname = $ENV{SCRIPT_NAME}; $scriptname =~ s|.*/([^/]+)$|$1|; $queries = $ENV{QUERY_STRING}; foreach (split('&',$ENV{QUERY_STRING}) ){ ($key,$value) = split('=',$_); if ( $key eq 'DATE' || $key eq 'date' ){ $query = $value; } elsif ( $key eq 'RSS' || $key eq 'rss' ){ $rss = 1; } elsif ( $key eq 'FORMAT' || $key eq 'format' ) { if ( $value =~ /rss/ || $value =~ /RSS/ ) { $rss = 1; } } } ### get and check date my ($mday,$mon,$year) = (localtime(time))[3..5]; $targetday = sprintf("%04d%02d%02d", $year + 1900, $mon + 1, $mday); if ($query eq '') { # if no query string is existed, replace it to today. $message = "use today's date"; } else { $message = "show URLs"; $targetday = $query; } ### display headers if (!$rss) { print "Content-type: text/html\n\n"; print < $urltitle $targetday
Date (format: YYYYMMDD): RSS:

$message $targetday: EOF } else { print "Content-type: text/xml\n\n"; print < $urltitle $rsslink $urltitle en EOF } ### sub routine sub escape_url { my ($url) = shift; my %escape = ('<'=>'<', '>'=>'>', '&'=>'&', '"'=>'"'); my $escape_re = join '|' => keys %escape; $url =~ s/($escape_re)/$escape{$1}/g; return $url; } ### open target log file if (open(FILE, $logfile="$docpath/$targetday.log")) { while() { if (/^\d\d:\d\d:\d\d .*https?:\/\/\S+/) { $len = @list; @list[$len] = $_; } } if (!$rss) { print "
"; foreach (reverse(@list)) { if (/^(\d\d:\d\d):\d\d [<>\(\)\[\]]\S+:(\S+)[<>\(\)\[\]] .*(https?:\/\/\S+)\s+.*$/) { $date = $1; $name = $2; $addr = &escape_url($3); print "($date:$name) $addr
\n"; } } } else { foreach (reverse(@list)) { if (/^(\d\d:\d\d):\d\d [<>\(\)\[\]]\S+:(\S+)[<>\(\)\[\]] .*(https?:\/\/\S+)\s+.*$/) { $date = $1; $name = $2; $xml = &escape_url($3); $refxml = "$redirector$xml"; print "$xml ($date $name)$refxml$xml ($date $name)\n"; } } } } else { if (!$rss) { print "
date format error."; } else { $xml = "cannot open file: $targetday.log"; $xml = &escape_url($xml); print "$xml\n"; } } ### final output if (!$rss) { print < $laststring EOF } else { print "
\n"; }