Archived
add_archive_project
This commit is contained in:
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/bin/sh
|
||||
|
||||
nft_table="xray"
|
||||
nft_set="dst_list"
|
||||
nft_set_exclude="dst_exclude"
|
||||
|
||||
ipset_dir="/etc/xray/ipset"
|
||||
ipnet_dir="/etc/xray/ipnet"
|
||||
|
||||
for ipset_file in "$ipset_dir"/xray_ip*; do
|
||||
ipset_filename=$(basename "$ipset_file")
|
||||
ipnet_file="$ipnet_dir/$ipset_filename"
|
||||
|
||||
if [ ! -s "$ipset_file" ] || ! grep -q "[^[:space:]]" "$ipset_file"; then
|
||||
logger -t xray-prepare_net "$ipset_dir/$ipset_filename: file is empty"
|
||||
continue
|
||||
fi
|
||||
|
||||
if echo "$ipset_filename" | grep -qiE "exclude|white"; then
|
||||
target_set="$nft_set_exclude"
|
||||
else
|
||||
target_set="$nft_set"
|
||||
fi
|
||||
|
||||
{
|
||||
echo -n "add element ip $nft_table $target_set { "
|
||||
awk '
|
||||
/^[[:space:]]*#/ || /^[[:space:]]*$/ { next }
|
||||
{
|
||||
val = $0
|
||||
if (val !~ /\//) val = val "/32"
|
||||
printf "%s%s", (count++ ? ", " : ""), val
|
||||
}
|
||||
' "$ipset_file"
|
||||
echo " }"
|
||||
} > "$ipnet_file"
|
||||
|
||||
if ! nft -c -f "$ipnet_file" >/dev/null 2>&1; then
|
||||
logger -t xray-prepare_net "$ipnet_dir/$ipset_filename has errors"
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user