From 257ef4c059f6d291b1d5fd4c3e299cb08a94122f Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Mon, 12 Jun 2023 10:39:04 +0200 Subject: [PATCH] allow more complex access-log formats to be displayed correctly on the UI, fixes #1139 Signed-off-by: Michael Kaufmann --- actions/admin/settings/130.webserver.php | 3 ++- lib/Froxlor/UI/Form.php | 2 +- lib/Froxlor/Validate/Form/Data.php | 6 +++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/actions/admin/settings/130.webserver.php b/actions/admin/settings/130.webserver.php index a4fd26d5..e9e62dbb 100644 --- a/actions/admin/settings/130.webserver.php +++ b/actions/admin/settings/130.webserver.php @@ -181,7 +181,8 @@ return [ 'label' => lng('serversettings.logfiles_format'), 'settinggroup' => 'system', 'varname' => 'logfiles_format', - 'type' => 'text', + 'type' => (strpos(Settings::Get('system.logfiles_format'), '"') !== false ? 'textarea' : 'text'), + 'string_regexp' => '/^[^\0\r\n<>]*$/i', 'default' => '', 'string_emptyallowed' => true, 'save_method' => 'storeSettingField', diff --git a/lib/Froxlor/UI/Form.php b/lib/Froxlor/UI/Form.php index 6cf40ab8..acf0cdd8 100644 --- a/lib/Froxlor/UI/Form.php +++ b/lib/Froxlor/UI/Form.php @@ -232,7 +232,7 @@ class Form if (((isset($fielddetails['visible']) && $fielddetails['visible']) || !isset($fielddetails['visible'])) && (!$only_enabledisable || ($only_enabledisable && isset($fielddetails['overview_option'])))) { $newfieldvalue = self::getFormFieldData($fieldname, $fielddetails, $input); if ($newfieldvalue != $fielddetails['value']) { - if (($error = \Froxlor\Validate\Form::validateFormField($fieldname, $fielddetails, $newfieldvalue)) != true) { + if (($error = \Froxlor\Validate\Form::validateFormField($fieldname, $fielddetails, $newfieldvalue)) !== true) { Response::standardError($error, $fieldname); } else { $changed_fields[$fieldname] = $newfieldvalue; diff --git a/lib/Froxlor/Validate/Form/Data.php b/lib/Froxlor/Validate/Form/Data.php index 3e376fb1..ac7cd0cd 100644 --- a/lib/Froxlor/Validate/Form/Data.php +++ b/lib/Froxlor/Validate/Form/Data.php @@ -319,7 +319,11 @@ class Data { $returnvalue = 'stringformaterror'; - if (preg_match('/^[^\0]*$/', $newfieldvalue)) { + if (isset($fielddata['string_regexp']) && $fielddata['string_regexp'] != '') { + if (preg_match($fielddata['string_regexp'], $newfieldvalue)) { + $returnvalue = true; + } + } else if (preg_match('/^[^\0]*$/', $newfieldvalue)) { $returnvalue = true; }