diff --git a/src/www/widgets/widgets/system_log.widget.php b/src/www/widgets/widgets/system_log.widget.php index 887427e4d..94a2bdaa2 100644 --- a/src/www/widgets/widgets/system_log.widget.php +++ b/src/www/widgets/widgets/system_log.widget.php @@ -30,19 +30,44 @@ require_once("guiconfig.inc"); if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $input_errors = array(); if (is_numeric($_POST['systemlogfiltercount'])) { $config['widgets']['systemlogfiltercount'] = $_POST['systemlogfiltercount']; } if (is_numeric($_POST['systemlogentriesupdateinterval'])) { $config['widgets']['systemlogupdateinterval'] = $_POST['systemlogentriesupdateinterval']; } - write_config("Saved Widget System Log Filter Setting"); + + if (!empty($_POST['systemlogentriesfilter'])) { + if (!preg_match('/^[0-9,a-z,A-Z *\-_.\#]*$/', $_POST['systemlogentriesfilter'])) { + $input_errors[] = gettext("Query filter string is invalid"); + } + } + + if (count($input_errors) == 0) { + $config['widgets']['systemlogentriesfilter'] = $_POST['systemlogentriesfilter']; + write_config("System Log Widget settings saved"); + header(url_safe('Location: /index.php')); + exit; + } + + for ($i = 0; $i < count($input_errors); $i++) { + setcookie("inputerrors[$i]", $input_errors[$i], 0, '/'); + } + header(url_safe('Location: /index.php')); exit; } $systemlogEntriesToFetch = isset($config['widgets']['systemlogfiltercount']) ? $config['widgets']['systemlogfiltercount'] : 20; $systemlogupdateinterval = isset($config['widgets']['systemlogupdateinterval']) ? $config['widgets']['systemlogupdateinterval'] : 10; +$systemlogentriesfilter = isset($config['widgets']['systemlogentriesfilter']) ? $config['widgets']['systemlogentriesfilter'] : ""; +if (isset($_COOKIE['inputerrors'])) { + foreach ($_COOKIE['inputerrors'] as $i => $value) { + $input_errors[] = $value; + setcookie("inputerrors[$i]", "", time() - 3600); + } +} ?> @@ -74,9 +99,22 @@ $systemlogupdateinterval = isset($config['widgets']['systemlogupdateinterval'])