Update feed [iopsys] package [urlfilter]

This commit is contained in:
jjoseph 2021-04-05 10:45:57 +05:30
parent 9995b4a3f2
commit b30434d872
2 changed files with 114 additions and 0 deletions

54
urlfilter/Makefile Normal file
View file

@ -0,0 +1,54 @@
#
# Copyright (C) 2021 IOPSYS
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=urlfilter
PKG_VERSION:=1.0.0
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=c11c1057e8f7bd96934fce1eef07f96d8349f683
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/urlfilter.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/urlfilter
SECTION:=utils
CATEGORY:=Utilities
TITLE:=URL filter
DEPENDS:=+libuci +libnetfilter-queue +libnfnetlink +libpthread +libubox +ubus
endef
define Package/urlfilter/description
Enables filtering of packets on the basis of URL and source MAC address.
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-D_GNU_SOURCE
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ./urlfilter/* $(PKG_BUILD_DIR)/
endef
endif
define Package/urlfilter/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/etc/init.d/urlfilter $(1)/etc/init.d/urlfilter
$(INSTALL_DIR) $(1)/usr
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/urlfilter $(1)/usr/sbin
endef
$(eval $(call BuildPackage,urlfilter))

View file

@ -0,0 +1,60 @@
#!/bin/sh /etc/rc.common
START=21
STOP=10
USE_PROCD=1
NAME=urlfilter
PROG=/usr/sbin/urlfilter
configure_firewall()
{
iptables -L FORWARD|grep -iqE "NFQUEUE"
if [ "$?" -ne 0 ]; then
echo "Applying firewall rule to setup NFQUEUE on forward traffic for urlfiltering"
iptables -I FORWARD 1 -p tcp --dport 80 -j NFQUEUE --queue-num 0
iptables -I FORWARD 2 -p tcp --dport 443 -j NFQUEUE --queue-num 0
iptables -I INPUT 1 -p udp --dport 53 -j NFQUEUE --queue-num 0
iptables -I INPUT 2 -p udp --sport 53 -j NFQUEUE --queue-num 0
fi
}
start_service() {
if [ -f "/etc/config/urlfilter" ]; then
procd_open_instance urlfilter
procd_set_param command ${PROG}
configure_firewall
procd_set_param respawn
procd_close_instance
fi
}
stop_service() {
pidof $NAME >/dev/null
if [ "$?" -eq 0 ]; then
pidof $NAME > /dev/null 2>&1 && killall -q $NAME
pidof $NAME > /dev/null 2>&1
while pidof $NAME > /dev/null 2>&1; do
killall -q -9 $NAME
done
fi
iptables -L FORWARD|grep -iqE "NFQUEUE"
if [ "$?" -eq 0 ]; then
echo "Deleting firewall rule to setup NFQUEUE on forward traffic for urlfiltering"
iptables -D FORWARD -p tcp --dport 80 -j NFQUEUE --queue-num 0
iptables -D FORWARD -p tcp --dport 443 -j NFQUEUE --queue-num 0
iptables -D INPUT -p udp --dport 53 -j NFQUEUE --queue-num 0
iptables -D INPUT -p udp --sport 53 -j NFQUEUE --queue-num 0
fi
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger "urlfilter"
procd_add_reload_trigger "firewall"
}