#!/usr/bin/perl -w
use strict;

###########################################################################
# (c) 2005 Brett T. Warden
# http://www.wgz.org/bwarden/
#
# License:
# Perl Artistic License
# http://www.perl.com/language/misc/Artistic.html
#
# Other licensing arrangements available upon request.
#
# Note specifically:
#  THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
#  MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
###########################################################################

use Net::Netrc;
use LWP::Simple;
use Template::Extract;
use Date::Parse;
use Data::Dumper;

my $machine = shift(@ARGV) || 'vapor.gue.st.wgz.org'; 
my $auth = Net::Netrc->lookup($machine);
my $login = $auth->login();
my $password = $auth->password();

my $obj = Template::Extract->new;

my $template = << '.';
<script language="JavaScript">
CurPage = [% CurPage %][% /\s*/ %]
LastPage = [% LastPage %][% /\s*/ %]
function
[% ... %]
</script>
[% ... %]
<table[% ... %]>
<tr>[% FOREACH headers %]
<td align=center bgcolor=#b7dcfb><font[% ... %]>[% header %]</font></td>
[% END %]
</tr>
<tr>
<td[% ... %]>
<div[% ... %]></div>
</td>
</tr>
[% FOREACH entry %]
<tr[% ... %]>[% FOREACH field %]<td[% ... %]>[% /\s*/ %][% content %][% /\s*/ %]</td>[% END %][% END %][% /\s*/ %]
</table>
.

my $num_pages = 0;
my @headers;
my @log;

my $document = get('http://'.$login.':'.$password.'@'.$machine.'/st_log.html');

if($document) {
	$document =~ s!\r!!g;
}
else {
	$document = '';
}

my $goodies = $obj->extract($template, $document);

if(defined($goodies->{LastPage})) {
	$num_pages = $goodies->{LastPage} + 1;
}

if($goodies->{headers}) {
	for my $row (@{$goodies->{headers}}) {
		push(@headers, $row->{header});
	}
}
if($goodies->{entry}) {
	for my $row (@{$goodies->{entry}}) {
		my %entry;
		if($row->{field}) {
			for(my $i=0; $i<@headers; $i++) {
				if($row->{field}->[$i]) {
					$entry{$headers[$i]} =
						$row->{field}->[$i]->{content};
				}
			}
		}
		unshift(@log, \%entry);
	}
}
						

print Data::Dumper->Dump(
				[
#				$goodies,
#				\@headers,
				$num_pages,
				$goodies->{CurPage},
				$goodies->{LastPage},
				\@log,
				],
				[qw(
				num_pages
				CurPage
				LastPage
				*log
				)]
			   );

#my $print_template = "%-30s%-17s\n";
#print sprintf($print_template, 'Date', 'Mac');
#for my $row (@{$clients->{host}}) {
##	print Data::Dumper::Dumper($row);
#	$row->{date} =~ tr!/! !;
#	$row->{date}.= ' UTC';
#	$row->{date} = str2time($row->{date});
#	print sprintf($print_template, scalar(localtime($row->{date})), $row->{mac});
#}
