From e143ba45771685d7e6e4cc476ca47cc3d36757ac Mon Sep 17 00:00:00 2001 From: Patrik Kernstock Date: Tue, 31 Dec 2019 22:29:29 +0100 Subject: [PATCH 1/6] Allow configuring awstats LogFormat Signed-off-by: Patrik Kernstock --- actions/admin/settings/140.statistics.php | 8 ++++++++ install/froxlor.sql | 2 +- install/updates/froxlor/0.10/update_0.10.inc.php | 7 +++++++ lib/Froxlor/Froxlor.php | 2 +- lib/Froxlor/Http/Statistics.php | 14 ++++++++++++-- lng/english.lng.php | 3 +++ lng/german.lng.php | 3 +++ templates/misc/awstats/awstats.froxlor.model.conf | 2 +- 8 files changed, 36 insertions(+), 5 deletions(-) diff --git a/actions/admin/settings/140.statistics.php b/actions/admin/settings/140.statistics.php index badf3f8c..90a6e967 100644 --- a/actions/admin/settings/140.statistics.php +++ b/actions/admin/settings/140.statistics.php @@ -78,6 +78,14 @@ return array( 'string_type' => 'dir', 'default' => '/usr/share/awstats/icon/', 'save_method' => 'storeSettingField' + ), + 'system_awstats_logformat' => array( + 'label' => $lng['serversettings']['awstats']['logformat'], + 'settinggroup' => 'system', + 'varname' => 'awstats_logformat', + 'type' => 'string', + 'default' => '1', + 'save_method' => 'storeSettingField' ) ) ) diff --git a/install/froxlor.sql b/install/froxlor.sql index 6dfb60ff..f46564b3 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -703,7 +703,7 @@ opcache.interned_strings_buffer'), ('panel', 'customer_hide_options', ''), ('panel', 'is_configured', '0'), ('panel', 'version', '0.10.10'), - ('panel', 'db_version', '201912310'); + ('panel', 'db_version', '201912313'); DROP TABLE IF EXISTS `panel_tasks`; diff --git a/install/updates/froxlor/0.10/update_0.10.inc.php b/install/updates/froxlor/0.10/update_0.10.inc.php index dc45add6..5a9ecbd7 100644 --- a/install/updates/froxlor/0.10/update_0.10.inc.php +++ b/install/updates/froxlor/0.10/update_0.10.inc.php @@ -530,3 +530,10 @@ if (\Froxlor\Froxlor::isDatabaseVersion('201912100')) { lastStepStatus(0); \Froxlor\Froxlor::updateToDbVersion('201912310'); } + +if (\Froxlor\Froxlor::isDatabaseVersion('201912312')) { + showUpdateStep("Adding option change awstats LogFormat"); + Settings::AddNew("system.awstats_logformat", '1'); + lastStepStatus(0); + \Froxlor\Froxlor::updateToDbVersion('201912313'); +} diff --git a/lib/Froxlor/Froxlor.php b/lib/Froxlor/Froxlor.php index 4c398bec..d52ba464 100644 --- a/lib/Froxlor/Froxlor.php +++ b/lib/Froxlor/Froxlor.php @@ -10,7 +10,7 @@ final class Froxlor const VERSION = '0.10.10'; // Database version (YYYYMMDDC where C is a daily counter) - const DBVERSION = '201912310'; + const DBVERSION = '201912313'; // Distribution branding-tag (used for Debian etc.) const BRANDING = ''; diff --git a/lib/Froxlor/Http/Statistics.php b/lib/Froxlor/Http/Statistics.php index 10103053..531bcba8 100644 --- a/lib/Froxlor/Http/Statistics.php +++ b/lib/Froxlor/Http/Statistics.php @@ -37,20 +37,30 @@ class Statistics \Froxlor\FileDir::safe_exec('mkdir -p ' . escapeshellarg(Settings::Get('system.awstats_conf'))); } + $logformat = Settings::Get('system.awstats_logformat'); + if (! is_numeric($logformat)) { + // if LogFormat is NOT numeric (e.g. 1,2,3,4), we quote it. + // 1-4 are pre-defined formats by awstats which must not be quoted to work properly. So if + // it is not a integer, it is something customized and we simply quote it. + $logformat = '"' . str_replace('"', '\"', Settings::Get('system.awstats_logformat')) . '"'; + } + // These are the variables we will replace $regex = array( '/\{LOG_FILE\}/', '/\{SITE_DOMAIN\}/', '/\{HOST_ALIASES\}/', '/\{CUSTOMER_DOCROOT\}/', - '/\{AWSTATS_CONF\}/' + '/\{AWSTATS_CONF\}/', + '/\{AWSTATS_LOGFORMAT\}/' ); $replace = array( \Froxlor\FileDir::makeCorrectFile($logFile), $siteDomain, $hostAliases, $awstats_dir, - \Froxlor\FileDir::makeCorrectDir(Settings::Get('system.awstats_conf')) + \Froxlor\FileDir::makeCorrectDir(Settings::Get('system.awstats_conf')), + $logformat ); // File names diff --git a/lng/english.lng.php b/lng/english.lng.php index ec2fcea1..860ac58f 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -2087,3 +2087,6 @@ $lng['admin']['domain_honorcipherorder'] = 'Honor the (server) cipher order, def $lng['admin']['domain_sessiontickets'] = 'Enable TLS sessiontickets (RFC 5077), default yes'; $lng['admin']['domain_sessionticketsenabled']['title'] = 'Enable usage of TLS sessiontickets globally'; $lng['admin']['domain_sessionticketsenabled']['description'] = 'Default yes
Requires apache-2.4.11+ or nginx-1.5.9+'; + +$lng['serversettings']['awstats']['logformat']['title'] = 'LogFormat setting'; +$lng['serversettings']['awstats']['logformat']['description'] = 'If you use customized logformat for your webserver, you need change the awstats LogFormat too.
Default is 1. For more information check documentation here.'; diff --git a/lng/german.lng.php b/lng/german.lng.php index 41379319..6ba9f874 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1734,3 +1734,6 @@ $lng['admin']['domain_honorcipherorder'] = 'Bevorzuge die serverseitige Cipher R $lng['admin']['domain_sessiontickets'] = 'Aktiviere TLS Sessiontickets (RFC 5077), Standardwert ja'; $lng['admin']['domain_sessionticketsenabled']['title'] = 'Aktiviere Nutzung von TLS Sessiontickets systemweit'; $lng['admin']['domain_sessionticketsenabled']['description'] = 'Standardwert yes
Erfordert apache-2.4.11+ oder nginx-1.5.9+'; + +$lng['serversettings']['awstats']['logformat']['title'] = 'LogFormat Einstellung'; +$lng['serversettings']['awstats']['logformat']['description'] = 'Wenn ein benutzerdefiniertes LogFormat beim Webserver verwendet wird, muss LogFormat von awstats ebenso angepasst werden.
Standard ist 1. Für weitere Informationen siehe Dokumentation unter hier.'; diff --git a/templates/misc/awstats/awstats.froxlor.model.conf b/templates/misc/awstats/awstats.froxlor.model.conf index f587ab6e..289014ef 100644 --- a/templates/misc/awstats/awstats.froxlor.model.conf +++ b/templates/misc/awstats/awstats.froxlor.model.conf @@ -3,7 +3,7 @@ Include "{AWSTATS_CONF}awstats.model.conf" LogFile="{LOG_FILE}" LogType=W -LogFormat = 1 +LogFormat = {AWSTATS_LOGFORMAT} LogSeparator=" " SiteDomain="{SITE_DOMAIN}" HostAliases="{HOST_ALIASES}" From a4d4e16efc9627bc3541a8389aa0e3fd59ff2b8d Mon Sep 17 00:00:00 2001 From: Patrik Kernstock Date: Tue, 31 Dec 2019 22:46:03 +0100 Subject: [PATCH 2/6] Small comment added to escaping double-quote Signed-off-by: Patrik Kernstock --- lib/Froxlor/Http/Statistics.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/Froxlor/Http/Statistics.php b/lib/Froxlor/Http/Statistics.php index 531bcba8..85b63e19 100644 --- a/lib/Froxlor/Http/Statistics.php +++ b/lib/Froxlor/Http/Statistics.php @@ -42,6 +42,7 @@ class Statistics // if LogFormat is NOT numeric (e.g. 1,2,3,4), we quote it. // 1-4 are pre-defined formats by awstats which must not be quoted to work properly. So if // it is not a integer, it is something customized and we simply quote it. + // Only escaping double-quote should be fine, as we only put the whole string under double-quote. $logformat = '"' . str_replace('"', '\"', Settings::Get('system.awstats_logformat')) . '"'; } From ca39501530ace59dc8784a69addbb095d95e045f Mon Sep 17 00:00:00 2001 From: Patrik Kernstock Date: Thu, 2 Jan 2020 12:39:25 +0100 Subject: [PATCH 3/6] Fixed awstats_logformat field for new installs Signed-off-by: Patrik Kernstock --- install/froxlor.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/install/froxlor.sql b/install/froxlor.sql index f46564b3..29b11ba2 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -572,6 +572,7 @@ opcache.interned_strings_buffer'), ('system', 'stdsubdomain', ''), ('system', 'awstats_path', '/usr/bin/'), ('system', 'awstats_conf', '/etc/awstats/'), + ('system', 'awstats_logformat', '1'), ('system', 'defaultttl', '604800'), ('system', 'mod_fcgid_defaultini', '1'), ('system', 'ftpserver', 'proftpd'), From b355711de93a330c284ed7b82f84d7090174b442 Mon Sep 17 00:00:00 2001 From: Patrik Kernstock Date: Wed, 8 Jan 2020 22:02:01 +0000 Subject: [PATCH 4/6] Improvements as suggested by @d00p Signed-off-by: Patrik Kernstock --- actions/admin/settings/130.webserver.php | 3 ++- actions/admin/settings/140.statistics.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/actions/admin/settings/130.webserver.php b/actions/admin/settings/130.webserver.php index e5b550a7..05257264 100644 --- a/actions/admin/settings/130.webserver.php +++ b/actions/admin/settings/130.webserver.php @@ -173,7 +173,8 @@ return array( 'websrv_avail' => array( 'apache2', 'nginx' - ) + ), + 'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 1 ), 'system_logfiles_type' => array( 'label' => $lng['serversettings']['logfiles_type'], diff --git a/actions/admin/settings/140.statistics.php b/actions/admin/settings/140.statistics.php index 90a6e967..7cc59b49 100644 --- a/actions/admin/settings/140.statistics.php +++ b/actions/admin/settings/140.statistics.php @@ -33,7 +33,8 @@ return array( 1 => $lng['admin']['webalizer']['quiet'], 2 => $lng['admin']['webalizer']['veryquiet'] ), - 'save_method' => 'storeSettingField' + 'save_method' => 'storeSettingField', + 'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 1 ), 'system_awstats_enabled' => array( 'label' => $lng['serversettings']['awstats_enabled'], From ea7834c1d173456934b9c313f49698f7b3f4ca6e Mon Sep 17 00:00:00 2001 From: Patrik Kernstock Date: Wed, 8 Jan 2020 22:07:40 +0000 Subject: [PATCH 5/6] Added small notice to lng for awstats LogFormat Signed-off-by: Patrik Kernstock --- lng/english.lng.php | 2 +- lng/german.lng.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lng/english.lng.php b/lng/english.lng.php index d9fe562d..23b3ffd8 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -2094,4 +2094,4 @@ $lng['serversettings']['phpfpm_settings']['custom_config']['title'] = 'Custom co $lng['serversettings']['phpfpm_settings']['custom_config']['description'] = 'Add custom configuration to each PHP-FPM version instance, for example pm.status_path = /status for monitoring. Variables below can be used here. ' . ' ' . $lng['serversettings']['phpfpm_settings']['restart_note'] . ''; $lng['serversettings']['awstats']['logformat']['title'] = 'LogFormat setting'; -$lng['serversettings']['awstats']['logformat']['description'] = 'If you use customized logformat for your webserver, you need change the awstats LogFormat too.
Default is 1. For more information check documentation here.'; +$lng['serversettings']['awstats']['logformat']['description'] = 'If you use customized logformat for your webserver, you need change the awstats LogFormat too.
Default is 1. For more information check documentation here. Might also require changes in the awstats config.'; diff --git a/lng/german.lng.php b/lng/german.lng.php index ab86c23a..4f0387ad 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1741,4 +1741,4 @@ $lng['serversettings']['phpfpm_settings']['custom_config']['title'] = 'Benutzerd $lng['serversettings']['phpfpm_settings']['custom_config']['description'] = 'Füge eine benutzerdefinierte Einstellungen zur PHP-FPM Instanz hinzu, beispielsweise pm.status_path = /status für Monitoring. Unten ersichtliche Variablen können verwendet werden.' . ' ' . $lng['serversettings']['phpfpm_settings']['restart_note'] . ''; $lng['serversettings']['awstats']['logformat']['title'] = 'LogFormat Einstellung'; -$lng['serversettings']['awstats']['logformat']['description'] = 'Wenn ein benutzerdefiniertes LogFormat beim Webserver verwendet wird, muss LogFormat von awstats ebenso angepasst werden.
Standard ist 1. Für weitere Informationen siehe Dokumentation unter hier.'; +$lng['serversettings']['awstats']['logformat']['description'] = 'Wenn ein benutzerdefiniertes LogFormat beim Webserver verwendet wird, muss LogFormat von awstats ebenso angepasst werden.
Standard ist 1. Für weitere Informationen siehe Dokumentation unter hier. Könnte ebenfalls Anpassungen in der awstats Konfiguration benötigen.'; From 0f025a6627350fa941d68fcd7ce4e25111e185d3 Mon Sep 17 00:00:00 2001 From: Patrik Kernstock Date: Thu, 9 Jan 2020 23:21:11 +0000 Subject: [PATCH 6/6] Language file update Signed-off-by: Patrik Kernstock --- lng/english.lng.php | 2 +- lng/german.lng.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lng/english.lng.php b/lng/english.lng.php index 23b3ffd8..d9fe562d 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -2094,4 +2094,4 @@ $lng['serversettings']['phpfpm_settings']['custom_config']['title'] = 'Custom co $lng['serversettings']['phpfpm_settings']['custom_config']['description'] = 'Add custom configuration to each PHP-FPM version instance, for example pm.status_path = /status for monitoring. Variables below can be used here. ' . ' ' . $lng['serversettings']['phpfpm_settings']['restart_note'] . ''; $lng['serversettings']['awstats']['logformat']['title'] = 'LogFormat setting'; -$lng['serversettings']['awstats']['logformat']['description'] = 'If you use customized logformat for your webserver, you need change the awstats LogFormat too.
Default is 1. For more information check documentation here. Might also require changes in the awstats config.'; +$lng['serversettings']['awstats']['logformat']['description'] = 'If you use customized logformat for your webserver, you need change the awstats LogFormat too.
Default is 1. For more information check documentation here.'; diff --git a/lng/german.lng.php b/lng/german.lng.php index 4f0387ad..ab86c23a 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1741,4 +1741,4 @@ $lng['serversettings']['phpfpm_settings']['custom_config']['title'] = 'Benutzerd $lng['serversettings']['phpfpm_settings']['custom_config']['description'] = 'Füge eine benutzerdefinierte Einstellungen zur PHP-FPM Instanz hinzu, beispielsweise pm.status_path = /status für Monitoring. Unten ersichtliche Variablen können verwendet werden.' . ' ' . $lng['serversettings']['phpfpm_settings']['restart_note'] . ''; $lng['serversettings']['awstats']['logformat']['title'] = 'LogFormat Einstellung'; -$lng['serversettings']['awstats']['logformat']['description'] = 'Wenn ein benutzerdefiniertes LogFormat beim Webserver verwendet wird, muss LogFormat von awstats ebenso angepasst werden.
Standard ist 1. Für weitere Informationen siehe Dokumentation unter hier. Könnte ebenfalls Anpassungen in der awstats Konfiguration benötigen.'; +$lng['serversettings']['awstats']['logformat']['description'] = 'Wenn ein benutzerdefiniertes LogFormat beim Webserver verwendet wird, muss LogFormat von awstats ebenso angepasst werden.
Standard ist 1. Für weitere Informationen siehe Dokumentation unter hier.';