This commit was generated by cvs2svn to compensate for changes in r6255,
[freeside.git] / FS / FS / Cron / backup.pm
1 package FS::Cron::backup;
2
3 use strict;
4 use vars qw( @ISA @EXPORT_OK );
5 use Exporter;
6 use FS::UID qw(driver_name datasrc);
7
8 @ISA = qw( Exporter );
9 @EXPORT_OK = qw( backup_scp );
10
11 sub backup_scp {
12   my $conf = new FS::Conf;
13   my $dest = $conf->config('dump-scpdest');
14   if ( $dest ) {
15     datasrc =~ /dbname=([\w\.]+)$/ or die "unparsable datasrc ". datasrc;
16     my $database = $1;
17     eval "use Net::SCP qw(scp);";
18     die $@ if $@;
19     if ( driver_name eq 'Pg' ) {
20       system("pg_dump $database >/var/tmp/$database.sql")
21     } else {
22       die "database dumps not yet supported for ". driver_name;
23     }
24     if ( $conf->config('dump-pgpid') ) {
25       eval 'use GnuPG;';
26       die $@ if $@;
27       my $gpg = new GnuPG;
28       $gpg->encrypt( plaintext => "/var/tmp/$database.sql",
29                      output    => "/var/tmp/$database.gpg",
30                      recipient => $conf->config('dump-pgpid'),
31                    );
32       chmod 0600, '/var/tmp/$database.gpg';
33       scp("/var/tmp/$database.gpg", $dest);
34       unlink "/var/tmp/$database.gpg" or die $!;
35     } else {
36       chmod 0600, '/var/tmp/$database.sql';
37       scp("/var/tmp/$database.sql", $dest);
38     }
39     unlink "/var/tmp/$database.sql" or die $!;
40   }
41 }
42
43 1;