#
# Copyright (C) 2015-2016 OpenWrt.org
# Copyright (C) 2020 jjm2473@gmail.com
#
# This is free software, licensed under the GNU General Public License v3.
#

include $(TOPDIR)/rules.mk

PKG_ARCH_FAIL2BANOP:=$(ARCH)

PKG_NAME:=fail2banop
# use PKG_SOURCE_DATE instead of PKG_VERSION for compitable
PKG_SOURCE_DATE:=1.0.1
PKG_RELEASE:=2
ARCH_HEXCODE:=
ifeq ($(ARCH),x86_64)
ARCH_HEXCODE=8664
else ifeq ($(ARCH),aarch64)
ARCH_HEXCODE=aa64
else ifeq ($(ARCH),arm)
ARCH_HEXCODE=aa32
else ifeq ($(ARCH),mipsel)
ARCH_HEXCODE=1b0c
endif
PKG_SOURCE_VERSION:=f20ec4f5cbd5d070e4c52d00558a9b8ec33051a0
PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_SOURCE_DATE).tar.gz
PKG_SOURCE_URL:=https://github.com/linkease/fail2ban-openwrt/releases/download/v${PKG_SOURCE_DATE}/
PKG_HASH:=skip

PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-binary-$(PKG_SOURCE_DATE)

PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0

include $(INCLUDE_DIR)/package.mk

define Package/$(PKG_NAME)
	SECTION:=net
	CATEGORY:=Network
	TITLE:=fail2banop - Auto ban ip if the login is failed
	PKGARCH:=all
	URL:=https://github.com/linkease/fail2ban-openwrt
endef

define Package/$(PKG_NAME)/description
  Auto ban ip if the login is failed
endef

define Package/$(PKG_NAME)/conffiles
/etc/config/fail2banop
endef

define Package/$(PKG_NAME)/postinst
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
	[ -f /etc/uci-defaults/fail2banop ] && /etc/uci-defaults/fail2banop && rm -f /etc/uci-defaults/fail2banop
	exit 0
fi
endef

define Build/Configure
endef

define Build/Compile
endef

define Package/$(PKG_NAME)/install
	$(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d $(1)/etc/uci-defaults $(1)/usr/sbin
	$(INSTALL_DIR) $(1)/usr/share/nftables.d/chain-pre/input $(1)/usr/share/nftables.d/table-post
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/fail2ban_op_bin.$(PKG_ARCH_FAIL2BANOP) $(1)/usr/sbin/fail2ban_op_bin
	$(INSTALL_CONF) ./files/fail2banop.config $(1)/etc/config/fail2banop
	$(INSTALL_BIN) ./files/fail2banop.init $(1)/etc/init.d/fail2banop
	$(INSTALL_BIN) ./files/fail2banop.uci-default $(1)/etc/uci-defaults/fail2banop
	$(INSTALL_DATA) ./files/nft-hook/chain-pre/input/20-fail2banop.nft $(1)/usr/share/nftables.d/chain-pre/input/
	$(INSTALL_DATA) ./files/nft-hook/table-post/21-fail2banop.nft $(1)/usr/share/nftables.d/table-post/
endef

$(eval $(call BuildPackage,$(PKG_NAME)))
