X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FFreeside.pm;h=8aa61e632a54cc2f8dcb518599e492d9996c683b;hp=4e25f02e0691ff135525e7db29fa1d782f5ac326;hb=ff27c3f36240aee48ed50153dd5d8fe3ac3f2443;hpb=fad183c519f7d8b7c905708efc984c571b2c2990 diff --git a/FS/FS/ClientAPI/Freeside.pm b/FS/FS/ClientAPI/Freeside.pm index 4e25f02e0..8aa61e632 100644 --- a/FS/FS/ClientAPI/Freeside.pm +++ b/FS/FS/ClientAPI/Freeside.pm @@ -4,11 +4,11 @@ use strict; #use vars qw($DEBUG $me); use FS::Record qw(qsearchs); use FS::Conf; -use FS::svc_external; +use FS::svc_acct; use FS::webservice_log; #$DEBUG = 0; -#$me = '[FS::ClientAPI::PrepaidPhone]'; +#$me = '[FS::ClientAPI:Freeside]'; # inputs: # support-key @@ -17,6 +17,7 @@ use FS::webservice_log; # # returns: # error (empty, or error message) +# custnum sub freesideinc_service { my $packet = shift; @@ -29,31 +30,37 @@ sub freesideinc_service { or return { 'error' => 'bad support-key' }; my($username, $_password) = ($1,$2); - my $svc_external = qsearchs({ - 'table' => 'svc_external', + my $svc_acct = qsearchs({ + 'table' => 'svc_acct', 'addl_from' => 'LEFT JOIN cust_svc USING ( svcnum )', 'hashref' => { 'username' => $username, '_password' => $_password, }, - 'extra_sql' => " AND svcpart = $svcpart", - }) - or return { 'error' => 'bad support-key' }; + 'extra_sql' => "AND svcpart = $svcpart", + }); + unless ( $svc_acct ) { + warn "bad support-key for $username from $ENV{REMOTE_IP}\n"; + sleep 5; #ideally also rate-limit and eventually ban their IP + return { 'error' => 'bad support-key' }; + } #XXX check if some customers can use some API calls, rate-limiting, etc. # but for now, everybody can use everything #record it happened + my $custnum = $svc_acct->cust_svc->cust_pkg->custnum; my $webservice_log = new FS::webservice_log { - 'custnum' => $svc_external->cust_svc->cust_pkg->custnum, - 'svcnum' => $svc_external->svcnum, + 'custnum' => $custnum, + 'svcnum' => $svc_acct->svcnum, 'method' => $packet->{'method'}, 'quantity' => $packet->{'quantity'} || 1, }; my $error = $webservice_log->insert; return { 'error' => $error } if $error; - return { 'error' => '' }; - + return { 'error' => '', + 'custnum' => $custnum, + }; } 1;