Skip to content

Commit 990ca8a

Browse files
author
Florian Schaal
committed
moved "mount backup_dir" from various plugins to system.inc.php
1 parent 0b22b5e commit 990ca8a

File tree

7 files changed

+64
-100
lines changed

7 files changed

+64
-100
lines changed

server/lib/classes/cron.d/500-backup.inc.php

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,9 @@ public function onRunJob() {
7171
} else {
7272
chmod(escapeshellcmd($backup_dir), $backup_dir_permissions);
7373
}
74-
75-
//* mount backup directory, if necessary
76-
$run_backups = true;
77-
$backup_dir_mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh';
78-
if( $server_config['backup_dir_is_mount'] == 'y' &&
79-
is_file($backup_dir_mount_cmd) &&
80-
is_executable($backup_dir_mount_cmd) &&
81-
fileowner($backup_dir_mount_cmd) === 0
82-
){
83-
if(!$app->system->is_mounted($backup_dir)){
84-
exec($backup_dir_mount_cmd);
85-
sleep(1);
86-
if(!$app->system->is_mounted($backup_dir)) $run_backups = false;
87-
}
88-
}
89-
74+
$run_backups = true;
75+
//* mount backup directory, if necessary
76+
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $run_backups = false;
9077
if($run_backups){
9178
//* backup only active domains
9279
$sql = "SELECT * FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y'";

server/lib/classes/cron.d/500-backup_mail.inc.php

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,20 +59,9 @@ public function onRunJob() {
5959
if($backup_mode == '') $backup_mode = 'userzip';
6060

6161
if($backup_dir != '') {
62-
//* mount backup directory, if necessary
6362
$run_backups = true;
64-
$backup_dir_mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh';
65-
if( $server_config['backup_dir_is_mount'] == 'y' &&
66-
is_file($backup_dir_mount_cmd) &&
67-
is_executable($backup_dir_mount_cmd) &&
68-
fileowner($backup_dir_mount_cmd) === 0
69-
){
70-
if(!$app->system->is_mounted($backup_dir)){
71-
exec($backup_dir_mount_cmd);
72-
sleep(1);
73-
if(!$app->system->is_mounted($backup_dir)) $run_backups = false;
74-
}
75-
}
63+
//* mount backup directory, if necessary
64+
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $run_backups = false;
7665

7766
$records = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ? AND maildir <> ''", intval($conf['server_id']));
7867

server/lib/classes/system.inc.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,6 +1801,22 @@ function is_mounted($mountpoint){
18011801
return $return_var == 0 ? true : false;
18021802
}
18031803

1804+
function mount_backup_dir($backup_dir, $mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh'){
1805+
$mounted = true;
1806+
if ( is_file($mount_cmd) &&
1807+
is_executable($mount_cmd) &&
1808+
fileowner($mount_cmd) === 0
1809+
) {
1810+
if (!$this->is_mounted($backup_dir)){
1811+
exec($backup_dir_mount_cmd);
1812+
sleep(1);
1813+
if (!$this->is_mounted($backup_dir)) $mounted = false;
1814+
}
1815+
} else $mounted = false;
1816+
1817+
return $mounted;
1818+
}
1819+
18041820
function getinitcommand($servicename, $action, $init_script_directory = ''){
18051821
global $conf;
18061822
// systemd

server/plugins-available/apache2_plugin.inc.php

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2046,25 +2046,19 @@ function delete($event_name, $data) {
20462046
if($data['old']['type'] == 'vhost') {
20472047
$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
20482048
$backup_dir = $server_config['backup_dir'];
2049-
//* mount backup directory, if necessary
20502049
$mount_backup = true;
2051-
$server_config['backup_dir_mount_cmd'] = trim($server_config['backup_dir_mount_cmd']);
20522050
if($server_config['backup_dir'] != '' && $server_config['backup_delete'] == 'y') {
2053-
if($server_config['backup_dir_is_mount'] == 'y' && $server_config['backup_dir_mount_cmd'] != ''){
2054-
if(!$app->system->is_mounted($backup_dir)){
2055-
exec(escapeshellcmd($server_config['backup_dir_mount_cmd']));
2056-
sleep(1);
2057-
if(!$app->system->is_mounted($backup_dir)) $mount_backup = false;
2058-
}
2059-
}
2051+
//* mount backup directory, if necessary
2052+
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $mount_backup = false;
2053+
20602054
if($mount_backup){
20612055
$web_backup_dir = $backup_dir.'/web'.$data_old['domain_id'];
20622056
//** do not use rm -rf $web_backup_dir because database(s) may exits
20632057
exec(escapeshellcmd('rm -f '.$web_backup_dir.'/web'.$data_old['domain_id'].'_').'*');
20642058
//* cleanup database
2065-
$sql = "DELETE FROM web_backup WHERE server_id = ".$conf['server_id']." AND parent_domain_id = ".$data_old['domain_id']." AND filename LIKE 'web".$data_old['domain_id']."_%'";
2066-
$app->db->query($sql);
2067-
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql);
2059+
$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename LIKE ?";
2060+
$app->db->query($sql, $conf['server_id'], $data_old['domain_id'], "web".$data_old['domain_id']."_%");
2061+
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $data_old['domain_id'], "web".$data_old['domain_id']."_%");
20682062

20692063
$app->log('Deleted the web backup files', LOGLEVEL_DEBUG);
20702064
}

server/plugins-available/backup_plugin.inc.php

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -72,30 +72,9 @@ public function backup_action($action_name, $data) {
7272
$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
7373
$backup_dir = $server_config['backup_dir'].'/web'.$web['domain_id'];
7474

75-
//* mount backup directory, if necessary
76-
/*
77-
$backup_dir_is_ready = true;
78-
$server_config['backup_dir_mount_cmd'] = trim($server_config['backup_dir_mount_cmd']);
79-
if($server_config['backup_dir_is_mount'] == 'y' && $server_config['backup_dir_mount_cmd'] != ''){
80-
if(!$app->system->is_mounted($server_config['backup_dir'])){
81-
exec(escapeshellcmd($server_config['backup_dir_mount_cmd']));
82-
sleep(1);
83-
if(!$app->system->is_mounted($server_config['backup_dir'])) $backup_dir_is_ready = false;
84-
}
85-
}*/
8675
$backup_dir_is_ready = true;
87-
$backup_dir_mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh';
88-
if( $server_config['backup_dir_is_mount'] == 'y' &&
89-
is_file($backup_dir_mount_cmd) &&
90-
is_executable($backup_dir_mount_cmd) &&
91-
fileowner($backup_dir_mount_cmd) === 0
92-
){
93-
if(!$app->system->is_mounted($backup_dir)){
94-
exec($backup_dir_mount_cmd);
95-
sleep(1);
96-
if(!$app->system->is_mounted($server_config['backup_dir'])) $backup_dir_is_ready = false;
97-
}
98-
}
76+
//* mount backup directory, if necessary
77+
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $backup_dir_is_ready = false;
9978

10079
if($backup_dir_is_ready){
10180
//* Make backup available for download
@@ -186,17 +165,10 @@ public function backup_action($action_name, $data) {
186165
$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
187166
$backup_dir = $server_config['backup_dir'];
188167

189-
//* mount backup directory, if necessary
190168
$backup_dir_is_ready = true;
191-
$server_config['backup_dir_mount_cmd'] = trim($server_config['backup_dir_mount_cmd']);
192-
if($server_config['backup_dir_is_mount'] == 'y' && $server_config['backup_dir_mount_cmd'] != ''){
193-
if(!$app->system->is_mounted($backup_dir)){
194-
exec(escapeshellcmd($server_config['backup_dir_mount_cmd']));
195-
sleep(1);
196-
if(!$app->system->is_mounted($backup_dir)) $backup_dir_is_ready = false;
197-
}
198-
}
199-
169+
//* mount backup directory, if necessary
170+
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $backup_dir_is_ready = false;
171+
200172
if($backup_dir_is_ready){
201173
$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
202174
$domain_rec = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain_id = ".intval($mail_backup['parent_domain_id']));

server/plugins-available/mail_plugin.inc.php

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -398,31 +398,22 @@ function user_delete($event_name, $data) {
398398
//* Delete the mail-backups
399399
$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
400400
$backup_dir = $server_config['backup_dir'];
401-
//* mount backup directory, if necessary
402401
$mount_backup = true;
403-
$server_config['backup_dir_mount_cmd'] = trim($server_config['backup_dir_mount_cmd']);
404402
if($server_config['backup_dir'] != '' && $maildir_path_deleted && $server_config['backup_delete'] == 'y') {
405-
if($server_config['backup_dir_is_mount'] == 'y' && $server_config['backup_dir_mount_cmd'] != ''){
406-
if(!$app->system->is_mounted($backup_dir)){
407-
exec(escapeshellcmd($server_config['backup_dir_mount_cmd']));
408-
sleep(1);
409-
if(!$app->system->is_mounted($backup_dir)) $mount_backup = false;
410-
}
411-
}
403+
//* mount backup directory, if necessary
404+
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $mount_backup = false;
412405
if($mount_backup){
413406
$sql = "SELECT * FROM mail_domain WHERE domain = '".explode("@",$data['old']['email'])[1]."'";
414407
$domain_rec = $app->db->queryOneRecord($sql);
415408
$mail_backup_dir = $backup_dir.'/mail'.$domain_rec['domain_id'];
416409
$mail_backup_files = 'mail'.$data['old']['mailuser_id'];
417410
exec(escapeshellcmd('rm -f '.$mail_backup_dir.'/'.$mail_backup_files).'*');
418411
//* cleanup database
419-
$sql = "DELETE FROM mail_backup WHERE server_id = ".$conf['server_id']." AND parent_domain_id = ".$domain_rec['domain_id']." AND mailuser_id = ".$data['old']['mailuser_id'];
420-
$app->db->query($sql);
421-
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql);
412+
$sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND mailuser_id = ?";
413+
$app->db->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
414+
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
422415

423416
$app->log('Deleted the mail backups for: '.$data['old']['email'], LOGLEVEL_DEBUG);
424-
425-
426417
}
427418
}
428419
}
@@ -457,24 +448,17 @@ function domain_delete($event_name, $data) {
457448
//* Delete the mail-backups
458449
$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
459450
$backup_dir = $server_config['backup_dir'];
460-
//* mount backup directory, if necessary
461451
$mount_backup = true;
462-
$server_config['backup_dir_mount_cmd'] = trim($server_config['backup_dir_mount_cmd']);
463452
if($server_config['backup_dir'] != '' && $maildomain_path_deleted && $server_config['backup_delete'] == 'y'){
464-
if($server_config['backup_dir_is_mount'] == 'y' && $server_config['backup_dir_mount_cmd'] != ''){
465-
if(!$app->system->is_mounted($backup_dir)){
466-
exec(escapeshellcmd($server_config['backup_dir_mount_cmd']));
467-
sleep(1);
468-
if(!$app->system->is_mounted($backup_dir)) $mount_backup = false;
469-
}
470-
}
453+
//* mount backup directory, if necessary
454+
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $mount_backup = false;
471455
if($mount_backup){
472456
$mail_backup_dir = $backup_dir.'/mail'.$data['old']['domain_id'];
473457
exec(escapeshellcmd('rm -rf '.$mail_backup_dir));
474458
//* cleanup database
475-
$sql = "DELETE FROM mail_backup WHERE server_id = ".$conf['server_id']." AND parent_domain_id = ".$data['old']['domain_id'];
476-
$app->db->query($sql);
477-
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql);
459+
$sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND mailuser_id = ?";
460+
$app->db->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
461+
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
478462

479463
$app->log('Deleted the mail backup directory: '.$mail_backup_dir, LOGLEVEL_DEBUG);
480464
}

server/plugins-available/nginx_plugin.inc.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2046,6 +2046,28 @@ function delete($event_name, $data) {
20462046
$this->awstats_delete($data, $web_config);
20472047
}
20482048

2049+
//* Delete the web-backups
2050+
if($data['old']['type'] == 'vhost') {
2051+
$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
2052+
$backup_dir = $server_config['backup_dir'];
2053+
$mount_backup = true;
2054+
if($server_config['backup_dir'] != '' && $server_config['backup_delete'] == 'y') {
2055+
//* mount backup directory, if necessary
2056+
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $mount_backup = false;
2057+
if($mount_backup){
2058+
$web_backup_dir = $backup_dir.'/web'.$data_old['domain_id'];
2059+
//** do not use rm -rf $web_backup_dir because database(s) may exits
2060+
exec(escapeshellcmd('rm -f '.$web_backup_dir.'/web'.$data_old['domain_id'].'_').'*');
2061+
//* cleanup database
2062+
$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename LIKE ?";
2063+
$app->db->query($sql, $conf['server_id'], $data_old['domain_id'], "web".$data_old['domain_id']."_%");
2064+
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $data_old['domain_id'], "web".$data_old['domain_id']."_%");
2065+
2066+
$app->log('Deleted the web backup files', LOGLEVEL_DEBUG);
2067+
}
2068+
}
2069+
}
2070+
20492071
$app->services->restartServiceDelayed('httpd', 'reload');
20502072

20512073
}

0 commit comments

Comments
 (0)