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 badf3f8c..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'], @@ -78,6 +79,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 c6b2462f..98a0cf48 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'), @@ -703,7 +704,7 @@ opcache.interned_strings_buffer'), ('panel', 'customer_hide_options', ''), ('panel', 'is_configured', '0'), ('panel', 'version', '0.10.11'), - ('panel', 'db_version', '201912312'); + ('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 9508e6a9..5f666225 100644 --- a/install/updates/froxlor/0.10/update_0.10.inc.php +++ b/install/updates/froxlor/0.10/update_0.10.inc.php @@ -554,3 +554,10 @@ if (\Froxlor\Froxlor::isDatabaseVersion('201912311')) { } \Froxlor\Froxlor::updateToDbVersion('201912312'); } + +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 07ccfb0d..4514a8b7 100644 --- a/lib/Froxlor/Froxlor.php +++ b/lib/Froxlor/Froxlor.php @@ -10,7 +10,7 @@ final class Froxlor const VERSION = '0.10.11'; // Database version (YYYYMMDDC where C is a daily counter) - const DBVERSION = '201912312'; + 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..85b63e19 100644 --- a/lib/Froxlor/Http/Statistics.php +++ b/lib/Froxlor/Http/Statistics.php @@ -37,20 +37,31 @@ 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. + // 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')) . '"'; + } + // 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 db3a631e..1101ce30 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -2092,3 +2092,6 @@ $lng['admin']['domain_sessionticketsenabled']['description'] = 'Default $lng['serversettings']['phpfpm_settings']['restart_note'] = 'Attention: The config won\'t be checked for any errors. If it contains errors, PHP-FPM might not start again!'; $lng['serversettings']['phpfpm_settings']['custom_config']['title'] = 'Custom configuration'; $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.'; diff --git a/lng/german.lng.php b/lng/german.lng.php index 0ec48b7a..ada5e836 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1739,3 +1739,6 @@ $lng['admin']['domain_sessionticketsenabled']['description'] = 'Standardwert ' . $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.'; 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}"