diff mbox series

[1/1] package/zabbix: new package

Message ID 20200423071752.23893-1-skif@skif-web.ru
State Accepted
Headers show
Series [1/1] package/zabbix: new package | expand

Commit Message

Alexey Lukyanchuk April 23, 2020, 7:17 a.m. UTC
Signed-off-by: Alexey Lukyanchuk <skif@skif-web.ru>
---
 DEVELOPERS                           |   3 +
 package/Config.in                    |   1 +
 package/zabbix/Config.in             | 122 +++++++++++++++++++++
 package/zabbix/zabbix-agent.service  |  17 +++
 package/zabbix/zabbix-server.service |  17 +++
 package/zabbix/zabbix.hash           |   3 +
 package/zabbix/zabbix.mk             | 154 +++++++++++++++++++++++++++
 7 files changed, 317 insertions(+)
 create mode 100644 package/zabbix/Config.in
 create mode 100644 package/zabbix/zabbix-agent.service
 create mode 100644 package/zabbix/zabbix-server.service
 create mode 100644 package/zabbix/zabbix.hash
 create mode 100644 package/zabbix/zabbix.mk

Comments

Thomas Petazzoni April 23, 2020, 7:45 p.m. UTC | #1
Hello,

On Thu, 23 Apr 2020 10:17:52 +0300
Alexey Lukyanchuk <skif@skif-web.ru> wrote:

> Signed-off-by: Alexey Lukyanchuk <skif@skif-web.ru>

Is this a v9 ? What are the changes compared to the v8 you posted some
time ago ?

Thanks!

Thomas
Alexey Lukyanchuk April 29, 2020, 5:41 p.m. UTC | #2
No changes. Is the previous version considered? Does it need corrections?

Also, please see the patches for cups, cups filters, qpdf and ghostscript. They really need

-- 
Regards,
Alexey Lukyanchuk
skif@skif-web.ru


23.04.2020, 22:45, "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>:
> Hello,
>
> On Thu, 23 Apr 2020 10:17:52 +0300
> Alexey Lukyanchuk <skif@skif-web.ru> wrote:
>
>>  Signed-off-by: Alexey Lukyanchuk <skif@skif-web.ru>
>
> Is this a v9 ? What are the changes compared to the v8 you posted some
> time ago ?
>
> Thanks!
>
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
Arnout Vandecappelle Jan. 8, 2022, 1:09 p.m. UTC | #3
On 23/04/2020 09:17, Alexey Lukyanchuk wrote:
> Signed-off-by: Alexey Lukyanchuk <skif@skif-web.ru>

  Applied to master, thanks. I made the following changes.

      - BR2_TOOLCHAIN_USES_GLIBC implies the other glibc options.
      - Fix wrapping in Config.in help text.
      - Add upstream URL.
      - Protect comments with "depends on" instead of "if".
      - Select postgresl/mysql instead of depends (and propagate
        dependencies).
      - Remove redundant condition around
        BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS.
      - Select PHP extensions instead of depends.
      - Make optional dependencies automatic instead of Config.in.
      - Improve some of the help texts.
      - Bump to 5.4.9 and update hashes.
      - Add COPYING as license file.
      - Switch to actual upstream at zabbix.com.
      - Explicitly disable all unused features.
      - Disable zabbix user login with '*'.
      - Don't add user to zabbix group twice.
      - Do patch of zabbix_*.conf in post-patch hook and do it for all conf
        files in one shot.
      - Remove workarounds for pending patches (which were merged).
      - Put web ui in /var/www/zabbix and SQL files in /var/lib/zabbix.

  Sorry it took so long, but it still took me three hours to make all of the 
above fixes and maintainer time is scarce.

  Regards,
  Arnout

