From d848b6da1957d728a867b9010ed3795d946b68c4 Mon Sep 17 00:00:00 2001 From: jim-p Date: Thu, 25 May 2023 13:39:41 -0400 Subject: [PATCH] syslog-ng: Address multiple issues * Fix config format breaking due to version number. Fixes #14389 * Fix PHP 8.x errors. Fixes #14007 * Add checkbox to include SCL. Implements #12502 --- sysutils/pfSense-pkg-syslog-ng/Makefile | 3 +- .../files/usr/local/pkg/syslog-ng.inc | 27 ++++++++------ .../files/usr/local/pkg/syslogng.xml | 36 +++++++++++-------- 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/sysutils/pfSense-pkg-syslog-ng/Makefile b/sysutils/pfSense-pkg-syslog-ng/Makefile index 606ef548204c..efd200e7c3b5 100644 --- a/sysutils/pfSense-pkg-syslog-ng/Makefile +++ b/sysutils/pfSense-pkg-syslog-ng/Makefile @@ -1,8 +1,7 @@ # $FreeBSD$ PORTNAME= pfSense-pkg-syslog-ng -PORTVERSION= 1.15 -PORTREVISION= 13 +PORTVERSION= 1.16 CATEGORIES= sysutils MASTER_SITES= # empty DISTFILES= # empty diff --git a/sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslog-ng.inc b/sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslog-ng.inc index 2ec04ac457b7..22250f55915d 100644 --- a/sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslog-ng.inc +++ b/sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslog-ng.inc @@ -57,7 +57,7 @@ function syslogng_deinstall_command() { function syslogng_validate_general($post, &$input_errors) { global $config; - $objects = $config['installedpackages']['syslogngadvanced']['config']; + $objects = config_get_path('installedpackages/syslogngadvanced/config', []); if (empty($post['interfaces'])) { $input_errors[] = 'You must select at least one interface in \'Interfaces\' field'; @@ -100,7 +100,7 @@ function syslogng_validate_general($post, &$input_errors) { function syslogng_validate_advanced($post, &$input_errors) { global $config; - $objects = $config['installedpackages']['syslogngadvanced']['config']; + $objects = config_get_path('installedpackages/syslogngadvanced/config', []); if ($post['objectname'] == '_DEFAULT') { $input_errors[] = 'Creation or modification of \'_DEFAULT\' objects not permitted. Change default settings under \'General\' tab.'; @@ -210,11 +210,19 @@ function syslogng_get_log_files($objects) { function syslogng_build_conf($objects) { $syslog_ng_info = get_pkg_info("sysutils/syslog-ng", true, true); - $syslog_ng_version = substr($syslog_ng_info[0]['version'], 0, 4); + + # Build @version string from only the major.minor parts of the version number + $syslog_ng_version_parts = explode('.', $syslog_ng_info[0]['version']); + $syslog_ng_version = implode('.', array_slice($syslog_ng_version_parts, 0, 2)); + $conf = "# This file is automatically generated by pfSense\n"; $conf .= "# Do not edit manually !\n"; $conf .= "@version:$syslog_ng_version\n"; + if (config_get_path('installedpackages/syslogng/config/0/include_scl', '') == 'on') { + $conf .= "@include \"scl.conf\"\n"; + } + foreach ($objects as $object) { if ($object['objecttype'] == 'log' || $object['objecttype'] == 'options') { $conf .= $object['objecttype'] . " " . base64_decode($object['objectparameters']) . "\n"; @@ -274,7 +282,7 @@ function syslogng_build_logrotate_conf($settings, $objects) { function syslogng_generate_rules($type) { global $config; - $settings = $config['installedpackages']['syslogng']['config'][0]; + $settings = config_get_path('installedpackages/syslogng/config/0', []); $interfaces = ($settings['interfaces'] ? $settings['interfaces'] : 'lan'); $default_protocol = ($settings['default_protocol'] ? $settings['default_protocol'] : 'udp'); @@ -295,8 +303,8 @@ function syslogng_generate_rules($type) { function syslogng_resync() { global $config; - $settings = $config['installedpackages']['syslogng']['config'][0]; - $objects = $config['installedpackages']['syslogngadvanced']['config']; + $settings = config_get_path('installedpackages/syslogng/config/0', []); + $objects = config_get_path('installedpackages/syslogngadvanced/config', []); if (!isset($settings['enable'])) { $settings['enable'] = 'off'; @@ -369,8 +377,8 @@ function syslogng_resync() { $config_changed = true; } - $config['installedpackages']['syslogng']['config'][0] = $settings; - $config['installedpackages']['syslogngadvanced']['config'] = $objects; + config_set_path('installedpackages/syslogng/config/0', $settings); + config_set_path('installedpackages/syslogngadvanced/config', $objects); if ($settings['enable'] == 'on') { safe_mkdir("{$settings['default_logdir']}", 0755); @@ -490,8 +498,7 @@ function syslogng_build_cert($settings) { function syslogng_plugin_certificates($pluginparams) { global $config; $result = array(); - init_config_arr(array('installedpackages', 'syslogng', 'config')); - $conf = $config['installedpackages']['syslogng']['config'][0]; + $conf = config_get_path('installedpackages/syslogng/config/0', []); if (($pluginparams['type'] == 'certificates') && !empty($conf) && ($conf['enable'] == 'on') && ($conf['default_protocol'] == 'tls')) { diff --git a/sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslogng.xml b/sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslogng.xml index 0c434b260f4c..a4f41cea5e39 100644 --- a/sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslogng.xml +++ b/sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslogng.xml @@ -85,33 +85,33 @@ - CA - dca + CA + dca You can use it in your object definition as ca-dir('/var/etc/syslog-ng/ca.d') option of tls( ). ]]> - select_source - - descr - refid - + select_source + + descr + refid + - Certificate - certificate + Certificate + certificate - You can use it in your object definition as key-file('/var/etc/syslog-ng/syslog-ng.key') and cert-file('/var/etc/syslog-ng/syslog-ng.cert') options of tls( ). + You can use it in your object definition as key-file('/var/etc/syslog-ng/syslog-ng.key') and cert-file('/var/etc/syslog-ng/syslog-ng.cert') options of tls( ). ]]> - select_source - - descr - refid - + select_source + + descr + refid + Default Port default_port @@ -174,6 +174,12 @@ 30 + + Include SCL + include_scl + checkbox + Include syslog-ng standard configuration library (SCL) + syslogng_validate_general($_POST, $input_errors);