summaryrefslogtreecommitdiff
path: root/FS/bin/freeside-cdr-sftp_and_import
diff options
context:
space:
mode:
Diffstat (limited to 'FS/bin/freeside-cdr-sftp_and_import')
-rwxr-xr-xFS/bin/freeside-cdr-sftp_and_import204
1 files changed, 0 insertions, 204 deletions
diff --git a/FS/bin/freeside-cdr-sftp_and_import b/FS/bin/freeside-cdr-sftp_and_import
deleted file mode 100755
index ba9d6f3cc..000000000
--- a/FS/bin/freeside-cdr-sftp_and_import
+++ /dev/null
@@ -1,204 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use Getopt::Std;
-use Net::SFTP::Foreign::Compat;
-use Net::FTP;
-use FS::UID qw(adminsuidsetup datasrc);
-use FS::cdr;
-
-###
-# parse command line
-###
-
-use vars qw( $opt_m $opt_p $opt_r $opt_e $opt_d $opt_v $opt_P $opt_a );
-getopts('m:p:r:e:d:v:P:a');
-
-$opt_e ||= 'csv';
-#$opt_e = ".$opt_e" unless $opt_e =~ /^\./;
-$opt_e =~ s/^\.//;
-
-$opt_p ||= '';
-
-my %options = ();
-
-my $user = shift or die &usage;
-adminsuidsetup $user;
-
-# %%%FREESIDE_CACHE%%%
-my $cachedir = '%%%FREESIDE_CACHE%%%/cache.'. datasrc. '/cdrs';
-mkdir $cachedir unless -d $cachedir;
-
-my $format = shift or die &usage;
-
-use vars qw( $servername );
-$servername = shift or die &usage;
-
-###
-# get the file list
-###
-
-warn "Retrieving directory listing\n" if $opt_v;
-
-$opt_m = 'sftp' if !defined($opt_m);
-$opt_m = lc($opt_m);
-
-my $ls;
-
-if($opt_m eq 'ftp') {
- $options{'Port'} = $opt_P if $opt_P;
- $options{'Debug'} = $opt_v if $opt_v;
- $options{'Passive'} = $opt_a if $opt_a;
-
- my $ls_ftp = ftp();
-
- $ls = [ grep { /^$opt_p.*\.$opt_e$/i } $ls_ftp->ls ];
-}
-elsif($opt_m eq 'sftp') {
- $options{'port'} = $opt_P if $opt_P;
- $options{'debug'} = $opt_v if $opt_v;
-
- my $ls_sftp = sftp();
-
- $ls_sftp->setcwd($opt_r) or die "can't chdir to $opt_r\n"
- if $opt_r;
-
- $ls = $ls_sftp->ls('.', wanted => qr/^$opt_p.*\.$opt_e$/i,
- names_only => 1 );
-}
-else {
- die "Method '$opt_m' not supported; must be ftp or sftp\n";
-}
-
-###
-# import each file
-###
-
-foreach my $filename ( @$ls ) {
-
- warn "Downloading $filename\n" if $opt_v;
-
- #get the file
- if($opt_m eq 'ftp') {
- my $ftp = ftp();
- $ftp->get($filename, "$cachedir/$filename")
- or die "Can't get $filename: ". $ftp->message . "\n";
- }
- else {
- my $sftp = sftp();
- $sftp->get($filename, "$cachedir/$filename")
- or die "Can't get $filename: ". $sftp->error . "\n";
- }
-
- warn "Processing $filename\n" if $opt_v;
-
- my $error = FS::cdr::batch_import( {
- 'file' => "$cachedir/$filename",
- 'format' => $format,
- 'batch_namevalue' => $filename,
- 'empty_ok' => 1,
- } );
- die $error if $error;
-
- if ( $opt_d ) {
- if($opt_m eq 'ftp') {
- my $ftp = ftp();
- $ftp->rename($filename, "$opt_d/$filename")
- or die "Can't move $filename to $opt_d: ".$ftp->message . "\n";
- }
- else {
- my $sftp = sftp();
- $sftp->rename($filename, "$opt_d/$filename")
- or die "can't move $filename to $opt_d: ". $sftp->error . "\n";
- }
- }
-
- unlink "$cachedir/$filename";
-
-}
-
-###
-# subs
-###
-
-sub usage {
- "Usage: \n cdr.import user format servername\n";
-}
-
-use vars qw( $sftp $ftp );
-
-sub ftp {
- return $ftp if $ftp && $ftp->pwd;
-
- my ($hostname, $user) = reverse split('@', $servername);
- my ($user, $pass) = split(':', $user);
-
- my $ftp = Net::FTP->new($hostname, %options)
- or die "FTP connection to '$hostname' failed.";
- $ftp->login($user, $pass) or die "FTP login failed: ".$ftp->message;
- $ftp->cwd($opt_r) or die "can't chdir to $opt_r\n" if $opt_r;
- return $ftp;
-}
-
-sub sftp {
-
- #reuse connections
- return $sftp if $sftp && $sftp->cwd;
-
- my %sftp = ( host => $servername );
-
- $sftp = Net::SFTP::Foreign->new(%sftp);
- $sftp->error and die "SFTP connection failed: ". $sftp->error;
-
- $sftp;
-}
-
-=head1 NAME
-
-cdr.sftp_and_import - Download CDR files from a remote server via SFTP
-
-=head1 SYNOPSIS
-
- cdr.sftp_and_import [ -m method ] [ -p prefix ] [ -e extension ]
- [ -r remotefolder ] [ -d donefolder ] [ -v level ] [ -P port ]
- [ -a ] user format [sftpuser@]servername
-
-=head1 DESCRIPTION
-
-Command line tool to download CDR files from a remote server via SFTP
-or FTP and then import them into the database.
-
--m: transfer method (sftp or ftp), defaults to sftp
-
--p: file prefix, if specified
-
--e: file extension, defaults to .csv
-
--r: if specified, changes into this remote folder before starting
-
--d: if specified, moves files to the specified folder when done
-
--P: if specified, sets the port to use
-
--a: use ftp passive mode
-
--v: set verbosity level; this script only has one level, but it will
- be passed as the 'debug' argument to the transport method
-
-user: freeside username
-
-format: CDR format name
-
-[sftpuser@]servername: remote server
-(or ftpuser:ftppass@servername)
-
-=head1 BUGS
-
-=head1 SEE ALSO
-
-L<FS::cdr>
-
-=cut
-
-1;
-