fix: Exclusion of ruleset subnets from dns rules (#148)

This commit is contained in:
Andrey Petelin
2025-09-17 13:31:00 +05:00
parent 4999840340
commit bb1c06951c
3 changed files with 24 additions and 11 deletions

View File

@@ -238,23 +238,29 @@ migration() {
}
validate_service() {
local domain="$1"
local service="$1"
for valid_service in $VALID_SERVICES; do
if [ "$domain" = "$valid_service" ]; then
for domain_service in $COMMUNITY_DOMAIN_SERVICES; do
if [ "$service" = "$domain_service" ]; then
return 0
fi
done
log "Invalid service in domain_list: $domain. Exiting. Check config and LuCI cache"
for subnet_service in $COMMUNITY_SUBNET_SERVICES; do
if [ "$service" = "$subnet_service" ]; then
return 0
fi
done
log "Invalid service in community lists: $service. Check config and LuCI cache. Aborted." "fatal"
exit 1
}
process_validate_service() {
local domain_list_enabled
config_get_bool domain_list_enabled "$section" "domain_list_enabled" 0
if [ "$domain_list_enabled" -eq 1 ]; then
config_list_foreach "$section" domain_list validate_service
local community_lists_enabled
config_get_bool community_lists_enabled "$section" "community_lists_enabled" 0
if [ "$community_lists_enabled" -eq 1 ]; then
config_list_foreach "$section" "community_lists" validate_service
fi
}
@@ -970,8 +976,14 @@ configure_community_list_handler() {
config_get update_interval "main" "update_interval" "1d"
config=$(sing_box_cm_add_remote_ruleset "$config" "$ruleset_tag" "$format" "$url" "$detour" "$update_interval")
_add_ruleset_to_dns_rules "$ruleset_tag"
config=$(sing_box_cm_patch_route_rule "$config" "$route_rule_tag" "rule_set" "$ruleset_tag")
for service in $COMMUNITY_DOMAIN_SERVICES; do
if [ "$tag" = "$service" ]; then
_add_ruleset_to_dns_rules "$ruleset_tag"
break
fi
done
}
configure_user_domain_or_subnets_list() {

View File

@@ -63,4 +63,5 @@ SUBNETS_HETZNER="${GITHUB_RAW_URL}/Subnets/IPv4/hetzner.lst"
SUBNETS_OVH="${GITHUB_RAW_URL}/Subnets/IPv4/ovh.lst"
SUBNETS_DIGITALOCEAN="${GITHUB_RAW_URL}/Subnets/IPv4/digitalocean.lst"
SUBNETS_CLOUDFRONT="${GITHUB_RAW_URL}/Subnets/IPv4/cloudfront.lst"
VALID_SERVICES="russia_inside russia_outside ukraine_inside geoblock block porn news anime youtube discord meta twitter hdrezka tiktok telegram cloudflare google_ai google_play hetzner ovh hodca digitalocean cloudfront"
COMMUNITY_DOMAIN_SERVICES="russia_inside russia_outside ukraine_inside geoblock block porn news anime youtube hdrezka tiktok google_ai google_play hodca"
COMMUNITY_SUBNET_SERVICES="discord meta twitter cloudflare cloudfront digitalocean hetzner ovh telegram"

View File

@@ -324,7 +324,7 @@ parse_domain_or_subnet_file_to_comma_string() {
local result
while IFS= read -r line; do
line=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
log "!!! $line"
[ -z "$line" ] && continue
case "$type" in