@@ -53,7 +53,8 @@ public function onLoad() {
5353 //* Register for actions
5454 $ app ->plugins ->registerAction ('backup_download ' , $ this ->plugin_name , 'backup_action ' );
5555 $ app ->plugins ->registerAction ('backup_restore ' , $ this ->plugin_name , 'backup_action ' );
56- $ app ->plugins ->registerAction ('backup_mailrestore ' , $ this ->plugin_name , 'backup_action ' );
56+ //$app->plugins->registerAction('backup_download_mail', $this->plugin_name, 'backup_action_mail');
57+ $ app ->plugins ->registerAction ('backup_restore_mail ' , $ this ->plugin_name , 'backup_action_mail ' );
5758
5859 }
5960
@@ -63,9 +64,8 @@ public function backup_action($action_name, $data) {
6364
6465 $ backup_id = intval ($ data );
6566 $ backup = $ app ->dbmaster ->queryOneRecord ("SELECT * FROM web_backup WHERE backup_id = $ backup_id " );
66- $ mail_backup = $ app ->dbmaster ->queryOneRecord ("SELECT * FROM mail_backup WHERE backup_id = $ backup_id " );
6767
68- if (is_array ($ backup ) && ( $ action_name != ' backup_mailrestore ' ) ) {
68+ if (is_array ($ backup )) {
6969
7070 $ app ->uses ('ini_parser,file,getconf,system ' );
7171
@@ -159,38 +159,62 @@ public function backup_action($action_name, $data) {
159159 } else {
160160 $ app ->log ('Backup directory not ready. ' , LOGLEVEL_DEBUG );
161161 }
162- //* Restore a mail backup - florian@schaal-24.de
163- } elseif (is_array ($ mail_backup ) && ($ action_name == 'backup_mailrestore ' )) {
164- $ app ->uses ('ini_parser,file,getconf ' );
162+ } else {
163+ $ app ->log ('No backup with ID ' .$ backup_id .' found. ' , LOGLEVEL_DEBUG );
164+ }
165+
166+ return 'ok ' ;
167+ }
165168
169+ //* Restore a mail backup - florian@schaal-24.de
170+ public function backup_action_mail ($ action_name , $ data ) {
171+ global $ app , $ conf ;
172+
173+ $ backup_id = intval ($ data );
174+ $ mail_backup = $ app ->dbmaster ->queryOneRecord ("SELECT * FROM mail_backup WHERE backup_id = $ backup_id " );
175+
176+ if (is_array ($ mail_backup ) && $ action_name == 'backup_restore_mail ' ) {
177+ $ app ->uses ('ini_parser,file,getconf ' );
178+
166179 $ server_config = $ app ->getconf ->get_server_config ($ conf ['server_id ' ], 'server ' );
167180 $ backup_dir = $ server_config ['backup_dir ' ];
168-
169- $ backup_dir_is_ready = true ;
181+
170182 //* mount backup directory, if necessary
171- if ( $ server_config ['backup_dir_is_mount ' ] == 'y ' && !$ app ->system ->mount_backup_dir ($ backup_dir ) ) $ backup_dir_is_ready = false ;
172-
173- if ($ backup_dir_is_ready ){
183+ $ run_backups = true ;
184+ $ backup_dir_mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh ' ;
185+ if ( $ server_config ['backup_dir_is_mount ' ] == 'y ' &&
186+ is_file ($ backup_dir_mount_cmd ) &&
187+ is_executable ($ backup_dir_mount_cmd ) &&
188+ fileowner ($ backup_dir_mount_cmd ) === 0
189+ ){
190+ if (!$ app ->system ->is_mounted ($ backup_dir )){
191+ exec ($ backup_dir_mount_cmd );
192+ sleep (1 );
193+ if (!$ app ->system ->is_mounted ($ backup_dir )) $ run_backups = false ;
194+ }
195+ }
196+
197+ if ($ run_backups ){
174198 $ mail_config = $ app ->getconf ->get_server_config ($ conf ['server_id ' ], 'mail ' );
175199 $ domain_rec = $ app ->db ->queryOneRecord ("SELECT * FROM mail_domain WHERE domain_id = " .intval ($ mail_backup ['parent_domain_id ' ]));
176-
200+
177201 $ backup_dir = $ server_config ['backup_dir ' ].'/mail ' .$ domain_rec ['domain_id ' ];
178202 $ mail_backup_file = $ backup_dir .'/ ' .$ mail_backup ['filename ' ];
179-
203+
180204 $ sql = "SELECT * FROM mail_user WHERE server_id = ' " .$ conf ['server_id ' ]."' AND mailuser_id = " .intval ($ mail_backup ['mailuser_id ' ]);
181205 $ record = $ app ->db ->queryOneRecord ($ sql );
182-
206+
183207 //* strip mailbox from maildir
184208 $ domain_dir =explode ('/ ' ,$ record ['maildir ' ]);
185209 $ _temp =array_pop ($ domain_dir );unset($ _temp );
186210 $ domain_dir =implode ('/ ' ,$ domain_dir );
187-
211+
188212 if (!is_dir ($ domain_dir )) {
189213 mkdir ($ domain_dir , 0700 ); //* never create the full path
190214 chown ($ domain_dir , $ mail_config ['mailuser_name ' ]);
191215 chgrp ($ domain_dir , $ mail_config ['mailuser_group ' ]);
192216 }
193-
217+
194218 if (file_exists ($ mail_backup_file ) && $ record ['homedir ' ] != '' && $ record ['homedir ' ] != '/ ' && !stristr ($ mail_backup_file ,'.. ' ) && !stristr ($ mail_backup_file ,'etc ' ) && $ mail_config ['homedir_path ' ] == $ record ['homedir ' ] && is_dir ($ domain_dir )) {
195219 if ($ mail_backup ['backup_mode ' ] == 'userzip ' ) {
196220 copy ($ mail_backup_file , $ domain_dir .'/ ' .$ mail_backup ['filename ' ]);
@@ -223,7 +247,8 @@ public function backup_action($action_name, $data) {
223247
224248 return 'ok ' ;
225249 }
226-
250+
251+
227252} // end class
228253
229254?>
0 commit comments