diff options
| -rw-r--r-- | FS/FS/Conf.pm | 7 | ||||
| -rwxr-xr-x | FS/bin/freeside-daily | 19 | 
2 files changed, 25 insertions, 1 deletions
| diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index b3fffe327..c007a501a 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -989,6 +989,13 @@ httemplate/docs/config.html      'type'        => 'checkbox',    }, +  { +    'key'         => 'dump-scpdest', +    'section'     => '', +    'description' => 'destination for scp database dumps: user@host:/path', +    'type'        => 'text', +  }, +  );  1; diff --git a/FS/bin/freeside-daily b/FS/bin/freeside-daily index 17ee798ff..1db786120 100755 --- a/FS/bin/freeside-daily +++ b/FS/bin/freeside-daily @@ -4,8 +4,9 @@ use strict;  use Fcntl qw(:flock);  use Date::Parse;  use Getopt::Std; -use FS::UID qw(adminsuidsetup driver_name dbh); +use FS::UID qw(adminsuidsetup driver_name dbh datasrc);  use FS::Record qw(qsearch qsearchs); +use FS::Conf;  use FS::cust_main;  &untaint_argv;	#what it sounds like  (eww) @@ -57,6 +58,22 @@ if ( driver_name eq 'Pg' ) {    }  } +#local hack +my $conf = new FS::Conf; +my $dest = $conf->config('dump-scpdest'); +if ( $dest ) { +  datasrc =~ /dbname=([\w\.]+)$/ or die "unparsable datasrc ". datasrc; +  my $database = $1; +  eval "use Net::SCP qw(scp);"; +  if ( driver_name eq 'Pg' ) { +    system("pg_dump $database >/var/tmp/$database.sql") +  } else { +    die "database dumps not yet supported for ". driver_name; +  } +  scp("/var/tmp/$database.sql", $dest); +  unlink "/var/tmp/$database.sql" or die $!; +} +  # subroutines  sub untaint_argv { | 
