#!/usr/bin/perl

use LWP;

$b="---------------------------7d42de2af0186";

open DATA, "<", $ARGV[0] || die "Cannot open data $ARGV[0]";
sysread DATA, $firmware, 1024*2048;
close DATA;

$ipaddress = $ARGV[1];

$pre = <<"----";
--$b\r
Content-Disposition: form-data; name="target"\r
\r
0\r
--$b\r
Content-Disposition: form-data; name="binary"; filename="C:\\Documents and Settings\\Vlastn\xedk\\Dokumenty\\dobnet-linux-new.bin"\r
Content-Type: application/octet-stream\r
\r
----

$post = <<"----";
\r
--$b\r
Content-Disposition: form-data; name="submit-url"\r
\r
/upgrade.asp\r
--$b\r
Content-Disposition: form-data; name="writeAddrCode"\r
\r
0x00000\r
--$b--\r
----

$content = $pre . $firmware . $post;
{
    package RequestAgent;
    @ISA = qw(LWP::UserAgent);

    sub new
    { 
	my $self = LWP::UserAgent::new(@_);
	$self->agent("Mozilla/4.0 compatible");
	$self;
    }

    sub get_basic_credentials
    {
	my($self, $realm, $uri) = @_;
        return ("admin", "1234");
    }
}

# Create a user agent object
$ua = RequestAgent->new;
# Create a request
$req = HTTP::Request->new(POST => "http://$ipaddress/goform/formUpload");
$req->push_header("Authorization" => "Basic YWRtaW46MTIzNA==");
$req->content_type("multipart/form-data; boundary=$b");
$req->content($content);
# Pass request to the user agent and get a response back
my $res = $ua->request($req);
# Check the outcome of the response
if ($res->is_success) {
	print $res->content;
	exit 0;
} else {
	print "Bad luck this time\n";
	exit 1;
}
