mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
Merge branch 'bundles' into 'devel'
parental-control: read urlbundle definition from json See merge request feed/iopsys!1988
This commit is contained in:
commit
91694e1cc1
5 changed files with 114 additions and 70 deletions
|
|
@ -5,13 +5,13 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=parental-control
|
PKG_NAME:=parental-control
|
||||||
PKG_VERSION:=1.4.4
|
PKG_VERSION:=1.4.5
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/parental-control.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/parental-control.git
|
||||||
PKG_SOURCE_VERSION:=d0eabdda9790d1df3cec30589c97214731108367
|
PKG_SOURCE_VERSION:=11777ff069888fc543c2501110313b654bbbfbc9
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
|
|
@ -27,7 +27,7 @@ define Package/parental-control
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=URL filter
|
TITLE:=URL filter
|
||||||
DEPENDS:=+libuci +libnetfilter-queue +libnfnetlink +iptables-mod-nfqueue +libpthread
|
DEPENDS:=+libuci +libnetfilter-queue +libnfnetlink +iptables-mod-nfqueue +libpthread
|
||||||
DEPENDS+=+libubox +ubus +conntrack +libcurl +cmph
|
DEPENDS+=+libubox +ubus +conntrack +libcurl +cmph +libjson-c
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
@ -87,8 +87,8 @@ define Package/parental-control/install
|
||||||
|
|
||||||
$(INSTALL_DATA) ./files/etc/uci-defaults/40-parental_control_update_bundle_path $(1)/etc/uci-defaults/
|
$(INSTALL_DATA) ./files/etc/uci-defaults/40-parental_control_update_bundle_path $(1)/etc/uci-defaults/
|
||||||
ifeq ($(CONFIG_PARENTAL_CONTROL_URLFILTERING),y)
|
ifeq ($(CONFIG_PARENTAL_CONTROL_URLFILTERING),y)
|
||||||
$(INSTALL_DATA) ./files/etc/uci-defaults/50-parental_control_add_bundles $(1)/etc/uci-defaults/
|
$(INSTALL_DATA) ./files/etc/parentalcontrol/url_bundles.json $(1)/etc/parentalcontrol/
|
||||||
$(CP) ./files/urlbundle_override.json $(1)/etc/parentalcontrol/
|
$(INSTALL_DATA) ./files/etc/parentalcontrol/urlbundle_override.json $(1)/etc/parentalcontrol/
|
||||||
else
|
else
|
||||||
$(BBFDM_INSTALL_MS_PLUGIN) -v ${VENDOR_PREFIX} ./files/urlbundle_override.json $(1) parentalcontrol
|
$(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/
|
$(INSTALL_DATA) ./files/etc/uci-defaults/50-parental_control_disable_urlfilter $(1)/etc/uci-defaults/
|
||||||
|
|
|
||||||
76
parental-control/files/etc/parentalcontrol/url_bundles.json
Normal file
76
parental-control/files/etc/parentalcontrol/url_bundles.json
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
{
|
||||||
|
"urlBundles": [
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/abuse-nl.txt",
|
||||||
|
"name": "Abuse"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/ads-nl.txt",
|
||||||
|
"name": "Ads"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/crypto-nl.txt",
|
||||||
|
"name": "Crypto"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/drugs-nl.txt",
|
||||||
|
"name": "Drugs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/everything-nl.txt",
|
||||||
|
"name": "Everything else"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/facebook-nl.txt",
|
||||||
|
"name": "Facebook/Instagram"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/fraud-nl.txt",
|
||||||
|
"name": "Fraud"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/gambling-nl.txt",
|
||||||
|
"name": "Gambling"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/malware-nl.txt",
|
||||||
|
"name": "Malware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/phishing-nl.txt",
|
||||||
|
"name": "Phishing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/piracy-nl.txt",
|
||||||
|
"name": "Piracy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/porn-nl.txt",
|
||||||
|
"name": "Porn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/ransomware-nl.txt",
|
||||||
|
"name": "Ransomware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/redirect-nl.txt",
|
||||||
|
"name": "Redirect"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/scam-nl.txt",
|
||||||
|
"name": "Scam"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/tiktok-nl.txt",
|
||||||
|
"name": "TikTok"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/torrent-nl.txt",
|
||||||
|
"name": "Torrent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://blocklistproject.github.io/Lists/alt-version/tracking-nl.txt",
|
||||||
|
"name": "Tracking"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
[ ! -f "/etc/config/parentalcontrol" ] && exit 0
|
|
||||||
|
|
||||||
COUNT=1
|
|
||||||
|
|
||||||
add_urlbundle()
|
|
||||||
{
|
|
||||||
local name url
|
|
||||||
|
|
||||||
url="${1}"; shift
|
|
||||||
name="$*"
|
|
||||||
|
|
||||||
uci -q set parentalcontrol.urlbundle_${COUNT}=urlbundle
|
|
||||||
uci -q set parentalcontrol.urlbundle_${COUNT}.name="${name}"
|
|
||||||
uci -q set parentalcontrol.urlbundle_${COUNT}.download_url="${url}"
|
|
||||||
|
|
||||||
COUNT="$((COUNT+1))"
|
|
||||||
}
|
|
||||||
|
|
||||||
urlfilter="$(uci -q get parentalcontrol.globals.urlfilter)"
|
|
||||||
if [ "${urlfilter}" -eq "1" ]; then
|
|
||||||
add_urlbundle "https://blocklistproject.github.io/Lists/alt-version/abuse-nl.txt" "Abuse"
|
|
||||||
add_urlbundle "https://blocklistproject.github.io/Lists/alt-version/ads-nl.txt" "Ads"
|
|
||||||
add_urlbundle "https://blocklistproject.github.io/Lists/alt-version/crypto-nl.txt" "Crypto"
|
|
||||||
add_urlbundle "https://blocklistproject.github.io/Lists/alt-version/drugs-nl.txt" "Drugs"
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/everything-nl.txt' "Everything else"
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/facebook-nl.txt' 'Facebook/Instagram'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/fraud-nl.txt' 'Fraud'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/gambling-nl.txt' 'Gambling'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/malware-nl.txt' 'Malware'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/phishing-nl.txt' 'Phishing'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/piracy-nl.txt' 'Piracy'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/porn-nl.txt' 'Porn'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/ransomware-nl.txt' 'Ransomware'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/redirect-nl.txt' 'Redirect'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/scam-nl.txt' 'Scam'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/tiktok-nl.txt' 'TikTok'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/torrent-nl.txt' 'Torrent'
|
|
||||||
add_urlbundle 'https://blocklistproject.github.io/Lists/alt-version/tracking-nl.txt' 'Tracking'
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
. /lib/functions.sh
|
. /lib/functions.sh
|
||||||
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
LOCKFILE="/tmp/sync_bundles.lock"
|
LOCKFILE="/tmp/sync_bundles.lock"
|
||||||
log_level="$(uci -q get parentalcontrol.globals.loglevel)"
|
log_level="$(uci -q get parentalcontrol.globals.loglevel)"
|
||||||
log_level="${log_level:-1}"
|
log_level="${log_level:-1}"
|
||||||
|
URLBUNDLE_JSON="/etc/parentalcontrol/url_bundles.json"
|
||||||
DEBUG=0
|
DEBUG=0
|
||||||
|
|
||||||
log_err() {
|
log_err() {
|
||||||
|
|
@ -85,6 +87,7 @@ update_bundle_file_from_url() {
|
||||||
local success=0
|
local success=0
|
||||||
while [ $attempt -le 3 ]; do
|
while [ $attempt -le 3 ]; do
|
||||||
if curl -s -o "$temp_file" "$download_url"; then
|
if curl -s -o "$temp_file" "$download_url"; then
|
||||||
|
log_info "Download successful for $download_url"
|
||||||
success=1
|
success=1
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
|
|
@ -218,24 +221,33 @@ cleanup_bundle_files() {
|
||||||
# Collect all download_url entries using config_foreach
|
# Collect all download_url entries using config_foreach
|
||||||
local urls=""
|
local urls=""
|
||||||
get_download_url() {
|
get_download_url() {
|
||||||
local section="$1"
|
local enable url
|
||||||
config_get url "$section" download_url
|
|
||||||
config_get_bool enable "$1" enable 1
|
json_select "${2}"
|
||||||
|
|
||||||
|
json_get_var url url
|
||||||
|
json_get_var enable enable
|
||||||
|
enable="${enable:-1}"
|
||||||
|
|
||||||
if [ "${enable}" -eq 0 ]; then
|
if [ "${enable}" -eq 0 ]; then
|
||||||
# bundle is disabled
|
log_info "get_download_url: Skipping bundle ${name} not enabled"
|
||||||
|
json_select ..
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
url="${url#file://}"
|
url="${url#file://}"
|
||||||
url="${url#https://}"
|
url="${url#https://}"
|
||||||
url="${url#http://}"
|
url="${url#http://}"
|
||||||
|
|
||||||
url="${url##*/}" # Get everything after the last '/'
|
url="${url##*/}" # Get everything after the last '/'
|
||||||
urls="$urls $url"
|
urls="$urls $url"
|
||||||
|
json_select ..
|
||||||
}
|
}
|
||||||
|
|
||||||
config_load parentalcontrol
|
json_init
|
||||||
config_foreach get_download_url urlbundle
|
json_load_file "${URLBUNDLE_JSON}"
|
||||||
|
|
||||||
|
json_for_each_item get_download_url "urlBundles"
|
||||||
|
|
||||||
# Loop through all files in the directory
|
# Loop through all files in the directory
|
||||||
for file in "$dir"/*; do
|
for file in "$dir"/*; do
|
||||||
|
|
@ -294,30 +306,29 @@ handle_filter_for_bundles() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
check_bundle_exists() {
|
check_bundle_exists() {
|
||||||
local enable download_url name cfg
|
local enable url name
|
||||||
|
|
||||||
cfg="$1"
|
json_select "${2}"
|
||||||
config_get name "$cfg" name
|
|
||||||
config_get_bool enable "$cfg" enable 1
|
json_get_var name name
|
||||||
config_get download_url "$cfg" download_url
|
json_get_var url url
|
||||||
|
json_get_var enable enable
|
||||||
|
enable="${enable:-1}"
|
||||||
|
|
||||||
if [ "${enable}" -eq 0 ]; then
|
if [ "${enable}" -eq 0 ]; then
|
||||||
log_info "Skipping bundle ${name} not enabled"
|
log_info "check_bundle_exists: Skipping bundle ${name} not enabled"
|
||||||
|
json_select ..
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
handle_download_url "$download_url" "$name"
|
handle_download_url "${url}" "${name}"
|
||||||
local exit_status=$?
|
json_select ..
|
||||||
if [ "$exit_status" -eq 1 ]; then
|
|
||||||
uci -q set "parentalcontrol.${cfg}.status"="Error"
|
|
||||||
else
|
|
||||||
uci -q set "parentalcontrol.${cfg}.status"=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
uci commit parentalcontrol
|
|
||||||
}
|
}
|
||||||
|
|
||||||
config_foreach check_bundle_exists urlbundle
|
json_init
|
||||||
|
json_load_file "${URLBUNDLE_JSON}"
|
||||||
|
|
||||||
|
json_for_each_item check_bundle_exists "urlBundles"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Open file descriptor 200 for locking
|
# Open file descriptor 200 for locking
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue