Skip to content

Commit

Permalink
syslog-ng: Address multiple issues
Browse files Browse the repository at this point in the history
* Fix config format breaking due to version number. Fixes #14389
* Fix PHP 8.x errors. Fixes #14007
* Add checkbox to include SCL. Implements #12502
  • Loading branch information
jim-p committed May 25, 2023
1 parent 8f2bceb commit d848b6d
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 27 deletions.
3 changes: 1 addition & 2 deletions 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
Expand Down
27 changes: 17 additions & 10 deletions sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslog-ng.inc
Expand Up @@ -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';
Expand Down Expand Up @@ -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.';
Expand Down Expand Up @@ -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";
Expand Down Expand Up @@ -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');
Expand All @@ -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';
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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')) {
Expand Down
36 changes: 21 additions & 15 deletions sysutils/pfSense-pkg-syslog-ng/files/usr/local/pkg/syslogng.xml
Expand Up @@ -85,33 +85,33 @@
<required/>
</field>
<field>
<fielddescr>CA</fielddescr>
<fieldname>dca</fieldname>
<fielddescr>CA</fielddescr>
<fieldname>dca</fieldname>
<description>
<![CDATA[
Select Certificate Authority for TLS protocol.<br />
You can use it in your object definition as ca-dir('/var/etc/syslog-ng/ca.d') option of tls( ).
]]>
</description>
<type>select_source</type>
<source><![CDATA[syslogng_get_ca_or_certs('ca')]]></source>
<source_name>descr</source_name>
<source_value>refid</source_value>
</field>
<type>select_source</type>
<source><![CDATA[syslogng_get_ca_or_certs('ca')]]></source>
<source_name>descr</source_name>
<source_value>refid</source_value>
</field>
<field>
<fielddescr>Certificate</fielddescr>
<fieldname>certificate</fieldname>
<fielddescr>Certificate</fielddescr>
<fieldname>certificate</fieldname>
<description>
<![CDATA[
Select server certificate for TLS protocol.<br />
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( ).
]]>
</description>
<type>select_source</type>
<source><![CDATA[syslogng_get_ca_or_certs('cert')]]></source>
<source_name>descr</source_name>
<source_value>refid</source_value>
</field>
<type>select_source</type>
<source><![CDATA[syslogng_get_ca_or_certs('cert')]]></source>
<source_name>descr</source_name>
<source_value>refid</source_value>
</field>
<field>
<fielddescr>Default Port</fielddescr>
<fieldname>default_port</fieldname>
Expand Down Expand Up @@ -174,6 +174,12 @@
<default_value>30</default_value>
<required/>
</field>
<field>
<fielddescr>Include SCL</fielddescr>
<fieldname>include_scl</fieldname>
<type>checkbox</type>
<description>Include syslog-ng standard configuration library (SCL)</description>
</field>
</fields>
<custom_php_validation_command>
syslogng_validate_general($_POST, $input_errors);
Expand Down

0 comments on commit d848b6d

Please sign in to comment.