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'