diff --git a/customer_email.php b/customer_email.php index 7fdc8ba4..7a00eb4e 100644 --- a/customer_email.php +++ b/customer_email.php @@ -608,13 +608,19 @@ elseif($page == 'accounts') $quota = 0; } + if(isset($_POST['delete_userfiles']) + && (int)$_POST['delete_userfiles'] == 1) + { + inserttask('7', $userinfo['loginname'], $result['email']); + } + $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `email_accounts_used` = `email_accounts_used` - 1, `email_quota_used` = `email_quota_used` - " . (int)$quota . " WHERE `customerid`='" . (int)$userinfo['customerid'] . "'"); $log->logAction(USR_ACTION, LOG_INFO, "deleted email account for '" . $result['email_full'] . "'"); redirectTo($filename, Array('page' => 'emails', 'action' => 'edit', 'id' => $id, 's' => $s)); } else { - ask_yesno('email_reallydelete_account', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $idna_convert->decode($result['email_full'])); + ask_yesno_withcheckbox('email_reallydelete_account', 'admin_customer_alsoremovemail', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $idna_convert->decode($result['email_full'])); } } } diff --git a/customer_ftp.php b/customer_ftp.php index 0bb27c25..5d7afc5f 100644 --- a/customer_ftp.php +++ b/customer_ftp.php @@ -106,8 +106,6 @@ elseif($page == 'accounts') $log->logAction(USR_ACTION, LOG_INFO, "deleted ftp-account '" . $result['username'] . "'"); $db->query("UPDATE `" . TABLE_FTP_GROUPS . "` SET `members`=REPLACE(`members`,'," . $db->escape($result['username']) . "','') WHERE `customerid`='" . (int)$userinfo['customerid'] . "'"); - // $db->query("DELETE FROM `".TABLE_FTP_GROUPS."` WHERE `customerid`='".$userinfo['customerid']."' AND `id`='$id'"); - if($userinfo['ftps_used'] == '1') { $resetaccnumber = " , `ftp_lastaccountnumber`='0'"; @@ -117,12 +115,19 @@ elseif($page == 'accounts') $resetaccnumber = ''; } + // refs #293 + if(isset($_POST['delete_userfiles']) + && (int)$_POST['delete_userfiles'] == 1) + { + inserttask('8', $userinfo['loginname'], $result['homedir']); + } + $result = $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `ftps_used`=`ftps_used`-1 $resetaccnumber WHERE `customerid`='" . (int)$userinfo['customerid'] . "'"); redirectTo($filename, Array('page' => $page, 's' => $s)); } else { - ask_yesno('ftp_reallydelete', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $result['username']); + ask_yesno_withcheckbox('ftp_reallydelete', 'admin_customer_alsoremoveftphomedir', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $result['username']); } } else diff --git a/lng/english.lng.php b/lng/english.lng.php index 86e3d0ae..a705c838 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -257,6 +257,7 @@ $lng['question']['mysql_reallydelete'] = 'Do you really want to delete the datab $lng['question']['admin_configs_reallyrebuild'] = 'Do you really want to rebuild all config files?'; $lng['question']['admin_customer_alsoremovefiles'] = 'Remove user files too?'; $lng['question']['admin_customer_alsoremovemail'] = 'Completely remove email data from filesystem?'; +$lng['question']['admin_customer_alsoremoveftphomedir'] = 'Also remove FTP-user homedir?'; /** * Mails diff --git a/lng/german.lng.php b/lng/german.lng.php index 85de319a..a976d2ac 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -257,6 +257,7 @@ $lng['question']['mysql_reallydelete'] = 'Wollen Sie die Datenbank %s wirklich l $lng['question']['admin_configs_reallyrebuild'] = 'Wollen Sie wirklich alle Konfigurationsdateien neu erstellen lassen?'; $lng['question']['admin_customer_alsoremovefiles'] = 'Auch Kunden-Daten löschen?'; $lng['question']['admin_customer_alsoremovemail'] = 'E-Mail Daten auf dem Dateisystem löschen?'; +$lng['question']['admin_customer_alsoremoveftphomedir'] = 'Heimatverzeichnis des FTP-Benutzers löschen?'; /** * Mails diff --git a/scripts/jobs/cron_tasks.php b/scripts/jobs/cron_tasks.php index 9b523633..d1678108 100644 --- a/scripts/jobs/cron_tasks.php +++ b/scripts/jobs/cron_tasks.php @@ -298,6 +298,37 @@ $awstatsclean['headerold']) { } } } + + /** + * TYPE=8 Customer deleted a ftp account and wants the homedir to be deleted on the filesystem + * refs #293 + */ + elseif ($row['type'] == '8') + { + fwrite($debugHandler, ' cron_tasks: Task8 started - deleting customer ftp homedir' . "\n"); + $cronlog->logAction(CRON_ACTION, LOG_INFO, 'Task8 started - deleting customer ftp homedir'); + + if(is_array($row['data'])) + { + if(isset($row['data']['loginname']) + && isset($row['data']['homedir']) + ) { + /* + * remove specific homedir + */ + $ftphomedir = makeCorrectDir($row['data']['homedir']); + $customerdocroot = makeCorrectDir($settings['system']['documentroot_prefix'].'/'.$row['data']['loginname'].'/'); + + if($ftphomedir != '/' + && $ftphomedir != $settings['system']['documentroot_prefix'] + && $ftphomedir != $customerdocroot + ) { + $cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Running: rm -rf ' . escapeshellarg($ftphomedir)); + safe_exec('rm -rf '.escapeshellarg($ftphomedir)); + } + } + } + } } if($db->num_rows($result_tasks) != 0)