]> git.proxmox.com Git - pmg-api.git/blobdiff - PMG/Backup.pm
log email addresses as utf8 (postfix also do that).
[pmg-api.git] / PMG / Backup.pm
index b40c19b9c9f8b1f4ea379c839f71c29052552e49..a451c6c9082b16eea4d377ce8ef96c25583cf1eb 100644 (file)
@@ -11,6 +11,8 @@ use PVE::Tools;
 use PMG::pmgcfg;
 use PMG::AtomicFile;
 
+my $sa_custom_config_fn = "/etc/mail/spamassassin/custom.cf";
+
 sub dump_table {
     my ($dbh, $table, $ofh, $seq, $seqcol) = @_;
 
@@ -181,7 +183,7 @@ sub pmg_backup {
 
        my $extra_cfgs =  [];
 
-       push @$extra_cfgs, '/etc/mail/spamassassin/custom.cf';
+       push @$extra_cfgs, $sa_custom_config_fn;
 
        #push @$extra_cfgs, '/etc/postfix/tls_policy';
 
@@ -243,13 +245,18 @@ sub pmg_restore {
            unlink "$dirname/config/etc/pmg/cluster.conf"; # never restore cluster config
            rmtree "$dirname/config/etc/pmg/master";
 
-           # backup old config to /etc/pmg.oldremove current config
-           rmtree "/etc/pmg";
-           mkdir "/etc/pmg";
+           # remove current config, but keep directory for INotify
+           rmtree("/etc/pmg", { keep_root => 1 });
            # copy files
            system("cp -a $dirname/config/etc/pmg/* /etc/pmg/") == 0 ||
                die "unable to restore system configuration: ERROR";
 
+           if (-f "$dirname/config/${sa_custom_config_fn}") {
+               my $data = PVE::Tools::file_get_contents(
+                   "$dirname/config/${sa_custom_config_fn}", 1024*1024);
+               PVE::Tools::file_set_contents($sa_custom_config_fn, $data);
+           }
+
            my $cfg = PMG::Config->new();
            my $ruledb = PMG::RuleDB->new();
            my $rulecache = PMG::RuleCache->new($ruledb);
@@ -267,8 +274,6 @@ sub pmg_restore {
 
            print "Create new database\n";
            my $dbh = PMG::DBTools::create_ruledb($dbname);
-           my $ruledb = PMG::RuleDB->new($dbh);
-           PMG::DBTools::init_ruledb($ruledb);
 
            system("cat $dirname/$dbfn|psql $dbname >/dev/null 2>&1") == 0 ||
                die "unable to restore rule database: ERROR";
@@ -284,6 +289,7 @@ sub pmg_restore {
            PMG::DBTools::postgres_admin_cmd('psql', { input => 'analyze;' }, $dbname);
 
            print "Analyzing/Upgrading existing Databases...";
+           my $ruledb = PMG::RuleDB->new($dbh);
            PMG::DBTools::upgradedb($ruledb);
            print "done\n";