Fix AWG client rules: sleep after wg-quick up, safe save via pipe, skip rules if warp not up

Made-with: Cursor
This commit is contained in:
anten-ka
2026-03-20 18:18:37 +03:00
parent 29048e6f83
commit fe934267ac

13
warp.sh
View File

@@ -846,10 +846,11 @@ awg_load_clients() {
awg_save_clients() { awg_save_clients() {
local content="" local content=""
for ip in "${AWG_SELECTED_IPS[@]}"; do content+="${ip}"$'\n'; done for ip in "${AWG_SELECTED_IPS[@]}"; do
docker exec "$CONTAINER" sh -c "mkdir -p '$AWG_WARP_DIR' && cat > '$AWG_WARP_CLIENTS' <<'EOF' content+="${ip}"$'\n'
${content}EOF done
" docker exec "$CONTAINER" sh -c "mkdir -p '${AWG_WARP_DIR}'"
echo -n "$content" | docker exec -i "$CONTAINER" sh -c "cat > '${AWG_WARP_CLIENTS}'"
} }
awg_parse_clients_table() { awg_parse_clients_table() {
@@ -1038,6 +1039,9 @@ awg_cleanup_rules() {
awg_apply_rules() { awg_apply_rules() {
awg_cleanup_rules awg_cleanup_rules
[ ${#AWG_SELECTED_IPS[@]} -eq 0 ] && return 0 [ ${#AWG_SELECTED_IPS[@]} -eq 0 ] && return 0
if ! docker exec "$CONTAINER" sh -c "ip link show warp >/dev/null 2>&1"; then
return 0
fi
docker exec "$CONTAINER" sh -c "ip route add default dev warp table 100 2>/dev/null || ip route replace default dev warp table 100" docker exec "$CONTAINER" sh -c "ip route add default dev warp table 100 2>/dev/null || ip route replace default dev warp table 100"
local prio=100 local prio=100
for ip in "${AWG_SELECTED_IPS[@]}"; do for ip in "${AWG_SELECTED_IPS[@]}"; do
@@ -1059,6 +1063,7 @@ awg_patch_start_sh() {
warp_block+=""$'\n' warp_block+=""$'\n'
warp_block+="if [ -f '${AWG_WARP_CONF}' ]; then"$'\n' warp_block+="if [ -f '${AWG_WARP_CONF}' ]; then"$'\n'
warp_block+=" wg-quick up '${AWG_WARP_CONF}' || true"$'\n' warp_block+=" wg-quick up '${AWG_WARP_CONF}' || true"$'\n'
warp_block+=" sleep 3"$'\n'
warp_block+="fi"$'\n' warp_block+="fi"$'\n'
warp_block+=""$'\n' warp_block+=""$'\n'