> ---
>   DEVELOPERS                           |   3 +
>   package/Config.in                    |   1 +
>   package/zabbix/Config.in             | 122 +++++++++++++++++++++
>   package/zabbix/zabbix-agent.service  |  17 +++
>   package/zabbix/zabbix-server.service |  17 +++
>   package/zabbix/zabbix.hash           |   3 +
>   package/zabbix/zabbix.mk             | 154 +++++++++++++++++++++++++++
>   7 files changed, 317 insertions(+)
>   create mode 100644 package/zabbix/Config.in
>   create mode 100644 package/zabbix/zabbix-agent.service
>   create mode 100644 package/zabbix/zabbix-server.service
>   create mode 100644 package/zabbix/zabbix.hash
>   create mode 100644 package/zabbix/zabbix.mk
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index c57bc1c5c9..08a9aadf72 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -155,6 +155,9 @@ N:	Alexey Brodkin <alexey.brodkin@synopsys.com>
>   F:	board/cubietech/cubieboard2/
>   F:	configs/cubieboard2_defconfig
>   
> +N:	Alexey Lukyanchuk <skif@skif-web.ru>
> +F:	package/zabbix/
> +
>   N:	Alistair Francis <alistair@alistair23.me>
>   F:	board/sifive/
>   F:	boot/opensbi/
> diff --git a/package/Config.in b/package/Config.in
> index a9c6f6fcbc..aa244812db 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -2234,6 +2234,7 @@ endif
>   	source "package/xinetd/Config.in"
>   	source "package/xl2tp/Config.in"
>   	source "package/xtables-addons/Config.in"
> +	source "package/zabbix/Config.in"
>   	source "package/znc/Config.in"
>   
>   endmenu
> diff --git a/package/zabbix/Config.in b/package/zabbix/Config.in
> new file mode 100644
> index 0000000000..0ce60a37e5
> --- /dev/null
> +++ b/package/zabbix/Config.in
> @@ -0,0 +1,122 @@
> +config BR2_PACKAGE_ZABBIX
> +	bool "zabbix"
> +	depends on BR2_TOOLCHAIN_USES_GLIBC=y || BR2_TOOLCHAIN_EXTERNAL_GLIBC=y || BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
> +	select BR2_PACKAGE_PCRE
> +	help
> +	  Zabbix is an enterprise-class open source distributed
> +	  monitoring solution.Zabbix is free of cost. Zabbix
> +	  is written and distributed under the GPL General Public
> +	  License version 2.
> +
> +if (!BR2_TOOLCHAIN_USES_GLIBC && !BR2_TOOLCHAIN_EXTERNAL_GLIBC && !BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC)
> +comment "zabbix need glibc"
> +endif
> +
> +if BR2_PACKAGE_ZABBIX
> +
> +if (!BR2_PACKAGE_POSTGRESQL && !BR2_PACKAGE_MYSQL)
> +comment "zabbix server needs postgresql or mysql support"
> +endif
> +
> +config BR2_PACKAGE_ZABBIX_SERVER
> +	bool "zabbix server"
> +	depends on BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_MYSQL
> +	select BR2_PACKAGE_ZLIB
> +	select BR2_PACKAGE_LIBEVENT
> +
> +if BR2_PACKAGE_ZABBIX_SERVER
> +
> +choice
> +	prompt "server database backend"
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_MYSQL
> +	bool "mysql"
> +	depends on BR2_PACKAGE_MYSQL
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL
> +	bool "postgresql"
> +	depends on BR2_PACKAGE_POSTGRESQL
> +
> +endchoice
> +
> +if BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL || BR2_PACKAGE_ZABBIX_SERVER_MYSQL
> +config BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS
> +	bool "install sql dumps"
> +	help
> +	  Copy inicitial database dumps to /usr/zabbix/
> +endif
> +
> +if (!BR2_PACKAGE_PHP || (!BR2_PACKAGE_PHP_EXT_MYSQLI && !BR2_PACKAGE_PHP_EXT_PGSQL) || \
> +	!BR2_PACKAGE_PHP_EXT_MBSTRING || !BR2_PACKAGE_PHP_EXT_BCMATH || \
> +	!BR2_PACKAGE_PHP_EXT_SOCKETS || !BR2_PACKAGE_PHP_EXT_GD || \
> +	!BR2_PACKAGE_PHP_EXT_LIBXML2 || !BR2_PACKAGE_PHP_EXT_CTYPE || \
> +	!BR2_PACKAGE_PHP_EXT_SESSION || !BR2_PACKAGE_PHP_EXT_XMLREADER || \
> +	!BR2_PACKAGE_PHP_EXT_XMLWRITER )
> +comment "zabbix-frontend need php with extensions(bc, sockets, "
> +comment "mbstring, gd, libxml2, ctype, session, xmlreader, xmlwriter, mysql or postgresql"
> +endif
> +
> +choice
> +	prompt "server ssl/tls backend"
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_NOTLS
> +	bool "none"
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_OPENSSL
> +	bool "openssl"
> +	depends on BR2_PACKAGE_OPENSSL
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_GNUTLS
> +	bool "gnutls"
> +	depends on BR2_PACKAGE_GNUTLS
> +
> +endchoice
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI
> +	bool "openipmi support"
> +	select BR2_PACKAGE_OPENIPMI
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_LIBSSH2
> +	bool "libssh2 support"
> +	select BR2_PACKAGE_LIBSSH2
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_LDAP
> +	bool "openldap support"
> +	select BR2_PACKAGE_OPENLDAP
> +
> +if (!BR2_USE_MMU)
> +comment "netsnmp support need MMU"
> +endif
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_NETSNMP
> +	bool "net-snmp support"
> +	depends on BR2_USE_MMU # netsnmp
> +	select BR2_PACKAGE_NETSNMP
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_LIBCURL
> +	bool "libcurl support"
> +	select BR2_PACKAGE_LIBCURL
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_LIBXML2
> +	bool "libxml2 support"
> +	select BR2_PACKAGE_LIBXML2
> +
> +config BR2_PACKAGE_ZABBIX_SERVER_COPY_FRONTEND
> +	bool "copy php-frontend to target"
> +	depends on BR2_PACKAGE_PHP
> +	depends on BR2_PACKAGE_PHP_EXT_MYSQLI || BR2_PACKAGE_PHP_EXT_PGSQL
> +	depends on BR2_PACKAGE_PHP_EXT_BCMATH
> +	depends on BR2_PACKAGE_PHP_EXT_SOCKETS
> +	depends on BR2_PACKAGE_PHP_EXT_MBSTRING
> +	depends on BR2_PACKAGE_PHP_EXT_GD
> +	depends on BR2_PACKAGE_PHP_EXT_LIBXML2
> +	depends on BR2_PACKAGE_PHP_EXT_CTYPE
> +	depends on BR2_PACKAGE_PHP_EXT_SESSION
> +	depends on BR2_PACKAGE_PHP_EXT_XMLREADER
> +	depends on BR2_PACKAGE_PHP_EXT_XMLWRITER
> +	help
> +	  copy web-frontend to /usr/zabbix/php-frontend
> +
> +endif
> +
> +endif
> diff --git a/package/zabbix/zabbix-agent.service b/package/zabbix/zabbix-agent.service
> new file mode 100644
> index 0000000000..8b4f45a4fc
> --- /dev/null
> +++ b/package/zabbix/zabbix-agent.service
> @@ -0,0 +1,17 @@
> +[Unit]
> +Description=Zabbix Agent Daemon
> +After=network.target
> +
> +[Service]
> +Type=forking
> +ExecStart=/usr/sbin/zabbix_agentd
> +ExecReload=/usr/sbin/zabbix_agentd -R config_cache_reload
> +RuntimeDirectory=zabbix
> +PIDFile=/run/zabbix/zabbix_agentd.pid
> +User=zabbix
> +Group=zabbix
> +WatchdogSec=30s
> +Restart=on-failure
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/package/zabbix/zabbix-server.service b/package/zabbix/zabbix-server.service
> new file mode 100644
> index 0000000000..b8ba0d1707
> --- /dev/null
> +++ b/package/zabbix/zabbix-server.service
> @@ -0,0 +1,17 @@
> +[Unit]
> +Description=Zabbix Server Daemon
> +After=network.target
> +
> +[Service]
> +Type=forking
> +ExecStart=/usr/sbin/zabbix_server
> +ExecReload=/usr/sbin/zabbix_server -R config_cache_reload
> +RuntimeDirectory=zabbix
> +PIDFile=/run/zabbix/zabbix_server.pid
> +User=zabbix
> +Group=zabbix
> +WatchdogSec=30s
> +Restart=on-failure
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/package/zabbix/zabbix.hash b/package/zabbix/zabbix.hash
> new file mode 100644
> index 0000000000..5c4207f168
> --- /dev/null
> +++ b/package/zabbix/zabbix.hash
> @@ -0,0 +1,3 @@
> +# Locally computed
> +sha256  22bb28e667424ad4688f47732853f4241df0e78a7607727b043d704ba726ae0e  zabbix-4.4.6.tar.gz
> +sha256  a823e00bc7f0844874f90fee97136f178e7debc76bace5f09e15ee8ed55f04c3  README
> diff --git a/package/zabbix/zabbix.mk b/package/zabbix/zabbix.mk
> new file mode 100644
> index 0000000000..a75914a816
> --- /dev/null
> +++ b/package/zabbix/zabbix.mk
> @@ -0,0 +1,154 @@
> +################################################################################
> +#
> +# zabbix
> +#
> +################################################################################
> +
> +ZABBIX_VERSION = 4.4.6
> +ZABBIX_SITE = https://sourceforge.net/projects/zabbix/files
> +ZABBIX_LICENSE = GPL-2.0
> +ZABBIX_LICENSE_FILES = README
> +
> +ZABBIX_DEPENDENCIES = pcre
> +ZABBIX_CONF_OPTS = --with-libpcre=$(STAGING_DIR)/usr/bin/ \
> +	--enable-agent
> +
> +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_CLIENT_CHANGE_PIDFILE_LOCATION
> +ZABBIX_SYSTEMD_UNITS += zabbix-agent.service
> +
> +define ZABBIX_INSTALL_INIT_SYSTEMD
> +	$(foreach unit,$(ZABBIX_SYSTEMD_UNITS),\
> +		$(INSTALL) -D -m 0644 $(ZABBIX_PKGDIR)/$(unit) $(TARGET_DIR)/usr/lib/systemd/system/$(unit) && \
> +		mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants && \
> +		ln -fs -r $(TARGET_DIR)/usr/lib/systemd/system/$(unit) $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/$(unit)
> +	)
> +endef
> +
> +define ZABBIX_USERS
> +	zabbix -1 zabbix -1 !- /var/lib/zabbix - zabbix zabbix user
> +endef
> +
> +define ZABBIX_CLIENT_CHANGE_PIDFILE_LOCATION
> +	$(SED) 's%\#\ PidFile=/tmp/zabbix_agentd.pid%PidFile=/run/zabbix/zabbix_agentd.pid%g' $(TARGET_DIR)/etc/zabbix_agentd.conf
> +endef
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER),y)
> +ZABBIX_SYSTEMD_UNITS += zabbix-server.service
> +ZABBIX_CONF_OPTS += --enable-server \
> +	--with-libevent \
> +	--with-libpthread=$(STAGING_DIR)/usr \
> +	--with-zlib=$(STAGING_DIR)/usr
> +ZABBIX_DEPENDENCIES += libevent zlib
> +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_CHANGE_PIDFILE_LOCATION
> +
> +# Need openipmi in staging dir. Patch submitted at 2019.12.16
> +# Before this patch enabled, use this crutch
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI),y)
> +ZABBIX_CONF_OPTS += --with-openipmi=$(STAGING_DIR)/usr
> +ZABBIX_DEPENDENCIES += openipmi
> +ZABBIX_PRE_CONFIGURE_HOOKS += BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI_FIX_LIBS
> +
> +define BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI_FIX_LIBS
> +	if [ ! -f $(STAGING_DIR)/usr/lib/libOpenIPMI.so ]; then \
> +		cp -rf $(TARGET_DIR)/usr/lib/libOpenIPMI* $(STAGING_DIR)/usr/lib/ ;\
> +		cp -rf $(TARGET_DIR)/usr/include/OpenIPMI $(STAGING_DIR)/usr/include/ ;\
> +	fi
> +endef
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBCURL),y)
> +ZABBIX_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr/bin/curl-config
> +ZABBIX_DEPENDENCIES += libcurl
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBXML2),y)
> +ZABBIX_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr/bin/xml2-config
> +ZABBIX_DEPENDENCIES += libxml2
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_NETSNMP),y)
> +ZABBIX_CONF_OPTS += --with-net-snmp=$(STAGING_DIR)/usr/bin/net-snmp-config
> +ZABBIX_DEPENDENCIES += netsnmp
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LDAP),y)
> +ZABBIX_CONF_OPTS += --with-ldap=$(STAGING_DIR)/usr
> +ZABBIX_DEPENDENCIES += openldap
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBSSH2),y)
> +ZABBIX_CONF_OPTS += --with-ssh2=$(STAGING_DIR)/usr
> +ZABBIX_DEPENDENCIES += libssh2
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_OPENSSL),y)
> +ZABBIX_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr
> +ZABBIX_DEPENDENCIES += openssl
> +else ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_GNUTLS),y)
> +ZABBIX_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr
> +ZABBIX_DEPENDENCIES += gnutls
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_FRONTEND),y)
> +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_COPY_FRONTEND
> +
> +define ZABBIX_SERVER_COPY_FRONTEND
> +	mkdir -p $(TARGET_DIR)/usr/zabbix/php-frontend/
> +	cp -r $(@D)/frontends/php/* $(TARGET_DIR)/usr/zabbix/php-frontend/
> +endef
> +
> +endif
> +
> +define ZABBIX_SERVER_CHANGE_PIDFILE_LOCATION
> +	$(SED) 's%\#\ PidFile=/tmp/zabbix_server.pid%PidFile=/run/zabbix/zabbix_server.pid%g' $(TARGET_DIR)/etc/zabbix_server.conf
> +endef
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_MYSQL),y)
> +ZABBIX_DEPENDENCIES += mysql
> +ZABBIX_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr/bin/mysql_config
> +# Need package/mariadb/0003-add-sysroot-path-to-mariadb_config.patch by Ryan Coe
> +# While this patch not included, use this crutch
> +ZABBIX_PRE_CONFIGURE_HOOKS += ZABBIX_DISABLE_MARIADB_CONFIG
> +ZABBIX_POST_CONFIGURE_HOOKS += ZABBIX_ENABLE_MARIADB_CONFIG
> +
> +define ZABBIX_DISABLE_MARIADB_CONFIG
> +	if [ -f "$(STAGING_DIR)/usr/bin/mariadb_config" ]; then \
> +		mv $(STAGING_DIR)/usr/bin/mariadb_config $(STAGING_DIR)/usr/bin/mariadb_config_save; \
> +	fi
> +endef
> +
> +define ZABBIX_ENABLE_MARIADB_CONFIG
> +	if [ -f "$(STAGING_DIR)/usr/bin/mariadb_confi_save" ]; then \
> +		mv $(STAGING_DIR)/usr/bin/mariadb_config_save $(STAGING_DIR)/usr/bin/mariadb_config; \
> +	fi
> +endef
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS),y)
> +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_PREPARE_MYSQL
> +endif
> +
> +define ZABBIX_SERVER_PREPARE_MYSQL
> +	mkdir -p $(TARGET_DIR)/usr/zabbix/mysql_schema/
> +	cp -r $(@D) $(@D)/database/mysql/*\.sql $(TARGET_DIR)/usr/zabbix/mysql_schema/
> +endef
> +
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL),y)
> +ZABBIX_DEPENDENCIES += postgresql
> +ZABBIX_CONF_OPTS += --with-postgresql=$(STAGING_DIR)/usr/bin/pg_config
> +
> +define ZABBIX_SERVER_PREPARE_POSTGRESQL
> +	mkdir -p $(TARGET_DIR)/usr/zabbix/postgresql_schema
> +	cp -r $(@D)/database/postgresql/*\.sql $(TARGET_DIR)/usr/zabbix/postgresql_schema/
> +endef
> +
> +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS),y)
> +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_PREPARE_POSTGRESQL
> +endif
> +
> +endif
> +
> +endif
> +
> +$(eval $(autotools-package))
>
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index c57bc1c5c9..08a9aadf72 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -155,6 +155,9 @@  N:	Alexey Brodkin <alexey.brodkin@synopsys.com>
 F:	board/cubietech/cubieboard2/
 F:	configs/cubieboard2_defconfig
 
+N:	Alexey Lukyanchuk <skif@skif-web.ru>
+F:	package/zabbix/
+
 N:	Alistair Francis <alistair@alistair23.me>
 F:	board/sifive/
 F:	boot/opensbi/
diff --git a/package/Config.in b/package/Config.in
index a9c6f6fcbc..aa244812db 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2234,6 +2234,7 @@  endif
 	source "package/xinetd/Config.in"
 	source "package/xl2tp/Config.in"
 	source "package/xtables-addons/Config.in"
+	source "package/zabbix/Config.in"
 	source "package/znc/Config.in"
 
 endmenu
diff --git a/package/zabbix/Config.in b/package/zabbix/Config.in
new file mode 100644
index 0000000000..0ce60a37e5
--- /dev/null
+++ b/package/zabbix/Config.in
@@ -0,0 +1,122 @@ 
+config BR2_PACKAGE_ZABBIX
+	bool "zabbix"
+	depends on BR2_TOOLCHAIN_USES_GLIBC=y || BR2_TOOLCHAIN_EXTERNAL_GLIBC=y || BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+	select BR2_PACKAGE_PCRE
+	help
+	  Zabbix is an enterprise-class open source distributed
+	  monitoring solution.Zabbix is free of cost. Zabbix
+	  is written and distributed under the GPL General Public
+	  License version 2.
+
+if (!BR2_TOOLCHAIN_USES_GLIBC && !BR2_TOOLCHAIN_EXTERNAL_GLIBC && !BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC)
+comment "zabbix need glibc"
+endif
+
+if BR2_PACKAGE_ZABBIX
+
+if (!BR2_PACKAGE_POSTGRESQL && !BR2_PACKAGE_MYSQL)
+comment "zabbix server needs postgresql or mysql support"
+endif
+
+config BR2_PACKAGE_ZABBIX_SERVER
+	bool "zabbix server"
+	depends on BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_MYSQL
+	select BR2_PACKAGE_ZLIB
+	select BR2_PACKAGE_LIBEVENT
+
+if BR2_PACKAGE_ZABBIX_SERVER
+
+choice
+	prompt "server database backend"
+
+config BR2_PACKAGE_ZABBIX_SERVER_MYSQL
+	bool "mysql"
+	depends on BR2_PACKAGE_MYSQL
+
+config BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL
+	bool "postgresql"
+	depends on BR2_PACKAGE_POSTGRESQL
+
+endchoice
+
+if BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL || BR2_PACKAGE_ZABBIX_SERVER_MYSQL
+config BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS
+	bool "install sql dumps"
+	help
+	  Copy inicitial database dumps to /usr/zabbix/
+endif
+
+if (!BR2_PACKAGE_PHP || (!BR2_PACKAGE_PHP_EXT_MYSQLI && !BR2_PACKAGE_PHP_EXT_PGSQL) || \
+	!BR2_PACKAGE_PHP_EXT_MBSTRING || !BR2_PACKAGE_PHP_EXT_BCMATH || \
+	!BR2_PACKAGE_PHP_EXT_SOCKETS || !BR2_PACKAGE_PHP_EXT_GD || \
+	!BR2_PACKAGE_PHP_EXT_LIBXML2 || !BR2_PACKAGE_PHP_EXT_CTYPE || \
+	!BR2_PACKAGE_PHP_EXT_SESSION || !BR2_PACKAGE_PHP_EXT_XMLREADER || \
+	!BR2_PACKAGE_PHP_EXT_XMLWRITER )
+comment "zabbix-frontend need php with extensions(bc, sockets, "
+comment "mbstring, gd, libxml2, ctype, session, xmlreader, xmlwriter, mysql or postgresql"
+endif
+
+choice
+	prompt "server ssl/tls backend"
+
+config BR2_PACKAGE_ZABBIX_SERVER_NOTLS
+	bool "none"
+
+config BR2_PACKAGE_ZABBIX_SERVER_OPENSSL
+	bool "openssl"
+	depends on BR2_PACKAGE_OPENSSL
+
+config BR2_PACKAGE_ZABBIX_SERVER_GNUTLS
+	bool "gnutls"
+	depends on BR2_PACKAGE_GNUTLS
+
+endchoice
+
+config BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI
+	bool "openipmi support"
+	select BR2_PACKAGE_OPENIPMI
+
+config BR2_PACKAGE_ZABBIX_SERVER_LIBSSH2
+	bool "libssh2 support"
+	select BR2_PACKAGE_LIBSSH2
+
+config BR2_PACKAGE_ZABBIX_SERVER_LDAP
+	bool "openldap support"
+	select BR2_PACKAGE_OPENLDAP
+
+if (!BR2_USE_MMU)
+comment "netsnmp support need MMU"
+endif
+
+config BR2_PACKAGE_ZABBIX_SERVER_NETSNMP
+	bool "net-snmp support"
+	depends on BR2_USE_MMU # netsnmp
+	select BR2_PACKAGE_NETSNMP
+
+config BR2_PACKAGE_ZABBIX_SERVER_LIBCURL
+	bool "libcurl support"
+	select BR2_PACKAGE_LIBCURL
+
+config BR2_PACKAGE_ZABBIX_SERVER_LIBXML2
+	bool "libxml2 support"
+	select BR2_PACKAGE_LIBXML2
+
+config BR2_PACKAGE_ZABBIX_SERVER_COPY_FRONTEND
+	bool "copy php-frontend to target"
+	depends on BR2_PACKAGE_PHP
+	depends on BR2_PACKAGE_PHP_EXT_MYSQLI || BR2_PACKAGE_PHP_EXT_PGSQL
+	depends on BR2_PACKAGE_PHP_EXT_BCMATH
+	depends on BR2_PACKAGE_PHP_EXT_SOCKETS
+	depends on BR2_PACKAGE_PHP_EXT_MBSTRING
+	depends on BR2_PACKAGE_PHP_EXT_GD
+	depends on BR2_PACKAGE_PHP_EXT_LIBXML2
+	depends on BR2_PACKAGE_PHP_EXT_CTYPE
+	depends on BR2_PACKAGE_PHP_EXT_SESSION
+	depends on BR2_PACKAGE_PHP_EXT_XMLREADER
+	depends on BR2_PACKAGE_PHP_EXT_XMLWRITER
+	help
+	  copy web-frontend to /usr/zabbix/php-frontend
+
+endif
+
+endif
diff --git a/package/zabbix/zabbix-agent.service b/package/zabbix/zabbix-agent.service
new file mode 100644
index 0000000000..8b4f45a4fc
--- /dev/null
+++ b/package/zabbix/zabbix-agent.service
@@ -0,0 +1,17 @@ 
+[Unit]
+Description=Zabbix Agent Daemon
+After=network.target
+ 
+[Service]
+Type=forking
+ExecStart=/usr/sbin/zabbix_agentd
+ExecReload=/usr/sbin/zabbix_agentd -R config_cache_reload
+RuntimeDirectory=zabbix
+PIDFile=/run/zabbix/zabbix_agentd.pid
+User=zabbix
+Group=zabbix
+WatchdogSec=30s
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/zabbix/zabbix-server.service b/package/zabbix/zabbix-server.service
new file mode 100644
index 0000000000..b8ba0d1707
--- /dev/null
+++ b/package/zabbix/zabbix-server.service
@@ -0,0 +1,17 @@ 
+[Unit]
+Description=Zabbix Server Daemon
+After=network.target
+ 
+[Service]
+Type=forking
+ExecStart=/usr/sbin/zabbix_server
+ExecReload=/usr/sbin/zabbix_server -R config_cache_reload
+RuntimeDirectory=zabbix
+PIDFile=/run/zabbix/zabbix_server.pid
+User=zabbix
+Group=zabbix
+WatchdogSec=30s
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/zabbix/zabbix.hash b/package/zabbix/zabbix.hash
new file mode 100644
index 0000000000..5c4207f168
--- /dev/null
+++ b/package/zabbix/zabbix.hash
@@ -0,0 +1,3 @@ 
+# Locally computed
+sha256  22bb28e667424ad4688f47732853f4241df0e78a7607727b043d704ba726ae0e  zabbix-4.4.6.tar.gz
+sha256  a823e00bc7f0844874f90fee97136f178e7debc76bace5f09e15ee8ed55f04c3  README
diff --git a/package/zabbix/zabbix.mk b/package/zabbix/zabbix.mk
new file mode 100644
index 0000000000..a75914a816
--- /dev/null
+++ b/package/zabbix/zabbix.mk
@@ -0,0 +1,154 @@ 
+################################################################################
+#
+# zabbix
+#
+################################################################################
+
+ZABBIX_VERSION = 4.4.6
+ZABBIX_SITE = https://sourceforge.net/projects/zabbix/files
+ZABBIX_LICENSE = GPL-2.0
+ZABBIX_LICENSE_FILES = README
+
+ZABBIX_DEPENDENCIES = pcre
+ZABBIX_CONF_OPTS = --with-libpcre=$(STAGING_DIR)/usr/bin/ \
+	--enable-agent
+
+ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_CLIENT_CHANGE_PIDFILE_LOCATION
+ZABBIX_SYSTEMD_UNITS += zabbix-agent.service
+
+define ZABBIX_INSTALL_INIT_SYSTEMD
+	$(foreach unit,$(ZABBIX_SYSTEMD_UNITS),\
+		$(INSTALL) -D -m 0644 $(ZABBIX_PKGDIR)/$(unit) $(TARGET_DIR)/usr/lib/systemd/system/$(unit) && \
+		mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants && \
+		ln -fs -r $(TARGET_DIR)/usr/lib/systemd/system/$(unit) $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/$(unit)
+	)
+endef
+
+define ZABBIX_USERS
+	zabbix -1 zabbix -1 !- /var/lib/zabbix - zabbix zabbix user
+endef
+
+define ZABBIX_CLIENT_CHANGE_PIDFILE_LOCATION
+	$(SED) 's%\#\ PidFile=/tmp/zabbix_agentd.pid%PidFile=/run/zabbix/zabbix_agentd.pid%g' $(TARGET_DIR)/etc/zabbix_agentd.conf
+endef
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER),y)
+ZABBIX_SYSTEMD_UNITS += zabbix-server.service
+ZABBIX_CONF_OPTS += --enable-server \
+	--with-libevent \
+	--with-libpthread=$(STAGING_DIR)/usr \
+	--with-zlib=$(STAGING_DIR)/usr
+ZABBIX_DEPENDENCIES += libevent zlib
+ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_CHANGE_PIDFILE_LOCATION
+
+# Need openipmi in staging dir. Patch submitted at 2019.12.16
+# Before this patch enabled, use this crutch
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI),y)
+ZABBIX_CONF_OPTS += --with-openipmi=$(STAGING_DIR)/usr
+ZABBIX_DEPENDENCIES += openipmi
+ZABBIX_PRE_CONFIGURE_HOOKS += BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI_FIX_LIBS
+
+define BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI_FIX_LIBS
+	if [ ! -f $(STAGING_DIR)/usr/lib/libOpenIPMI.so ]; then \
+		cp -rf $(TARGET_DIR)/usr/lib/libOpenIPMI* $(STAGING_DIR)/usr/lib/ ;\
+		cp -rf $(TARGET_DIR)/usr/include/OpenIPMI $(STAGING_DIR)/usr/include/ ;\
+	fi
+endef
+endif
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBCURL),y)
+ZABBIX_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr/bin/curl-config
+ZABBIX_DEPENDENCIES += libcurl
+endif
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBXML2),y)
+ZABBIX_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr/bin/xml2-config
+ZABBIX_DEPENDENCIES += libxml2
+endif
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_NETSNMP),y)
+ZABBIX_CONF_OPTS += --with-net-snmp=$(STAGING_DIR)/usr/bin/net-snmp-config
+ZABBIX_DEPENDENCIES += netsnmp
+endif
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LDAP),y)
+ZABBIX_CONF_OPTS += --with-ldap=$(STAGING_DIR)/usr
+ZABBIX_DEPENDENCIES += openldap
+endif
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBSSH2),y)
+ZABBIX_CONF_OPTS += --with-ssh2=$(STAGING_DIR)/usr
+ZABBIX_DEPENDENCIES += libssh2
+endif
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_OPENSSL),y)
+ZABBIX_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr
+ZABBIX_DEPENDENCIES += openssl
+else ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_GNUTLS),y)
+ZABBIX_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr
+ZABBIX_DEPENDENCIES += gnutls
+endif
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_FRONTEND),y)
+ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_COPY_FRONTEND
+
+define ZABBIX_SERVER_COPY_FRONTEND
+	mkdir -p $(TARGET_DIR)/usr/zabbix/php-frontend/
+	cp -r $(@D)/frontends/php/* $(TARGET_DIR)/usr/zabbix/php-frontend/
+endef
+
+endif
+
+define ZABBIX_SERVER_CHANGE_PIDFILE_LOCATION
+	$(SED) 's%\#\ PidFile=/tmp/zabbix_server.pid%PidFile=/run/zabbix/zabbix_server.pid%g' $(TARGET_DIR)/etc/zabbix_server.conf
+endef
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_MYSQL),y)
+ZABBIX_DEPENDENCIES += mysql
+ZABBIX_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr/bin/mysql_config
+# Need package/mariadb/0003-add-sysroot-path-to-mariadb_config.patch by Ryan Coe
+# While this patch not included, use this crutch
+ZABBIX_PRE_CONFIGURE_HOOKS += ZABBIX_DISABLE_MARIADB_CONFIG
+ZABBIX_POST_CONFIGURE_HOOKS += ZABBIX_ENABLE_MARIADB_CONFIG
+
+define ZABBIX_DISABLE_MARIADB_CONFIG
+	if [ -f "$(STAGING_DIR)/usr/bin/mariadb_config" ]; then \
+		mv $(STAGING_DIR)/usr/bin/mariadb_config $(STAGING_DIR)/usr/bin/mariadb_config_save; \
+	fi
+endef
+
+define ZABBIX_ENABLE_MARIADB_CONFIG
+	if [ -f "$(STAGING_DIR)/usr/bin/mariadb_confi_save" ]; then \
+		mv $(STAGING_DIR)/usr/bin/mariadb_config_save $(STAGING_DIR)/usr/bin/mariadb_config; \
+	fi
+endef
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS),y)
+ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_PREPARE_MYSQL
+endif
+
+define ZABBIX_SERVER_PREPARE_MYSQL
+	mkdir -p $(TARGET_DIR)/usr/zabbix/mysql_schema/
+	cp -r $(@D) $(@D)/database/mysql/*\.sql $(TARGET_DIR)/usr/zabbix/mysql_schema/
+endef
+
+endif
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL),y)
+ZABBIX_DEPENDENCIES += postgresql
+ZABBIX_CONF_OPTS += --with-postgresql=$(STAGING_DIR)/usr/bin/pg_config
+
+define ZABBIX_SERVER_PREPARE_POSTGRESQL
+	mkdir -p $(TARGET_DIR)/usr/zabbix/postgresql_schema
+	cp -r $(@D)/database/postgresql/*\.sql $(TARGET_DIR)/usr/zabbix/postgresql_schema/
+endef
+
+ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS),y)
+ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_PREPARE_POSTGRESQL
+endif
+
+endif
+
+endif
+
+$(eval $(autotools-package))