X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FCron%2Fupload.pm;h=877b07fd8afce19d89673d50e22ae062fc7210e4;hb=3c54c844c665ed108c7892a154fd3972fab1f3e5;hp=fea3d2cc7bb89bf4342eacd8a82d47b992230b18;hpb=56a2965996454a0649d43ecbc062beda61106e21;p=freeside.git diff --git a/FS/FS/Cron/upload.pm b/FS/FS/Cron/upload.pm index fea3d2cc7..877b07fd8 100644 --- a/FS/FS/Cron/upload.pm +++ b/FS/FS/Cron/upload.pm @@ -13,6 +13,7 @@ use LWP::UserAgent; use HTTP::Request; use HTTP::Request::Common; use HTTP::Response; +use Net::FTP; @ISA = qw( Exporter ); @EXPORT_OK = qw ( upload ); @@ -96,8 +97,8 @@ sub billco_upload { or die "no username for agent $agentnum\n"; my $password = $conf->config( 'billco-password', $agentnum, 1 ) or die "no password for agent $agentnum\n"; - my $clicode = $conf->config( 'billco-clicode', $agentnum ) - or die "no clicode for agent $agentnum\n"; + my $clicode = $conf->config( 'billco-clicode', $agentnum, 1 ); + #or die "no clicode for agent $agentnum\n"; die "no date provided\n" unless $opt{date}; my $zipfile = "$dir/agentnum$agentnum-$opt{date}.zip"; @@ -153,20 +154,46 @@ sub billco_upload { unlink "agentnum$agentnum-$opt{date}-header.csv", "agentnum$agentnum-$opt{date}-detail.csv"; - my $ua = new LWP::UserAgent; - my $res = $ua->request( POST( $url, - 'Content_Type' => 'form-data', - 'Content' => [ 'username' => $username, - 'pass' => $password, - 'custid' => $username, - 'clicode' => $clicode, - 'file1' => [ $zipfile ], - ], - ) - ); - - die "upload failed: ". $res->status_line. "\n" - unless $res->is_success; + if ( $url =~ /^http/i ) { + + my $ua = new LWP::UserAgent; + my $res = $ua->request( POST( $url, + 'Content_Type' => 'form-data', + 'Content' => [ 'username' => $username, + 'pass' => $password, + 'custid' => $username, + 'clicode' => $clicode, + 'file1' => [ $zipfile ], + ], + ) + ); + + die "upload failed: ". $res->status_line. "\n" + unless $res->is_success; + + } elsif ( $url =~ /^ftp:\/\/([\w\.]+)(\/.*)$/i ) { + + my($hostname, $path) = ($1, $2); + + my $ftp = new Net::FTP($hostname) + or die "can't connect to $hostname: $@\n"; + $ftp->login($username, $password) + or die "can't login to $hostname: ". $ftp->message."\n"; + unless ( $ftp->cwd($path) ) { + my $msg = "can't cd $path on $hostname: ". $ftp->message. "\n"; + ( $path eq '/' ) ? warn $msg : die $msg; + } + $ftp->binary + or die "can't set binary mode on $hostname\n"; + + $ftp->put($zipfile) + or die "can't put $zipfile: ". $ftp->message. "\n"; + + $ftp->quit; + + } else { + die "unknown scheme in URL $url\n"; + } $dbh->commit or die $dbh->errstr if $oldAutoCommit; '';