Skip to content

Instantly share code, notes, and snippets.

@admiral0
Created January 18, 2012 22:22
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save admiral0/1636192 to your computer and use it in GitHub Desktop.
Perl downloader for Nokia N9 firmware.
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Cookies;
use SOAP::Lite;
print "-----------------------------------\n";
print "- Nokia N9 Firmware Downloader -\n";
print "-----------------------------------\n";
print "Downloading product list...\n";
my $cookies=HTTP::Cookies->new;
my $ua=LWP::UserAgent->new(cookie_jar => $cookies);
$ua->agent("PerlFirm/0.9001 ");
my $req = HTTP::Request->new(GET => 'https://www.dsut.online.nokia.com/oti/get_params.do?application_id=2');
my $res = $ua->request($req);
$cookies->as_string =~ /JSESSIONID=(.*?)\;/;
my $soap = SOAP::Lite->new(proxy => "https://www.dsut.online.nokia.com/oti/CareSuite");
my $param = SOAP::Data->new;
$soap->autotype(0);
$soap->default_ns('http://www.posti-care_suite.posti.nokia.com/POSTI_CareSuite_Interface.wsdl');
$param->name("string");
$param->value($1);
$param->type("string");
$param->prefix("");
my $param2=SOAP::Data->new;
$param2->name("string0");
$param2->type("string");
$param2->value("");
my $som=$soap->GetProductList($param,$param2);
my $nokn9;
foreach my $prod ( @{$som->result}) {
$nokn9=$prod->{productID} if $prod->{marketName} eq "Nokia N9";
}
my $param3=SOAP::Data->new;
$param3->name("longVal");
$param3->value($nokn9);
print "Downloading Nokia N9 SW versions...\n";
my $som2=$soap->GetReleasesForProduct($param,$param3);
print "Select Nokia N9 SW Release:\n";
my $count;
for ( $count = 0;$count < scalar(@{$som2->result});$count++){
print $count,". ", $som2->result->[$count]->{version},"\n";
}
print "Input number: ";
my $choice= <>;
$choice>=0 and $choice<=$count or die "Please input a number from the list next time.\n";
my $relId=$som2->result->[$choice]->{releaseID};
my $param4=SOAP::Data->new;
$param4->name("longVal");
$param4->value($relId);
print "Downloading Release Versions.. [Lots of output]\n";
my $som3=$soap->GetReleaseVariants($param,$param4);
for ( $count = 0;$count < scalar(@{$som3->result});$count++){
print $count,". ",$som3->result->[$count]->{name},"\n";
}
print "Select release:";
$choice= <>;
$choice>=0 and $choice<=$count or die "Please input a number from the list next time.\n";
my $down= $som3->result->[$choice]->{files};
for ( $count = 0;$count < scalar(@{$down});$count++){
print $count,". ", $down->[$count]->{fileName},"\n";
}
print "Insert comma separated numbers of files to download\n>";
$choice= <>;
$choice>=0 and $choice<=$count or die "Please input a number from the list next time.\n";
for my $filespl(split(/,/,$choice)){
my $url= $down->[$filespl]->{downloadURL};
`wget $url`;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment