package LiveSPC; # # # Description: LiveSPC.com client dataset upload library # # $Id: LiveSPC.pm,v 1.1 2009/11/22 20:50:26 michaelholder Exp michaelholder $ # # Copyright (C) 2007-2009 TRD Associates, LLC # # - All rights reserved. # # use strict; use LWP::UserAgent; use Digest::MD5 "md5_hex"; my $host = 'LiveSPC.com'; #----------------------------------------------------------------------- sub getChallenge( $ ) { my $datasetID = shift; my $ua = new LWP::UserAgent; $ua->agent("Mozilla/8.0"); my $req = new HTTP::Request 'GET',"http://$host/challenge.pl?datasetID=$datasetID"; $req->header(referer => 'http://livespc.com/main.html'); my $res = $ua->request($req); if ($res->is_success) { return $res->content; } else { return 0; } } #----------------------------------------------------------------------- sub sendData($ $ $ $ $) { my ($datasetID, $challenge, $passcode, $action, $data) = @_; my $response = md5_hex($passcode.$challenge); # print "[$passcode] [$challenge] response = [$response]\n"; my $ua = new LWP::UserAgent; $ua->agent("Mozilla/8.0"); my $req = new HTTP::Request 'POST',"http://$host/response.pl"; $req->content_type('application/x-www-form-urlencoded'); $req->content("datasetID=$datasetID&response=$response&action=$action&datafile=$data"); $req->header(referer => 'http://livespc.com/main.html'); my $res = $ua->request($req); if ($res->is_success) { return $res->content; } else { return 0; } } #----------------------------------------------------------------------- sub updateData($ $ $ $) { my ($datasetID, $passcode, $action, $text) = @_; my $success = 0; my $challenge = getChallenge($datasetID); if ($challenge) { $text =~ s/[\r\n]+/\n/g; $success = sendData($datasetID, $challenge, $passcode, $action, $text); } return $success; } #----------------------------------------------------------------------- 1;