@@ -70,6 +70,23 @@ quote_ros() {
|
||
| 70 | 70 |
printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g' |
| 71 | 71 |
} |
| 72 | 72 |
|
| 73 |
+is_local_is_vpn_gw() {
|
|
| 74 |
+ local host_name |
|
| 75 |
+ host_name="$(hostname -f 2>/dev/null || hostname 2>/dev/null || true)" |
|
| 76 |
+ [[ "$host_name" == "jumper.madagascar.xdev.ro" ]] && return 0 |
|
| 77 |
+ ip addr show 2>/dev/null | grep -q '192\.168\.2\.100' && return 0 |
|
| 78 |
+ return 1 |
|
| 79 |
+} |
|
| 80 |
+ |
|
| 81 |
+run_is_vpn_gw_payload() {
|
|
| 82 |
+ local remote_dir="$1" |
|
| 83 |
+ if is_local_is_vpn_gw; then |
|
| 84 |
+ REMOTE_DIR="$remote_dir" bash -s |
|
| 85 |
+ else |
|
| 86 |
+ ssh "$IS_VPN_GW" "REMOTE_DIR='$remote_dir' bash -s" |
|
| 87 |
+ fi |
|
| 88 |
+} |
|
| 89 |
+ |
|
| 73 | 90 |
while IFS= read -r line || [[ -n "$line" ]]; do |
| 74 | 91 |
[[ -z "${line//[[:space:]]/}" ]] && continue
|
| 75 | 92 |
[[ "$line" =~ ^[[:space:]]*# ]] && continue |
@@ -110,9 +127,14 @@ sync_is_vpn_gw() {
|
||
| 110 | 127 |
|
| 111 | 128 |
log "Syncing $IS_VPN_GW" |
| 112 | 129 |
remote_dir="/tmp/xdev-local-dns.$$" |
| 113 |
- ssh "$IS_VPN_GW" "mkdir -p '$remote_dir'" |
|
| 114 |
- scp "$HOSTS_ROWS" "$CLOAK_ROWS" "$NAMES_FILE" "$IS_VPN_GW:$remote_dir/" >/dev/null |
|
| 115 |
- ssh "$IS_VPN_GW" "REMOTE_DIR='$remote_dir' bash -s" <<'REMOTE' |
|
| 130 |
+ if is_local_is_vpn_gw; then |
|
| 131 |
+ mkdir -p "$remote_dir" |
|
| 132 |
+ cp "$HOSTS_ROWS" "$CLOAK_ROWS" "$NAMES_FILE" "$remote_dir/" |
|
| 133 |
+ else |
|
| 134 |
+ ssh "$IS_VPN_GW" "mkdir -p '$remote_dir'" |
|
| 135 |
+ scp "$HOSTS_ROWS" "$CLOAK_ROWS" "$NAMES_FILE" "$IS_VPN_GW:$remote_dir/" >/dev/null |
|
| 136 |
+ fi |
|
| 137 |
+ run_is_vpn_gw_payload "$remote_dir" <<'REMOTE' |
|
| 116 | 138 |
set -euo pipefail |
| 117 | 139 |
stamp="$(date +%Y%m%d_%H%M%S)" |
| 118 | 140 |
cp /etc/hosts "/etc/hosts.bak.$stamp" |