This repository has been archived on 2026-04-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
xray-config-archive/etc/xray/common/prepare_domain.sh
T
2026-04-04 13:25:49 +04:00

38 lines
1018 B
Bash
Executable File

#!/bin/sh
nft_table="xray"
nft_set="dst_list"
nft_set_exclude="dst_exclude"
ipset_dir="/etc/xray/ipset"
dnsmasq_dir="/etc/dnsmasq.d"
for ipset_file in "$ipset_dir"/xray_domain*; do
ipset_filename=$(basename "$ipset_file")
ipnet_file="$dnsmasq_dir/$ipset_filename"
if echo "$ipset_filename" | grep -qiE "exclude|white"; then
target_set="$nft_set_exclude"
else
target_set="$nft_set"
fi
awk -v t_set="$target_set" -v table="$nft_table" '
/^[[:space:]]*#/ || /^[[:space:]]*$/ { next }
{
sub(/#.*/, "")
gsub(/[[:space:]]/, "")
if ($0 !~ /\./) next
sub(/^[^:]+:/, "", $0)
if ($0 ~ /@cn$/) next
sub(/@[^@]+$/, "", $0)
print "nftset=/" $0 "/4#ip#" table "#" t_set
}
' "$ipset_file" > "$ipnet_file"
if ! dnsmasq --test -C "$ipnet_file" >/dev/null 2>&1; then
logger -t xray-prepare_domain "$dnsmasq_dir/$ipset_filename: validation failed"
fi
done