diff --git a/actions/admin/settings/100.panel.php b/actions/admin/settings/100.panel.php index 5082a18e..bc7f00a9 100644 --- a/actions/admin/settings/100.panel.php +++ b/actions/admin/settings/100.panel.php @@ -64,7 +64,7 @@ return array( 'type' => 'option', 'default' => 'Manual', 'option_mode' => 'one', - 'option_options' => array('Manual' => 'Manual', 'Dropdown' => 'Dropdown'), + 'option_options' => array('Manual' => $lng['serversettings']['manual'], 'Dropdown' => $lng['serversettings']['dropdown']), 'save_method' => 'storeSettingField', ), 'panel_adminmail' => array( diff --git a/actions/admin/settings/120.system.php b/actions/admin/settings/120.system.php index 8009fb48..1f766f8d 100644 --- a/actions/admin/settings/120.system.php +++ b/actions/admin/settings/120.system.php @@ -113,6 +113,35 @@ return array( 'type' => 'hidden', 'default' => 'www-data', ), + 'system_report_enable' => array( + 'label' => $lng['serversettings']['report']['report'], + 'settinggroup' => 'system', + 'varname' => 'report_enable', + 'type' => 'bool', + 'default' => true, + 'cronmodule' => 'froxlor/reports', + 'save_method' => 'storeSettingField', + ), + 'system_report_webmax' => array( + 'label' => $lng['serversettings']['report']['webmax'], + 'settinggroup' => 'system', + 'varname' => 'report_webmax', + 'type' => 'int', + 'int_min' => 1, + 'int_max' => 99, + 'default' => 90, + 'save_method' => 'storeSettingField', + ), + 'system_report_trafficmax' => array( + 'label' => $lng['serversettings']['report']['trafficmax'], + 'settinggroup' => 'system', + 'varname' => 'report_trafficmax', + 'type' => 'int', + 'int_min' => 1, + 'int_max' => 99, + 'default' => 90, + 'save_method' => 'storeSettingField', + ), 'system_debug_cron' => array( 'label' => $lng['serversettings']['cron']['debug'], 'settinggroup' => 'system', diff --git a/admin_templates.php b/admin_templates.php index 4ebbb4ad..bd25a008 100644 --- a/admin_templates.php +++ b/admin_templates.php @@ -48,7 +48,8 @@ elseif(isset($_GET['id'])) $available_templates = array( 'createcustomer', 'pop_success', - 'trafficninetypercent', + 'trafficmaxpercent', + 'diskmaxpercent', 'new_ticket_by_customer', 'new_ticket_for_customer', 'new_ticket_by_staff', diff --git a/install/froxlor.sql b/install/froxlor.sql index c2e352ab..52a84054 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -462,7 +462,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (18, 'system', 'vmail_homedir', '/var/customers/mail/'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (19, 'system', 'bindconf_directory', '/etc/bind/'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (20, 'system', 'bindreload_command', '/etc/init.d/bind9 reload'); -INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.16'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.17-svn1'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (23, 'system', 'hostname', 'SERVERNAME'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (24, 'login', 'maxloginattempts', '3'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (25, 'login', 'deactivatetime', '900'); @@ -611,6 +611,9 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (170, 'phpfpm', 'enabled_ownvhost', '0'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (171, 'phpfpm', 'vhost_httpuser', 'froxlorlocal'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (172, 'phpfpm', 'vhost_httpgroup', 'froxlorlocal'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (173, 'system', 'report_enable', '1'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (174, 'system', 'report_webmax', '90'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (175, 'system', 'report_trafficmax', '90'); # -------------------------------------------------------- @@ -1019,6 +1022,7 @@ INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES (5, 'froxlor/core', 'cron_traffic.php', '1 DAY', '1', 'cron_traffic'); INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES (6, 'froxlor/ticket', 'cron_used_tickets_reset.php', '1 DAY', '1', 'cron_ticketsreset'); INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES (7, 'froxlor/ticket', 'cron_ticketarchive.php', '1 MONTH', '1', 'cron_ticketarchive'); +INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES (8, 'froxlor/reports', 'cron_usage_report.php', '1 DAY', '1', 'cron_usage_report'); # -------------------------------------------------------- diff --git a/install/updates/froxlor/0.9/update_0.9.inc.php b/install/updates/froxlor/0.9/update_0.9.inc.php index 09a2f39d..a2566938 100644 --- a/install/updates/froxlor/0.9/update_0.9.inc.php +++ b/install/updates/froxlor/0.9/update_0.9.inc.php @@ -192,7 +192,7 @@ if(isFroxlorVersion('0.9-r1')) $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('spf', 'spf_entry', '@ IN TXT \"v=spf1 a mx -all\"');"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `varname` = 'froxlor_graphic' WHERE `varname` = 'syscp_graphic'"); if(isset($settings['admin']['syscp_graphic']) - && $settings['admin']['syscp_graphic'] != '' + && $settings['admin']['syscp_graphic'] != '' ){ $settings['admin']['froxlor_graphic'] = $settings['admin']['syscp_graphic']; } @@ -305,8 +305,8 @@ if(isFroxlorVersion('0.9.1')) $result = $db->query_first("SELECT MAX(`guid`) as `latestguid` FROM `".TABLE_PANEL_CUSTOMERS."`"); if (isset($result['latestguid']) - && (int)$result['latestguid'] > 0 - && $result['latestguid'] != $settings['system']['lastguid'] + && (int)$result['latestguid'] > 0 + && $result['latestguid'] != $settings['system']['lastguid'] ) { checkLastGuid(); lastStepStatus(1, 'fixed'); @@ -411,7 +411,7 @@ if(isFroxlorVersion('0.9.4')) * To not confuse Froxlor, we just update old settings. */ if(isset($settings['system']['awstats_path']) - && $settings['system']['awstats_path'] != '' + && $settings['system']['awstats_path'] != '' ) { showUpdateStep("Updating awstats path setting"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/usr/bin/' WHERE `settinggroup` = 'system' AND `varname` = 'awstats_path';"); @@ -425,7 +425,7 @@ if(isFroxlorVersion('0.9.4')) } if(isset($settings['system']['awstats_domain_file']) - && $settings['system']['awstats_domain_file'] != '' + && $settings['system']['awstats_domain_file'] != '' ) { showUpdateStep("Updating awstats configuration path setting"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `varname` = 'awstats_conf' WHERE `varname` = 'awstats_domain_file';"); @@ -543,28 +543,28 @@ if(isFroxlorVersion('0.9.6-svn2')) $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('defaultwebsrverrhandler', 'enabled', '1');"); if(isset($_POST['update_deferr_500']) - && trim($_POST['update_deferr_500']) != '' + && trim($_POST['update_deferr_500']) != '' ) { $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('defaultwebsrverrhandler', 'err500', '".$db->escape($_POST['update_deferr_500'])."');"); $err500 = true; } if(isset($_POST['update_deferr_401']) - && trim($_POST['update_deferr_401']) != '' + && trim($_POST['update_deferr_401']) != '' ) { $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('defaultwebsrverrhandler', 'err401', '".$db->escape($_POST['update_deferr_401'])."');"); $err401 = true; } if(isset($_POST['update_deferr_403']) - && trim($_POST['update_deferr_403']) != '' + && trim($_POST['update_deferr_403']) != '' ) { $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('defaultwebsrverrhandler', 'err403', '".$db->escape($_POST['update_deferr_403'])."');"); $err403 = true; } if(isset($_POST['update_deferr_404']) - && trim($_POST['update_deferr_404']) != '' + && trim($_POST['update_deferr_404']) != '' ) { $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('defaultwebsrverrhandler', 'err404', '".$db->escape($_POST['update_deferr_404'])."');"); $err404 = true; @@ -749,7 +749,7 @@ if(isFroxlorVersion('0.9.7-svn2')) showUpdateStep("Updating database tables"); $db->query("ALTER TABLE `redirect_codes` ADD `desc` varchar(200) NOT NULL AFTER `code`;"); lastStepStatus(0); - + showUpdateStep("Updating field-values"); $db->query("UPDATE `redirect_codes` SET `desc` = 'rc_default' WHERE `code` = '---';"); $db->query("UPDATE `redirect_codes` SET `desc` = 'rc_movedperm' WHERE `code` = '301';"); @@ -798,10 +798,10 @@ if(isFroxlorVersion('0.9.9-svn1')) if(isFroxlorVersion('0.9.9')) { showUpdateStep("Updating from 0.9.9 to 0.9.10-svn1", false); - + showUpdateStep("Checking whether you are missing any settings", false); $nonefound = true; - + $update_httpuser = isset($_POST['update_httpuser']) ? $_POST['update_httpuser'] : false; $update_httpgroup = isset($_POST['update_httpgroup']) ? $_POST['update_httpgroup'] : false; @@ -829,7 +829,7 @@ if(isFroxlorVersion('0.9.9')) $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'debug_cron', '0');"); lastStepStatus(0); } - + if($nonefound) { showUpdateStep("No missing settings found"); lastStepStatus(0); @@ -841,7 +841,7 @@ if(isFroxlorVersion('0.9.9')) if(isFroxlorVersion('0.9.10-svn1')) { showUpdateStep("Updating from 0.9.10-svn1 to 0.9.10-svn2", false); - + showUpdateStep("Updating database table definition for panel_databases"); $db->query("ALTER TABLE `" . TABLE_PANEL_DATABASES . "` ADD `apsdb` tinyint(1) NOT NULL default '0' AFTER `dbserver`;"); lastStepStatus(0); @@ -852,7 +852,7 @@ if(isFroxlorVersion('0.9.10-svn1')) openRootDB(); $result = $db_root->query("SHOW DATABASES;"); while($row = $db_root->fetch_array($result)) - { + { if(preg_match('/^web([0-9]+)aps([0-9]+)$/', $row['Database'], $matches)) { $cid = $matches[1]; @@ -945,7 +945,7 @@ if(isFroxlorVersion('0.9.11')) if($update_fcgid_httpgroup == '') { $update_fcgid_httpgroup = 'froxlorlocal'; } - + showUpdateStep("Adding new settings"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'mod_fcgid_ownvhost', '".$db->escape($update_fcgid_ownvhost)."');"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'mod_fcgid_httpuser', '".$db->escape($update_fcgid_httpuser)."');"); @@ -965,7 +965,7 @@ if(isFroxlorVersion('0.9.12-svn1')) if($update_perl_suexecpath == '') { $update_perl_suexecpath = '/var/www/cgi-bin/'; } - + showUpdateStep("Adding new settings for perl/CGI"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('perl', 'suexecworkaround', '".$db->escape($update_perl_suexecworkaround)."');"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('perl', 'suexecpath', '".$db->escape($update_perl_suexecpath)."');"); @@ -988,8 +988,8 @@ if(isFroxlorVersion('0.9.12-svn2')) if(isFroxlorVersion('0.9.12-svn3')) { showUpdateStep("Updating from 0.9.12-svn3 to 0.9.12-svn4", false); - - $update_awstats_awstatspath = isset($_POST['update_awstats_awstatspath']) ? makeCorrectDir($_POST['update_awstats_awstatspath']) : $settings['system']['awstats_path']; + + $update_awstats_awstatspath = isset($_POST['update_awstats_awstatspath']) ? makeCorrectDir($_POST['update_awstats_awstatspath']) : $settings['system']['awstats_path']; showUpdateStep("Adding new settings for awstats"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'awstats_awstatspath', '".$db->escape($update_awstats_awstatspath)."');"); @@ -1000,7 +1000,7 @@ if(isFroxlorVersion('0.9.12-svn3')) if(isFroxlorVersion('0.9.12-svn4')) { - showUpdateStep("Updating from 0.9.12-svn4 to 0.9.12-svn5", false); + showUpdateStep("Updating from 0.9.12-svn4 to 0.9.12-svn5", false); showUpdateStep("Setting ticket-usage-reset cronjob interval to 1 day"); $db->query("UPDATE `cronjobs_run` SET `interval`='1 DAY' WHERE `cronfile`='cron_used_tickets_reset.php';"); @@ -1011,7 +1011,7 @@ if(isFroxlorVersion('0.9.12-svn4')) if(isFroxlorVersion('0.9.12-svn5')) { - showUpdateStep("Updating from 0.9.12-svn5 to 0.9.12-svn6", false); + showUpdateStep("Updating from 0.9.12-svn5 to 0.9.12-svn6", false); showUpdateStep("Adding new field to table 'panel_htpasswds'"); $db->query("ALTER TABLE `".TABLE_PANEL_HTPASSWDS."` ADD `authname` varchar(255) NOT NULL default 'Restricted Area' AFTER `password`;"); @@ -1036,12 +1036,12 @@ if(isFroxlorVersion('0.9.12')) $db->query("ALTER TABLE `".TABLE_PANEL_ADMINS."` ADD `email_autoresponder` int(5) NOT NULL default '0' AFTER `aps_packages_used`;"); $db->query("ALTER TABLE `".TABLE_PANEL_ADMINS."` ADD `email_autoresponder_used` int(5) NOT NULL default '0' AFTER `email_autoresponder`;"); lastStepStatus(0); - + showUpdateStep("Adding new fields to customer-table"); $db->query("ALTER TABLE `".TABLE_PANEL_CUSTOMERS."` ADD `email_autoresponder` int(5) NOT NULL default '0' AFTER `perlenabled`;"); $db->query("ALTER TABLE `".TABLE_PANEL_CUSTOMERS."` ADD `email_autoresponder_used` int(5) NOT NULL default '0' AFTER `email_autoresponder`;"); lastStepStatus(0); - + if((int)$settings['autoresponder']['autoresponder_active'] == 1) { $update_autoresponder_default = isset($_POST['update_autoresponder_default']) ? intval_ressource($_POST['update_autoresponder_default']) : 0; @@ -1077,7 +1077,7 @@ if(isFroxlorVersion('0.9.13')) { showUpdateStep("Updating from 0.9.13 to 0.9.13.1 final", false); - $update_defaultini_ownvhost = isset($_POST['update_defaultini_ownvhost']) ? (int)$_POST['update_defaultini_ownvhost'] : 1; + $update_defaultini_ownvhost = isset($_POST['update_defaultini_ownvhost']) ? (int)$_POST['update_defaultini_ownvhost'] : 1; showUpdateStep("Adding settings for Froxlor-vhost's PHP-configuration"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'mod_fcgid_defaultini_ownvhost', '".(int)$update_defaultini_ownvhost."');"); @@ -1100,7 +1100,7 @@ if(isFroxlorVersion('0.9.14-svn1')) if(isFroxlorVersion('0.9.13.1')) { showUpdateStep("Updating from 0.9.13.1 to 0.9.14-svn2", false); - + if($settings['ticket']['enabled'] == '1') { showUpdateStep("Setting INTERVAL for used-tickets cronjob"); @@ -1114,7 +1114,7 @@ if(isFroxlorVersion('0.9.14-svn2')) { showUpdateStep("Updating from 0.9.14-svn2 to 0.9.14-svn3", false); - $update_awstats_icons = isset($_POST['update_awstats_icons']) ? makeCorrectDir($_POST['update_awstats_icons']) : $settings['system']['awstats_icons']; + $update_awstats_icons = isset($_POST['update_awstats_icons']) ? makeCorrectDir($_POST['update_awstats_icons']) : $settings['system']['awstats_icons']; showUpdateStep("Adding AWStats icons path to the settings"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'awstats_icons', '".$db->escape($update_awstats_icons)."');"); @@ -1127,7 +1127,7 @@ if(isFroxlorVersion('0.9.14-svn3')) { showUpdateStep("Updating from 0.9.14-svn3 to 0.9.14-svn4", false); - $update_ssl_cert_chainfile = isset($_POST['update_ssl_cert_chainfile']) ? $_POST['update_ssl_cert_chainfile'] : ''; + $update_ssl_cert_chainfile = isset($_POST['update_ssl_cert_chainfile']) ? $_POST['update_ssl_cert_chainfile'] : ''; if($update_ssl_cert_chainfile != '') { @@ -1253,7 +1253,7 @@ if(isFroxlorVersion('0.9.14-svn10')) if(isFroxlorVersion('0.9.14')) { showUpdateStep("Updating from 0.9.14 to 0.9.15-svn1", false); - + showUpdateStep("Adding new settings for Nginx support"); $db->query("INSERT INTO `".TABLE_PANEL_SETTINGS."` (`settinggroup`, `varname`, `value`) VALUES ('system', 'nginx_php_backend', '127.0.0.1:8888')"); $db->query("INSERT INTO `".TABLE_PANEL_SETTINGS."` (`settinggroup`, `varname`, `value`) VALUES ('system', 'perl_server', 'unix:/var/run/nginx/cgiwrap-dispatch.sock')"); @@ -1284,7 +1284,7 @@ if(isFroxlorVersion('0.9.15')) $update_phpfpm_pm = isset($_POST['update_phpfpm_pm']) ? $_POST['update_phpfpm_pm'] : 'static'; $update_phpfpm_max_children = isset($_POST['update_phpfpm_max_children']) ? (int)$_POST['update_phpfpm_max_children'] : '1'; $update_phpfpm_max_requests = isset($_POST['update_phpfpm_max_requests']) ? (int)$_POST['update_phpfpm_max_requests'] : '0'; - + if($update_phpfpm_pm == 'dynamic') { $update_phpfpm_start_servers = isset($_POST['update_phpfpm_start_servers']) ? (int)$_POST['update_phpfpm_start_servers'] : '20'; @@ -1304,7 +1304,7 @@ if(isFroxlorVersion('0.9.15')) if($update_phpfpm_reload == '') { $update_phpfpm_reload = '/etc/init.d/php-fpm restart'; } - + showUpdateStep("Adding new settings for PHP-FPM #1"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('phpfpm', 'enabled', '".(int)$update_phpfpm_enabled."');"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('phpfpm', 'configdir', '".$db->escape($update_phpfpm_configdir)."');"); @@ -1348,8 +1348,44 @@ if(isFroxlorVersion('0.9.16-svn1')) if(isFroxlorVersion('0.9.16-svn2')) { - showUpdateStep("Updating from 0.9.16-svn2 to 0.9.16 final"); - lastStepStatus(0); + showUpdateStep("Updating from 0.9.16-svn2 to 0.9.16 final"); + lastStepStatus(0); - updateToVersion('0.9.16'); + updateToVersion('0.9.16'); +} + +if(isFroxlorVersion('0.9.16')) +{ + showUpdateStep("Updating from 0.9.16 to 0.9.17-svn1", false); + + $update_system_report_enable = isset($_POST['update_system_report_enable']) ? (int)$_POST['update_system_report_enable'] : '1'; + $update_system_report_webmax = isset($_POST['update_system_report_webmax']) ? (int)$_POST['update_system_report_webmax'] : '90'; + $update_system_report_trafficmax = isset($_POST['update_system_report_trafficmax']) ? (int)$_POST['update_system_report_trafficmax'] : '90'; + + showUpdateStep("Adding new settings for web- and traffic-reporting"); + $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'report_enable', '".(int)$update_system_report_enable."');"); + $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'report_webmax', '".(int)$update_system_report_webmax."');"); + $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'report_trafficmax', '".(int)$update_system_report_trafficmax."');"); + lastStepStatus(0); + + showUpdateStep("Adding new cron-module for web- and traffic-reporting"); + $clastrun = mktime(6, 0, 0, date('m'), date('d') - 1, date('Y')); + $db->query("INSERT INTO `" . TABLE_PANEL_CRONRUNS . "` SET `module`='froxlor/reports', `cronfile`='cron_usage_report.php', `lastrun`='".(int)$clastrun."', `interval`='1 DAY', `isactive`='".(int)$update_system_report_enable."', `desc_lng_key`='cron_usage_report';"); + lastStepStatus(0); + + showUpdateStep("Updating various database-fields"); + $db->query("DELETE FROM `" . TABLE_PANEL_SETTINGS . "` WHERE `settinggroup`='system' AND `varname`='last_traffic_report_run';"); + $check = $db->query_first("SELECT `varname` FROM `" . TABLE_PANEL_TEMPLATES . "` WHERE `varname`='trafficninetypercent_subject';"); + if(isset($check['varname']) && $check['varname'] == 'trafficninetypercent_subject') + { + $db->query("UPDATE `" . TABLE_PANEL_TEMPLATES . "` SET `varname` = 'trafficmaxpercent_subject' WHERE `varname`='trafficninetypercent_subject';"); + } + $check = $db->query_first("SELECT `varname` FROM `" . TABLE_PANEL_TEMPLATES . "` WHERE `varname`='trafficninetypercent_mailbody';"); + if(isset($check['varname']) && $check['varname'] == 'trafficninetypercent_mailbody') + { + $db->query("UPDATE `" . TABLE_PANEL_TEMPLATES . "` SET `varname` = 'trafficmaxpercent_mailbody' WHERE `varname`='trafficninetypercent_mailbody';"); + } + lastStepStatus(0); + + updateToVersion('0.9.17-svn1'); } diff --git a/install/updates/preconfig/0.9/preconfig_0.9.inc.php b/install/updates/preconfig/0.9/preconfig_0.9.inc.php index 37ff8de5..a29cd1c2 100644 --- a/install/updates/preconfig/0.9/preconfig_0.9.inc.php +++ b/install/updates/preconfig/0.9/preconfig_0.9.inc.php @@ -401,4 +401,18 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version) eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";"); } } + + if(versionInUpdate($current_version, '0.9.17-svn1')) + { + $has_preconfig = true; + $description = 'Select if you want to enable the web- and traffic-reports'; + $question = 'Enable?: '; + $question.= makeyesno('update_system_report_enable', '1', '0', '1').'

'; + $question.= 'If \'yes\', please specify a percentage value for web- and traffic when reports are to be sent:

'; + $question.= 'Webusage warning level: '; + $question.= '

'; + $question.= 'Traffic warning level: '; + $question.= '
'; + eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";"); + } } diff --git a/lib/tables.inc.php b/lib/tables.inc.php index 02e5ea2b..e3bb28ec 100644 --- a/lib/tables.inc.php +++ b/lib/tables.inc.php @@ -71,7 +71,7 @@ define('PACKAGE_ENABLED', 2); // VERSION INFO -$version = '0.9.16'; +$version = '0.9.17-svn1'; $dbversion = '2'; $branding = ''; diff --git a/lng/english.lng.php b/lng/english.lng.php index 4bf17c0b..16310836 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -502,11 +502,8 @@ $lng['panel']['pathDescriptionEx'] = '

If you want a redirect to anot // ADDED IN 1.2.16-svn6 -$lng['mails']['trafficninetypercent']['mailbody'] = 'Dear {NAME},\n\nyou used {TRAFFICUSED} MB of your available {TRAFFIC} MB of traffic.\nThis is more than 90%.\n\nYours sincerely, the Froxlor-Team'; -$lng['mails']['trafficninetypercent']['subject'] = 'Reaching your traffic limit'; -$lng['admin']['templates']['trafficninetypercent'] = 'Notification mail for customers when ninety percent of traffic is exhausted'; -$lng['admin']['templates']['TRAFFIC'] = 'Replaced with the traffic, which was assigned to the customer.'; -$lng['admin']['templates']['TRAFFICUSED'] = 'Replaced with the traffic, which was exhausted by the customer.'; +$lng['admin']['templates']['TRAFFIC'] = 'Replaced with the traffic in mB, which was assigned to the customer.'; +$lng['admin']['templates']['TRAFFICUSED'] = 'Replaced with the traffic in MB, which was exhausted by the customer.'; // ADDED IN 1.2.16-svn7 @@ -1547,3 +1544,20 @@ $lng['phpfpm']['vhost_httpuser'] = 'Local user to use for PHP-FPM (Froxlor vHost $lng['phpfpm']['vhost_httpgroup'] = 'Local group to use for PHP-FPM (Froxlor vHost)'; $lng['phpfpm']['ownvhost']['title'] = 'Enable PHP-FPM for the Froxlor vHost'; $lng['phpfpm']['ownvhost']['description'] = 'If enabled, Froxlor will also be running under a local user'; + +// ADDED IN FROXLOR 0.9.17 +$lng['crondesc']['cron_usage_report'] = 'sends reports about web- and traffic-usage'; +$lng['serversettings']['report']['report'] = 'Enable sending of reports about web- and traffic-usage'; +$lng['serversettings']['report']['webmax'] = 'Warning-level in percent for webspace'; +$lng['serversettings']['report']['trafficmax'] = 'Warning-level in percent for traffic'; +$lng['mails']['trafficmaxpercent']['mailbody'] = 'Dear {NAME},\n\nyou used {TRAFFICUSED} MB of your available {TRAFFIC} MB of traffic.\nThis is more than {MAX_PERCENT}%.\n\nYours sincerely, the Froxlor-Team'; +$lng['mails']['trafficmaxpercent']['subject'] = 'Reaching your traffic limit'; +$lng['admin']['templates']['trafficmaxpercent'] = 'Notification mail for customers when given maximum of percent of traffic is exhausted'; +$lng['admin']['templates']['MAX_PERCENT'] = 'Replaced with the diskusage/traffic limit for sending reports in percent.'; +$lng['admin']['templates']['USAGE_PERCENT'] = 'Replaced with the diskusage/traffic, which was exhausted by the customer in percent.'; +$lng['admin']['templates']['diskmaxpercent'] = 'Notification mail for customers when given maximum of percent of diskspace is exhausted'; +$lng['admin']['templates']['DISKAVAILABLE'] = 'Replaced with the diskusage in MB, which was assigned to the customer.'; +$lng['admin']['templates']['DISKUSED'] = 'Replaced with the diskusage in MB, which was exhausted by the customer.'; +$lng['serversettings']['dropdown'] = 'Dropdown'; +$lng['serversettings']['manual'] = 'Manual'; + diff --git a/lng/german.lng.php b/lng/german.lng.php index d35845cc..f36341a5 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -377,7 +377,7 @@ $lng['serversettings']['maxloginattempts']['description'] = 'Maximale Anzahl an $lng['serversettings']['deactivatetime']['title'] = 'Länge der Deaktivierung'; $lng['serversettings']['deactivatetime']['description'] = 'Zeitraum (in sek.) für den der Account deaktiviert ist.'; $lng['serversettings']['pathedit']['title'] = 'Pfad-Eingabemethode'; -$lng['serversettings']['pathedit']['description'] = 'Soll ein Pfad via Dropdown-Menü ausgewählt oder manuell eingegeben werden können.'; +$lng['serversettings']['pathedit']['description'] = 'Soll ein Pfad via Auswahlliste ausgewählt oder manuell eingegeben werden können.'; $lng['serversettings']['nameservers']['title'] = 'Nameserver'; $lng['serversettings']['nameservers']['description'] = 'Eine durch Komma getrennte Liste mit den Hostnamen aller Nameserver. Der erste ist der primäre.'; $lng['serversettings']['mxservers']['title'] = 'MX Server'; @@ -501,11 +501,8 @@ $lng['panel']['pathDescriptionEx'] = '

Sollte eine Weiterleitung auf // ADDED IN 1.2.16-svn6 -$lng['mails']['trafficninetypercent']['mailbody'] = 'Sehr geehrte(r) {NAME},\n\nSie haben bereits {TRAFFICUSED} MB von Ihren insgesamt {TRAFFIC} MB Traffic verbraucht.\nDies sind mehr als 90%.\n\nVielen Dank,\ndas Froxlor-Team'; -$lng['mails']['trafficninetypercent']['subject'] = 'Sie erreichen bald Ihr Traffic-Limit'; -$lng['admin']['templates']['trafficninetypercent'] = 'Hinweismail für Kunden, wenn sie 90% des Traffics verbraucht haben'; -$lng['admin']['templates']['TRAFFIC'] = 'Wird mit Traffic, der dem Kunden zugewiesen wurde, ersetzt.'; -$lng['admin']['templates']['TRAFFICUSED'] = 'Wird mit Traffic, der vom Kunden bereits verbraucht wurde, ersetzt.'; +$lng['admin']['templates']['TRAFFIC'] = 'Wird mit Traffic, der dem Kunden zugewiesen wurde, ersetzt (in MB).'; +$lng['admin']['templates']['TRAFFICUSED'] = 'Wird mit Traffic, der vom Kunden bereits verbraucht wurde, ersetzt (in MB).'; // ADDED IN 1.2.16-svn7 @@ -1529,3 +1526,19 @@ $lng['phpfpm']['vhost_httpuser'] = 'Lokaler Benutzer für PHP-FPM (Froxlor V $lng['phpfpm']['vhost_httpgroup'] = 'Lokale Gruppe für PHP-FPM (Froxlor Vhost)'; $lng['phpfpm']['ownvhost']['title'] = 'Verwende PHP-FPM im Froxlor Vhost'; $lng['phpfpm']['ownvhost']['description'] = 'Wenn verwendet, wird Froxlor selbst unter einem lokalem Benutzer ausgeführt'; + +// ADDED IN FROXLOR 0.9.17 +$lng['crondesc']['cron_usage_report'] = 'Sende Reports über Webspace- und Trafficverbrauch'; +$lng['serversettings']['report']['report'] = 'Aktiviere das Senden von Reports über Webspace- und Trafficverbrauch'; +$lng['serversettings']['report']['webmax'] = 'Warn-Level in Prozent für Webspace'; +$lng['serversettings']['report']['trafficmax'] = 'Warn-Level in Prozent für Traffic'; +$lng['mails']['trafficmaxpercent']['mailbody'] = 'Sehr geehrte(r) {NAME},\n\nSie haben bereits {TRAFFICUSED} MB von Ihren insgesamt {TRAFFIC} MB Traffic verbraucht.\nDies sind mehr als {MAX_PERCENT}%.\n\nVielen Dank,\ndas Froxlor-Team'; +$lng['mails']['trafficmaxpercent']['subject'] = 'Sie erreichen bald Ihr Traffic-Limit'; +$lng['admin']['templates']['trafficmaxpercent'] = 'Hinweismail für Kunden, wenn sie die angegebenen Prozent des Traffics verbraucht haben'; +$lng['admin']['templates']['MAX_PERCENT'] = 'Wird mit dem Webspace/Traffic-Limit, welches dem Kunden zugewiesen wurde, ersetzt.'; +$lng['admin']['templates']['USAGE_PERCENT'] = 'Wird mit dem Webspace/Traffic, welcher vom Kunden bereits verbraucht wurde, ersetzt.'; +$lng['admin']['templates']['diskmaxpercent'] = 'Hinweismail für Kunden, wenn sie die angegebenen Prozent des Webspaces verbraucht haben'; +$lng['admin']['templates']['DISKAVAILABLE'] = 'Wird mit dem Webspace, der dem Kunden zugewiesen wurde, ersetzt (in MB).'; +$lng['admin']['templates']['DISKUSED'] = 'Wird mit dem Webspace, welcher vom Kunden bereits verbraucht wurde, ersetzt (in MB).'; +$lng['serversettings']['dropdown'] = 'Auswahlliste'; +$lng['serversettings']['manual'] = 'Manuelle Eingabe'; diff --git a/scripts/jobs/cron_tasks.php b/scripts/jobs/cron_tasks.php index 63a49c1e..9afbd9d4 100644 --- a/scripts/jobs/cron_tasks.php +++ b/scripts/jobs/cron_tasks.php @@ -78,8 +78,9 @@ while($row = $db->fetch_array($result_tasks)) $awstatsclean['headerRead'] = fgets($awstatsclean['fh'], strlen($awstatsclean['header'])+1); fclose($awstatsclean['fh']); if($awstatsclean['headerRead'] == $awstatsclean['header'] || $awstatsclean['headerRead'] == $awstatsclean['headerold']) { - $cronlog->logAction(CRON_ACTION, LOG_INFO, "Removing awstats configuration ".$awstatsclean['fullentry']." for re-creation"); - @unlink($awstatsclean['fullentry']); + $awstats_conf_file = makeCorrectFile($awstatsclean['fullentry']); + $cronlog->logAction(CRON_ACTION, LOG_INFO, "Removing awstats configuration ".$awstats_conf_file." for re-creation"); + @unlink($awstats_conf_file); } } else diff --git a/scripts/jobs/cron_traffic_report.php b/scripts/jobs/cron_usage_report.php similarity index 83% rename from scripts/jobs/cron_traffic_report.php rename to scripts/jobs/cron_usage_report.php index dfa4d56f..acd2589b 100644 --- a/scripts/jobs/cron_traffic_report.php +++ b/scripts/jobs/cron_usage_report.php @@ -17,7 +17,7 @@ * @version $Id$ */ -fwrite($debugHandler, 'Trafficreport run started...' . "\n"); +fwrite($debugHandler, 'Web- and Traffic-usage reporting started...' . "\n"); $yesterday = time() - (60 * 60 * 24); /** @@ -26,7 +26,7 @@ $yesterday = time() - (60 * 60 * 24); $mail = new PHPMailer(true); $mail->SetFrom($settings['panel']['adminmail'], 'Froxlor Administrator'); -// Warn the customers at 90% traffic-usage +// Warn the customers at xx% traffic-usage $result = $db->query("SELECT `c`.`customerid`, `c`.`adminid`, `c`.`name`, `c`.`firstname`, `c`.`traffic`, `c`.`email`, `c`.`def_language`, `a`.`name` AS `adminname`, `a`.`email` AS `adminmail`, @@ -43,12 +43,14 @@ while($row = $db->fetch_array($result)) if(isset($row['traffic']) && $row['traffic'] > 0 && $row['traffic_used'] != NULL - && (($row['traffic_used'] * 100) / $row['traffic']) >= 90) + && (($row['traffic_used'] * 100) / $row['traffic']) >= (int)$settings['system']['report_trafficmax']) { $replace_arr = array( 'NAME' => $row['name'], 'TRAFFIC' => ($row['traffic'] / 1024), /* traffic is stored in KB, template uses MB */ - 'TRAFFICUSED' => $row['traffic_used'] + 'TRAFFICUSED' => ($row['traffic_used'] / 1024), /* traffic is stored in KB, template uses MB */ + 'USAGE_PERCENT' => ($row['traffic_used'] * 100) / $row['traffic'], + 'MAX_PERCENT' => $settings['system']['report_trafficmax'] ); $lngfile = $db->query_first("SELECT `file` FROM `" . TABLE_PANEL_LANGUAGE . "` WHERE `language` ='" . $row['def_language'] . "'"); @@ -72,14 +74,14 @@ while($row = $db->fetch_array($result)) WHERE `adminid`='" . (int)$row['adminid'] . "' AND `language`='" . $db->escape($row['def_language']) . "' AND `templategroup`='mails' - AND `varname`='trafficninetypercent_subject'"); - $mail_subject = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficninetypercent']['subject']), $replace_arr)); + AND `varname`='trafficmaxpercent_subject'"); + $mail_subject = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficmaxpercent']['subject']), $replace_arr)); $result2 = $db->query_first("SELECT `value` FROM `" . TABLE_PANEL_TEMPLATES . "` WHERE `adminid`='" . (int)$row['adminid'] . "' AND `language`='" . $db->escape($row['def_language']) . "' AND `templategroup`='mails' - AND `varname`='trafficninetypercent_mailbody'"); - $mail_body = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficninetypercent']['mailbody']), $replace_arr)); + AND `varname`='trafficmaxpercent_mailbody'"); + $mail_body = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficmaxpercent']['mailbody']), $replace_arr)); $_mailerror = false; try { @@ -99,8 +101,8 @@ while($row = $db->fetch_array($result)) if($_mailerror) { - $cronlog->logAction(CRON_ACTION, LOG_ERR, "Error sending mail: " . $_mailerror); - standard_error('errorsendingmail', $row["email"]); + $cronlog->logAction(CRON_ACTION, LOG_ERR, 'Error sending mail: ' . $_mailerror); + standard_error('errorsendingmail', $row['email']); } $mail->ClearAddresses(); @@ -109,7 +111,7 @@ while($row = $db->fetch_array($result)) } } -// Warn the admins at 90% traffic-usage +// Warn the admins at xx% traffic-usage $result = $db->query("SELECT `a`.*, (SELECT SUM(`t`.`http` + `t`.`ftp_up` + `t`.`ftp_down` + `t`.`mail`) @@ -122,12 +124,14 @@ while($row = $db->fetch_array($result)) { if(isset($row['traffic']) && $row['traffic'] > 0 - && (($row['traffic_used_total'] * 100) / $row['traffic']) >= 90) + && (($row['traffic_used_total'] * 100) / $row['traffic']) >= (int)$settings['system']['report_trafficmax']) { $replace_arr = array( 'NAME' => $row['name'], 'TRAFFIC' => ($row['traffic'] / 1024), /* traffic is stored in KB, template uses MB */ - 'TRAFFICUSED' => $row['traffic_used_total'] + 'TRAFFICUSED' => ($row['traffic_used_total'] / 1024), /* traffic is stored in KB, template uses MB */ + 'USAGE_PERCENT' => ($row['traffic_used_total'] * 100) / $row['traffic'], + 'MAX_PERCENT' => $settings['system']['report_trafficmax'] ); $lngfile = $db->query_first("SELECT `file` FROM `" . TABLE_PANEL_LANGUAGE . "` WHERE `language` ='" . $row['def_language'] . "'"); @@ -151,14 +155,14 @@ while($row = $db->fetch_array($result)) WHERE `adminid`='" . (int)$row['adminid'] . "' AND `language`='" . $db->escape($row['def_language']) . "' AND `templategroup`='mails' - AND `varname`='trafficninetypercent_subject'"); - $mail_subject = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficninetypercent']['subject']), $replace_arr)); + AND `varname`='trafficmaxpercent_subject'"); + $mail_subject = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficmaxpercent']['subject']), $replace_arr)); $result2 = $db->query_first("SELECT `value` FROM `" . TABLE_PANEL_TEMPLATES . "` WHERE `adminid`='" . (int)$row['adminid'] . "' AND `language`='" . $db->escape($row['def_language']) . "' AND `templategroup`='mails' - AND `varname`='trafficninetypercent_mailbody'"); - $mail_body = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficninetypercent']['mailbody']), $replace_arr)); + AND `varname`='trafficmaxpercent_mailbody'"); + $mail_body = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficmaxpercent']['mailbody']), $replace_arr)); $_mailerror = false; try { @@ -226,8 +230,8 @@ while($row = $db->fetch_array($result)) } if ($_mailerror) { - $cronlog->logAction(CRON_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg); - standard_error('errorsendingmail', $row["email"]); + $cronlog->logAction(CRON_ACTION, LOG_ERR, 'Error sending mail: ' . $mailerr_msg); + standard_error('errorsendingmail', $row['email']); } $mail->ClearAddresses(); @@ -241,9 +245,3 @@ if(date('d') == '01') $db->query('UPDATE `' . TABLE_PANEL_CUSTOMERS . '` SET `reportsent` = \'0\';'); $db->query('UPDATE `' . TABLE_PANEL_ADMINS . '` SET `reportsent` = \'0\';'); } - -$db->query('UPDATE `' . TABLE_PANEL_SETTINGS . '` SET `value` = UNIX_TIMESTAMP() - WHERE `settinggroup` = \'system\' AND `varname` = \'last_traffic_report_run\' '); - - -?> diff --git a/templates/admin/templates/templates_add_2.tpl b/templates/admin/templates/templates_add_2.tpl index e2f527c4..3c647457 100644 --- a/templates/admin/templates/templates_add_2.tpl +++ b/templates/admin/templates/templates_add_2.tpl @@ -96,7 +96,7 @@ $header {$lng['admin']['templates']['PASSWORD']} - {$lng['admin']['templates']['trafficninetypercent']} + {$lng['admin']['templates']['trafficmaxpercent']} {TRAFFIC}: @@ -106,6 +106,33 @@ $header {TRAFFICUSED}: {$lng['admin']['templates']['TRAFFICUSED']} + + {MAX_PERCENT}: + {$lng['admin']['templates']['MAX_PERCENT']} + + + {USAGE_PERCENT}: + {$lng['admin']['templates']['USAGE_PERCENT']} + + + {$lng['admin']['templates']['diskmaxpercent']} + + + {DISKAVAILABLE}: + {$lng['admin']['templates']['DISKAVAILABLE']} + + + {DISKUSED}: + {$lng['admin']['templates']['DISKUSED']} + + + {MAX_PERCENT}: + {$lng['admin']['templates']['MAX_PERCENT']} + + + {USAGE_PERCENT}: + {$lng['admin']['templates']['USAGE_PERCENT']} + {$lng['admin']['templates']['ticket']}