+
+{# include dialogs #}
+{{ partial("layout_partials/base_dialog",['fields':formDialogUserparameter,'id':'DialogUserparameter','label':lang._('Edit User Parameter')]) }}
+{{ partial("layout_partials/base_dialog",['fields':formDialogAlias,'id':'DialogAlias','label':lang._('Edit Alias')]) }}
diff --git a/net-mgmt/zabbix-agent/src/opnsense/service/templates/OPNsense/ZabbixAgent/zabbix_agentd.conf b/net-mgmt/zabbix-agent/src/opnsense/service/templates/OPNsense/ZabbixAgent/zabbix_agentd.conf
index 50ae3852d..9074bb106 100644
--- a/net-mgmt/zabbix-agent/src/opnsense/service/templates/OPNsense/ZabbixAgent/zabbix_agentd.conf
+++ b/net-mgmt/zabbix-agent/src/opnsense/service/templates/OPNsense/ZabbixAgent/zabbix_agentd.conf
@@ -4,305 +4,69 @@
{% if helpers.exists('OPNsense.ZabbixAgent.settings') %}
-# This is a config file for zabbix agent (unix)
-# to get more information about zabbix, visit http://www.zabbix.com
-
############ GENERAL PARAMETERS #################
-### Option: PidFile
-# Name of PID file.
-#
PidFile=/var/run/zabbix/zabbix_agentd.pid
-
-### Option: LogType
-# Specifies where log messages are written to:
-# system - syslog
-# file - file specified with LogFile parameter
-# console - standard output
-#
LogType=file
-
-### Option: LogFile
-# Log file name for LogType 'file' parameter.
-#
LogFile=/var/log/zabbix/zabbix_agentd.log
-### Option: LogFileSize
-# Maximum size of log file in MB.
-# 0 - disable automatic log rotation.
-#
LogFileSize={{OPNsense.ZabbixAgent.settings.main.logFileSize}}
-
-### Option: DebugLevel
-# Specifies debug level
-# 0 - basic information about starting and stopping of Zabbix processes
-# 1 - critical information
-# 2 - error information
-# 3 - warnings
-# 4 - for debugging (produces lots of information)
-# 5 - extended debugging (produces even more information)
DebugLevel={{OPNsense.ZabbixAgent.settings.main.debugLevel|replace("val_", "")}}
-### Option: SourceIP
-# Source IP address for outgoing connections.
-#
{% if helpers.exists('OPNsense.ZabbixAgent.settings.main.sourceIP') %}
SourceIP={{OPNsense.ZabbixAgent.settings.main.sourceIP}}
{% endif %}
-### Option: EnableRemoteCommands
-# Whether remote commands from Zabbix server are allowed.
-# 0 - not allowed
-# 1 - allowed
-#
EnableRemoteCommands={{OPNsense.ZabbixAgent.settings.features.enableRemoteCommands}}
-
-### Option: LogRemoteCommands
-# Enable logging of executed shell commands as warnings.
-# 0 - disabled
-# 1 - enabled
-#
LogRemoteCommands={{OPNsense.ZabbixAgent.settings.features.logRemoteCommands}}
-##### Passive checks related
-
-### Option: Server
-# List of comma delimited IP addresses (or hostnames) of Zabbix servers.
-# Incoming connections will be accepted only from the hosts listed here.
-# If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
-#
Server={{OPNsense.ZabbixAgent.settings.main.serverList}}
-
-### Option: ListenPort
-# Agent will listen on this port for connections from the server.
-#
ListenPort={{OPNsense.ZabbixAgent.settings.main.listenPort}}
-
-### Option: ListenIP
-# List of comma delimited IP addresses that the agent should listen on.
-# First IP address is sent to Zabbix server if connecting to it to retrieve list of active checks.
-#
ListenIP={{OPNsense.ZabbixAgent.settings.main.listenIP}}
-### Option: StartAgents
-# Number of pre-forked instances of zabbix_agentd that process passive checks.
-# If set to 0, disables passive checks and the agent will not listen on any TCP port.
-#
-StartAgents={{OPNsense.ZabbixAgent.settings.tuning.startAgents}}
-
-##### Active checks related
-
-### Option: ServerActive
-# List of comma delimited IP:port (or hostname:port) pairs of Zabbix servers for active checks.
-# If port is not specified, default port is used.
-# IPv6 addresses must be enclosed in square brackets if port for that host is specified.
-# If port is not specified, square brackets for IPv6 addresses are optional.
-# If this parameter is not specified, active checks are disabled.
-# Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
-#
{% if OPNsense.ZabbixAgent.settings.features.enableActiveChecks == '1' and OPNsense.ZabbixAgent.settings.features.activeCheckServers|default("") != "" %}
ServerActive={{OPNsense.ZabbixAgent.settings.features.activeCheckServers}}
{% endif %}
-### Option: Hostname
-# Unique, case sensitive hostname.
-# Required for active checks and must match hostname as configured on the server.
-# Value is acquired from HostnameItem if undefined.
-#
{% if OPNsense.ZabbixAgent.local.hostname|default("") != "" %}
Hostname={{OPNsense.ZabbixAgent.local.hostname}}
{% endif %}
-### Option: HostnameItem
-# Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.
-# Does not support UserParameters or aliases.
-#
-### Option: HostMetadata
-# Optional parameter that defines host metadata.
-# Host metadata is used at host auto-registration process.
-# An agent will issue an error and not start if the value is over limit of 255 characters.
-# If not defined, value will be acquired from HostMetadataItem.
-#
-### Option: HostMetadataItem
-# Optional parameter that defines an item used for getting host metadata.
-# Host metadata is used at host auto-registration process.
-# During an auto-registration request an agent will log a warning message if
-# the value returned by specified item is over limit of 255 characters.
-# This option is only used when HostMetadata is not defined.
-#
-
-### Option: RefreshActiveChecks
-# How often list of active checks is refreshed, in seconds.
-#
+StartAgents={{OPNsense.ZabbixAgent.settings.tuning.startAgents}}
RefreshActiveChecks={{OPNsense.ZabbixAgent.settings.features.refreshActiveChecks}}
-
-### Option: BufferSend
-# Do not keep data longer than N seconds in buffer.
-#
BufferSend={{OPNsense.ZabbixAgent.settings.tuning.bufferSend}}
-
-### Option: BufferSize
-# Maximum number of values in a memory buffer. The agent will send
-# all collected data to Zabbix Server or Proxy if the buffer is full.
-#
BufferSize={{OPNsense.ZabbixAgent.settings.tuning.bufferSize}}
-
-### Option: MaxLinesPerSecond
-# Maximum number of new lines the agent will send per second to Zabbix Server
-# or Proxy processing 'log' and 'logrt' active checks.
-# The provided value will be overridden by the parameter 'maxlines',
-# provided in 'log' or 'logrt' item keys.
-#
MaxLinesPerSecond={{OPNsense.ZabbixAgent.settings.tuning.maxLinesPerSecond}}
############ ADVANCED PARAMETERS #################
-### Option: Alias
-# Sets an alias for an item key. It can be used to substitute long and complex item key with a smaller and simpler one.
-# Multiple Alias parameters may be present. Multiple parameters with the same Alias key are not allowed.
-# Different Alias keys may reference the same item key.
-# For example, to retrieve the ID of user 'zabbix':
-# Alias=zabbix.userid:vfs.file.regexp[/etc/passwd,^zabbix:.:([0-9]+),,,,\1]
-# Now shorthand key zabbix.userid may be used to retrieve data.
-# Aliases can be used in HostMetadataItem but not in HostnameItem parameters.
-#
+{% if helpers.exists('OPNsense.ZabbixAgent.aliases') %}
+{% for alias in helpers.toList('OPNsense.ZabbixAgent.aliases.alias') %}
+{% if alias.enabled == '1' %}
+{% if alias.acceptParams == '1' %}
+{% set alias_opts = '[*]' %}
+{% endif %}
+Alias={{alias.key}}{{alias_opts}}:{{alias.sourceKey}}
+{% endif %}
+{% endfor %}
+{% endif %}
-### Option: Timeout
-# Spend no more than Timeout seconds on processing
-#
Timeout={{OPNsense.ZabbixAgent.settings.tuning.timeout}}
-
-### Option: AllowRoot
-# Allow the agent to run as 'root'. If disabled and the agent is started by 'root', the agent
-# will try to switch to the user specified by the User configuration option instead.
-# Has no effect if started under a regular user.
-# 0 - do not allow
-# 1 - allow
-#
AllowRoot=0
-
-### Option: User
-# Drop privileges to a specific, existing user on the system.
-# Only has effect if run as 'root' and AllowRoot is disabled.
-#
User=zabbix
-
-### Option: Include
-# You may include individual files or all files in a directory in the configuration file.
-# Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time.
-#
Include=/usr/local/etc/zabbix_agentd.conf.d
####### USER-DEFINED MONITORED PARAMETERS #######
-### Option: UnsafeUserParameters
-# Allow all characters to be passed in arguments to user-defined parameters.
-# The following characters are not allowed:
-# \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
-# Additionally, newline characters are not allowed.
-# 0 - do not allow
-# 1 - allow
-#
-### Option: UserParameter
-# User-defined parameter to monitor. There can be several user-defined parameters.
-# Format: UserParameter=,
-# See 'zabbix_agentd' directory for examples.
-#
-# Disabled. A configuration file should be placed on directory: <%= @include %>
-
-####### LOADABLE MODULES #######
-### Option: LoadModulePath
-# Full path to location of agent modules.
-# Default depends on compilation options.
-#
-#LoadModulePath=/usr/local/lib/modules
-
-### Option: LoadModule
-# Module to load at agent startup. Modules are used to extend functionality of the agent.
-# Format: LoadModule=
-# The modules must be located in directory specified by LoadModulePath.
-# It is allowed to include multiple LoadModule parameters.
-#
-
-####### TLS-RELATED PARAMETERS #######
-
-### Option: TLSConnect
-# How the proxy should connect to Zabbix server. Used for an active proxy, ignored on a passive proxy.
-# Only one value can be specified:
-# unencrypted - connect without encryption
-# psk - connect using TLS and a pre-shared key
-# cert - connect using TLS and a certificate
-#
-# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
-# Default:
-# TLSConnect=unencrypted
-
-### Option: TLSAccept
-# What incoming connections to accept from Zabbix server. Used for a passive proxy, ignored on an active proxy.
-# Multiple values can be specified, separated by comma:
-# unencrypted - accept connections without encryption
-# psk - accept connections secured with TLS and a pre-shared key
-# cert - accept connections secured with TLS and a certificate
-#
-# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
-# Default:
-# TLSAccept=unencrypted
-
-### Option: TLSCAFile
-# Full pathname of a file containing the top-level CA(s) certificates for
-# peer certificate verification.
-#
-# Mandatory: no
-# Default:
-# TLSCAFile=
-
-### Option: TLSCRLFile
-# Full pathname of a file containing revoked certificates.
-#
-# Mandatory: no
-# Default:
-# TLSCRLFile=
-
-### Option: TLSServerCertIssuer
-# Allowed server certificate issuer.
-#
-# Mandatory: no
-# Default:
-# TLSServerCertIssuer=
-
-### Option: TLSServerCertSubject
-# Allowed server certificate subject.
-#
-# Mandatory: no
-# Default:
-# TLSServerCertSubject=
-
-### Option: TLSCertFile
-# Full pathname of a file containing the proxy certificate or certificate chain.
-#
-# Mandatory: no
-# Default:
-# TLSCertFile=
-
-### Option: TLSKeyFile
-# Full pathname of a file containing the proxy private key.
-#
-# Mandatory: no
-# Default:
-# TLSKeyFile=
-
-### Option: TLSPSKIdentity
-# Unique, case sensitive string used to identify the pre-shared key.
-#
-# Mandatory: no
-# Default:
-# TLSPSKIdentity=
-
-### Option: TLSPSKFile
-# Full pathname of a file containing the pre-shared key.
-#
-# Mandatory: no
-# Default:
-# TLSPSKFile=
+{% if helpers.exists('OPNsense.ZabbixAgent.userparameters') %}
+{% for userparam in helpers.toList('OPNsense.ZabbixAgent.userparameters.userparameter') %}
+{% if userparam.enabled == '1' %}
+{% if userparam.acceptParams == '1' %}
+{% set userparam_opts = '[*]' %}
+{% endif %}
+UserParameter={{userparam.key}}{{userparam_opts}},{{userparam.command}}
+{% endif %}
+{% endfor %}
+{% endif %}
{% endif %}