#!/usr/bin/perl
# Copyright (c) 2007-2008 Rex Tsai <chihchun@kalug.linux.org.tw>
# $Id: $
use LWP::UserAgent;
use LWP::Debug;
use XML::Simple qw(:strict);
use strict;

BEGIN {
    # overwrite debug messages.
    sub LWP::Debug::_log { 
        use POSIX qw(strftime);

        my $now_string = strftime "%H:%M:%S", gmtime;
        my $msg = shift;
        $msg .= "\n" unless $msg =~ /\n$/;  # ensure trailing "\n"

        my($package,$filename,$line,$sub) = caller(2);
        print STDERR "$now_string $sub: $msg";
    }
}

LWP::Debug::level('+trace');

@ARGV >= 2 or die "Usage: $0 username password\n";
my ($fonid, $password) = @_;

my $ua = LWP::UserAgent->new();
$ua->get( 'http://wifi.fon.com/' );
undef $\;
if($ua->content =~ /(<WISPAccessGatewayParam.*?<\/WISPAccessGatewayParam>)/s)
{
    my $wispr = $1;
    $wispr =~ s/\t+//g;
    $wispr =~ s/&/&amp;/g;
    my $ref = XMLin($wispr, ForceArray => 1, KeyAttr => undef);
    if(defined(${$ref}{'Redirect'}))
    {
        my $LoginURL = ${$ref}{'Redirect'}[0]{'LoginURL'}[0];
        my $url = sprintf("%s&UserName=%s&Password=%s", $LoginURL, $fonid, $password);
        $ua->get($url);
    }
}
