#
# Copyright (C) 2021-2025 IOPSYS
#

include $(TOPDIR)/rules.mk

PKG_NAME:=parental-control
PKG_VERSION:=1.3.1

LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/parental-control.git
PKG_SOURCE_VERSION:=b1e5b3f81f08271bdaf9cb4bda8a7696a27be3c6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=LICENSE

include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/iopsys/bbfdm/bbfdm.mk

define Package/parental-control
  SECTION:=utils
  CATEGORY:=Utilities
  TITLE:=URL filter
  DEPENDS:=+libuci +libnetfilter-queue +libnfnetlink +iptables-mod-nfqueue +libpthread
  DEPENDS+=+libubox +ubus +conntrack +libcurl +cmph
  DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
endef

define Package/parental-control/description
	Enables filtering of packets on the basis of URL and source MAC address.
endef

define Package/$(PKG_NAME)/config
	source "$(SOURCE)/Config.in"
endef

TARGET_CFLAGS += -D_GNU_SOURCE

ifeq ($(CONFIG_PARENTAL_CONTROL_VENDOR_PREFIX),"")
VENDOR_PREFIX = $(CONFIG_BBF_VENDOR_PREFIX)
else
VENDOR_PREFIX = $(CONFIG_PARENTAL_CONTROL_VENDOR_PREFIX)
endif

TARGET_CFLAGS += -DBBF_VENDOR_PREFIX=\\\"$(VENDOR_PREFIX)\\\"

ifeq ($(CONFIG_PARENTAL_CONTROL_URLFILTERING),y)
	TARGET_CFLAGS+=-DPARENTAL_CONTROL_ULRFILTER
endif

TARGET_LDFLAGS += -lcmph

ifeq ($(LOCAL_DEV),1)
define Build/Prepare
	$(CP) -rf ~/git/parental-control/* $(PKG_BUILD_DIR)/
endef
endif

define Package/parental-control/install
	$(INSTALL_DIR) $(1)/etc/parentalcontrol
	$(INSTALL_DIR) $(1)/lib/parentalcontrol
	$(INSTALL_DATA) ./files/lib/parentalcontrol/parentalcontrol.sh $(1)/lib/parentalcontrol/
	$(INSTALL_BIN) ./files/lib/parentalcontrol/sync_bundles.sh $(1)/lib/parentalcontrol/

	$(INSTALL_DIR) $(1)/etc
	$(INSTALL_DATA) ./files/etc/firewall.parentalcontrol $(1)/etc/

	$(INSTALL_DIR) $(1)/usr/sbin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/urlfilter $(1)/usr/sbin

	$(INSTALL_DIR) $(1)/etc/init.d
	$(INSTALL_BIN) ./files/etc/init.d/parentalcontrol $(1)/etc/init.d/

	$(INSTALL_DIR) $(1)/etc/config
	$(INSTALL_DATA) ./files/etc/config/parentalcontrol $(1)/etc/config/parentalcontrol

	$(INSTALL_DIR) $(1)/etc/uci-defaults
	$(INSTALL_DATA) ./files/etc/uci-defaults/95-firewall_parentalcontrol.ucidefaults $(1)/etc/uci-defaults/
	$(INSTALL_DATA) ./files/etc/uci-defaults/35-migrate_urlfilter.ucidefaults $(1)/etc/uci-defaults/

	$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
	$(INSTALL_DATA) ./files/lib/upgrade/keep.d/parentalcontrol $(1)/lib/upgrade/keep.d/parentalcontrol

	$(BBFDM_REGISTER_SERVICES) -v ${VENDOR_PREFIX} ./bbfdm_service.json $(1) parentalcontrol

	$(INSTALL_DATA) ./files/etc/uci-defaults/40-parental_control_update_bundle_path $(1)/etc/uci-defaults/
ifeq ($(CONFIG_PARENTAL_CONTROL_URLFILTERING),y)
	$(INSTALL_DATA) ./files/etc/uci-defaults/50-parental_control_add_bundles $(1)/etc/uci-defaults/
	$(CP) ./files/urlbundle_override.json $(1)/etc/parentalcontrol/
else
	$(BBFDM_INSTALL_MS_PLUGIN) -v ${VENDOR_PREFIX} ./files/urlbundle_override.json $(1) parentalcontrol
	$(INSTALL_DATA) ./files/etc/uci-defaults/50-parental_control_disable_urlfilter $(1)/etc/uci-defaults/
endif
endef

$(eval $(call BuildPackage,parental-control))
