Page MenuHomeFreeBSD

D24926.diff
No OneTemporary

D24926.diff

Index: net-mgmt/zabbix5-agent/Makefile
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-agent/Makefile
@@ -0,0 +1,14 @@
+# Created by: Juraj Lutter <juraj@lutter.sk>
+# $FreeBSD$
+
+PORTNAME= zabbix5
+CATEGORIES= net-mgmt
+PKGNAMESUFFIX= -agent
+
+MASTERDIR= ${.CURDIR}/../zabbix5-server
+PLIST= ${PKGDIR}/pkg-plist.agent
+
+OPTIONS_DEFINE= CURL IPV6
+OPTIONS_DEFAULT= CURL OPENSSL
+
+.include "${MASTERDIR}/Makefile"
Index: net-mgmt/zabbix5-agent2/Makefile
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-agent2/Makefile
@@ -0,0 +1,20 @@
+# Created by: Juraj Lutter <juraj@lutter.sk>
+# $FreeBSD$
+
+PORTNAME= zabbix5
+CATEGORIES= net-mgmt
+PKGNAMESUFFIX= -agent2
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
+
+MASTERDIR= ${.CURDIR}/../zabbix5-server
+PLIST= ${PKGDIR}/pkg-plist.agent2
+
+DISTINFO_FILE= ${.CURDIR}/distinfo
+
+OPTIONS_DEFINE= LDAP IPV6 OPENSSL
+OPTIONS_DEFAULT= LDAP OPENSSL
+
+LDAP_CONFIGURE_WITH= ldap
+LDAP_USE= OPENLDAP=yes
+
+.include "${MASTERDIR}/Makefile"
Index: net-mgmt/zabbix5-agent2/distinfo
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-agent2/distinfo
@@ -0,0 +1,25 @@
+TIMESTAMP = 1590062351
+SHA256 (zabbix-5.0.0.tar.gz) = 5a1762fd2bb7275d9a28c6dfa9a6d46d84be749f9bf50a36eb8fcd20fb8bb6eb
+SIZE (zabbix-5.0.0.tar.gz) = 18519888
+SHA256 (alimy-mc-v2.0.3_GH0.tar.gz) = 0ac06190a767bc0fcf74fbb7e565fa0742a6f5425440c337a15246a41aca309e
+SIZE (alimy-mc-v2.0.3_GH0.tar.gz) = 21035
+SHA256 (dustin-gomemcached-a2284a01c143_GH0.tar.gz) = d6b4c2af8993f45199aa2cfa05e0f630d897a73ddbbc7ddbebc47821d4b1115f
+SIZE (dustin-gomemcached-a2284a01c143_GH0.tar.gz) = 21981
+SHA256 (fsnotify-fsnotify-v1.4.7_GH0.tar.gz) = b7530d973d0ab0e58ad8ce1b9a4b963d6f57b3d72f2f9e13d49846976361b1cd
+SIZE (fsnotify-fsnotify-v1.4.7_GH0.tar.gz) = 31139
+SHA256 (go-ole-go-ole-v1.2.4_GH0.tar.gz) = 1f30df494ffc50c133c5f276f64c94820046b1a3a660c0cca49a5c3a8106db11
+SIZE (go-ole-go-ole-v1.2.4_GH0.tar.gz) = 51655
+SHA256 (go-sql-driver-mysql-v1.5.0_GH0.tar.gz) = 9d98b46623037447a26a51a203540bf605b6e6220d31f2efc7396242fcb660b5
+SIZE (go-sql-driver-mysql-v1.5.0_GH0.tar.gz) = 90474
+SHA256 (godbus-dbus-v4.1.0_GH0.tar.gz) = e35dd6031febb2b550b765da602a6e8eaa6a45c501af7370f66d7710a23c501d
+SIZE (godbus-dbus-v4.1.0_GH0.tar.gz) = 53466
+SHA256 (golang-sys-f43be2a4598c_GH0.tar.gz) = 120cfab17111e93b3513a42bf0db20634552c85ae48d1fd3c5d7859fc5603356
+SIZE (golang-sys-f43be2a4598c_GH0.tar.gz) = 1513901
+SHA256 (golang-xerrors-1b5146add898_GH0.tar.gz) = 57ba6cacc0a84a2ecbfda1169b5e9c184581dd009136f95d2fca9a5289e49ab1
+SIZE (golang-xerrors-1b5146add898_GH0.tar.gz) = 12200
+SHA256 (mattn-go-sqlite3-v2.0.3_GH0.tar.gz) = ed015860c9b3e701d8cce7dcb0bcb2e2f53071718334465b10abb696f7de0e58
+SIZE (mattn-go-sqlite3-v2.0.3_GH0.tar.gz) = 2335418
+SHA256 (mediocregopher-radix-v3.4.2_GH0.tar.gz) = 3b26042bed210daca2354b43e476e462b12e94edba6e242c14f2cf6095c9dce5
+SIZE (mediocregopher-radix-v3.4.2_GH0.tar.gz) = 93999
+SHA256 (natefinch-npipe-c1b8fa8bdcce_GH0.tar.gz) = 6e3de30412671aba8f89008b2411126378a4dd2bddff095312d7a88a1670d3ab
+SIZE (natefinch-npipe-c1b8fa8bdcce_GH0.tar.gz) = 12421
Index: net-mgmt/zabbix5-frontend/Makefile
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-frontend/Makefile
@@ -0,0 +1,34 @@
+# Created by: Juraj Lutter <juraj@lutter.sk>
+# $FreeBSD$
+
+PORTNAME= zabbix5
+CATEGORIES= net-mgmt
+PKGNAMESUFFIX= -frontend
+
+MASTERDIR= ${.CURDIR}/../zabbix5-server
+
+NO_BUILD= yes
+NO_ARCH= yes
+PATCHDIR=
+PLIST= ${PKGDIR}/pkg-plist.frontend
+
+USE_PHP= bcmath ctype dom fileinfo filter gd gettext json ldap mbstring pcre \
+ session simplexml snmp sockets xml xmlreader xmlwriter
+USES+= php:web
+
+OPTIONS_DEFINE= MYSQLI PGSQL ORACLE
+OPTIONS_DEFAULT= MYSQLI
+MYSQLI_DESC= MySQLI backend
+
+MYSQLI_USE= PHP=mysqli
+
+PGSQL_USE= PHP=pgsql
+
+ORACLE_CONFIGURE_WITH= oracle
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${WWWDIR}
+ (cd ${WRKSRC}/ui && \
+ ${COPYTREE_SHARE} . ${STAGEDIR}${WWWDIR})
+
+.include "${MASTERDIR}/Makefile"
Index: net-mgmt/zabbix5-java/Makefile
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-java/Makefile
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+PORTNAME= zabbix5
+CATEGORIES= net-mgmt
+PKGNAMESUFFIX= -java
+
+MASTERDIR= ${.CURDIR}/../zabbix5-server
+PLIST= ${PKGDIR}/pkg-plist.java
+
+OPTIONS_DEFINE= IPV6
+
+USE_JAVA= yes
+
+.include "${MASTERDIR}/Makefile"
Index: net-mgmt/zabbix5-proxy/Makefile
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-proxy/Makefile
@@ -0,0 +1,12 @@
+# Created by: Juraj Lutter <juraj@lutter.sk>
+# $FreeBSD$
+
+PORTNAME= zabbix5
+CATEGORIES= net-mgmt
+PKGNAMESUFFIX= -proxy
+
+MASTERDIR= ${.CURDIR}/../zabbix5-server
+
+OPTIONS_SINGLE_DB= MYSQL PGSQL SQLITE ORACLE
+
+.include "${MASTERDIR}/Makefile"
Index: net-mgmt/zabbix5-server/Makefile
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/Makefile
@@ -0,0 +1,261 @@
+# Created by: Juraj Lutter <juraj@lutter.sk>
+# $FreeBSD$
+
+PORTNAME= zabbix5
+PORTVERSION= 5.0.0
+PORTREVISION?= 0
+CATEGORIES= net-mgmt
+MASTER_SITES= https://cdn.zabbix.com/zabbix/sources/stable/${PORTVERSION:R}/
+PKGNAMESUFFIX?= -server
+DISTNAME= zabbix-${PORTVERSION}
+
+MAINTAINER= juraj@lutter.sk
+COMMENT= Enterprise-class open source distributed monitoring (${PKGNAMESUFFIX:S/^-//})
+
+LICENSE= GPLv2+
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+LIB_DEPENDS= libpcre.so:devel/pcre
+
+CONFLICTS= zabbix[0-46-9][0-9]${PKGNAMESUFFIX} \
+ zabbix4[0-46-9]${PKGNAMESUFFIX} \
+ zabbix[0-9]${PKGNAMESUFFIX}
+
+ZABBIX_BUILD= ${PKGNAMESUFFIX:S/^-//}
+
+USES= autoreconf localbase pkgconfig iconv
+.if ${ZABBIX_BUILD} == "agent2"
+USES+= go:modules
+USE_GITHUB= nodefault
+GH_ACCOUNT= zabbix
+GH_PROJECT= zabbix
+GH_TUPLE= \
+ alimy:mc:v2.0.3:alimy_mc_v2/src/go/vendor/github.com/alimy/mc/v2 \
+ dustin:gomemcached:a2284a01c143:dustin_gomemcached/src/go/vendor/github.com/dustin/gomemcached \
+ fsnotify:fsnotify:v1.4.7:fsnotify_fsnotify/src/go/vendor/github.com/fsnotify/fsnotify \
+ go-ole:go-ole:v1.2.4:go_ole_go_ole/src/go/vendor/github.com/go-ole/go-ole \
+ go-sql-driver:mysql:v1.5.0:go_sql_driver_mysql/src/go/vendor/github.com/go-sql-driver/mysql \
+ godbus:dbus:v4.1.0:godbus_dbus/src/go/vendor/github.com/godbus/dbus \
+ golang:sys:f43be2a4598c:golang_sys/src/go/vendor/golang.org/x/sys \
+ golang:xerrors:1b5146add898:golang_xerrors/src/go/vendor/golang.org/x/xerrors \
+ mattn:go-sqlite3:v2.0.3:mattn_go_sqlite3/src/go/vendor/github.com/mattn/go-sqlite3 \
+ mediocregopher:radix:v3.4.2:mediocregopher_radix_v3/src/go/vendor/github.com/mediocregopher/radix/v3 \
+ natefinch:npipe:c1b8fa8bdcce:natefinch_npipe/src/go/vendor/github.com/natefinch/npipe
+.endif
+
+.if ${ZABBIX_BUILD} != "frontend" # frontend only needs the version/distribution settings
+.if ${ZABBIX_BUILD:Nagent*}
+CONFIGURE_ARGS+= --with-libevent=${LOCALBASE} --cache-file=${WRKSRC}/config.cache
+LIB_DEPENDS+= libevent.so:devel/libevent
+USE_RC_SUBR= zabbix_${ZABBIX_BUILD}
+.elif ${ZABBIX_BUILD} == "agent"
+USE_RC_SUBR= zabbix_${ZABBIX_BUILD}d
+.else
+USE_RC_SUBR= zabbix_${ZABBIX_BUILD}
+USE_RC_SUBR+= mock_server
+.endif
+
+USERS= zabbix
+GROUPS= zabbix
+
+.if ${ZABBIX_BUILD} != "proxy"
+PLIST_SUB= PROXY="@comment "
+.else
+PLIST_SUB= PROXY=""
+.endif
+
+.if ${ZABBIX_BUILD} == "server"
+PLIST_SUB+= SERVER=""
+.else
+PLIST_SUB+= SERVER="@comment "
+.endif
+
+PLIST_SUB+= ZABBIX_BUILD=${ZABBIX_BUILD} PORTVERSION=${PORTVERSION}
+SUB_LIST= ZABBIX_BUILD=${ZABBIX_BUILD}
+
+MAKE_ARGS+= ARCH=freebsd
+
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS+= --enable-${ZABBIX_BUILD} \
+ --sysconfdir=${ETCDIR} \
+ --datadir=${ETCDIR} \
+ --with-iconv=${ICONV_PREFIX}
+
+.if ${ZABBIX_BUILD:Nagent*} && ${ZABBIX_BUILD} != "java"
+LIB_DEPENDS+= libnetsnmp.so:net-mgmt/net-snmp
+
+CPPFLAGS+= -I${LOCALBASE}/include
+
+SUB_FILES= pkg-message
+
+CONFIGURE_ARGS+= --with-net-snmp
+
+OPTIONS_DEFINE= IPV6 FPING CURL LDAP IPMI SSH NMAP LIBXML2 UNIXODBC
+
+OPTIONS_DEFAULT= FPING CURL UNIXODBC MYSQL OPENSSL
+OPTIONS_SUB= yes
+
+FPING_DESC= Build/install fping for ping checks
+IPMI_DESC= Support for IPMI checks
+LDAP_DESC= Support for LDAP server checks
+NMAP_DESC= Build/install nmap for o/s detection
+SSH_DESC= Support for SSH-based checks
+UNIXODBC_DESC= Support for database checks via ODBC
+LIBXML2_DESC= Support for libxml2 (required by monitoring VMware)
+
+OPTIONS_SINGLE= DB SSL
+OPTIONS_SINGLE_DB?= MYSQL PGSQL ORACLE
+OPTIONS_SINGLE_SSL= OPENSSL GNUTLS
+
+MYSQL_CONFIGURE_WITH= mysql
+MYSQL_USES+= compiler:c11 mysql
+
+PGSQL_CONFIGURE_WITH= postgresql
+PGSQL_USES+= pgsql
+
+SQLITE_CONFIGURE_WITH= sqlite3
+SQLITE_USES+= sqlite:3
+
+ORACLE_CONFIGURE_WITH= oracle
+
+LDAP_CONFIGURE_WITH= ldap
+LDAP_USE= OPENLDAP=yes
+
+IPMI_CONFIGURE_WITH= openipmi
+IPMI_LIB_DEPENDS= libOpenIPMI.so:sysutils/openipmi
+
+FPING_RUN_DEPENDS= fping:net/fping
+
+SSH_CONFIGURE_WITH= ssh2
+SSH_LIB_DEPENDS= libssh2.so:security/libssh2
+
+UNIXODBC_CONFIGURE_WITH=unixodbc
+UNIXODBC_LIB_DEPENDS= libodbc.so:databases/unixODBC
+.elif ${ZABBIX_BUILD} == "agent"
+OPTIONS_SINGLE= SSL
+OPTIONS_SINGLE_SSL= OPENSSL GNUTLS
+.endif # if ${ZABBIX_BUILD} != "agent" && ${ZABBIX_BUILD} != "java"
+
+CURL_DESC= Support for web monitoring
+CURL_CONFIGURE_WITH= libcurl
+CURL_LIB_DEPENDS= libcurl.so:ftp/curl
+
+IPV6_CONFIGURE_ENABLE= ipv6
+
+NMAP_RUN_DEPENDS= nmap:security/nmap \
+ sudo:security/sudo
+
+LIBXML2_CONFIGURE_WITH= libxml2=${LOCALBASE}
+LIBXML2_LIB_DEPENDS= libxml2.so:textproc/libxml2
+
+OPENSSL_CONFIGURE_WITH= openssl
+OPENSSL_USES= ssl
+OPENSSL_VARS= BROKEN_SSL="libressl libressl-devel" \
+ BROKEN_SSL_REASON="PSK is not provided by LibreSSL"
+
+GNUTLS_CONFIGURE_WITH= gnutls
+GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls
+
+.include <bsd.port.pre.mk>
+
+.if ${ZABBIX_BUILD} == "agent2"
+EXTRA_PATCHES= ${PATCHDIR}/agent2-patches
+MAKE_ARGS+= CGO_CFLAGS="${CFLAGS}"
+MAKE_ARGS+= CGO_LDLAGS="${LDFLAGS}"
+.endif
+
+post-patch:
+ @${GREP} -rl "/etc/zabbix" ${WRKSRC} \
+ | ${XARGS} ${REINPLACE_CMD} -e 's#/usr/local/etc#${ETCDIR}#g'
+
+ @${REINPLACE_CMD} -e 's#/usr/sbin/fping#${LOCALBASE}/sbin/fping#g' \
+ ${WRKSRC}/conf/zabbix_*.conf \
+ ${WRKSRC}/src/zabbix_proxy/proxy.c \
+ ${WRKSRC}/src/zabbix_server/server.c
+
+.if ${ZABBIX_BUILD} == "server"
+ @${REINPLACE_CMD} -e 's#/tmp/zabbix_server.pid#/var/run/zabbix/zabbix_server.pid#g' \
+ ${WRKSRC}/conf/zabbix_server.conf \
+ ${WRKSRC}/src/zabbix_server/server.c
+.endif
+
+.if ${ZABBIX_BUILD} == "proxy"
+ @${REINPLACE_CMD} -e 's#/tmp/zabbix_proxy.pid#/var/run/zabbix/zabbix_proxy.pid#g' \
+ ${WRKSRC}/conf/zabbix_proxy.conf \
+ ${WRKSRC}/src/zabbix_proxy/proxy.c
+.endif
+
+.if ${ZABBIX_BUILD} == "agent"
+ @${REINPLACE_CMD} -e 's#/tmp/zabbix_agentd.pid#/var/run/zabbix/zabbix_agentd.pid#g' \
+ ${WRKSRC}/conf/zabbix_agentd.conf \
+ ${WRKSRC}/src/zabbix_agent/zabbix_agentd.c
+.endif
+
+.if ${ZABBIX_BUILD} == "agent2"
+ @${REINPLACE_CMD} -e 's#/tmp/zabbix_agent2.pid#/var/run/zabbix/zabbix_agent2.pid#g' \
+ ${WRKSRC}/src/go/conf/zabbix_agent2.conf \
+ ${WRKSRC}/src/go/pkg/pidfile/pidfile_nix.go
+.endif
+
+.if ${ZABBIX_BUILD} == "java"
+ @${REINPLACE_CMD} -e 's#/tmp/zabbix_java.pid#/var/run/zabbix/zabbix_java.pid#g' \
+ ${WRKSRC}/src/zabbix_java/settings.sh
+.endif
+
+.if ${ZABBIX_BUILD:Nagent*}
+. for d in mysql oracle postgresql sqlite3
+ @${REINPLACE_CMD} \
+ -e 's|/usr/bin/traceroute|/usr/sbin/traceroute|g' \
+ -e 's|sudo /usr/bin/nmap|sudo ${LOCALBASE}/bin/nmap|g' \
+ ${WRKSRC}/database/${d}/data.sql
+. endfor
+.endif
+ @${FIND} ${WRKSRC} -type f \( -name '*.bak' -or -name '*.orig' \) \
+ -exec ${RM} {} +
+
+pre-configure:
+ @echo "ac_cv_env_PKG_CONFIG_set=${LOCALBASE}/bin/pkgconf" > ${WRKSRC}/config.cache
+
+.if ${ZABBIX_BUILD} == "agent2"
+do-build:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS}
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${ETCDIR}
+ ${INSTALL_PROGRAM} ${WRKSRC}/src/go/bin/mock_server ${STAGEDIR}${LOCALBASE}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/src/go/bin/zabbix_agent2 ${STAGEDIR}${LOCALBASE}/bin
+ ${CP} ${WRKSRC}/src/go/conf/zabbix_agent2.conf ${STAGEDIR}${ETCDIR}/zabbix_agent2.conf.sample
+ ${CP} ${WRKSRC}/src/go/conf/mock_server.conf ${STAGEDIR}${ETCDIR}/mock_server.conf.sample
+ ${CP} ${WRKSRC}/src/go/cmd/mock_server/active_checks.json ${STAGEDIR}${ETCDIR}/active_checks.json.sample
+ @${REINPLACE_CMD} -e 's#./go/src/zabbix/cmd/mock_server/active_checks.json#${ETCDIR}/active_checks.json#g' \
+ ${STAGEDIR}${ETCDIR}/mock_server.conf.sample
+.endif
+
+post-install:
+.if ${ZABBIX_BUILD} == "java"
+ ${MV} ${STAGEDIR}${PREFIX}/sbin/zabbix_java/settings.sh \
+ ${STAGEDIR}${PREFIX}/sbin/zabbix_java/settings.sh.sample
+ @${MKDIR} ${STAGEDIR}/var/run/zabbix
+.endif
+
+.if ${ZABBIX_BUILD:Nagent*} && ${ZABBIX_BUILD} != "java"
+ ${MKDIR} ${STAGEDIR}${DATADIR}/${ZABBIX_BUILD:Q}/database
+ @${RM} ${WRKSRC}/database/*/Makefile*
+ (cd ${WRKSRC}/database/ && \
+ ${COPYTREE_SHARE} "mysql oracle postgresql sqlite3" \
+ ${STAGEDIR}${DATADIR}/${ZABBIX_BUILD:Q}/database/)
+
+ ${MV} ${STAGEDIR}${ETCDIR}/zabbix_${ZABBIX_BUILD}.conf \
+ ${STAGEDIR}${ETCDIR}/zabbix_${ZABBIX_BUILD}.conf.sample
+.endif
+
+.if ${ZABBIX_BUILD} == "agent"
+ ${MV} ${STAGEDIR}${ETCDIR}/zabbix_${ZABBIX_BUILD}d.conf \
+ ${STAGEDIR}${ETCDIR}/zabbix_${ZABBIX_BUILD}d.conf.sample
+.endif
+
+.else # frontend
+.include <bsd.port.pre.mk>
+.endif
+
+.include <bsd.port.post.mk>
Index: net-mgmt/zabbix5-server/distinfo
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1589832899
+SHA256 (zabbix-5.0.0.tar.gz) = 5a1762fd2bb7275d9a28c6dfa9a6d46d84be749f9bf50a36eb8fcd20fb8bb6eb
+SIZE (zabbix-5.0.0.tar.gz) = 18519888
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_Makefile.am
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_Makefile.am
@@ -0,0 +1,11 @@
+--- src/go/Makefile.am.orig 2020-05-23 17:45:00 UTC
++++ src/go/Makefile.am
+@@ -19,7 +19,7 @@ GOLDFLAGS += -X main.confDefault=${AGENT2_CONFIG_FILE}
+ all: build
+
+ build:
+- CGO_CFLAGS="${CGO_CFLAGS}" CGO_LDFLAGS="${CGO_LDFLAGS}" go build -ldflags="${GOLDFLAGS}" -o bin ./...
++ CGO_CFLAGS="${CGO_CFLAGS}" CGO_LDFLAGS="${CGO_LDFLAGS}" go build -mod=vendor -ldflags="${GOLDFLAGS}" -o bin ./...
+
+ clean:
+ go clean ./...
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_cmd_zabbix__agent2_testrun__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_cmd_zabbix__agent2_testrun__freebsd.go
@@ -0,0 +1,105 @@
+--- src/go/cmd/zabbix_agent2/testrun_freebsd.go.orig 2020-05-23 17:55:39 UTC
++++ src/go/cmd/zabbix_agent2/testrun_freebsd.go
+@@ -0,0 +1,102 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package main
++
++import "zabbix.com/internal/agent/scheduler"
++
++func checkMetrics(s scheduler.Scheduler) {
++ metrics := []string{
++ `agent.hostname`,
++ `agent.ping`,
++ `agent.version`,
++ `system.localtime[utc]`,
++ `system.run[echo test]`,
++ `web.page.get[localhost,,80]`,
++ `web.page.perf[localhost,,80]`,
++ `web.page.regexp[localhost,,80,OK]`,
++ `vfs.file.size[/etc/passwd]`,
++ `vfs.file.time[/etc/passwd,modify]`,
++ `vfs.file.exists[/etc/passwd]`,
++ `vfs.file.contents[/etc/passwd]`,
++ `vfs.file.regexp[/etc/passwd,root]`,
++ `vfs.file.regmatch[/etc/passwd,root]`,
++ `vfs.file.md5sum[/etc/passwd]`,
++ `vfs.file.cksum[/etc/passwd]`,
++ `vfs.dir.size[/var/log]`,
++ `vfs.dir.count[/var/log]`,
++ `net.dns[,zabbix.com]`,
++ `net.dns.record[,zabbix.com]`,
++ `net.tcp.dns[,zabbix.com]`,
++ `net.tcp.dns.query[,zabbix.com]`,
++ `net.tcp.port[,80]`,
++ `system.users.num`,
++ `log[logfile]`,
++ `log.count[logfile]`,
++ `logrt[logfile]`,
++ `logrt.count[logfile]`,
++ `zabbix.stats[127.0.0.1,10051]`,
++ `kernel.maxfiles`,
++ `kernel.maxproc`,
++ `vfs.fs.size[/,free]`,
++ `vfs.fs.inode[/,free]`,
++ `vfs.fs.discovery`,
++ `vfs.dev.write[sda,operations]`,
++ `net.tcp.listen[80]`,
++ `net.udp.listen[68]`,
++ `net.if.in[lo0,bytes]`,
++ `net.if.out[lo0,bytes]`,
++ `net.if.total[lo0,bytes]`,
++ `net.if.collisions[lo0]`,
++ `net.if.discovery`,
++ `vm.memory.size[total]`,
++ `proc.cpu.util[inetd]`,
++ `proc.num[inetd]`,
++ `proc.mem[inetd]`,
++ `system.cpu.switches`,
++ `system.cpu.intr`,
++ `system.cpu.util[all,user,avg1]`,
++ `system.cpu.load[all,avg1]`,
++ `system.cpu.num[online]`,
++ `system.cpu.discovery`,
++ `system.uname`,
++ `system.hw.chassis`,
++ `system.hw.cpu`,
++ `system.hw.devices`,
++ `system.hw.macaddr`,
++ `system.sw.arch`,
++ `system.sw.os`,
++ `system.sw.packages`,
++ `system.swap.size[all,free]`,
++ `system.swap.in[all]`,
++ `system.swap.out[all]`,
++ `system.uptime`,
++ `system.boottime`,
++ `sensor[w83781d-i2c-0-2d,temp1]`,
++ `net.tcp.service[ssh,127.0.0.1,22]`,
++ `net.tcp.service.perf[ssh,127.0.0.1,22]`,
++ `net.udp.service[ntp,127.0.0.1,123]`,
++ `net.udp.service.perf[ntp,127.0.0.1,123]`,
++ `system.hostname`,
++ }
++
++ for _, metric := range metrics {
++ checkMetric(s, metric)
++ }
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_pkg_zbxlib_checks__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_pkg_zbxlib_checks__freebsd.go
@@ -0,0 +1,103 @@
+--- src/go/pkg/zbxlib/checks_freebsd.go.orig 2020-05-19 19:28:35 UTC
++++ src/go/pkg/zbxlib/checks_freebsd.go
+@@ -0,0 +1,100 @@
++// +build freebsd
++
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package zbxlib
++
++/* cspell:disable */
++
++/*
++#cgo CFLAGS: -I${SRCDIR}/../../../../../include
++
++#include "common.h"
++#include "sysinfo.h"
++
++int SYSTEM_LOCALTIME(AGENT_REQUEST *request, AGENT_RESULT *result);
++int NET_DNS(AGENT_REQUEST *request, AGENT_RESULT *result);
++int NET_DNS_RECORD(AGENT_REQUEST *request, AGENT_RESULT *result);
++int SYSTEM_BOOTTIME(AGENT_REQUEST *request, AGENT_RESULT *result);
++int NET_TCP_LISTEN(AGENT_REQUEST *request, AGENT_RESULT *result);
++int NET_TCP_PORT(AGENT_REQUEST *request, AGENT_RESULT *result);
++int CHECK_SERVICE(AGENT_REQUEST *request, AGENT_RESULT *result);
++int CHECK_SERVICE_PERF(AGENT_REQUEST *request, AGENT_RESULT *result);
++int NET_UDP_LISTEN(AGENT_REQUEST *request, AGENT_RESULT *result);
++int SYSTEM_CPU_LOAD(AGENT_REQUEST *request, AGENT_RESULT *result);
++int SYSTEM_USERS_NUM(AGENT_REQUEST *request, AGENT_RESULT *result);
++int VFS_DIR_COUNT(AGENT_REQUEST *request, AGENT_RESULT *result);
++int VFS_DIR_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result);
++int VFS_FS_DISCOVERY(AGENT_REQUEST *request, AGENT_RESULT *result);
++int VFS_FS_INODE(AGENT_REQUEST *request, AGENT_RESULT *result);
++int VFS_FS_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result);
++int VFS_FS_GET(AGENT_REQUEST *request, AGENT_RESULT *result);
++int VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result);
++
++*/
++import "C"
++
++import (
++ "unsafe"
++)
++
++func resolveMetric(key string) (cfunc unsafe.Pointer) {
++ switch key {
++ case "system.localtime":
++ return unsafe.Pointer(C.SYSTEM_LOCALTIME)
++ case "net.dns":
++ return unsafe.Pointer(C.NET_DNS)
++ case "net.dns.record":
++ return unsafe.Pointer(C.NET_DNS_RECORD)
++ case "system.boottime":
++ return unsafe.Pointer(C.SYSTEM_BOOTTIME)
++ case "net.tcp.listen":
++ return unsafe.Pointer(C.NET_TCP_LISTEN)
++ case "net.tcp.port":
++ return unsafe.Pointer(C.NET_TCP_PORT)
++ case "net.tcp.service", "net.udp.service":
++ return unsafe.Pointer(C.CHECK_SERVICE)
++ case "net.tcp.service.perf", "net.udp.service.perf":
++ return unsafe.Pointer(C.CHECK_SERVICE_PERF)
++ case "net.udp.listen":
++ return unsafe.Pointer(C.NET_UDP_LISTEN)
++ case "system.cpu.load":
++ return unsafe.Pointer(C.SYSTEM_CPU_LOAD)
++ case "system.users.num":
++ return unsafe.Pointer(C.SYSTEM_USERS_NUM)
++ case "vfs.dir.count":
++ return unsafe.Pointer(C.VFS_DIR_COUNT)
++ case "vfs.dir.size":
++ return unsafe.Pointer(C.VFS_DIR_SIZE)
++ case "vfs.fs.discovery":
++ return unsafe.Pointer(C.VFS_FS_DISCOVERY)
++ case "vfs.fs.inode":
++ return unsafe.Pointer(C.VFS_FS_INODE)
++ case "vfs.fs.size":
++ return unsafe.Pointer(C.VFS_FS_SIZE)
++ case "vfs.fs.get":
++ return unsafe.Pointer(C.VFS_FS_GET)
++ case "vm.memory.size":
++ return unsafe.Pointer(C.VM_MEMORY_SIZE)
++
++ default:
++ return
++ }
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_pkg_zbxlib_globals__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_pkg_zbxlib_globals__freebsd.go
@@ -0,0 +1,129 @@
+--- src/go/pkg/zbxlib/globals_freebsd.go.orig 2020-05-23 18:27:12 UTC
++++ src/go/pkg/zbxlib/globals_freebsd.go
+@@ -0,0 +1,126 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package zbxlib
++
++/* cspell:disable */
++
++/*
++#cgo LDFLAGS: -Wl,--start-group
++#cgo LDFLAGS: ${SRCDIR}/../../../zabbix_agent/logfiles/libzbxlogfiles.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxcomms/libzbxcomms.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxcommon/libzbxcommon.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxcrypto/libzbxcrypto.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxsys/libzbxsys.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxnix/libzbxnix.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxconf/libzbxconf.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxhttp/libzbxhttp.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxcompress/libzbxcompress.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxregexp/libzbxregexp.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxsysinfo/libzbxagentsysinfo.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxsysinfo/common/libcommonsysinfo.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxsysinfo/simple/libsimplesysinfo.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxsysinfo/freebsd/libspechostnamesysinfo.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxsysinfo/freebsd/libspecsysinfo.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxexec/libzbxexec.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxalgo/libzbxalgo.a
++#cgo LDFLAGS: ${SRCDIR}/../../../libs/zbxjson/libzbxjson.a
++#cgo LDFLAGS: -lz -lpcre
++#cgo LDFLAGS: -Wl,--end-group
++
++#include "common.h"
++#include "sysinfo.h"
++#include "comms.h"
++#include "log.h"
++#include "../src/zabbix_agent/metrics.h"
++#include "../src/zabbix_agent/logfiles/logfiles.h"
++
++typedef ZBX_ACTIVE_METRIC* ZBX_ACTIVE_METRIC_LP;
++typedef zbx_vector_ptr_t * zbx_vector_ptr_lp_t;
++
++int CONFIG_MAX_LINES_PER_SECOND = 20;
++char *CONFIG_HOSTNAME = NULL;
++int CONFIG_UNSAFE_USER_PARAMETERS= 0;
++int CONFIG_ENABLE_REMOTE_COMMANDS= 0;
++int CONFIG_LOG_REMOTE_COMMANDS= 0;
++char *CONFIG_SOURCE_IP= NULL;
++
++unsigned int configured_tls_connect_mode = ZBX_TCP_SEC_UNENCRYPTED;
++unsigned int configured_tls_accept_modes = ZBX_TCP_SEC_UNENCRYPTED;
++
++char *CONFIG_TLS_CONNECT= NULL;
++char *CONFIG_TLS_ACCEPT = NULL;
++char *CONFIG_TLS_CA_FILE = NULL;
++char *CONFIG_TLS_CRL_FILE = NULL;
++char *CONFIG_TLS_SERVER_CERT_ISSUER = NULL;
++char *CONFIG_TLS_SERVER_CERT_SUBJECT = NULL;
++char *CONFIG_TLS_CERT_FILE = NULL;
++char *CONFIG_TLS_KEY_FILE = NULL;
++char *CONFIG_TLS_PSK_IDENTITY = NULL;
++char *CONFIG_TLS_PSK_FILE = NULL;
++
++char *CONFIG_TLS_CIPHER_CERT13 = NULL;
++char *CONFIG_TLS_CIPHER_CERT = NULL;
++char *CONFIG_TLS_CIPHER_PSK13 = NULL;
++char *CONFIG_TLS_CIPHER_PSK = NULL;
++char *CONFIG_TLS_CIPHER_ALL13 = NULL;
++char *CONFIG_TLS_CIPHER_ALL = NULL;
++char *CONFIG_TLS_CIPHER_CMD13 = NULL;
++char *CONFIG_TLS_CIPHER_CMD = NULL;
++
++int CONFIG_PASSIVE_FORKS = 0;
++int CONFIG_ACTIVE_FORKS = 0;
++
++const char *progname = NULL;
++const char title_message[] = "agent";
++const char syslog_app_name[] = "agent";
++const char *usage_message[] = {};
++unsigned char program_type = 0x80;
++const char *help_message[] = {};
++
++ZBX_METRIC parameters_agent[] = {NULL};
++ZBX_METRIC parameters_specific[] = {NULL};
++
++void zbx_on_exit(int ret)
++{
++}
++
++int zbx_procstat_collector_started(void)
++{
++ return FAIL;
++}
++
++int zbx_procstat_get_util(const char *procname, const char *username, const char *cmdline, zbx_uint64_t flags,
++ int period, int type, double *value, char **errmsg)
++{
++ return FAIL;
++}
++
++int get_cpustat(AGENT_RESULT *result, int cpu_num, int state, int mode)
++{
++ return SYSINFO_RET_FAIL;
++}
++
++char *strerror_from_system(unsigned long error)
++{
++ return zbx_strerror(errno);
++}
++
++*/
++import "C"
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_kernel_kernel__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_kernel_kernel__freebsd.go
@@ -0,0 +1,57 @@
+--- src/go/plugins/kernel/kernel_freebsd.go.orig 2020-05-23 18:14:41 UTC
++++ src/go/plugins/kernel/kernel_freebsd.go
+@@ -0,0 +1,54 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package kernel
++
++import (
++ "fmt"
++ "os/exec"
++ "strconv"
++ "strings"
++)
++
++func getMax(proc bool) (max uint64, err error) {
++ var out []byte
++ var result string
++
++ if proc {
++ out, err = exec.Command("/sbin/sysctl", "-n", "kern.pid_max").Output()
++ if err != nil {
++ err = fmt.Errorf("sysctl -n kern.pid_max failed: %v\n", err)
++ }
++ result = strings.TrimRight(string(out), "\n")
++ max, err = strconv.ParseUint(string(result), 10, 64)
++ } else {
++ out, err = exec.Command("/sbin/sysctl", "-n", "kern.maxfiles").Output()
++ if err != nil {
++ err = fmt.Errorf("sysctl -n kern.maxfiles failed: %v\n", err)
++ }
++ result = strings.TrimRight(string(out), "\n")
++ max, err = strconv.ParseUint(string(result), 10, 64)
++ }
++
++ if err != nil {
++ err = fmt.Errorf("Cannot obtain data from kernel.")
++ }
++
++ return
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_net_netif_netif__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_net_netif_netif__freebsd.go
@@ -0,0 +1,196 @@
+--- src/go/plugins/net/netif/netif_freebsd.go.orig 2020-05-23 18:07:38 UTC
++++ src/go/plugins/net/netif/netif_freebsd.go
+@@ -0,0 +1,193 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package netif
++
++import (
++ "bufio"
++ "bytes"
++ "encoding/json"
++ "errors"
++ "strconv"
++ "strings"
++ "log"
++ "os/exec"
++
++ "zabbix.com/pkg/plugin"
++ "zabbix.com/pkg/std"
++)
++
++var stdOs std.Os
++
++var mapNetStatIn = map[string]uint{
++ "name": 0,
++ "mtu": 1,
++ "network": 2,
++ "address": 3,
++ "packets": 4,
++ "errors": 5,
++ "dropped": 6,
++ "bytes": 7,
++}
++
++var mapNetStatOut = map[string]uint{
++ "packets": 8,
++ "errors": 9,
++ "bytes": 10,
++ "collisions": 11,
++}
++
++func (p *Plugin) addStatNum(statName string, mapNetStat map[string]uint, statNums *[]uint) error {
++ if statNum, ok := mapNetStat[statName]; ok {
++ *statNums = append(*statNums, statNum)
++ } else {
++ return errors.New(errorInvalidSecondParam)
++ }
++ return nil
++}
++
++func (p *Plugin) getNetStats(networkIf string, statName string, dir dirFlag) (result uint64, err error) {
++ var statNums []uint
++
++ if dir&dirIn != 0 {
++ if err = p.addStatNum(statName, mapNetStatIn, &statNums); err != nil {
++ return
++ }
++ }
++
++ if dir&dirOut != 0 {
++ if err = p.addStatNum(statName, mapNetStatOut, &statNums); err != nil {
++ return
++ }
++ }
++
++ out, err := exec.Command("/usr/bin/netstat", "-bnI", networkIf).Output()
++ if err != nil {
++ log.Fatal("netstat failed: %v\n", err)
++ }
++ file := bytes.NewBufferString(string(out))
++
++ var total uint64
++loop:
++ for sLines := bufio.NewScanner(file); sLines.Scan(); {
++ dev := strings.Split(sLines.Text(), " ")
++
++ if len(dev) > 1 && networkIf == strings.TrimSpace(dev[0]) {
++ stats := strings.Fields(sLines.Text())
++
++ if len(stats) >= 12 {
++ for _, statNum := range statNums {
++ var res uint64
++
++ if res, err = strconv.ParseUint(stats[statNum], 10, 64); err != nil {
++ break loop
++ }
++ total += res
++ }
++ return total, nil
++ }
++ break
++ }
++ }
++ err = errors.New("Cannot find information for this network interface")
++ return
++}
++
++func (p *Plugin) getDevDiscovery() (netInterfaces []msgIfDiscovery, err error) {
++ out, err := exec.Command("/sbin/ifconfig", "-l").Output()
++ if err != nil {
++ log.Fatal("/sbin/ifconfig -a failed: %v\n", err)
++ }
++
++ netInterfaces = make([]msgIfDiscovery, 0)
++ netif := strings.Fields(string(out))
++ for _, i := range netif {
++ netInterfaces = append(netInterfaces, msgIfDiscovery{i})
++ }
++
++ return netInterfaces, nil
++}
++
++// Export -
++func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (result interface{}, err error) {
++ var direction dirFlag
++ var mode string
++
++ switch key {
++ case "net.if.discovery":
++ if len(params) > 0 {
++ return nil, errors.New(errorParametersNotAllowed)
++ }
++ var devices []msgIfDiscovery
++ if devices, err = p.getDevDiscovery(); err != nil {
++ return
++ }
++ var b []byte
++ if b, err = json.Marshal(devices); err != nil {
++ return
++ }
++ return string(b), nil
++ case "net.if.collisions":
++ if len(params) > 1 {
++ return nil, errors.New(errorTooManyParams)
++ }
++
++ if len(params) < 1 || params[0] == "" {
++ return nil, errors.New(errorEmptyIfName)
++ }
++ return p.getNetStats(params[0], "collisions", dirOut)
++ case "net.if.in":
++ direction = dirIn
++ case "net.if.out":
++ direction = dirOut
++ case "net.if.total":
++ direction = dirIn | dirOut
++ default:
++ /* SHOULD_NEVER_HAPPEN */
++ return nil, errors.New(errorUnsupportedMetric)
++ }
++
++ if len(params) < 1 || params[0] == "" {
++ return nil, errors.New(errorEmptyIfName)
++ }
++
++ if len(params) > 2 {
++ return nil, errors.New(errorTooManyParams)
++ }
++
++ if len(params) == 2 && params[1] != "" {
++ mode = params[1]
++ } else {
++ mode = "bytes"
++ }
++
++ return p.getNetStats(params[0], mode, direction)
++}
++
++func init() {
++ stdOs = std.NewOs()
++
++ plugin.RegisterMetrics(&impl, "NetIf",
++ "net.if.collisions", "Returns number of out-of-window collisions.",
++ "net.if.in", "Returns incoming traffic statistics on network interface.",
++ "net.if.out", "Returns outgoing traffic statistics on network interface.",
++ "net.if.total", "Returns sum of incoming and outgoing traffic statistics on network interface.",
++ "net.if.discovery", "Returns list of network interfaces. Used for low-level discovery.")
++
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_net_netif_netif__unsupported.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_net_netif_netif__unsupported.go
@@ -0,0 +1,8 @@
+--- src/go/plugins/net/netif/netif_unsupported.go.orig 2020-05-20 09:53:44 UTC
++++ src/go/plugins/net/netif/netif_unsupported.go
+@@ -1,4 +1,4 @@
+-// +build !linux,!windows
++// +build !linux,!windows,!freebsd
+
+ /*
+ ** Zabbix
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_net_tcp_tcp__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_net_tcp_tcp__freebsd.go
@@ -0,0 +1,38 @@
+--- src/go/plugins/net/tcp/tcp_freebsd.go.orig 2020-05-20 10:52:02 UTC
++++ src/go/plugins/net/tcp/tcp_freebsd.go
+@@ -0,0 +1,35 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package tcpudp
++
++import (
++ "errors"
++
++ "zabbix.com/pkg/plugin"
++)
++
++func exportSystemTcpListen(port uint16) (result interface{}, err error) {
++ return nil, errors.New("Not supported.")
++}
++
++func init() {
++ plugin.RegisterMetrics(&impl, "TCP",
++ "net.tcp.port", "Checks if it is possible to make TCP connection to specified port.")
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_plugins__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_plugins__freebsd.go
@@ -0,0 +1,45 @@
+--- src/go/plugins/plugins_freebsd.go.orig 2020-05-23 18:05:47 UTC
++++ src/go/plugins/plugins_freebsd.go
+@@ -0,0 +1,42 @@
++// build: freebsd
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package plugins
++
++import (
++ _ "zabbix.com/plugins/kernel"
++ _ "zabbix.com/plugins/log"
++ _ "zabbix.com/plugins/memcached"
++ _ "zabbix.com/plugins/mysql"
++ _ "zabbix.com/plugins/net/netif"
++ _ "zabbix.com/plugins/net/tcp"
++ _ "zabbix.com/plugins/net/udp"
++ _ "zabbix.com/plugins/proc"
++ _ "zabbix.com/plugins/redis"
++ _ "zabbix.com/plugins/systemrun"
++ _ "zabbix.com/plugins/system/cpu"
++ _ "zabbix.com/plugins/system/uname"
++ _ "zabbix.com/plugins/system/uptime"
++ _ "zabbix.com/plugins/vfs/file"
++ _ "zabbix.com/plugins/web"
++ _ "zabbix.com/plugins/zabbix/async"
++ _ "zabbix.com/plugins/zabbix/stats"
++ _ "zabbix.com/plugins/zabbix/sync"
++)
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_proc_proc__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_proc_proc__freebsd.go
@@ -0,0 +1,413 @@
+--- src/go/plugins/proc/proc_freebsd.go.orig 2020-05-20 10:37:47 UTC
++++ src/go/plugins/proc/proc_freebsd.go
+@@ -0,0 +1,410 @@
++// +build freebsd
++
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package proc
++
++/*
++#include <unistd.h>
++*/
++import "C"
++
++import (
++ "errors"
++ "math"
++ "os/user"
++ "regexp"
++ "strconv"
++ "sync"
++ "time"
++
++ "zabbix.com/pkg/log"
++ "zabbix.com/pkg/plugin"
++)
++
++const (
++ maxInactivityPeriod = time.Hour * 25
++ maxHistory = 60*15 + 1
++)
++
++// Plugin -
++type Plugin struct {
++ plugin.Base
++ queries map[procQuery]*cpuUtilStats
++ mutex sync.Mutex
++ scanid uint64
++ stats map[int64]*cpuUtil
++}
++
++var impl Plugin = Plugin{
++ stats: make(map[int64]*cpuUtil),
++ queries: make(map[procQuery]*cpuUtilStats),
++}
++
++type historyIndex int
++
++func (h historyIndex) inc() historyIndex {
++ h++
++ if h == maxHistory {
++ h = 0
++ }
++ return h
++}
++
++func (h historyIndex) dec() historyIndex {
++ h--
++ if h < 0 {
++ h = maxHistory - 1
++ }
++ return h
++}
++
++func (h historyIndex) sub(value historyIndex) historyIndex {
++ h -= value
++ for h < 0 {
++ h += maxHistory
++ }
++ return h
++}
++
++type cpuUtilData struct {
++ utime uint64
++ stime uint64
++ timestamp time.Time
++}
++
++type cpuUtilStats struct {
++ scanid uint64
++ accessed time.Time
++ err error
++ cmdlinePattern *regexp.Regexp
++ history []cpuUtilData
++ tail historyIndex
++ head historyIndex
++}
++
++type cpuUtilQuery struct {
++ procQuery
++ userid int64
++ pids []int64
++ cmdlinePattern *regexp.Regexp
++ utime uint64
++ stime uint64
++}
++
++type procQuery struct {
++ name string
++ user string
++ cmdline string
++}
++
++const (
++ procInfoPid = 1 << iota
++ procInfoName
++ procInfoUser
++ procInfoCmdline
++)
++
++type procInfo struct {
++ pid int64
++ name string
++ userid int64
++ cmdline string
++ arg0 string
++}
++
++type cpuUtil struct {
++ utime uint64
++ stime uint64
++ started uint64
++ err error
++}
++
++
++func (q *cpuUtilQuery) match(p *procInfo) bool {
++ if q.name != "" && q.name != p.name && q.name != p.arg0 {
++ return false
++ }
++ if q.user != "" && q.userid != p.userid {
++ return false
++ }
++ if q.cmdline != "" && !q.cmdlinePattern.Match([]byte(p.cmdline)) {
++ return false
++ }
++ return true
++}
++
++func newCpuUtilQuery(q *procQuery, pattern *regexp.Regexp) (query *cpuUtilQuery, err error) {
++ query = &cpuUtilQuery{procQuery: *q}
++ if q.user != "" {
++ var u *user.User
++ if u, err = user.Lookup(q.user); err != nil {
++ return
++ }
++ if query.userid, err = strconv.ParseInt(u.Uid, 10, 64); err != nil {
++ return
++ }
++ }
++ query.cmdlinePattern = pattern
++ return
++}
++
++func (p *Plugin) prepareQueries() (queries []*cpuUtilQuery, flags int) {
++ now := time.Now()
++ flags = procInfoPid
++
++ queries = make([]*cpuUtilQuery, 0, len(p.queries))
++ p.mutex.Lock()
++ for q, stats := range p.queries {
++ if now.Sub(stats.accessed) > maxInactivityPeriod {
++ p.Debugf("removed unused CPU utilisation query %+v", q)
++ delete(p.queries, q)
++ continue
++ }
++ var query *cpuUtilQuery
++ if query, stats.err = newCpuUtilQuery(&q, stats.cmdlinePattern); stats.err != nil {
++ p.Debugf("cannot create CPU utilisation query %+v: %s", q, stats.err)
++ continue
++ }
++ queries = append(queries, query)
++ stats.scanid = p.scanid
++ if q.name != "" {
++ flags |= procInfoName | procInfoCmdline
++ }
++ if q.user != "" {
++ flags |= procInfoUser
++ }
++ if q.cmdline != "" {
++ flags |= procInfoCmdline
++ }
++ }
++ p.mutex.Unlock()
++ return
++}
++
++func (p *Plugin) Collect() (err error) {
++ if log.CheckLogLevel(log.Trace) {
++ p.Tracef("In %s() queries:%d", log.Caller(), len(p.queries))
++ defer p.Tracef("End of %s()", log.Caller())
++ }
++ p.scanid++
++ queries, flags := p.prepareQueries()
++ var processes []*procInfo
++ if processes, err = p.getProcesses(flags); err != nil {
++ return
++ }
++ p.Tracef("%s() queries:%d", log.Caller(), len(p.queries))
++
++ stats := make(map[int64]*cpuUtil)
++ // find processes matching prepared queries
++ for _, p := range processes {
++ var monitored bool
++ for _, q := range queries {
++ if q.match(p) {
++ q.pids = append(q.pids, p.pid)
++ monitored = true
++ }
++ }
++ if monitored {
++ stats[p.pid] = &cpuUtil{}
++ }
++ }
++
++ if log.CheckLogLevel(log.Trace) {
++ for _, q := range queries {
++ p.Tracef("%s() name:%s user:%s cmdline:%s pids:%v", log.Caller(), q.name, q.user, q.cmdline, q.pids)
++ }
++ }
++
++ now := time.Now()
++ for pid, stat := range stats {
++ p.getProcCpuUtil(pid, stat)
++ if stat.err != nil {
++ p.Debugf("cannot get process %d CPU utilisation statistics: %s", pid, stat.err)
++ }
++ }
++
++ // gather process utilization for queries
++ for _, q := range queries {
++ for _, pid := range q.pids {
++ var stat, last *cpuUtil
++ var ok bool
++ if stat, ok = stats[pid]; !ok || stat.err != nil {
++ continue
++ }
++ if last, ok = p.stats[pid]; !ok || stat.err != nil {
++ continue
++ }
++ if stat.started == last.started {
++ q.utime += stat.utime - last.utime
++ q.stime += stat.stime - last.stime
++ }
++ }
++ }
++
++ p.stats = stats
++
++ // update statistics
++ p.Tracef("%s() update statistics", log.Caller())
++ p.mutex.Lock()
++ for _, q := range queries {
++ if stat, ok := p.queries[q.procQuery]; ok {
++ if stat.scanid != p.scanid {
++ continue
++ }
++ var last *cpuUtilData
++ if stat.tail != stat.head {
++ last = &stat.history[stat.tail.dec()]
++ }
++ slot := &stat.history[stat.tail]
++ slot.utime = q.utime
++ slot.stime = q.stime
++ slot.timestamp = now
++ if last != nil {
++ slot.utime += last.utime
++ slot.stime += last.stime
++ }
++ stat.tail = stat.tail.inc()
++ if stat.tail == stat.head {
++ stat.head = stat.head.inc()
++ }
++ }
++ }
++ p.mutex.Unlock()
++
++ return nil
++}
++
++func (p *Plugin) Period() int {
++ return 1
++}
++
++const (
++ timeUser = 1 << iota
++ timeSystem
++ timeTotal = timeUser | timeSystem
++)
++
++// Export -
++func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (result interface{}, err error) {
++ if ctx == nil {
++ return nil, errors.New("This item is available only in daemon mode.")
++ }
++
++ var name, user, cmdline, mode, utiltype string
++ switch len(params) {
++ case 5:
++ mode = params[4]
++ fallthrough
++ case 4:
++ cmdline = params[3]
++ fallthrough
++ case 3:
++ utiltype = params[2]
++ fallthrough
++ case 2:
++ user = params[1]
++ fallthrough
++ case 1:
++ name = params[0]
++ case 0:
++ default:
++ return nil, errors.New("Too many parameters.")
++ }
++
++ var utilrange historyIndex
++ switch mode {
++ case "avg1", "":
++ utilrange = 60
++ case "avg5":
++ utilrange = 300
++ case "avg15":
++ utilrange = 900
++ default:
++ return nil, errors.New("Invalid fifth parameter.")
++ }
++
++ var typeflags uint
++ switch utiltype {
++ case "total", "":
++ typeflags |= timeTotal
++ case "user":
++ typeflags |= timeUser
++ case "system":
++ typeflags |= timeSystem
++ default:
++ return nil, errors.New("Invalid third parameter.")
++ }
++
++ now := time.Now()
++ query := procQuery{name: name, user: user, cmdline: cmdline}
++ p.mutex.Lock()
++ defer p.mutex.Unlock()
++ if stats, ok := p.queries[query]; ok {
++ stats.accessed = now
++ if stats.err != nil {
++ p.Debugf("CPU utilisation gathering error %s", err)
++ return nil, stats.err
++ }
++ if stats.tail == stats.head {
++ return
++ }
++ totalnum := stats.tail - stats.head
++ if totalnum < 0 {
++ totalnum += maxHistory
++ }
++ if totalnum < 2 {
++ return
++ }
++ if totalnum < utilrange {
++ utilrange = totalnum
++ }
++ tail := &stats.history[stats.tail.dec()]
++ head := &stats.history[stats.tail.sub(utilrange)]
++
++ var ticks uint64
++ if typeflags&timeUser != 0 {
++ ticks += tail.utime - head.utime
++ }
++ if typeflags&timeSystem != 0 {
++ ticks += tail.stime - head.stime
++ }
++ /* 1e9 (nanoseconds) * 1e2 (percent) * 1e1 (one digit decimal place) */
++ ticks *= 1e12
++ ticks /= uint64(tail.timestamp.Sub(head.timestamp))
++
++ return math.Round(float64(ticks)/float64(C.sysconf(C._SC_CLK_TCK))) / 10, nil
++ }
++ stats := &cpuUtilStats{accessed: now, history: make([]cpuUtilData, maxHistory)}
++ if cmdline != "" {
++ stats.cmdlinePattern, err = regexp.Compile(cmdline)
++ }
++ if err == nil {
++ p.queries[query] = stats
++ p.Debugf("registered new CPU utilisation query: %s, %s, %s", name, user, cmdline)
++ } else {
++ p.Debugf("cannot register CPU utilisation query: %s", err)
++ }
++ return
++}
++
++func init() {
++ plugin.RegisterMetrics(&impl, "Proc", "proc.cpu.util", "Process CPU utilisation percentage.")
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_proc_procfs__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_proc_procfs__freebsd.go
@@ -0,0 +1,196 @@
+--- src/go/plugins/proc/procfs_freebsd.go.orig 2020-05-20 10:37:05 UTC
++++ src/go/plugins/proc/procfs_freebsd.go
+@@ -0,0 +1,193 @@
++// +build freebsd
++
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package proc
++
++import (
++ "bytes"
++ "fmt"
++ "io"
++ "os"
++ "strconv"
++ "syscall"
++)
++
++func read2k(filename string) (data []byte, err error) {
++ fd, err := syscall.Open(filename, syscall.O_RDONLY, 0)
++ if err != nil {
++ return
++ }
++ var n int
++ b := make([]byte, 2048)
++ if n, err = syscall.Read(fd, b); err == nil {
++ data = b[:n]
++ }
++ syscall.Close(fd)
++ return
++}
++
++func readAll(filename string) (data []byte, err error) {
++ fd, err := syscall.Open(filename, syscall.O_RDONLY, 0)
++ if err != nil {
++ return
++ }
++ defer syscall.Close(fd)
++ var buf bytes.Buffer
++ b := make([]byte, 2048)
++ for {
++ var n int
++ if n, err = syscall.Read(fd, b); err != nil {
++ return
++ }
++ if n == 0 {
++ return buf.Bytes(), nil
++ }
++ if _, err = buf.Write(b[:n]); err != nil {
++ return
++ }
++ }
++}
++
++func (p *Plugin) getProcessName(pid string) (name string, err error) {
++ var data []byte
++ if data, err = read2k("/compat/linux/proc/" + pid + "/stat"); err != nil {
++ return
++ }
++ var left, right int
++ if right = bytes.LastIndexByte(data, ')'); right == -1 {
++ return "", fmt.Errorf("cannot find process name ending position in /compat/linux/proc/%s/stat", pid)
++ }
++ if left = bytes.IndexByte(data[:right], '('); left == -1 {
++ return "", fmt.Errorf("cannot find process name starting position in /compat/linux/proc/%s/stat", pid)
++ }
++ return string(data[left+1 : right]), nil
++}
++
++func (p *Plugin) getProcessUserID(pid string) (userid int64, err error) {
++ var fi os.FileInfo
++ if fi, err = os.Stat("/compat/linux/proc/" + pid); err != nil {
++ return
++ }
++ return int64(fi.Sys().(*syscall.Stat_t).Uid), nil
++}
++
++func (p *Plugin) getProcessCmdline(pid string, flags int) (arg0 string, cmdline string, err error) {
++ var data []byte
++ if data, err = readAll("/compat/linux/proc/" + pid + "/cmdline"); err != nil {
++ return
++ }
++
++ if flags&procInfoName != 0 {
++ if end := bytes.IndexByte(data, 0); end != -1 {
++ if pos := bytes.LastIndexByte(data[:end], '/'); pos != -1 {
++ arg0 = string(data[pos+1 : end])
++ } else {
++ arg0 = string(data[:end])
++ }
++ } else {
++ arg0 = string(data)
++ }
++ }
++
++ for i := 0; i < len(data); i++ {
++ if data[i] == 0 {
++ data[i] = ' '
++ }
++ }
++
++ if len(data) != 0 && data[len(data)-1] == ' ' {
++ data = data[:len(data)-1]
++ }
++
++ return arg0, string(data), nil
++}
++
++func (p *Plugin) getProcCpuUtil(pid int64, stat *cpuUtil) {
++ var data []byte
++ if data, stat.err = read2k(fmt.Sprintf("/compat/linux/proc/%d/stat", pid)); stat.err != nil {
++ return
++ }
++ var pos int
++ if pos = bytes.LastIndexByte(data, ')'); pos == -1 || len(data[pos:]) < 2 {
++ stat.err = fmt.Errorf("cannot find CPU statistic starting position in /compat/linux/proc/%d/stat", pid)
++ return
++ }
++ stats := bytes.Split(data[pos+2:], []byte{' '})
++ if len(stats) < 20 {
++ stat.err = fmt.Errorf("cannot parse CPU statistics in /compat/linux/proc/%d/stat", pid)
++ return
++ }
++ if stat.utime, stat.err = strconv.ParseUint(string(stats[11]), 10, 64); stat.err != nil {
++ return
++ }
++ if stat.stime, stat.err = strconv.ParseUint(string(stats[12]), 10, 64); stat.err != nil {
++ return
++ }
++ if stat.started, stat.err = strconv.ParseUint(string(stats[19]), 10, 64); stat.err != nil {
++ return
++ }
++}
++
++func (p *Plugin) getProcesses(flags int) (processes []*procInfo, err error) {
++ var entries []os.FileInfo
++ f, err := os.Open("/compat/linux/proc")
++ if err != nil {
++ return nil, err
++ }
++ defer f.Close()
++
++ for entries, err = f.Readdir(1); err != io.EOF; entries, err = f.Readdir(1) {
++ if err != nil {
++ return nil, err
++ }
++
++ if !entries[0].IsDir() {
++ continue
++ }
++ var pid int64
++ var tmperr error
++ if pid, tmperr = strconv.ParseInt(entries[0].Name(), 10, 64); tmperr != nil {
++ continue
++ }
++ info := &procInfo{pid: pid}
++ if flags&procInfoName != 0 {
++ if info.name, tmperr = p.getProcessName(entries[0].Name()); tmperr != nil {
++ p.Debugf("cannot get process %s name: %s", entries[0].Name(), tmperr)
++ continue
++ }
++ }
++ if flags&procInfoUser != 0 {
++ if info.userid, tmperr = p.getProcessUserID(entries[0].Name()); tmperr != nil {
++ p.Debugf("cannot get process %s user id: %s", entries[0].Name(), tmperr)
++ continue
++ }
++ }
++ if flags&procInfoCmdline != 0 {
++ if info.arg0, info.cmdline, tmperr = p.getProcessCmdline(entries[0].Name(), flags); tmperr != nil {
++ p.Debugf("cannot get process %s command line: %s", entries[0].Name(), tmperr)
++ continue
++ }
++ }
++ processes = append(processes, info)
++ }
++
++ return processes, nil
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_system_cpu_cpu__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_system_cpu_cpu__freebsd.go
@@ -0,0 +1,152 @@
+--- src/go/plugins/system/cpu/cpu_freebsd.go.orig 2020-05-20 10:00:53 UTC
++++ src/go/plugins/system/cpu/cpu_freebsd.go
+@@ -0,0 +1,149 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package cpu
++
++/*
++#include <unistd.h>
++*/
++import "C"
++
++import (
++ "bufio"
++ "bytes"
++ "os"
++ "strconv"
++ "strings"
++
++ "zabbix.com/pkg/plugin"
++)
++
++// Plugin -
++type Plugin struct {
++ plugin.Base
++ cpus []*cpuUnit
++}
++
++const (
++ procStatLocation = "/compat/linux/proc/stat"
++)
++
++func (p *Plugin) getCpuLoad(params []string) (result interface{}, err error) {
++ return nil, plugin.UnsupportedMetricError
++}
++
++func (p *Plugin) Collect() (err error) {
++ var file *os.File
++ if file, err = os.Open(procStatLocation); err != nil {
++ return err
++ }
++ defer file.Close()
++
++ var buf bytes.Buffer
++ if _, err = buf.ReadFrom(file); err != nil {
++ return
++ }
++
++ for _, cpu := range p.cpus {
++ cpu.status = cpuStatusOffline
++ }
++
++ scanner := bufio.NewScanner(&buf)
++ for scanner.Scan() {
++ line := scanner.Text()
++ if !strings.HasPrefix(line, "cpu") {
++ continue
++ }
++ fields := strings.Fields(line)
++ var index, status int
++ if len(fields[0]) > 3 {
++ var i int64
++ if i, err = strconv.ParseInt(fields[0][3:], 10, 32); err != nil {
++ return
++ }
++ if index = int(i); index < 0 || index+1 >= len(p.cpus) {
++ p.Debugf("invalid CPU index %d", index)
++ continue
++ }
++
++ status = cpuStatusOnline
++ } else {
++ index = -1
++ }
++
++ cpu := p.cpus[index+1]
++ cpu.status = status
++
++ slot := &cpu.history[cpu.tail]
++ num := len(slot.counters)
++ if num > len(fields)-1 {
++ num = len(fields) - 1
++ }
++ for i := 0; i < num; i++ {
++ slot.counters[i], _ = strconv.ParseUint(fields[i+1], 10, 64)
++ }
++ for i := num; i < len(slot.counters); i++ {
++ slot.counters[i] = 0
++ }
++ // Linux includes guest times in user and nice times
++ slot.counters[counterUser] -= slot.counters[counterGcpu]
++ slot.counters[counterNice] -= slot.counters[counterGnice]
++
++ if cpu.tail = cpu.tail.inc(); cpu.tail == cpu.head {
++ cpu.head = cpu.head.inc()
++ }
++ }
++ return nil
++}
++
++func numCPU() int {
++ return int(C.sysconf(C._SC_NPROCESSORS_CONF))
++}
++
++func (p *Plugin) Start() {
++ p.cpus = p.newCpus(numCPU())
++}
++
++func (p *Plugin) Stop() {
++ p.cpus = nil
++}
++
++func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (result interface{}, err error) {
++ if p.cpus == nil || p.cpus[0].head == p.cpus[0].tail {
++ // no data gathered yet
++ return
++ }
++ switch key {
++ case "system.cpu.discovery":
++ return p.getCpuDiscovery(params)
++ case "system.cpu.num":
++ return p.getCpuNum(params)
++ case "system.cpu.util":
++ return p.getCpuUtil(params)
++ default:
++ return nil, plugin.UnsupportedMetricError
++ }
++}
++
++func init() {
++ plugin.RegisterMetrics(&impl, pluginName,
++ "system.cpu.discovery", "List of detected CPUs/CPU cores, used for low-level discovery.",
++ "system.cpu.num", "Number of CPUs.",
++ "system.cpu.util", "CPU utilisation percentage.")
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_system_cpu_cpucounters__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_system_cpu_cpucounters__freebsd.go
@@ -0,0 +1,104 @@
+--- src/go/plugins/system/cpu/cpucounters_freebsd.go.orig 2020-05-20 10:07:01 UTC
++++ src/go/plugins/system/cpu/cpucounters_freebsd.go
+@@ -0,0 +1,101 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2019 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package cpu
++
++const (
++ counterUnknown cpuCounter = iota - 1
++ counterUser
++ counterNice
++ counterSystem
++ counterIdle
++ counterIowait
++ counterIrq
++ counterSoftirq
++ counterSteal
++ counterGcpu
++ counterGnice
++ counterNum // number of cpu counters
++)
++
++type cpuCounters struct {
++ counters [counterNum]uint64
++}
++
++func counterByType(name string) (counter cpuCounter) {
++ switch name {
++ case "", "user":
++ return counterUser
++ case "idle":
++ return counterIdle
++ case "nice":
++ return counterNice
++ case "system":
++ return counterSystem
++ case "iowait":
++ return counterIowait
++ case "interrupt":
++ return counterIrq
++ case "softirq":
++ return counterSoftirq
++ case "steal":
++ return counterSteal
++ case "guest":
++ return counterGcpu
++ case "guest_nice":
++ return counterGnice
++ default:
++ return counterUnknown
++ }
++}
++
++func (c *cpuUnit) counterAverage(counter cpuCounter, period historyIndex) (result interface{}) {
++ if c.head == c.tail {
++ return
++ }
++ var tail, head *cpuCounters
++ totalnum := c.tail - c.head
++ if totalnum < 0 {
++ totalnum += maxHistory
++ }
++ if totalnum < 2 {
++ // need at least two samples to calculate utilization
++ return
++ }
++ if totalnum-1 < period {
++ period = totalnum - 1
++ }
++ tail = &c.history[c.tail.dec()]
++ head = &c.history[c.tail.sub(period+1)]
++
++ var value, total uint64
++ for i := 0; i < len(tail.counters); i++ {
++ if tail.counters[i] > head.counters[i] {
++ total += tail.counters[i] - head.counters[i]
++ }
++ }
++ if total == 0 {
++ return
++ }
++
++ if tail.counters[counter] > head.counters[counter] {
++ value = tail.counters[counter] - head.counters[counter]
++ }
++ return float64(value) * 100 / float64(total)
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_system_uname_uname__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_system_uname_uname__freebsd.go
@@ -0,0 +1,86 @@
+--- src/go/plugins/system/uname/uname_freebsd.go.orig 2020-05-23 18:02:49 UTC
++++ src/go/plugins/system/uname/uname_freebsd.go
+@@ -0,0 +1,83 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package uname
++
++import (
++ "errors"
++ "fmt"
++
++ "golang.org/x/sys/unix"
++)
++
++func arrayToString(unameArray *[256]byte) string {
++ var byteString [256]byte
++ var indexLength int
++ for ; indexLength < len(unameArray); indexLength++ {
++ if 0 == unameArray[indexLength] {
++ break
++ }
++ byteString[indexLength] = uint8(unameArray[indexLength])
++ }
++ return string(byteString[:indexLength])
++}
++
++func getUname(params []string) (uname string, err error) {
++ if len(params) > 0 {
++ return "", errors.New("Too many parameters.")
++ }
++
++ var utsname unix.Utsname
++ if err = unix.Uname(&utsname); err != nil {
++ err = fmt.Errorf("Cannot obtain system information: %s", err.Error())
++ return
++ }
++ uname = fmt.Sprintf("%s %s %s %s %s", arrayToString(&utsname.Sysname), arrayToString(&utsname.Nodename),
++ arrayToString(&utsname.Release), arrayToString(&utsname.Version), arrayToString(&utsname.Machine))
++
++ return uname, nil
++}
++
++func getHostname(params []string) (hostname string, err error) {
++ if len(params) > 0 {
++ return "", errors.New("Too many parameters.")
++ }
++
++ var utsname unix.Utsname
++ if err = unix.Uname(&utsname); err != nil {
++ err = fmt.Errorf("Cannot obtain system information: %s", err.Error())
++ return
++ }
++
++ return arrayToString(&utsname.Nodename), nil
++}
++
++func getSwArch(params []string) (uname string, err error) {
++ if len(params) > 0 {
++ return "", errors.New("Too many parameters.")
++ }
++
++ var utsname unix.Utsname
++ if err = unix.Uname(&utsname); err != nil {
++ err = fmt.Errorf("Cannot obtain system information: %s", err.Error())
++ return
++ }
++
++ return arrayToString(&utsname.Machine), nil
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_system_uptime_uptime__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_system_uptime_uptime__freebsd.go
@@ -0,0 +1,43 @@
+--- src/go/plugins/system/uptime/uptime_freebsd.go.orig 2020-05-23 17:58:34 UTC
++++ src/go/plugins/system/uptime/uptime_freebsd.go
+@@ -0,0 +1,40 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package uptime
++
++import (
++ "fmt"
++ "time"
++ "unsafe"
++ "syscall"
++
++ "golang.org/x/sys/unix"
++)
++
++func getUptime() (uptime int, err error) {
++ buf, err := unix.SysctlRaw("kern.boottime")
++ if err != nil {
++ err = fmt.Errorf("Cannot read boot time from kern.boottime: %s", err.Error())
++ return
++ }
++
++ tv := *(*syscall.Timeval)(unsafe.Pointer((&buf[0])))
++ return int((time.Now().Unix()) - tv.Sec), nil
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_vfs_dev_dev__freebsd.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_vfs_dev_dev__freebsd.go
@@ -0,0 +1,266 @@
+--- src/go/plugins/vfs/dev/dev_freebsd.go.orig 2020-05-23 18:20:58 UTC
++++ src/go/plugins/vfs/dev/dev_freebsd.go
+@@ -0,0 +1,263 @@
++/*
++** Zabbix
++** Copyright (C) 2001-2020 Zabbix SIA
++**
++** This program is free software; you can redistribute it and/or modify
++** it under the terms of the GNU General Public License as published by
++** the Free Software Foundation; either version 2 of the License, or
++** (at your option) any later version.
++**
++** This program is distributed in the hope that it will be useful,
++** but WITHOUT ANY WARRANTY; without even the implied warranty of
++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++** GNU General Public License for more details.
++**
++** You should have received a copy of the GNU General Public License
++** along with this program; if not, write to the Free Software
++** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++**/
++
++package vfsdev
++
++import (
++ "bufio"
++ "bytes"
++ "encoding/json"
++ "errors"
++ "fmt"
++ "io/ioutil"
++ "math"
++ "os"
++ "strconv"
++ "strings"
++ "syscall"
++ "time"
++
++ "golang.org/x/sys/unix"
++)
++
++const (
++ devLocation = "/dev/"
++ sysBlkdevLocation = "/sys/dev/block/"
++ devtypePrefix = "DEVTYPE="
++ diskstatLocation = "/proc/diskstats"
++)
++
++type devRecord struct {
++ Name string `json:"{#DEVNAME}"`
++ Type string `json:"{#DEVTYPE}"`
++}
++
++func (p *Plugin) getDiscovery() (out string, err error) {
++ var entries []os.FileInfo
++ if entries, err = ioutil.ReadDir(devLocation); err != nil {
++ return
++ }
++
++ var sysfs bool
++ if stat, tmperr := os.Stat(sysBlkdevLocation); tmperr == nil {
++ sysfs = stat.IsDir()
++ }
++
++ devs := make([]*devRecord, 0)
++ for _, entry := range entries {
++ if stat, tmperr := os.Stat(devLocation + entry.Name()); tmperr == nil {
++ if stat.Mode()&os.ModeType == os.ModeDevice {
++ dev := &devRecord{Name: entry.Name()}
++ if sysfs {
++ rdev := stat.Sys().(*syscall.Stat_t).Rdev
++ filename := fmt.Sprintf("%s%d:%d/uevent", sysBlkdevLocation, unix.Major(rdev), unix.Minor(rdev))
++ if file, tmperr := os.Open(filename); tmperr == nil {
++ scanner := bufio.NewScanner(file)
++ for scanner.Scan() {
++ if strings.HasPrefix(scanner.Text(), devtypePrefix) {
++ dev.Type = scanner.Text()[len(devtypePrefix):]
++ }
++ }
++ file.Close()
++ }
++ }
++ devs = append(devs, dev)
++ }
++ }
++ }
++ var b []byte
++ if b, err = json.Marshal(&devs); err != nil {
++ return
++ }
++ return string(b), nil
++}
++
++func (p *Plugin) getDeviceName(name string) (devName string, err error) {
++ if name == "" {
++ return "", nil
++ }
++ if !strings.HasPrefix(name, devLocation) {
++ name = devLocation + name
++ }
++ var stat os.FileInfo
++ if stat, err = os.Stat(name); err != nil {
++ return
++ }
++ var file *os.File
++ if file, err = os.Open(diskstatLocation); err != nil {
++ return
++ }
++ defer file.Close()
++
++ scanner := bufio.NewScanner(file)
++ for scanner.Scan() {
++ fields := strings.Fields(scanner.Text())
++ if len(fields) < 3 {
++ return "", fmt.Errorf("unexpected %s file format", diskstatLocation)
++ }
++ var major, minor uint64
++ if major, err = strconv.ParseUint(fields[0], 10, 32); err != nil {
++ return
++ }
++ if minor, err = strconv.ParseUint(fields[1], 10, 32); err != nil {
++ return
++ }
++ rdev := stat.Sys().(*syscall.Stat_t).Rdev
++ if uint64(unix.Major(rdev)) == major && uint64(unix.Minor(rdev)) == minor {
++ return fields[2], nil
++ }
++ }
++
++ return "nil", errors.New("no matching record found")
++}
++
++const (
++ diskstatMatchNone = iota
++ diskstatMatchMultiple
++ diskstatMatchSingle
++)
++
++func (p *Plugin) matchDiskstatFields(name string, rdev uint64, fields []string) (match int, err error) {
++ if name == "" {
++ return diskstatMatchMultiple, nil
++ }
++ if name == fields[2] {
++ return diskstatMatchSingle, nil
++ }
++ if rdev != math.MaxUint64 {
++ var major, minor uint64
++ if major, err = strconv.ParseUint(fields[0], 10, 32); err != nil {
++ return
++ }
++ if minor, err = strconv.ParseUint(fields[1], 10, 32); err != nil {
++ return
++ }
++ if uint64(unix.Major(rdev)) == major && uint64(unix.Minor(rdev)) == minor {
++ return diskstatMatchMultiple, nil
++ }
++ }
++ return diskstatMatchNone, nil
++}
++
++func (p *Plugin) scanDeviceStats(name string, buf *bytes.Buffer) (devstats *devStats, err error) {
++ rdev := uint64(math.MaxUint64)
++ if name != "" {
++ if !strings.HasPrefix(name, devLocation) {
++ name = devLocation + name
++ }
++ var stat os.FileInfo
++ if stat, err = os.Stat(name); err == nil {
++ rdev = stat.Sys().(*syscall.Stat_t).Rdev
++ }
++ }
++
++ var stats devStats
++ scanner := bufio.NewScanner(buf)
++ for scanner.Scan() {
++ fields := strings.Fields(scanner.Text())
++ if len(fields) < 7 {
++ return nil, fmt.Errorf("unexpected %s file format", diskstatLocation)
++ }
++ var match int
++ if match, err = p.matchDiskstatFields(name, rdev, fields); err != nil {
++ return
++ }
++ if match == diskstatMatchNone {
++ continue
++ }
++ if match == diskstatMatchSingle {
++ // 'reset' devstats, as it might contain some information from matching device numbers
++ var tmpstats devStats
++ devstats = &tmpstats
++ } else {
++ devstats = &stats
++ }
++ var rxop, rxsec, txop, txsec int
++ if len(fields) >= 14 {
++ rxop, rxsec, txop, txsec = 3, 5, 7, 9
++ } else {
++ rxop, rxsec, txop, txsec = 3, 4, 5, 6
++ }
++ var n uint64
++ if n, err = strconv.ParseUint(fields[rxop], 10, 64); err != nil {
++ return
++ }
++ devstats.rx.operations += n
++
++ if n, err = strconv.ParseUint(fields[rxsec], 10, 64); err != nil {
++ return
++ }
++ devstats.rx.sectors += n
++
++ if n, err = strconv.ParseUint(fields[txop], 10, 64); err != nil {
++ return
++ }
++ devstats.tx.operations += n
++
++ if n, err = strconv.ParseUint(fields[txsec], 10, 64); err != nil {
++ return
++ }
++ devstats.tx.sectors += n
++
++ if match == diskstatMatchSingle {
++ return
++ }
++ }
++ return
++}
++
++func (p *Plugin) getDeviceStats(name string) (stats *devStats, err error) {
++ var file *os.File
++ if file, err = os.Open(diskstatLocation); err != nil {
++ return
++ }
++ var buf bytes.Buffer
++ _, err = buf.ReadFrom(file)
++ file.Close()
++ if err != nil {
++ return
++ }
++ return p.scanDeviceStats(name, &buf)
++}
++
++func (p *Plugin) collectDeviceStats(devices map[string]*devUnit) (err error) {
++ var file *os.File
++ if file, err = os.Open(diskstatLocation); err != nil {
++ return
++ }
++
++ var buf bytes.Buffer
++ _, err = buf.ReadFrom(file)
++ file.Close()
++ if err != nil {
++ return
++ }
++ now := time.Now()
++
++ for _, dev := range devices {
++ if stats, tmperr := p.getDeviceStats(dev.name); tmperr == nil && stats != nil {
++ stats.clock = now.UnixNano()
++ dev.history[dev.tail] = *stats
++ if dev.tail = dev.tail.inc(); dev.tail == dev.head {
++ dev.head = dev.head.inc()
++ }
++ }
++ }
++ return
++}
Index: net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_vfs_file_time__nix.go
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/agent2-patches/patch-src_go_plugins_vfs_file_time__nix.go
@@ -0,0 +1,24 @@
+--- src/go/plugins/vfs/file/time_nix.go.orig 2020-05-23 18:37:31 UTC
++++ src/go/plugins/vfs/file/time_nix.go
+@@ -24,7 +24,8 @@ package file
+ import (
+ "errors"
+ "fmt"
+- "syscall"
++
++ "golang.org/x/sys/unix"
+ )
+
+ // Export -
+@@ -41,9 +42,9 @@ func (p *Plugin) exportTime(params []string) (result i
+ if len(params) == 1 || params[1] == "" || params[1] == "modify" {
+ return f.ModTime().Unix(), nil
+ } else if params[1] == "access" {
+- return f.Sys().(*syscall.Stat_t).Atim.Sec, nil
++ return f.Sys().(*unix.Stat_t).Atim.Sec, nil
+ } else if params[1] == "change" {
+- return f.Sys().(*syscall.Stat_t).Ctim.Sec, nil
++ return f.Sys().(*unix.Stat_t).Ctim.Sec, nil
+ } else {
+ return nil, errors.New("Invalid second parameter.")
+ }
Index: net-mgmt/zabbix5-server/files/mock_server.in
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/mock_server.in
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+# PROVIDE: mock_server
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
+# enable mock_server:
+#
+# mock_server_enable (bool): Set to NO by default. Set it to YES to
+# enable mock_server.
+# mock_server_config (string): Set to the standard config file path by
+# default.
+# mock_server_pidfile (string): Location of the zabbix_agent pid file
+# Default is /var/run/zabbix/mock_server.pid
+# mock_server_paths (string): Set to standard path by default. Set a search
+# if you have custom userparams that need binaries elsewhere.
+#
+
+. /etc/rc.subr
+
+name="mock_server"
+rcvar=mock_server_enable
+
+load_rc_config $name
+
+: ${mock_server_enable:=NO}
+: ${mock_server_config:=%%ETCDIR%%/${name}.conf}
+: ${mock_server_pidfile:=/var/run/zabbix/mock_server.pid}
+: ${mock_server_paths:=$PATH}
+
+command="%%PREFIX%%/bin/${name}"
+required_files="${mock_server_config}"
+
+start_cmd=mock_server_cmd
+start_precmd=mock_server_precmd
+status_precmd=mock_server_precmd
+stop_precmd=mock_server_precmd
+
+mock_server_precmd()
+{
+ if get_pidfile_from_conf PidFile ${mock_server_config}; then
+ pidfile="$_pidfile_from_conf"
+ else
+ pidfile=${mock_server_pidfile}
+ local rundir=${mock_server_pidfile%/*}
+ if [ ! -d $rundir ] ; then
+ install -d -m 0755 -o zabbix -g zabbix $rundir
+ fi
+ fi
+
+ # This shouldn't be necessary with pidfile, but empirically it was the
+ # only way to reap the parent PID instead of all PIDs from
+ # check_process, which may leak SysV IPC objects and prevent restart
+ # and/or race condition on restart.
+ rc_pid=$(check_pidfile ${pidfile} ${command})
+}
+
+mock_server_cmd()
+{
+ PATH=$mock_server_paths /usr/sbin/daemon -c -f -S -t "${name}" \
+ -p $mock_server_pidfile $command -c $mock_server_config
+}
+
+run_rc_command "$1"
Index: net-mgmt/zabbix5-server/files/pkg-message.in
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/pkg-message.in
@@ -0,0 +1,45 @@
+[
+{ type: install
+ message: <<EOM
+For Zabbix server and proxy daemons, as well as Zabbix frontend, a database is
+required. It is not needed to run Zabbix agent.
+
+% cd %%DATADIR%%/%%ZABBIX_BUILD%%/database
+
+And follow the instructions:
+https://www.zabbix.com/documentation/5.0/manual/appendix/install/db_scripts
+
+Upgrade notes for 5.0.0:
+https://www.zabbix.com/documentation/5.0/manual/installation/upgrade_notes_500
+
+Upgrade procedure:
+https://www.zabbix.com/documentation/5.0/manual/installation/upgrade/sources
+
+Please see https://www.zabbix.com/ for detailed information about Zabbix.
+
+Official Zabbix documentation:
+https://www.zabbix.com/documentation/5.0/start
+
+For Zabbix frontend "Welcome" screen. Enter the user name Admin with password
+zabbix to log in as a Zabbix superuser.
+
+For use NMAP please edit sudoers
+
+This is a Zabbix Standard release!
+
+Standard Zabbix releases are supported for Zabbix customers during six (6)
+months of Full Support (general, critical and security issues) until the next
+Zabbix stable release, plus one (1) additional month of Limited Support
+(critical and security issues only). Zabbix Standard version release will result
+in change of the second version number.
+
+Stable release: Zabbix 5.0
+Release date: May 12, 2020
+End of Full Support: May 31, 2023
+End of Limited Support: May 31, 2025
+
+Zabbix Life Cycle & Release Policy:
+https://www.zabbix.com/life_cycle_and_release_policy
+EOM
+}
+]
Index: net-mgmt/zabbix5-server/files/zabbix_agent2.in
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/zabbix_agent2.in
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+# PROVIDE: zabbix_agent2
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
+# enable zabbix_agent2:
+#
+# zabbix_agent2_enable (bool): Set to NO by default. Set it to YES to
+# enable zabbix_agent2.
+# zabbix_agent2_config (string): Set to the standard config file path by
+# default.
+# zabbix_agent2_pidfile (string): Location of the zabbix_agent pid file
+# Default is /var/run/zabbix/zabbix_agent2.pid
+# zabbix_agent2_paths (string): Set to standard path by default. Set a search
+# if you have custom userparams that need binaries elsewhere.
+#
+
+. /etc/rc.subr
+
+name="zabbix_agent2"
+rcvar=zabbix_agent2_enable
+
+load_rc_config $name
+
+: ${zabbix_agent2_enable:=NO}
+: ${zabbix_agent2_config:=%%ETCDIR%%/${name}.conf}
+: ${zabbix_agent2_pidfile:=/var/run/zabbix/zabbix_agent2.pid}
+: ${zabbix_agent2_paths:=$PATH}
+
+command="%%PREFIX%%/sbin/${name}"
+required_files="${zabbix_agent2_config}"
+
+start_cmd=zabbix_agent2_cmd
+start_precmd=zabbix_agent2_precmd
+status_precmd=zabbix_agent2_precmd
+stop_precmd=zabbix_agent2_precmd
+
+zabbix_agent2_precmd()
+{
+ if get_pidfile_from_conf PidFile ${zabbix_agent2_config}; then
+ pidfile="$_pidfile_from_conf"
+ else
+ pidfile=${zabbix_agent2_pidfile}
+ local rundir=${zabbix_agent2_pidfile%/*}
+ if [ ! -d $rundir ] ; then
+ install -d -m 0755 -o zabbix -g zabbix $rundir
+ fi
+ fi
+
+ # This shouldn't be necessary with pidfile, but empirically it was the
+ # only way to reap the parent PID instead of all PIDs from
+ # check_process, which may leak SysV IPC objects and prevent restart
+ # and/or race condition on restart.
+ rc_pid=$(check_pidfile ${pidfile} ${command})
+}
+
+zabbix_agent2_cmd()
+{
+ PATH=$zabbix_agent2_paths /usr/sbin/daemon -c -f -S -t "${name}" \
+ $command -c $zabbix_agent2_config
+}
+
+run_rc_command "$1"
Index: net-mgmt/zabbix5-server/files/zabbix_agentd.in
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/zabbix_agentd.in
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+# PROVIDE: zabbix_agentd
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
+# enable zabbix_agentd:
+#
+# zabbix_agentd_enable (bool): Set to NO by default. Set it to YES to
+# enable zabbix_agentd.
+# zabbix_agentd_config (string): Set to the standard config file path by
+# default.
+# zabbix_agentd_pidfile (string): Location of the zabbix_agent pid file
+# Default is /var/run/zabbix/zabbix_agentd.pid
+# zabbix_agentd_paths (string): Set to standard path by default. Set a search
+# if you have custom userparams that need binaries elsewhere.
+#
+
+. /etc/rc.subr
+
+name="zabbix_agentd"
+rcvar=zabbix_agentd_enable
+
+load_rc_config $name
+
+: ${zabbix_agentd_enable:=NO}
+: ${zabbix_agentd_config:=%%ETCDIR%%/${name}.conf}
+: ${zabbix_agentd_pidfile:=/var/run/zabbix/zabbix_agentd.pid}
+: ${zabbix_agentd_paths:=$PATH}
+
+command="%%PREFIX%%/sbin/${name}"
+required_files="${zabbix_agentd_config}"
+
+start_cmd=zabbix_agentd_cmd
+start_precmd=zabbix_agentd_precmd
+status_precmd=zabbix_agentd_precmd
+stop_precmd=zabbix_agentd_precmd
+
+zabbix_agentd_precmd()
+{
+ if get_pidfile_from_conf PidFile ${zabbix_agentd_config}; then
+ pidfile="$_pidfile_from_conf"
+ else
+ pidfile=${zabbix_agentd_pidfile}
+ local rundir=${zabbix_agentd_pidfile%/*}
+ if [ ! -d $rundir ] ; then
+ install -d -m 0755 -o zabbix -g zabbix $rundir
+ fi
+ fi
+
+ # This shouldn't be necessary with pidfile, but empirically it was the
+ # only way to reap the parent PID instead of all PIDs from
+ # check_process, which may leak SysV IPC objects and prevent restart
+ # and/or race condition on restart.
+ rc_pid=$(check_pidfile ${pidfile} ${command})
+}
+
+zabbix_agentd_cmd()
+{
+ PATH=$zabbix_agentd_paths $command -c $zabbix_agentd_config
+}
+
+run_rc_command "$1"
Index: net-mgmt/zabbix5-server/files/zabbix_java.in
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/zabbix_java.in
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# PROVIDE: zabbix_java
+# REQUIRE: NETWORKING SERVERS
+# BEFORE: DAEMON
+# KEYWORD: shutdown
+#
+# Options to configure zabbix_java via /etc/rc.conf:
+#
+# zabbix_java_enable (bool):
+# Enable service on boot.
+# Default: NO
+#
+
+. /etc/rc.subr
+
+name="zabbix_java"
+rcvar=zabbix_java_enable
+
+load_rc_config $name
+
+: ${zabbix_java_enable:=NO}
+
+start_cmd="/usr/bin/su -m zabbix -c %%PREFIX%%/sbin/zabbix_java/startup.sh"
+stop_cmd="/usr/bin/su -m zabbix -c %%PREFIX%%/sbin/zabbix_java/shutdown.sh"
+
+run_rc_command "$1"
Index: net-mgmt/zabbix5-server/files/zabbix_proxy.in
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/zabbix_proxy.in
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+# PROVIDE: zabbix_proxy
+# REQUIRE: DAEMON
+%%PGSQL%%# REQUIRE: postgresql
+%%MYSQL%%# REQUIRE: mysql
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
+# enable zabbix_proxy:
+#
+# zabbix_proxy_enable (bool): Set to NO by default. Set it to YES to
+# enable zabbix_proxy.
+# zabbix_proxy_config (string): Set to the standard config file path by
+# default.
+# zabbix_proxy_pidfile (string): Location of the zabbix_proxy pid file
+# Default is /var/run/zabbix/zabbix_proxy.pid
+# zabbix_proxy_paths (string): Set to standard path by default. Set a search
+# if you have custom userparams that need binaries elsewhere.
+#
+
+. /etc/rc.subr
+
+name="zabbix_proxy"
+rcvar=zabbix_proxy_enable
+
+load_rc_config $name
+
+: ${zabbix_proxy_enable:=NO}
+: ${zabbix_proxy_config:=%%ETCDIR%%/${name}.conf}
+: ${zabbix_proxy_pidfile:=/var/run/zabbix/zabbix_proxy.pid}
+
+command="%%PREFIX%%/sbin/${name}"
+required_files="${zabbix_proxy_config}"
+
+start_cmd=zabbix_proxy_cmd
+start_precmd=zabbix_proxy_precmd
+status_precmd=zabbix_proxy_precmd
+stop_precmd=zabbix_proxy_precmd
+
+zabbix_proxy_precmd()
+{
+ if get_pidfile_from_conf PidFile ${zabbix_proxy_config}; then
+ pidfile="$_pidfile_from_conf"
+ else
+ pidfile=${zabbix_proxy_pidfile}
+ local rundir=${zabbix_proxy_pidfile%/*}
+ if [ ! -d $rundir ] ; then
+ install -d -m 0755 -o zabbix -g zabbix $rundir
+ fi
+ fi
+
+ # This shouldn't be necessary with pidfile, but empirically it was the
+ # only way to reap the parent PID instead of all PIDs from
+ # check_process, which may leak SysV IPC objects and prevent restart
+ # and/or race condition on restart.
+ rc_pid=$(check_pidfile ${pidfile} ${command})
+}
+
+zabbix_proxy_cmd()
+{
+ PATH=$zabbix_proxy_paths $command -c $zabbix_proxy_config
+}
+
+run_rc_command "$1"
Index: net-mgmt/zabbix5-server/files/zabbix_server.in
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/files/zabbix_server.in
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+# PROVIDE: zabbix_server
+# REQUIRE: DAEMON
+%%PGSQL%%# REQUIRE: postgresql
+%%MYSQL%%# REQUIRE: mysql
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
+# enable zabbix_server:
+#
+# zabbix_server_enable (bool): Set to NO by default. Set it to YES to
+# enable zabbix_server.
+# zabbix_server_config (string): Set to the standard config file path by
+# default.
+# zabbix_server_pidfile (string): Location of the zabbix_server pid file
+# Default is /var/run/zabbix/zabbix_server.pid
+# zabbix_server_paths (string): Set to standard path by default. Set a search
+# if you have custom userparams that need binaries elsewhere.
+#
+
+. /etc/rc.subr
+
+name="zabbix_server"
+rcvar=zabbix_server_enable
+
+load_rc_config $name
+
+: ${zabbix_server_enable:=NO}
+: ${zabbix_server_config:=%%ETCDIR%%/${name}.conf}
+: ${zabbix_server_pidfile:=/var/run/zabbix/zabbix_server.pid}
+: ${zabbix_server_paths:=$PATH}
+
+command="%%PREFIX%%/sbin/${name}"
+required_files="${zabbix_server_config}"
+
+start_cmd=zabbix_server_cmd
+start_precmd=zabbix_server_precmd
+status_precmd=zabbix_server_precmd
+stop_precmd=zabbix_server_precmd
+
+zabbix_server_precmd()
+{
+ if get_pidfile_from_conf PidFile ${zabbix_server_config}; then
+ pidfile="$_pidfile_from_conf"
+ else
+ pidfile=${zabbix_server_pidfile}
+ local rundir=${zabbix_server_pidfile%/*}
+ if [ ! -d $rundir ] ; then
+ install -d -m 0755 -o zabbix -g zabbix $rundir
+ fi
+ fi
+
+ # This shouldn't be necessary with pidfile, but empirically it was the
+ # only way to reap the parent PID instead of all PIDs from
+ # check_process, which may leak SysV IPC objects and prevent restart
+ # and/or race condition on restart.
+ rc_pid=$(check_pidfile ${pidfile} ${command})
+}
+
+zabbix_server_cmd()
+{
+ PATH=$zabbix_server_paths $command -c $zabbix_server_config
+}
+
+run_rc_command "$1"
Index: net-mgmt/zabbix5-server/pkg-descr
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/pkg-descr
@@ -0,0 +1,10 @@
+Zabbix is an enterprise-class open source distributed monitoring solution.
+
+Zabbix is software that monitors numerous parameters of a network and the
+health and integrity of servers. Zabbix uses a flexible notification
+mechanism that allows users to configure e-mail based alerts for virtually
+any event. This allows a fast reaction to server problems. Zabbix offers
+excellent reporting and data visualisation features based on the stored
+data. This makes Zabbix ideal for capacity planning.
+
+WWW: https://www.zabbix.com/
Index: net-mgmt/zabbix5-server/pkg-plist
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/pkg-plist
@@ -0,0 +1,22 @@
+bin/zabbix_js
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/mysql/data.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/mysql/images.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/mysql/schema.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/oracle/data.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/oracle/images.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/oracle/schema.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/postgresql/data.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/postgresql/images.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/postgresql/schema.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/postgresql/timescaledb.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/sqlite3/data.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/sqlite3/images.sql
+%%DATADIR%%/%%ZABBIX_BUILD%%/database/sqlite3/schema.sql
+%%ETCDIR%%/zabbix_%%ZABBIX_BUILD%%.conf.sample
+%%PROXY%%@dir %%ETCDIR%%/zabbix_proxy.conf.d
+%%SERVER%%@dir %%ETCDIR%%/zabbix_server.conf.d
+%%SERVER%%@dir %%ETCDIR%%/zabbix/alertscripts
+man/man8/zabbix_%%ZABBIX_BUILD%%.8.gz
+sbin/zabbix_%%ZABBIX_BUILD%%
+@dir %%ETCDIR%%/zabbix/externalscripts
+@dir lib/modules
Index: net-mgmt/zabbix5-server/pkg-plist.agent
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/pkg-plist.agent
@@ -0,0 +1,9 @@
+%%ETCDIR%%/zabbix_agentd.conf.sample
+bin/zabbix_get
+bin/zabbix_sender
+man/man1/zabbix_get.1.gz
+man/man1/zabbix_sender.1.gz
+man/man8/zabbix_%%ZABBIX_BUILD%%d.8.gz
+sbin/zabbix_agentd
+@dir %%ETCDIR%%/zabbix_agentd.conf.d
+@dir lib/modules
Index: net-mgmt/zabbix5-server/pkg-plist.agent2
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/pkg-plist.agent2
@@ -0,0 +1,5 @@
+bin/mock_server
+bin/zabbix_%%ZABBIX_BUILD%%
+%%ETCDIR%%/mock_server.conf.sample
+%%ETCDIR%%/active_checks.json.sample
+%%ETCDIR%%/zabbix_%%ZABBIX_BUILD%%.conf.sample
Index: net-mgmt/zabbix5-server/pkg-plist.frontend
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/pkg-plist.frontend
@@ -0,0 +1,1181 @@
+%%WWWDIR%%/actionconf.php
+%%WWWDIR%%/api_jsonrpc.php
+%%WWWDIR%%/app/.htaccess
+%%WWWDIR%%/app/controllers/CControllerAuditLogList.php
+%%WWWDIR%%/app/controllers/CControllerAuthenticationEdit.php
+%%WWWDIR%%/app/controllers/CControllerAuthenticationUpdate.php
+%%WWWDIR%%/app/controllers/CControllerAutoregEdit.php
+%%WWWDIR%%/app/controllers/CControllerAutoregUpdate.php
+%%WWWDIR%%/app/controllers/CControllerCharts.php
+%%WWWDIR%%/app/controllers/CControllerChartsView.php
+%%WWWDIR%%/app/controllers/CControllerChartsViewJson.php
+%%WWWDIR%%/app/controllers/CControllerDashboardAbstract.php
+%%WWWDIR%%/app/controllers/CControllerDashboardDelete.php
+%%WWWDIR%%/app/controllers/CControllerDashboardList.php
+%%WWWDIR%%/app/controllers/CControllerDashboardPropertiesCheck.php
+%%WWWDIR%%/app/controllers/CControllerDashboardPropertiesEdit.php
+%%WWWDIR%%/app/controllers/CControllerDashboardShareEdit.php
+%%WWWDIR%%/app/controllers/CControllerDashboardShareUpdate.php
+%%WWWDIR%%/app/controllers/CControllerDashboardUpdate.php
+%%WWWDIR%%/app/controllers/CControllerDashboardView.php
+%%WWWDIR%%/app/controllers/CControllerDashboardWidgetCheck.php
+%%WWWDIR%%/app/controllers/CControllerDashboardWidgetConfigure.php
+%%WWWDIR%%/app/controllers/CControllerDashboardWidgetEdit.php
+%%WWWDIR%%/app/controllers/CControllerDashboardWidgetRfRate.php
+%%WWWDIR%%/app/controllers/CControllerDashboardWidgetSanitize.php
+%%WWWDIR%%/app/controllers/CControllerDiscoveryView.php
+%%WWWDIR%%/app/controllers/CControllerExportXml.php
+%%WWWDIR%%/app/controllers/CControllerFavouriteCreate.php
+%%WWWDIR%%/app/controllers/CControllerFavouriteDelete.php
+%%WWWDIR%%/app/controllers/CControllerGuiEdit.php
+%%WWWDIR%%/app/controllers/CControllerGuiUpdate.php
+%%WWWDIR%%/app/controllers/CControllerHost.php
+%%WWWDIR%%/app/controllers/CControllerHostMacrosList.php
+%%WWWDIR%%/app/controllers/CControllerHostView.php
+%%WWWDIR%%/app/controllers/CControllerHostViewRefresh.php
+%%WWWDIR%%/app/controllers/CControllerHousekeepingEdit.php
+%%WWWDIR%%/app/controllers/CControllerHousekeepingUpdate.php
+%%WWWDIR%%/app/controllers/CControllerIconMapCreate.php
+%%WWWDIR%%/app/controllers/CControllerIconMapDelete.php
+%%WWWDIR%%/app/controllers/CControllerIconMapEdit.php
+%%WWWDIR%%/app/controllers/CControllerIconMapList.php
+%%WWWDIR%%/app/controllers/CControllerIconMapUpdate.php
+%%WWWDIR%%/app/controllers/CControllerImageCreate.php
+%%WWWDIR%%/app/controllers/CControllerImageDelete.php
+%%WWWDIR%%/app/controllers/CControllerImageEdit.php
+%%WWWDIR%%/app/controllers/CControllerImageList.php
+%%WWWDIR%%/app/controllers/CControllerImageUpdate.php
+%%WWWDIR%%/app/controllers/CControllerLatest.php
+%%WWWDIR%%/app/controllers/CControllerLatestView.php
+%%WWWDIR%%/app/controllers/CControllerLatestViewRefresh.php
+%%WWWDIR%%/app/controllers/CControllerMacrosEdit.php
+%%WWWDIR%%/app/controllers/CControllerMacrosUpdate.php
+%%WWWDIR%%/app/controllers/CControllerMapView.php
+%%WWWDIR%%/app/controllers/CControllerMediatypeCreate.php
+%%WWWDIR%%/app/controllers/CControllerMediatypeDelete.php
+%%WWWDIR%%/app/controllers/CControllerMediatypeDisable.php
+%%WWWDIR%%/app/controllers/CControllerMediatypeEdit.php
+%%WWWDIR%%/app/controllers/CControllerMediatypeEnable.php
+%%WWWDIR%%/app/controllers/CControllerMediatypeList.php
+%%WWWDIR%%/app/controllers/CControllerMediatypeUpdate.php
+%%WWWDIR%%/app/controllers/CControllerMenuPopup.php
+%%WWWDIR%%/app/controllers/CControllerMiscConfigEdit.php
+%%WWWDIR%%/app/controllers/CControllerMiscConfigUpdate.php
+%%WWWDIR%%/app/controllers/CControllerModuleEdit.php
+%%WWWDIR%%/app/controllers/CControllerModuleList.php
+%%WWWDIR%%/app/controllers/CControllerModuleScan.php
+%%WWWDIR%%/app/controllers/CControllerModuleUpdate.php
+%%WWWDIR%%/app/controllers/CControllerNotificationsGet.php
+%%WWWDIR%%/app/controllers/CControllerNotificationsMute.php
+%%WWWDIR%%/app/controllers/CControllerNotificationsRead.php
+%%WWWDIR%%/app/controllers/CControllerPopup.php
+%%WWWDIR%%/app/controllers/CControllerPopupAcknowledgeCreate.php
+%%WWWDIR%%/app/controllers/CControllerPopupAcknowledgeEdit.php
+%%WWWDIR%%/app/controllers/CControllerPopupActionAcknowledge.php
+%%WWWDIR%%/app/controllers/CControllerPopupActionOperation.php
+%%WWWDIR%%/app/controllers/CControllerPopupActionRecovery.php
+%%WWWDIR%%/app/controllers/CControllerPopupConditionActions.php
+%%WWWDIR%%/app/controllers/CControllerPopupConditionCommon.php
+%%WWWDIR%%/app/controllers/CControllerPopupConditionEventCorr.php
+%%WWWDIR%%/app/controllers/CControllerPopupConditionOperations.php
+%%WWWDIR%%/app/controllers/CControllerPopupDiscoveryCheck.php
+%%WWWDIR%%/app/controllers/CControllerPopupGeneric.php
+%%WWWDIR%%/app/controllers/CControllerPopupHttpStep.php
+%%WWWDIR%%/app/controllers/CControllerPopupItemTest.php
+%%WWWDIR%%/app/controllers/CControllerPopupItemTestEdit.php
+%%WWWDIR%%/app/controllers/CControllerPopupItemTestGetValue.php
+%%WWWDIR%%/app/controllers/CControllerPopupItemTestSend.php
+%%WWWDIR%%/app/controllers/CControllerPopupLldOperation.php
+%%WWWDIR%%/app/controllers/CControllerPopupLldOverride.php
+%%WWWDIR%%/app/controllers/CControllerPopupMaintenancePeriod.php
+%%WWWDIR%%/app/controllers/CControllerPopupMedia.php
+%%WWWDIR%%/app/controllers/CControllerPopupMediatypeMessage.php
+%%WWWDIR%%/app/controllers/CControllerPopupMediatypeTestEdit.php
+%%WWWDIR%%/app/controllers/CControllerPopupMediatypeTestSend.php
+%%WWWDIR%%/app/controllers/CControllerPopupOperationCommon.php
+%%WWWDIR%%/app/controllers/CControllerPopupScriptExec.php
+%%WWWDIR%%/app/controllers/CControllerPopupServices.php
+%%WWWDIR%%/app/controllers/CControllerPopupTestTriggerExpr.php
+%%WWWDIR%%/app/controllers/CControllerPopupTriggerExpr.php
+%%WWWDIR%%/app/controllers/CControllerPopupTriggerWizard.php
+%%WWWDIR%%/app/controllers/CControllerProblemView.php
+%%WWWDIR%%/app/controllers/CControllerProfileUpdate.php
+%%WWWDIR%%/app/controllers/CControllerProxyCreate.php
+%%WWWDIR%%/app/controllers/CControllerProxyDelete.php
+%%WWWDIR%%/app/controllers/CControllerProxyEdit.php
+%%WWWDIR%%/app/controllers/CControllerProxyHostDisable.php
+%%WWWDIR%%/app/controllers/CControllerProxyHostEnable.php
+%%WWWDIR%%/app/controllers/CControllerProxyList.php
+%%WWWDIR%%/app/controllers/CControllerProxyUpdate.php
+%%WWWDIR%%/app/controllers/CControllerRegExCreate.php
+%%WWWDIR%%/app/controllers/CControllerRegExDelete.php
+%%WWWDIR%%/app/controllers/CControllerRegExEdit.php
+%%WWWDIR%%/app/controllers/CControllerRegExList.php
+%%WWWDIR%%/app/controllers/CControllerRegExTest.php
+%%WWWDIR%%/app/controllers/CControllerRegExUpdate.php
+%%WWWDIR%%/app/controllers/CControllerReportServices.php
+%%WWWDIR%%/app/controllers/CControllerReportStatus.php
+%%WWWDIR%%/app/controllers/CControllerScriptCreate.php
+%%WWWDIR%%/app/controllers/CControllerScriptDelete.php
+%%WWWDIR%%/app/controllers/CControllerScriptEdit.php
+%%WWWDIR%%/app/controllers/CControllerScriptList.php
+%%WWWDIR%%/app/controllers/CControllerScriptUpdate.php
+%%WWWDIR%%/app/controllers/CControllerSearch.php
+%%WWWDIR%%/app/controllers/CControllerSystemWarning.php
+%%WWWDIR%%/app/controllers/CControllerTimeSelectorUpdate.php
+%%WWWDIR%%/app/controllers/CControllerTrigDisplayEdit.php
+%%WWWDIR%%/app/controllers/CControllerTrigDisplayUpdate.php
+%%WWWDIR%%/app/controllers/CControllerTrigSeverityEdit.php
+%%WWWDIR%%/app/controllers/CControllerTrigSeverityUpdate.php
+%%WWWDIR%%/app/controllers/CControllerUserCreate.php
+%%WWWDIR%%/app/controllers/CControllerUserDelete.php
+%%WWWDIR%%/app/controllers/CControllerUserEdit.php
+%%WWWDIR%%/app/controllers/CControllerUserEditGeneral.php
+%%WWWDIR%%/app/controllers/CControllerUserList.php
+%%WWWDIR%%/app/controllers/CControllerUserProfileEdit.php
+%%WWWDIR%%/app/controllers/CControllerUserProfileUpdate.php
+%%WWWDIR%%/app/controllers/CControllerUserUnblock.php
+%%WWWDIR%%/app/controllers/CControllerUserUpdate.php
+%%WWWDIR%%/app/controllers/CControllerUserUpdateGeneral.php
+%%WWWDIR%%/app/controllers/CControllerUsergroupCreate.php
+%%WWWDIR%%/app/controllers/CControllerUsergroupDelete.php
+%%WWWDIR%%/app/controllers/CControllerUsergroupEdit.php
+%%WWWDIR%%/app/controllers/CControllerUsergroupGrouprightAdd.php
+%%WWWDIR%%/app/controllers/CControllerUsergroupList.php
+%%WWWDIR%%/app/controllers/CControllerUsergroupMassUpdate.php
+%%WWWDIR%%/app/controllers/CControllerUsergroupTagfilterAdd.php
+%%WWWDIR%%/app/controllers/CControllerUsergroupUpdate.php
+%%WWWDIR%%/app/controllers/CControllerValuemapCreate.php
+%%WWWDIR%%/app/controllers/CControllerValuemapDelete.php
+%%WWWDIR%%/app/controllers/CControllerValuemapEdit.php
+%%WWWDIR%%/app/controllers/CControllerValuemapList.php
+%%WWWDIR%%/app/controllers/CControllerValuemapUpdate.php
+%%WWWDIR%%/app/controllers/CControllerWebView.php
+%%WWWDIR%%/app/controllers/CControllerWidget.php
+%%WWWDIR%%/app/controllers/CControllerWidgetActionLogView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetClockView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetDataOverView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetDiscoveryView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetFavGraphsView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetFavMapsView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetFavScreensView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetGraphView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetHostAvailView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetIterator.php
+%%WWWDIR%%/app/controllers/CControllerWidgetIteratorGraphPrototypeView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetMapView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetNavTreeItemEdit.php
+%%WWWDIR%%/app/controllers/CControllerWidgetNavTreeItemUpdate.php
+%%WWWDIR%%/app/controllers/CControllerWidgetNavTreeView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetPlainTextView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetProblemHostsView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetProblemsBySvView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetProblemsView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetSvgGraphView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetSystemInfoView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetTrigOverView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetUrlView.php
+%%WWWDIR%%/app/controllers/CControllerWidgetWebView.php
+%%WWWDIR%%/app/controllers/CControllerWorkingTimeEdit.php
+%%WWWDIR%%/app/controllers/CControllerWorkingTimeUpdate.php
+%%WWWDIR%%/app/partials/administration.usergroup.grouprights.html.php
+%%WWWDIR%%/app/partials/administration.usergroup.tagfilters.html.php
+%%WWWDIR%%/app/partials/common.filter.trigger.php
+%%WWWDIR%%/app/partials/configuration.tags.tab.php
+%%WWWDIR%%/app/partials/dataoverview.table.left.php
+%%WWWDIR%%/app/partials/dataoverview.table.top.php
+%%WWWDIR%%/app/partials/hostmacros.inherited.list.html.php
+%%WWWDIR%%/app/partials/hostmacros.list.html.php
+%%WWWDIR%%/app/partials/js/common.filter.trigger.js.php
+%%WWWDIR%%/app/partials/js/configuration.tags.tab.js.php
+%%WWWDIR%%/app/partials/js/massupdate.macros.tab.js.php
+%%WWWDIR%%/app/partials/layout.htmlpage.aside.php
+%%WWWDIR%%/app/partials/layout.htmlpage.footer.php
+%%WWWDIR%%/app/partials/layout.htmlpage.header.php
+%%WWWDIR%%/app/partials/massupdate.macros.tab.php
+%%WWWDIR%%/app/partials/monitoring.dashboard.breadcrumbs.php
+%%WWWDIR%%/app/partials/monitoring.host.view.html.php
+%%WWWDIR%%/app/partials/monitoring.latest.view.html.php
+%%WWWDIR%%/app/partials/trigoverview.table.left.php
+%%WWWDIR%%/app/partials/trigoverview.table.top.php
+%%WWWDIR%%/app/views/administration.authentication.edit.php
+%%WWWDIR%%/app/views/administration.autoreg.edit.php
+%%WWWDIR%%/app/views/administration.gui.edit.php
+%%WWWDIR%%/app/views/administration.housekeeping.edit.php
+%%WWWDIR%%/app/views/administration.iconmap.edit.php
+%%WWWDIR%%/app/views/administration.iconmap.list.php
+%%WWWDIR%%/app/views/administration.image.edit.php
+%%WWWDIR%%/app/views/administration.image.list.php
+%%WWWDIR%%/app/views/administration.macros.edit.php
+%%WWWDIR%%/app/views/administration.mediatype.edit.php
+%%WWWDIR%%/app/views/administration.mediatype.list.php
+%%WWWDIR%%/app/views/administration.miscconfig.edit.php
+%%WWWDIR%%/app/views/administration.module.edit.php
+%%WWWDIR%%/app/views/administration.module.list.php
+%%WWWDIR%%/app/views/administration.proxy.edit.php
+%%WWWDIR%%/app/views/administration.proxy.list.php
+%%WWWDIR%%/app/views/administration.regex.edit.php
+%%WWWDIR%%/app/views/administration.regex.list.php
+%%WWWDIR%%/app/views/administration.script.edit.php
+%%WWWDIR%%/app/views/administration.script.list.php
+%%WWWDIR%%/app/views/administration.trigdisplay.edit.php
+%%WWWDIR%%/app/views/administration.trigseverity.edit.php
+%%WWWDIR%%/app/views/administration.user.edit.php
+%%WWWDIR%%/app/views/administration.user.list.php
+%%WWWDIR%%/app/views/administration.usergroup.edit.php
+%%WWWDIR%%/app/views/administration.usergroup.grouprights.php
+%%WWWDIR%%/app/views/administration.usergroup.list.php
+%%WWWDIR%%/app/views/administration.usergroup.tagfilters.php
+%%WWWDIR%%/app/views/administration.valuemap.edit.php
+%%WWWDIR%%/app/views/administration.valuemap.list.php
+%%WWWDIR%%/app/views/administration.workingtime.edit.php
+%%WWWDIR%%/app/views/dashboard.properties.edit.php
+%%WWWDIR%%/app/views/dashboard.sharing.edit.php
+%%WWWDIR%%/app/views/hostmacros.list.php
+%%WWWDIR%%/app/views/js/administration.authentication.edit.js.php
+%%WWWDIR%%/app/views/js/administration.autoreg.edit.js.php
+%%WWWDIR%%/app/views/js/administration.housekeeping.edit.js.php
+%%WWWDIR%%/app/views/js/administration.iconmap.edit.js.php
+%%WWWDIR%%/app/views/js/administration.image.edit.js.php
+%%WWWDIR%%/app/views/js/administration.macros.edit.js.php
+%%WWWDIR%%/app/views/js/administration.mediatype.edit.js.php
+%%WWWDIR%%/app/views/js/administration.proxy.edit.js.php
+%%WWWDIR%%/app/views/js/administration.regex.edit.js.php
+%%WWWDIR%%/app/views/js/administration.script.edit.js.php
+%%WWWDIR%%/app/views/js/administration.trigdisplay.edit.js.php
+%%WWWDIR%%/app/views/js/administration.trigseverity.edit.js.php
+%%WWWDIR%%/app/views/js/administration.user.edit.common.js.php
+%%WWWDIR%%/app/views/js/administration.user.edit.js.php
+%%WWWDIR%%/app/views/js/administration.usergroup.edit.js.php
+%%WWWDIR%%/app/views/js/administration.userprofile.edit.js.php
+%%WWWDIR%%/app/views/js/administration.valuemap.edit.js.php
+%%WWWDIR%%/app/views/js/monitoring.charts.view.js.php
+%%WWWDIR%%/app/views/js/monitoring.dashboard.view.js.php
+%%WWWDIR%%/app/views/js/monitoring.host.view.js.php
+%%WWWDIR%%/app/views/js/monitoring.latest.view.js.php
+%%WWWDIR%%/app/views/js/monitoring.problem.view.js.php
+%%WWWDIR%%/app/views/js/popup.acknowledge.edit.js.php
+%%WWWDIR%%/app/views/js/popup.discovery.check.js.php
+%%WWWDIR%%/app/views/js/popup.itemtestedit.view.js.php
+%%WWWDIR%%/app/views/js/popup.maintenance.period.js.php
+%%WWWDIR%%/app/views/js/popup.media.js.php
+%%WWWDIR%%/app/views/js/popup.mediatype.message.js.php
+%%WWWDIR%%/app/views/js/popup.mediatypetest.edit.js.php
+%%WWWDIR%%/app/views/js/popup.triggerwizard.js.php
+%%WWWDIR%%/app/views/layout.csv.php
+%%WWWDIR%%/app/views/layout.htmlpage.php
+%%WWWDIR%%/app/views/layout.javascript.php
+%%WWWDIR%%/app/views/layout.json.php
+%%WWWDIR%%/app/views/layout.warning.php
+%%WWWDIR%%/app/views/layout.widget.php
+%%WWWDIR%%/app/views/layout.xml.php
+%%WWWDIR%%/app/views/monitoring.charts.view.json.php
+%%WWWDIR%%/app/views/monitoring.charts.view.php
+%%WWWDIR%%/app/views/monitoring.dashboard.list.php
+%%WWWDIR%%/app/views/monitoring.dashboard.view.php
+%%WWWDIR%%/app/views/monitoring.dashboard.widget.edit.php
+%%WWWDIR%%/app/views/monitoring.discovery.view.php
+%%WWWDIR%%/app/views/monitoring.host.view.php
+%%WWWDIR%%/app/views/monitoring.host.view.refresh.php
+%%WWWDIR%%/app/views/monitoring.latest.view.php
+%%WWWDIR%%/app/views/monitoring.latest.view.refresh.php
+%%WWWDIR%%/app/views/monitoring.map.view.php
+%%WWWDIR%%/app/views/monitoring.problem.view.php
+%%WWWDIR%%/app/views/monitoring.web.view.php
+%%WWWDIR%%/app/views/monitoring.widget.actionlog.view.php
+%%WWWDIR%%/app/views/monitoring.widget.clock.view.php
+%%WWWDIR%%/app/views/monitoring.widget.dataover.view.php
+%%WWWDIR%%/app/views/monitoring.widget.discovery.view.php
+%%WWWDIR%%/app/views/monitoring.widget.favgraphs.view.php
+%%WWWDIR%%/app/views/monitoring.widget.favmaps.view.php
+%%WWWDIR%%/app/views/monitoring.widget.favscreens.view.php
+%%WWWDIR%%/app/views/monitoring.widget.graph.view.php
+%%WWWDIR%%/app/views/monitoring.widget.hostavail.view.php
+%%WWWDIR%%/app/views/monitoring.widget.map.view.php
+%%WWWDIR%%/app/views/monitoring.widget.navtree.view.php
+%%WWWDIR%%/app/views/monitoring.widget.navtreeitem.edit.php
+%%WWWDIR%%/app/views/monitoring.widget.plaintext.view.php
+%%WWWDIR%%/app/views/monitoring.widget.problemhosts.view.php
+%%WWWDIR%%/app/views/monitoring.widget.problems.view.php
+%%WWWDIR%%/app/views/monitoring.widget.problemsbysv.view.php
+%%WWWDIR%%/app/views/monitoring.widget.svggraph.view.php
+%%WWWDIR%%/app/views/monitoring.widget.systeminfo.view.php
+%%WWWDIR%%/app/views/monitoring.widget.trigover.view.php
+%%WWWDIR%%/app/views/monitoring.widget.url.view.php
+%%WWWDIR%%/app/views/monitoring.widget.web.view.php
+%%WWWDIR%%/app/views/popup.acknowledge.edit.php
+%%WWWDIR%%/app/views/popup.condition.common.php
+%%WWWDIR%%/app/views/popup.discovery.check.php
+%%WWWDIR%%/app/views/popup.generic.php
+%%WWWDIR%%/app/views/popup.httpstep.php
+%%WWWDIR%%/app/views/popup.itemtestedit.view.php
+%%WWWDIR%%/app/views/popup.lldoperation.php
+%%WWWDIR%%/app/views/popup.lldoverride.php
+%%WWWDIR%%/app/views/popup.maintenance.period.php
+%%WWWDIR%%/app/views/popup.media.php
+%%WWWDIR%%/app/views/popup.mediatype.message.php
+%%WWWDIR%%/app/views/popup.mediatypetest.edit.php
+%%WWWDIR%%/app/views/popup.operation.common.php
+%%WWWDIR%%/app/views/popup.scriptexec.php
+%%WWWDIR%%/app/views/popup.services.php
+%%WWWDIR%%/app/views/popup.testtriggerexpr.php
+%%WWWDIR%%/app/views/popup.triggerexpr.php
+%%WWWDIR%%/app/views/popup.triggerwizard.php
+%%WWWDIR%%/app/views/popup.view.php
+%%WWWDIR%%/app/views/report.services.php
+%%WWWDIR%%/app/views/report.status.php
+%%WWWDIR%%/app/views/reports.auditlog.list.php
+%%WWWDIR%%/app/views/search.php
+%%WWWDIR%%/app/views/system.warning.php
+%%WWWDIR%%/applications.php
+%%WWWDIR%%/assets/fonts/DejaVuSans.ttf
+%%WWWDIR%%/assets/img/apple-touch-icon-120x120-precomposed.png
+%%WWWDIR%%/assets/img/apple-touch-icon-152x152-precomposed.png
+%%WWWDIR%%/assets/img/apple-touch-icon-180x180-precomposed.png
+%%WWWDIR%%/assets/img/apple-touch-icon-76x76-precomposed.png
+%%WWWDIR%%/assets/img/browser-sprite.png
+%%WWWDIR%%/assets/img/icon-sprite.svg
+%%WWWDIR%%/assets/img/ms-tile-144x144.png
+%%WWWDIR%%/assets/img/touch-icon-192x192.png
+%%WWWDIR%%/assets/styles/blue-theme.css
+%%WWWDIR%%/assets/styles/dark-theme.css
+%%WWWDIR%%/assets/styles/hc-dark.css
+%%WWWDIR%%/assets/styles/hc-light.css
+%%WWWDIR%%/audio/alarm_average.mp3
+%%WWWDIR%%/audio/alarm_disaster.mp3
+%%WWWDIR%%/audio/alarm_high.mp3
+%%WWWDIR%%/audio/alarm_information.mp3
+%%WWWDIR%%/audio/alarm_ok.mp3
+%%WWWDIR%%/audio/alarm_warning.mp3
+%%WWWDIR%%/audio/no_sound.mp3
+%%WWWDIR%%/auditacts.php
+%%WWWDIR%%/browserwarning.php
+%%WWWDIR%%/chart.php
+%%WWWDIR%%/chart2.php
+%%WWWDIR%%/chart3.php
+%%WWWDIR%%/chart4.php
+%%WWWDIR%%/chart5.php
+%%WWWDIR%%/chart6.php
+%%WWWDIR%%/chart7.php
+%%WWWDIR%%/conf.import.php
+%%WWWDIR%%/conf/.htaccess
+%%WWWDIR%%/conf/maintenance.inc.php
+%%WWWDIR%%/conf/zabbix.conf.php.example
+%%WWWDIR%%/correlation.php
+%%WWWDIR%%/disc_prototypes.php
+%%WWWDIR%%/discoveryconf.php
+%%WWWDIR%%/favicon.ico
+%%WWWDIR%%/graphs.php
+%%WWWDIR%%/history.php
+%%WWWDIR%%/host_discovery.php
+%%WWWDIR%%/host_prototypes.php
+%%WWWDIR%%/host_screen.php
+%%WWWDIR%%/hostgroups.php
+%%WWWDIR%%/hostinventories.php
+%%WWWDIR%%/hostinventoriesoverview.php
+%%WWWDIR%%/hosts.php
+%%WWWDIR%%/httpconf.php
+%%WWWDIR%%/httpdetails.php
+%%WWWDIR%%/image.php
+%%WWWDIR%%/imgstore.php
+%%WWWDIR%%/include/.htaccess
+%%WWWDIR%%/include/actions.inc.php
+%%WWWDIR%%/include/audit.inc.php
+%%WWWDIR%%/include/blocks.inc.php
+%%WWWDIR%%/include/classes/api/API.php
+%%WWWDIR%%/include/classes/api/APIException.php
+%%WWWDIR%%/include/classes/api/CApiClientResponse.php
+%%WWWDIR%%/include/classes/api/CApiService.php
+%%WWWDIR%%/include/classes/api/CApiServiceFactory.php
+%%WWWDIR%%/include/classes/api/CAudit.php
+%%WWWDIR%%/include/classes/api/CRelationMap.php
+%%WWWDIR%%/include/classes/api/clients/CApiClient.php
+%%WWWDIR%%/include/classes/api/clients/CLocalApiClient.php
+%%WWWDIR%%/include/classes/api/helpers/CApiHostHelper.php
+%%WWWDIR%%/include/classes/api/helpers/CApiTagHelper.php
+%%WWWDIR%%/include/classes/api/managers/CApplicationManager.php
+%%WWWDIR%%/include/classes/api/managers/CGraphManager.php
+%%WWWDIR%%/include/classes/api/managers/CGraphPrototypeManager.php
+%%WWWDIR%%/include/classes/api/managers/CHistoryManager.php
+%%WWWDIR%%/include/classes/api/managers/CHttpTestManager.php
+%%WWWDIR%%/include/classes/api/managers/CItemManager.php
+%%WWWDIR%%/include/classes/api/managers/CItemPrototypeManager.php
+%%WWWDIR%%/include/classes/api/managers/CTriggerManager.php
+%%WWWDIR%%/include/classes/api/managers/CTriggerPrototypeManager.php
+%%WWWDIR%%/include/classes/api/services/CAPIInfo.php
+%%WWWDIR%%/include/classes/api/services/CAction.php
+%%WWWDIR%%/include/classes/api/services/CAlert.php
+%%WWWDIR%%/include/classes/api/services/CApplication.php
+%%WWWDIR%%/include/classes/api/services/CAuditLog.php
+%%WWWDIR%%/include/classes/api/services/CAutoregistration.php
+%%WWWDIR%%/include/classes/api/services/CConfiguration.php
+%%WWWDIR%%/include/classes/api/services/CCorrelation.php
+%%WWWDIR%%/include/classes/api/services/CDCheck.php
+%%WWWDIR%%/include/classes/api/services/CDHost.php
+%%WWWDIR%%/include/classes/api/services/CDRule.php
+%%WWWDIR%%/include/classes/api/services/CDService.php
+%%WWWDIR%%/include/classes/api/services/CDashboard.php
+%%WWWDIR%%/include/classes/api/services/CDiscoveryRule.php
+%%WWWDIR%%/include/classes/api/services/CEvent.php
+%%WWWDIR%%/include/classes/api/services/CGraph.php
+%%WWWDIR%%/include/classes/api/services/CGraphGeneral.php
+%%WWWDIR%%/include/classes/api/services/CGraphItem.php
+%%WWWDIR%%/include/classes/api/services/CGraphPrototype.php
+%%WWWDIR%%/include/classes/api/services/CHistory.php
+%%WWWDIR%%/include/classes/api/services/CHost.php
+%%WWWDIR%%/include/classes/api/services/CHostBase.php
+%%WWWDIR%%/include/classes/api/services/CHostGeneral.php
+%%WWWDIR%%/include/classes/api/services/CHostGroup.php
+%%WWWDIR%%/include/classes/api/services/CHostInterface.php
+%%WWWDIR%%/include/classes/api/services/CHostPrototype.php
+%%WWWDIR%%/include/classes/api/services/CHttpTest.php
+%%WWWDIR%%/include/classes/api/services/CIconMap.php
+%%WWWDIR%%/include/classes/api/services/CImage.php
+%%WWWDIR%%/include/classes/api/services/CItem.php
+%%WWWDIR%%/include/classes/api/services/CItemGeneral.php
+%%WWWDIR%%/include/classes/api/services/CItemPrototype.php
+%%WWWDIR%%/include/classes/api/services/CMaintenance.php
+%%WWWDIR%%/include/classes/api/services/CMap.php
+%%WWWDIR%%/include/classes/api/services/CMapElement.php
+%%WWWDIR%%/include/classes/api/services/CMediatype.php
+%%WWWDIR%%/include/classes/api/services/CModule.php
+%%WWWDIR%%/include/classes/api/services/CProblem.php
+%%WWWDIR%%/include/classes/api/services/CProxy.php
+%%WWWDIR%%/include/classes/api/services/CScreen.php
+%%WWWDIR%%/include/classes/api/services/CScreenItem.php
+%%WWWDIR%%/include/classes/api/services/CScript.php
+%%WWWDIR%%/include/classes/api/services/CService.php
+%%WWWDIR%%/include/classes/api/services/CTask.php
+%%WWWDIR%%/include/classes/api/services/CTemplate.php
+%%WWWDIR%%/include/classes/api/services/CTemplateScreen.php
+%%WWWDIR%%/include/classes/api/services/CTemplateScreenItem.php
+%%WWWDIR%%/include/classes/api/services/CTrend.php
+%%WWWDIR%%/include/classes/api/services/CTrigger.php
+%%WWWDIR%%/include/classes/api/services/CTriggerGeneral.php
+%%WWWDIR%%/include/classes/api/services/CTriggerPrototype.php
+%%WWWDIR%%/include/classes/api/services/CUser.php
+%%WWWDIR%%/include/classes/api/services/CUserGroup.php
+%%WWWDIR%%/include/classes/api/services/CUserMacro.php
+%%WWWDIR%%/include/classes/api/services/CValueMap.php
+%%WWWDIR%%/include/classes/api/wrappers/CApiWrapper.php
+%%WWWDIR%%/include/classes/api/wrappers/CFrontendApiWrapper.php
+%%WWWDIR%%/include/classes/core/APP.php
+%%WWWDIR%%/include/classes/core/CAjaxResponse.php
+%%WWWDIR%%/include/classes/core/CAutoloader.php
+%%WWWDIR%%/include/classes/core/CComponentRegistry.php
+%%WWWDIR%%/include/classes/core/CConfigFile.php
+%%WWWDIR%%/include/classes/core/CHttpRequest.php
+%%WWWDIR%%/include/classes/core/CJsonRpc.php
+%%WWWDIR%%/include/classes/core/CModule.php
+%%WWWDIR%%/include/classes/core/CModuleManager.php
+%%WWWDIR%%/include/classes/core/CRegistryFactory.php
+%%WWWDIR%%/include/classes/core/CSession.php
+%%WWWDIR%%/include/classes/core/ConfigFileException.php
+%%WWWDIR%%/include/classes/core/Manager.php
+%%WWWDIR%%/include/classes/core/ZBase.php
+%%WWWDIR%%/include/classes/db/DB.php
+%%WWWDIR%%/include/classes/db/DBException.php
+%%WWWDIR%%/include/classes/db/DbBackend.php
+%%WWWDIR%%/include/classes/db/MysqlDbBackend.php
+%%WWWDIR%%/include/classes/db/OracleDbBackend.php
+%%WWWDIR%%/include/classes/db/PostgresqlDbBackend.php
+%%WWWDIR%%/include/classes/debug/CProfiler.php
+%%WWWDIR%%/include/classes/export/CConfigurationExport.php
+%%WWWDIR%%/include/classes/export/CConfigurationExportBuilder.php
+%%WWWDIR%%/include/classes/export/CConfigurationExportException.php
+%%WWWDIR%%/include/classes/export/writers/CExportWriter.php
+%%WWWDIR%%/include/classes/export/writers/CExportWriterFactory.php
+%%WWWDIR%%/include/classes/export/writers/CJsonExportWriter.php
+%%WWWDIR%%/include/classes/export/writers/CXmlExportWriter.php
+%%WWWDIR%%/include/classes/graph/CSvgGraph.php
+%%WWWDIR%%/include/classes/graphdraw/CGraphDraw.php
+%%WWWDIR%%/include/classes/graphdraw/CLineGraphDraw.php
+%%WWWDIR%%/include/classes/graphdraw/CPieGraphDraw.php
+%%WWWDIR%%/include/classes/helpers/CArrayHelper.php
+%%WWWDIR%%/include/classes/helpers/CBrandHelper.php
+%%WWWDIR%%/include/classes/helpers/CConditionHelper.php
+%%WWWDIR%%/include/classes/helpers/CElasticsearchHelper.php
+%%WWWDIR%%/include/classes/helpers/CHtml.php
+%%WWWDIR%%/include/classes/helpers/CMapHelper.php
+%%WWWDIR%%/include/classes/helpers/CMathHelper.php
+%%WWWDIR%%/include/classes/helpers/CMediatypeHelper.php
+%%WWWDIR%%/include/classes/helpers/CMenuPopupHelper.php
+%%WWWDIR%%/include/classes/helpers/CPagerHelper.php
+%%WWWDIR%%/include/classes/helpers/CSvgGraphHelper.php
+%%WWWDIR%%/include/classes/helpers/CUploadFile.php
+%%WWWDIR%%/include/classes/helpers/CViewHelper.php
+%%WWWDIR%%/include/classes/html/CActionButtonList.php
+%%WWWDIR%%/include/classes/html/CButton.php
+%%WWWDIR%%/include/classes/html/CButtonCancel.php
+%%WWWDIR%%/include/classes/html/CButtonDelete.php
+%%WWWDIR%%/include/classes/html/CButtonDropdown.php
+%%WWWDIR%%/include/classes/html/CButtonQMessage.php
+%%WWWDIR%%/include/classes/html/CCheckBox.php
+%%WWWDIR%%/include/classes/html/CCheckBoxList.php
+%%WWWDIR%%/include/classes/html/CClock.php
+%%WWWDIR%%/include/classes/html/CCol.php
+%%WWWDIR%%/include/classes/html/CColHeader.php
+%%WWWDIR%%/include/classes/html/CCollapsibleUiWidget.php
+%%WWWDIR%%/include/classes/html/CColor.php
+%%WWWDIR%%/include/classes/html/CComboBox.php
+%%WWWDIR%%/include/classes/html/CComboItem.php
+%%WWWDIR%%/include/classes/html/CDashboardWidgetMap.php
+%%WWWDIR%%/include/classes/html/CDateSelector.php
+%%WWWDIR%%/include/classes/html/CDiv.php
+%%WWWDIR%%/include/classes/html/CFile.php
+%%WWWDIR%%/include/classes/html/CFilter.php
+%%WWWDIR%%/include/classes/html/CForm.php
+%%WWWDIR%%/include/classes/html/CFormList.php
+%%WWWDIR%%/include/classes/html/CHorList.php
+%%WWWDIR%%/include/classes/html/CIFrame.php
+%%WWWDIR%%/include/classes/html/CImageTextTable.php
+%%WWWDIR%%/include/classes/html/CImg.php
+%%WWWDIR%%/include/classes/html/CInput.php
+%%WWWDIR%%/include/classes/html/CInputSecret.php
+%%WWWDIR%%/include/classes/html/CJsScript.php
+%%WWWDIR%%/include/classes/html/CLabel.php
+%%WWWDIR%%/include/classes/html/CLink.php
+%%WWWDIR%%/include/classes/html/CLinkAction.php
+%%WWWDIR%%/include/classes/html/CList.php
+%%WWWDIR%%/include/classes/html/CListBox.php
+%%WWWDIR%%/include/classes/html/CListItem.php
+%%WWWDIR%%/include/classes/html/CMacroValue.php
+%%WWWDIR%%/include/classes/html/CMenu.php
+%%WWWDIR%%/include/classes/html/CMenuItem.php
+%%WWWDIR%%/include/classes/html/CMultiSelect.php
+%%WWWDIR%%/include/classes/html/CMultilineInput.php
+%%WWWDIR%%/include/classes/html/CNavigationTree.php
+%%WWWDIR%%/include/classes/html/CNumericBox.php
+%%WWWDIR%%/include/classes/html/CObject.php
+%%WWWDIR%%/include/classes/html/CParam.php
+%%WWWDIR%%/include/classes/html/CPassBox.php
+%%WWWDIR%%/include/classes/html/CPatternSelect.php
+%%WWWDIR%%/include/classes/html/CPre.php
+%%WWWDIR%%/include/classes/html/CRadioButtonList.php
+%%WWWDIR%%/include/classes/html/CRangeControl.php
+%%WWWDIR%%/include/classes/html/CRedirectButton.php
+%%WWWDIR%%/include/classes/html/CRow.php
+%%WWWDIR%%/include/classes/html/CRowHeader.php
+%%WWWDIR%%/include/classes/html/CScriptTag.php
+%%WWWDIR%%/include/classes/html/CSeverity.php
+%%WWWDIR%%/include/classes/html/CSeverityCheckBoxList.php
+%%WWWDIR%%/include/classes/html/CSimpleButton.php
+%%WWWDIR%%/include/classes/html/CSpan.php
+%%WWWDIR%%/include/classes/html/CSubmit.php
+%%WWWDIR%%/include/classes/html/CSubmitButton.php
+%%WWWDIR%%/include/classes/html/CSup.php
+%%WWWDIR%%/include/classes/html/CTabView.php
+%%WWWDIR%%/include/classes/html/CTable.php
+%%WWWDIR%%/include/classes/html/CTableInfo.php
+%%WWWDIR%%/include/classes/html/CTag.php
+%%WWWDIR%%/include/classes/html/CTextArea.php
+%%WWWDIR%%/include/classes/html/CTextAreaFlexible.php
+%%WWWDIR%%/include/classes/html/CTextBox.php
+%%WWWDIR%%/include/classes/html/CTriggersInfo.php
+%%WWWDIR%%/include/classes/html/CUiWidget.php
+%%WWWDIR%%/include/classes/html/CVar.php
+%%WWWDIR%%/include/classes/html/CVisibilityBox.php
+%%WWWDIR%%/include/classes/html/CWarning.php
+%%WWWDIR%%/include/classes/html/interfaces/CButtonInterface.php
+%%WWWDIR%%/include/classes/html/pageheader/CPageHeader.php
+%%WWWDIR%%/include/classes/html/svg/CSvg.php
+%%WWWDIR%%/include/classes/html/svg/CSvgCircle.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphAnnotation.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphArea.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphAxis.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphBar.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphGrid.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphLegend.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphLine.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphLineGroup.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGraphPoints.php
+%%WWWDIR%%/include/classes/html/svg/CSvgGroup.php
+%%WWWDIR%%/include/classes/html/svg/CSvgLine.php
+%%WWWDIR%%/include/classes/html/svg/CSvgPath.php
+%%WWWDIR%%/include/classes/html/svg/CSvgPolygon.php
+%%WWWDIR%%/include/classes/html/svg/CSvgRect.php
+%%WWWDIR%%/include/classes/html/svg/CSvgTag.php
+%%WWWDIR%%/include/classes/html/svg/CSvgText.php
+%%WWWDIR%%/include/classes/html/widget/CWidget.php
+%%WWWDIR%%/include/classes/import/CConfigurationImport.php
+%%WWWDIR%%/include/classes/import/CImportDataAdapter.php
+%%WWWDIR%%/include/classes/import/CImportReferencer.php
+%%WWWDIR%%/include/classes/import/CImportedObjectContainer.php
+%%WWWDIR%%/include/classes/import/converters/C10ImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/C10ItemKeyConverter.php
+%%WWWDIR%%/include/classes/import/converters/C10TriggerConverter.php
+%%WWWDIR%%/include/classes/import/converters/C20ImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/C20ItemKeyConverter.php
+%%WWWDIR%%/include/classes/import/converters/C20TriggerConverter.php
+%%WWWDIR%%/include/classes/import/converters/C30ImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/C32ImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/C34ImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/C40ImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/C42ImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/C44ImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/CArrayKeysImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/CConstantImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/CConverter.php
+%%WWWDIR%%/include/classes/import/converters/CDefaultImportConverter.php
+%%WWWDIR%%/include/classes/import/converters/CImportConverterFactory.php
+%%WWWDIR%%/include/classes/import/converters/CTransformImportConverter.php
+%%WWWDIR%%/include/classes/import/importers/CAbstractScreenImporter.php
+%%WWWDIR%%/include/classes/import/importers/CHostImporter.php
+%%WWWDIR%%/include/classes/import/importers/CImporter.php
+%%WWWDIR%%/include/classes/import/importers/CMapImporter.php
+%%WWWDIR%%/include/classes/import/importers/CScreenImporter.php
+%%WWWDIR%%/include/classes/import/importers/CTemplateImporter.php
+%%WWWDIR%%/include/classes/import/importers/CTemplateScreenImporter.php
+%%WWWDIR%%/include/classes/import/readers/CImportReader.php
+%%WWWDIR%%/include/classes/import/readers/CImportReaderFactory.php
+%%WWWDIR%%/include/classes/import/readers/CJsonImportReader.php
+%%WWWDIR%%/include/classes/import/readers/CXmlImportReader.php
+%%WWWDIR%%/include/classes/import/validators/C10XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/C20XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/C30XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/C32XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/C34XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/C40XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/C42XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/C44XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/C50XmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/CImportValidatorFactory.php
+%%WWWDIR%%/include/classes/import/validators/CXmlValidator.php
+%%WWWDIR%%/include/classes/import/validators/CXmlValidatorGeneral.php
+%%WWWDIR%%/include/classes/items/CHelpItems.php
+%%WWWDIR%%/include/classes/ldap/CLdap.php
+%%WWWDIR%%/include/classes/macros/CMacrosResolver.php
+%%WWWDIR%%/include/classes/macros/CMacrosResolverGeneral.php
+%%WWWDIR%%/include/classes/macros/CMacrosResolverHelper.php
+%%WWWDIR%%/include/classes/mvc/CController.php
+%%WWWDIR%%/include/classes/mvc/CControllerResponse.php
+%%WWWDIR%%/include/classes/mvc/CControllerResponseData.php
+%%WWWDIR%%/include/classes/mvc/CControllerResponseFatal.php
+%%WWWDIR%%/include/classes/mvc/CControllerResponseRedirect.php
+%%WWWDIR%%/include/classes/mvc/CLegacyAction.php
+%%WWWDIR%%/include/classes/mvc/CPartial.php
+%%WWWDIR%%/include/classes/mvc/CRouter.php
+%%WWWDIR%%/include/classes/mvc/CView.php
+%%WWWDIR%%/include/classes/parsers/CADNameAttributeParser.php
+%%WWWDIR%%/include/classes/parsers/CAbsoluteTimeParser.php
+%%WWWDIR%%/include/classes/parsers/CConditionFormula.php
+%%WWWDIR%%/include/classes/parsers/CDnsParser.php
+%%WWWDIR%%/include/classes/parsers/CFlexibleIntervalParser.php
+%%WWWDIR%%/include/classes/parsers/CFunctionIdParser.php
+%%WWWDIR%%/include/classes/parsers/CFunctionMacroParser.php
+%%WWWDIR%%/include/classes/parsers/CFunctionParser.php
+%%WWWDIR%%/include/classes/parsers/CHostGroupNameParser.php
+%%WWWDIR%%/include/classes/parsers/CHostNameParser.php
+%%WWWDIR%%/include/classes/parsers/CIPParser.php
+%%WWWDIR%%/include/classes/parsers/CIPRangeParser.php
+%%WWWDIR%%/include/classes/parsers/CIPv4Parser.php
+%%WWWDIR%%/include/classes/parsers/CIPv6Parser.php
+%%WWWDIR%%/include/classes/parsers/CItemKey.php
+%%WWWDIR%%/include/classes/parsers/CLLDMacroFunctionParser.php
+%%WWWDIR%%/include/classes/parsers/CLLDMacroParser.php
+%%WWWDIR%%/include/classes/parsers/CMacroFunctionParser.php
+%%WWWDIR%%/include/classes/parsers/CMacroParser.php
+%%WWWDIR%%/include/classes/parsers/CNumberParser.php
+%%WWWDIR%%/include/classes/parsers/CParser.php
+%%WWWDIR%%/include/classes/parsers/CPrometheusOutputParser.php
+%%WWWDIR%%/include/classes/parsers/CPrometheusPatternParser.php
+%%WWWDIR%%/include/classes/parsers/CRangeParser.php
+%%WWWDIR%%/include/classes/parsers/CRangeTimeParser.php
+%%WWWDIR%%/include/classes/parsers/CRangesParser.php
+%%WWWDIR%%/include/classes/parsers/CReferenceParser.php
+%%WWWDIR%%/include/classes/parsers/CRelativeTimeParser.php
+%%WWWDIR%%/include/classes/parsers/CReplacementParser.php
+%%WWWDIR%%/include/classes/parsers/CSchedulingIntervalParser.php
+%%WWWDIR%%/include/classes/parsers/CSetParser.php
+%%WWWDIR%%/include/classes/parsers/CSimpleIntervalParser.php
+%%WWWDIR%%/include/classes/parsers/CTimePeriodParser.php
+%%WWWDIR%%/include/classes/parsers/CTimePeriodsParser.php
+%%WWWDIR%%/include/classes/parsers/CTriggerExpression.php
+%%WWWDIR%%/include/classes/parsers/CUpdateIntervalParser.php
+%%WWWDIR%%/include/classes/parsers/CUserMacroParser.php
+%%WWWDIR%%/include/classes/parsers/CValidationRule.php
+%%WWWDIR%%/include/classes/parsers/results/CParserResult.php
+%%WWWDIR%%/include/classes/parsers/results/CTriggerExprParserResult.php
+%%WWWDIR%%/include/classes/regexp/CGlobalRegexp.php
+%%WWWDIR%%/include/classes/routing/CUrl.php
+%%WWWDIR%%/include/classes/routing/CUrlFactory.php
+%%WWWDIR%%/include/classes/screens/CScreenActions.php
+%%WWWDIR%%/include/classes/screens/CScreenBase.php
+%%WWWDIR%%/include/classes/screens/CScreenBuilder.php
+%%WWWDIR%%/include/classes/screens/CScreenClock.php
+%%WWWDIR%%/include/classes/screens/CScreenDataOverview.php
+%%WWWDIR%%/include/classes/screens/CScreenDiscovery.php
+%%WWWDIR%%/include/classes/screens/CScreenEvents.php
+%%WWWDIR%%/include/classes/screens/CScreenGraph.php
+%%WWWDIR%%/include/classes/screens/CScreenHistory.php
+%%WWWDIR%%/include/classes/screens/CScreenHostTriggers.php
+%%WWWDIR%%/include/classes/screens/CScreenHostgroupTriggers.php
+%%WWWDIR%%/include/classes/screens/CScreenHostsInfo.php
+%%WWWDIR%%/include/classes/screens/CScreenHttpTest.php
+%%WWWDIR%%/include/classes/screens/CScreenHttpTestDetails.php
+%%WWWDIR%%/include/classes/screens/CScreenLldGraph.php
+%%WWWDIR%%/include/classes/screens/CScreenLldGraphBase.php
+%%WWWDIR%%/include/classes/screens/CScreenLldSimpleGraph.php
+%%WWWDIR%%/include/classes/screens/CScreenMap.php
+%%WWWDIR%%/include/classes/screens/CScreenPlainText.php
+%%WWWDIR%%/include/classes/screens/CScreenProblem.php
+%%WWWDIR%%/include/classes/screens/CScreenServerInfo.php
+%%WWWDIR%%/include/classes/screens/CScreenSimpleGraph.php
+%%WWWDIR%%/include/classes/screens/CScreenSystemStatus.php
+%%WWWDIR%%/include/classes/screens/CScreenTriggersInfo.php
+%%WWWDIR%%/include/classes/screens/CScreenTriggersOverview.php
+%%WWWDIR%%/include/classes/screens/CScreenUrl.php
+%%WWWDIR%%/include/classes/server/CZabbixServer.php
+%%WWWDIR%%/include/classes/services/CServicesSlaCalculator.php
+%%WWWDIR%%/include/classes/setup/CFrontendSetup.php
+%%WWWDIR%%/include/classes/setup/CSetupWizard.php
+%%WWWDIR%%/include/classes/tree/CServiceTree.php
+%%WWWDIR%%/include/classes/tree/CTree.php
+%%WWWDIR%%/include/classes/triggers/CTextTriggerConstructor.php
+%%WWWDIR%%/include/classes/user/CFavorite.php
+%%WWWDIR%%/include/classes/user/CProfile.php
+%%WWWDIR%%/include/classes/user/CWebUser.php
+%%WWWDIR%%/include/classes/validators/CActionCondValidator.php
+%%WWWDIR%%/include/classes/validators/CApiInputValidator.php
+%%WWWDIR%%/include/classes/validators/CCollectionValidator.php
+%%WWWDIR%%/include/classes/validators/CColorValidator.php
+%%WWWDIR%%/include/classes/validators/CEmailValidator.php
+%%WWWDIR%%/include/classes/validators/CEventCorrCondValidator.php
+%%WWWDIR%%/include/classes/validators/CFunctionValidator.php
+%%WWWDIR%%/include/classes/validators/CHtmlUrlValidator.php
+%%WWWDIR%%/include/classes/validators/CIdValidator.php
+%%WWWDIR%%/include/classes/validators/CLdapAuthValidator.php
+%%WWWDIR%%/include/classes/validators/CLimitedSetValidator.php
+%%WWWDIR%%/include/classes/validators/CNewValidator.php
+%%WWWDIR%%/include/classes/validators/CPartialValidatorInterface.php
+%%WWWDIR%%/include/classes/validators/CRegexValidator.php
+%%WWWDIR%%/include/classes/validators/CStringValidator.php
+%%WWWDIR%%/include/classes/validators/CValidator.php
+%%WWWDIR%%/include/classes/validators/event/CEventSourceObjectValidator.php
+%%WWWDIR%%/include/classes/validators/host/CHostNormalValidator.php
+%%WWWDIR%%/include/classes/validators/object/CConditionValidator.php
+%%WWWDIR%%/include/classes/validators/object/CUpdateDiscoveredValidator.php
+%%WWWDIR%%/include/classes/validators/schema/CSchemaValidator.php
+%%WWWDIR%%/include/classes/widgets/CWidgetConfig.php
+%%WWWDIR%%/include/classes/widgets/CWidgetHelper.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetField.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldApplication.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldCheckBox.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldCheckBoxList.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldComboBox.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldDatePicker.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldGraphDataSet.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldGraphOverride.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldHidden.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldHostPatternSelect.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldIntegerBox.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldMs.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldMsGraph.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldMsGraphPrototype.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldMsGroup.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldMsHost.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldMsItem.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldMsItemPrototype.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldNavTree.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldNumericBox.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldRadioButtonList.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldRangeControl.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldReference.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldSelectResource.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldSeverities.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldTags.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldTextBox.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldUrl.php
+%%WWWDIR%%/include/classes/widgets/fields/CWidgetFieldWidgetListComboBox.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetForm.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormActionLog.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormClock.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormDataOver.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormGraph.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormGraphPrototype.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormHostAvail.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormMap.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormNavTree.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormPlainText.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormProblemHosts.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormProblems.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormProblemsBySv.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormSvgGraph.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormTrigOver.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormUrl.php
+%%WWWDIR%%/include/classes/widgets/forms/CWidgetFormWeb.php
+%%WWWDIR%%/include/classes/widgets/views/widget.actionlog.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.clock.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.dataover.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.discovery.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.favgraphs.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.favmaps.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.favscreens.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.graph.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.graphprototype.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.hostavail.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.map.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.navtree.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.plaintext.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.problemhosts.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.problems.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.problemsbysv.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.svggraph.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.systeminfo.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.trigover.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.url.form.view.php
+%%WWWDIR%%/include/classes/widgets/views/widget.web.form.view.php
+%%WWWDIR%%/include/classes/xml/CXmlConstantName.php
+%%WWWDIR%%/include/classes/xml/CXmlConstantValue.php
+%%WWWDIR%%/include/config.inc.php
+%%WWWDIR%%/include/correlation.inc.php
+%%WWWDIR%%/include/db.inc.php
+%%WWWDIR%%/include/debug.inc.php
+%%WWWDIR%%/include/defines.inc.php
+%%WWWDIR%%/include/discovery.inc.php
+%%WWWDIR%%/include/draw.inc.php
+%%WWWDIR%%/include/events.inc.php
+%%WWWDIR%%/include/forms.inc.php
+%%WWWDIR%%/include/func.inc.php
+%%WWWDIR%%/include/gettextwrapper.inc.php
+%%WWWDIR%%/include/graphs.inc.php
+%%WWWDIR%%/include/hostgroups.inc.php
+%%WWWDIR%%/include/hosts.inc.php
+%%WWWDIR%%/include/html.inc.php
+%%WWWDIR%%/include/httptest.inc.php
+%%WWWDIR%%/include/ident.inc.php
+%%WWWDIR%%/include/images.inc.php
+%%WWWDIR%%/include/items.inc.php
+%%WWWDIR%%/include/js.inc.php
+%%WWWDIR%%/include/locales.inc.php
+%%WWWDIR%%/include/maintenances.inc.php
+%%WWWDIR%%/include/maps.inc.php
+%%WWWDIR%%/include/media.inc.php
+%%WWWDIR%%/include/menu.inc.php
+%%WWWDIR%%/include/page_footer.php
+%%WWWDIR%%/include/page_header.php
+%%WWWDIR%%/include/perm.inc.php
+%%WWWDIR%%/include/profiles.inc.php
+%%WWWDIR%%/include/regexp.inc.php
+%%WWWDIR%%/include/schema.inc.php
+%%WWWDIR%%/include/screens.inc.php
+%%WWWDIR%%/include/services.inc.php
+%%WWWDIR%%/include/sounds.inc.php
+%%WWWDIR%%/include/translateDefines.inc.php
+%%WWWDIR%%/include/triggers.inc.php
+%%WWWDIR%%/include/users.inc.php
+%%WWWDIR%%/include/validate.inc.php
+%%WWWDIR%%/include/valuemap.inc.php
+%%WWWDIR%%/include/views/administration.auditacts.list.php
+%%WWWDIR%%/include/views/conf.import.php
+%%WWWDIR%%/include/views/configuration.action.edit.php
+%%WWWDIR%%/include/views/configuration.action.list.php
+%%WWWDIR%%/include/views/configuration.application.edit.php
+%%WWWDIR%%/include/views/configuration.application.list.php
+%%WWWDIR%%/include/views/configuration.copy.elements.php
+%%WWWDIR%%/include/views/configuration.correlation.edit.php
+%%WWWDIR%%/include/views/configuration.correlation.list.php
+%%WWWDIR%%/include/views/configuration.discovery.edit.php
+%%WWWDIR%%/include/views/configuration.discovery.list.php
+%%WWWDIR%%/include/views/configuration.graph.edit.php
+%%WWWDIR%%/include/views/configuration.graph.list.php
+%%WWWDIR%%/include/views/configuration.host.discovery.edit.php
+%%WWWDIR%%/include/views/configuration.host.discovery.list.php
+%%WWWDIR%%/include/views/configuration.host.edit.php
+%%WWWDIR%%/include/views/configuration.host.list.php
+%%WWWDIR%%/include/views/configuration.host.massupdate.php
+%%WWWDIR%%/include/views/configuration.host.prototype.edit.php
+%%WWWDIR%%/include/views/configuration.host.prototype.list.php
+%%WWWDIR%%/include/views/configuration.hostgroups.edit.php
+%%WWWDIR%%/include/views/configuration.hostgroups.list.php
+%%WWWDIR%%/include/views/configuration.httpconf.edit.php
+%%WWWDIR%%/include/views/configuration.httpconf.list.php
+%%WWWDIR%%/include/views/configuration.item.edit.php
+%%WWWDIR%%/include/views/configuration.item.list.php
+%%WWWDIR%%/include/views/configuration.item.massupdate.php
+%%WWWDIR%%/include/views/configuration.item.prototype.edit.php
+%%WWWDIR%%/include/views/configuration.item.prototype.list.php
+%%WWWDIR%%/include/views/configuration.item.prototype.massupdate.php
+%%WWWDIR%%/include/views/configuration.maintenance.edit.php
+%%WWWDIR%%/include/views/configuration.maintenance.list.php
+%%WWWDIR%%/include/views/configuration.services.edit.php
+%%WWWDIR%%/include/views/configuration.services.list.php
+%%WWWDIR%%/include/views/configuration.template.edit.php
+%%WWWDIR%%/include/views/configuration.template.list.php
+%%WWWDIR%%/include/views/configuration.template.massupdate.php
+%%WWWDIR%%/include/views/configuration.trigger.prototype.edit.php
+%%WWWDIR%%/include/views/configuration.trigger.prototype.list.php
+%%WWWDIR%%/include/views/configuration.trigger.prototype.massupdate.php
+%%WWWDIR%%/include/views/configuration.triggers.edit.php
+%%WWWDIR%%/include/views/configuration.triggers.list.php
+%%WWWDIR%%/include/views/configuration.triggers.massupdate.php
+%%WWWDIR%%/include/views/general.browserwarning.php
+%%WWWDIR%%/include/views/general.login.php
+%%WWWDIR%%/include/views/general.warning.php
+%%WWWDIR%%/include/views/inventory.host.list.php
+%%WWWDIR%%/include/views/inventory.host.view.php
+%%WWWDIR%%/include/views/js/common.init.js.php
+%%WWWDIR%%/include/views/js/common.item.edit.js.php
+%%WWWDIR%%/include/views/js/common.template.edit.js.php
+%%WWWDIR%%/include/views/js/conf.import.js.php
+%%WWWDIR%%/include/views/js/configuration.action.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.copy.elements.js.php
+%%WWWDIR%%/include/views/js/configuration.correlation.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.discovery.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.graph.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.host.discovery.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.host.discovery.edit.overr.js.php
+%%WWWDIR%%/include/views/js/configuration.host.discovery.list.js.php
+%%WWWDIR%%/include/views/js/configuration.host.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.host.list.js.php
+%%WWWDIR%%/include/views/js/configuration.host.massupdate.js.php
+%%WWWDIR%%/include/views/js/configuration.host.prototype.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.httpconf.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.item.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.item.list.js.php
+%%WWWDIR%%/include/views/js/configuration.item.massupdate.js.php
+%%WWWDIR%%/include/views/js/configuration.item.prototype.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.maintenance.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.services.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.template.list.js.php
+%%WWWDIR%%/include/views/js/configuration.template.massupdate.js.php
+%%WWWDIR%%/include/views/js/configuration.trigger.massupdate.js.php
+%%WWWDIR%%/include/views/js/configuration.triggers.edit.js.php
+%%WWWDIR%%/include/views/js/configuration.triggers.list.js.php
+%%WWWDIR%%/include/views/js/editabletable.js.php
+%%WWWDIR%%/include/views/js/item.preprocessing.js.php
+%%WWWDIR%%/include/views/js/itemtest.js.php
+%%WWWDIR%%/include/views/js/monitoring.screen.edit.js.php
+%%WWWDIR%%/include/views/js/monitoring.screen.js.php
+%%WWWDIR%%/include/views/js/monitoring.slideconf.edit.js.php
+%%WWWDIR%%/include/views/js/monitoring.slides.js.php
+%%WWWDIR%%/include/views/js/monitoring.sysmap.edit.js.php
+%%WWWDIR%%/include/views/js/monitoring.sysmaps.js.php
+%%WWWDIR%%/include/views/monitoring.history.php
+%%WWWDIR%%/include/views/monitoring.hostscreen.php
+%%WWWDIR%%/include/views/monitoring.overview.items.php
+%%WWWDIR%%/include/views/monitoring.overview.triggers.php
+%%WWWDIR%%/include/views/monitoring.screen.constructor.edit.php
+%%WWWDIR%%/include/views/monitoring.screen.constructor.list.php
+%%WWWDIR%%/include/views/monitoring.screen.edit.php
+%%WWWDIR%%/include/views/monitoring.screen.list.php
+%%WWWDIR%%/include/views/monitoring.screen.php
+%%WWWDIR%%/include/views/monitoring.slideconf.edit.php
+%%WWWDIR%%/include/views/monitoring.slideconf.list.php
+%%WWWDIR%%/include/views/monitoring.slides.php
+%%WWWDIR%%/include/views/monitoring.sysmap.constructor.php
+%%WWWDIR%%/include/views/monitoring.sysmap.edit.php
+%%WWWDIR%%/include/views/monitoring.sysmap.list.php
+%%WWWDIR%%/include/views/reports.toptriggers.php
+%%WWWDIR%%/index.php
+%%WWWDIR%%/index_http.php
+%%WWWDIR%%/index_sso.php
+%%WWWDIR%%/items.php
+%%WWWDIR%%/js/browsers.js
+%%WWWDIR%%/js/chkbxrange.js
+%%WWWDIR%%/js/class.base-component.js
+%%WWWDIR%%/js/class.bbcode.js
+%%WWWDIR%%/js/class.browsertab.js
+%%WWWDIR%%/js/class.calendar.js
+%%WWWDIR%%/js/class.cclock.js
+%%WWWDIR%%/js/class.cdate.js
+%%WWWDIR%%/js/class.cdebug.js
+%%WWWDIR%%/js/class.cmap.js
+%%WWWDIR%%/js/class.cnavtree.js
+%%WWWDIR%%/js/class.cookie.js
+%%WWWDIR%%/js/class.coverride.js
+%%WWWDIR%%/js/class.crangecontrol.js
+%%WWWDIR%%/js/class.cscreen.js
+%%WWWDIR%%/js/class.csuggest.js
+%%WWWDIR%%/js/class.csvggraph.js
+%%WWWDIR%%/js/class.ctree.js
+%%WWWDIR%%/js/class.curl.js
+%%WWWDIR%%/js/class.cverticalaccordion.js
+%%WWWDIR%%/js/class.cviewswitcher.js
+%%WWWDIR%%/js/class.localstorage.js
+%%WWWDIR%%/js/class.mapWidget.js
+%%WWWDIR%%/js/class.menu-item.js
+%%WWWDIR%%/js/class.menu.js
+%%WWWDIR%%/js/class.notification.collection.js
+%%WWWDIR%%/js/class.notification.js
+%%WWWDIR%%/js/class.notifications.audio.js
+%%WWWDIR%%/js/class.notifications.js
+%%WWWDIR%%/js/class.overlay.js
+%%WWWDIR%%/js/class.overlaycollection.js
+%%WWWDIR%%/js/class.pmaster.js
+%%WWWDIR%%/js/class.rpc.js
+%%WWWDIR%%/js/class.scrollable.js
+%%WWWDIR%%/js/class.sidebar.js
+%%WWWDIR%%/js/class.template.js
+%%WWWDIR%%/js/colorpicker.js
+%%WWWDIR%%/js/common.js
+%%WWWDIR%%/js/csvggraphwidget.js
+%%WWWDIR%%/js/dashboard.grid.js
+%%WWWDIR%%/js/flickerfreescreen.js
+%%WWWDIR%%/js/functions.js
+%%WWWDIR%%/js/gtlc.js
+%%WWWDIR%%/js/init.js
+%%WWWDIR%%/js/inputsecret.js
+%%WWWDIR%%/js/layout.mode.js
+%%WWWDIR%%/js/macrovalue.js
+%%WWWDIR%%/js/main.js
+%%WWWDIR%%/js/menupopup.js
+%%WWWDIR%%/js/multilineinput.js
+%%WWWDIR%%/js/multiselect.js
+%%WWWDIR%%/js/pages/items.js
+%%WWWDIR%%/js/pages/popup.condition.common.js
+%%WWWDIR%%/js/pages/popup.operation.common.js
+%%WWWDIR%%/js/servercheck.js
+%%WWWDIR%%/js/textareaflexible.js
+%%WWWDIR%%/js/vector/class.svg.canvas.js
+%%WWWDIR%%/js/vector/class.svg.map.js
+%%WWWDIR%%/js/vendors/jquery-ui.js
+%%WWWDIR%%/js/vendors/jquery.js
+%%WWWDIR%%/jsLoader.php
+%%WWWDIR%%/jsrpc.php
+%%WWWDIR%%/local/.htaccess
+%%WWWDIR%%/local/README
+%%WWWDIR%%/locale/README
+%%WWWDIR%%/locale/add_new_language.sh
+%%WWWDIR%%/locale/bg/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/bg/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/ca/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/ca/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/cs/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/cs/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/de/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/de/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/el/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/el/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/en_US/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/en_US/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/es/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/es/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/fa/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/fa/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/fi/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/fi/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/fr/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/fr/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/he/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/he/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/hu/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/hu/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/id/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/id/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/it/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/it/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/ja/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/ja/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/ka/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/ka/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/ko/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/ko/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/lt/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/lt/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/lv/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/lv/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/make_mo.sh
+%%WWWDIR%%/locale/nb/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/nb/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/nl/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/nl/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/pl/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/pl/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/pt_BR/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/pt_BR/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/pt_PT/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/pt_PT/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/ro/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/ro/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/ru/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/ru/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/sk/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/sk/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/sv/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/sv/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/tr/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/tr/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/uk/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/uk/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/update_po.sh
+%%WWWDIR%%/locale/vi/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/vi/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/zh_CN/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/zh_CN/LC_MESSAGES/frontend.po
+%%WWWDIR%%/locale/zh_TW/LC_MESSAGES/frontend.mo
+%%WWWDIR%%/locale/zh_TW/LC_MESSAGES/frontend.po
+%%WWWDIR%%/maintenance.php
+%%WWWDIR%%/map.import.php
+%%WWWDIR%%/map.php
+%%WWWDIR%%/overview.php
+%%WWWDIR%%/queue.php
+%%WWWDIR%%/report2.php
+%%WWWDIR%%/report4.php
+%%WWWDIR%%/robots.txt
+%%WWWDIR%%/screen.import.php
+%%WWWDIR%%/screenconf.php
+%%WWWDIR%%/screenedit.php
+%%WWWDIR%%/screens.php
+%%WWWDIR%%/services.php
+%%WWWDIR%%/setup.php
+%%WWWDIR%%/slideconf.php
+%%WWWDIR%%/slides.php
+%%WWWDIR%%/srv_status.php
+%%WWWDIR%%/sysmap.php
+%%WWWDIR%%/sysmaps.php
+%%WWWDIR%%/templates.php
+%%WWWDIR%%/toptriggers.php
+%%WWWDIR%%/tr_events.php
+%%WWWDIR%%/trigger_prototypes.php
+%%WWWDIR%%/triggers.php
+%%WWWDIR%%/vendor/php-saml/CHANGELOG
+%%WWWDIR%%/vendor/php-saml/LICENSE
+%%WWWDIR%%/vendor/php-saml/README.md
+%%WWWDIR%%/vendor/php-saml/_toolkit_loader.php
+%%WWWDIR%%/vendor/php-saml/advanced_settings_example.php
+%%WWWDIR%%/vendor/php-saml/certs/README
+%%WWWDIR%%/vendor/php-saml/composer.json
+%%WWWDIR%%/vendor/php-saml/phpunit.xml
+%%WWWDIR%%/vendor/php-saml/settings_example.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/Auth.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/AuthnRequest.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/Constants.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/Error.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/IdPMetadataParser.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/LogoutRequest.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/LogoutResponse.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/Metadata.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/Response.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/Settings.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/Utils.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/ValidationError.php
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/saml-schema-assertion-2.0.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/saml-schema-authn-context-2.0.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/saml-schema-authn-context-types-2.0.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/saml-schema-metadata-2.0.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/saml-schema-protocol-2.0.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/sstc-metadata-attr.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/sstc-saml-attribute-ext.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/sstc-saml-metadata-algsupport-v1.0.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/sstc-saml-metadata-ui-v1.0.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/xenc-schema.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/xml.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/schemas/xmldsig-core-schema.xsd
+%%WWWDIR%%/vendor/php-saml/src/Saml2/version.json
+%%WWWDIR%%/vendor/xmlseclibs/CHANGELOG.txt
+%%WWWDIR%%/vendor/xmlseclibs/LICENSE
+%%WWWDIR%%/vendor/xmlseclibs/README.md
+%%WWWDIR%%/vendor/xmlseclibs/composer.json
+%%WWWDIR%%/vendor/xmlseclibs/src/Utils/XPath.php
+%%WWWDIR%%/vendor/xmlseclibs/src/XMLSecEnc.php
+%%WWWDIR%%/vendor/xmlseclibs/src/XMLSecurityDSig.php
+%%WWWDIR%%/vendor/xmlseclibs/src/XMLSecurityKey.php
+%%WWWDIR%%/vendor/xmlseclibs/xmlseclibs.php
+%%WWWDIR%%/zabbix.php
+@dir %%WWWDIR%%/conf/certs
+@dir %%WWWDIR%%/local/app/controllers
+@dir %%WWWDIR%%/local/app/partials
+@dir %%WWWDIR%%/local/app/views
+@dir %%WWWDIR%%/local/conf
+@dir %%WWWDIR%%/modules
Index: net-mgmt/zabbix5-server/pkg-plist.java
===================================================================
--- /dev/null
+++ net-mgmt/zabbix5-server/pkg-plist.java
@@ -0,0 +1,11 @@
+sbin/zabbix_java/shutdown.sh
+sbin/zabbix_java/lib/logback-console.xml
+sbin/zabbix_java/lib/logback-core-0.9.27.jar
+sbin/zabbix_java/lib/logback-classic-0.9.27.jar
+sbin/zabbix_java/lib/logback.xml
+sbin/zabbix_java/lib/slf4j-api-1.6.1.jar
+sbin/zabbix_java/lib/android-json-4.3_r3.1.jar
+@sample sbin/zabbix_java/settings.sh.sample
+sbin/zabbix_java/startup.sh
+sbin/zabbix_java/bin/zabbix-java-gateway-%%PORTVERSION%%.jar
+@dir(zabbix,zabbix,755) /var/run/zabbix

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 25, 8:49 AM (18 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27931833
Default Alt Text
D24926.diff (150 KB)

Event Timeline