Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142870500
D24926.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
150 KB
Referenced Files
None
Subscribers
None
D24926.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D24926: Zabbix 5.0 suite
Attached
Detach File
Event Timeline
Log In to Comment