fix: resolve ghost iptables rules, set -e crashes, and automate MASQUERADE NAT

This commit is contained in:
datadunia
2026-05-01 13:47:50 +07:00
parent 1268c8a4a2
commit 0b19a9061f
7 changed files with 432 additions and 95 deletions
+10 -5
View File
@@ -46,7 +46,7 @@ main() {
awk '
BEGIN { RS="\n\\[Peer\\]\n"; FS="\n" }
NR>1 {
ip=""; access=""
ip=""; access=""; internet="false"
for(i=1;i<=NF;i++){
if($i ~ /^AllowedIPs/) {
split($i,a," = ")
@@ -59,12 +59,17 @@ main() {
sub(/^#Access[ \t]*=?[ \t]*/, "", $i)
access=$i
}
if($i ~ /^#Internet/) {
if(tolower($i) ~ /true|yes|1|allow/) {
internet="true"
}
}
}
if(ip!="" && ip!="0.0.0.0" && ip!="::") {
printf "%s|%s\n", ip, access
printf "%s|%s|%s\n", ip, access, internet
}
}
' "$WG_CONF" | while IFS="|" read -r ip access_string; do
' "$WG_CONF" | while IFS="|" read -r ip access_string internet_flag; do
# === VALIDATE CLIENT IP ===
if ! validate_cidr "$ip"; then
@@ -104,8 +109,8 @@ main() {
fi
# Write to temp policy
jq --arg ip "$ip" --argjson access "$ACCESS_JSON" \
'.clients[$ip] = {"name": $ip, "access": $access}' \
jq --arg ip "$ip" --argjson access "$ACCESS_JSON" --argjson internet "$internet_flag" \
'.clients[$ip] = {"name": $ip, "access": $access, "internet": $internet}' \
"$tmp_policy" > "${tmp_policy}.tmp" && mv "${tmp_policy}.tmp" "$tmp_policy"
done