From fe934267ac8d4a57acc8d637aa8f92786f028e78 Mon Sep 17 00:00:00 2001 From: anten-ka Date: Fri, 20 Mar 2026 18:18:37 +0300 Subject: [PATCH] Fix AWG client rules: sleep after wg-quick up, safe save via pipe, skip rules if warp not up Made-with: Cursor --- warp.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/warp.sh b/warp.sh index 564c5c3..a9e2633 100644 --- a/warp.sh +++ b/warp.sh @@ -846,10 +846,11 @@ awg_load_clients() { awg_save_clients() { local content="" - for ip in "${AWG_SELECTED_IPS[@]}"; do content+="${ip}"$'\n'; done - docker exec "$CONTAINER" sh -c "mkdir -p '$AWG_WARP_DIR' && cat > '$AWG_WARP_CLIENTS' <<'EOF' -${content}EOF -" + for ip in "${AWG_SELECTED_IPS[@]}"; do + content+="${ip}"$'\n' + 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() { @@ -1038,6 +1039,9 @@ awg_cleanup_rules() { awg_apply_rules() { awg_cleanup_rules [ ${#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" local prio=100 for ip in "${AWG_SELECTED_IPS[@]}"; do @@ -1059,6 +1063,7 @@ awg_patch_start_sh() { warp_block+=""$'\n' warp_block+="if [ -f '${AWG_WARP_CONF}' ]; then"$'\n' warp_block+=" wg-quick up '${AWG_WARP_CONF}' || true"$'\n' + warp_block+=" sleep 3"$'\n' warp_block+="fi"$'\n' warp_block+=""$'\n'