blob: d1657267722761ad1df833cb0e1cdb7ecb98a10a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#!/bin/sh
# Mullvad Relay Test
# Possible reasons for not reaching baidu.com and baomitu.com:
# https://github.com/mullvad/dns-blocklists/issues/86#issuecomment-1479102157
# https://www.reddit.com/r/mullvadvpn/comments/10sht67/open_chinese_search_machines
location="Los Angeles"
# about 2 to 3 seconds for fast connection, 5 to 7 seconds for slow connection, to specified website
curl_maxtime=7
website=www.baidu.com
while getopts l:m:w: opt; do
case $opt in
l)location="$OPTARG";;
m)curl_maxtime="$OPTARG";;
w)website="$OPTARG";;
\?)exit 1;;
esac
done
mullvad relay update
# info gawk Node: Ranges, 7.1.3 Specifying Record Ranges with Patterns
# https://www.baeldung.com/linux/print-lines-between-two-patterns
# https://stackoverflow.com/q/39384283/9008720
# https://stackoverflow.com/a/38972737/9008720
# https://stackoverflow.com/a/17988834/9008720
# https://unix.stackexchange.com/q/63891/459013
# https://stackoverflow.com/a/17914105/9008720
# https://www.datafix.com.au/BASHing/2020-10-21.html
for relay in $(mullvad relay list | awk -v location="$location" '
$0 ~ location {f=1;next}
/^\t[[:alpha:]]/ {f=0}
f {
if($5 == "WireGuard,")
print $1
}'); do
mullvad relay set hostname "$relay"
t=0
while [ $t -lt 30 ]; do
if mullvad status | grep -q "Connected to $relay"; then
if curl -Ism"$curl_maxtime" "$website"; then
good_relays="$(printf '%s\n' "$good_relays" "$relay")"
fi
break
fi
sleep 0.1
t=$((t+1))
done
done
echo "$good_relays" | tee "$XDG_DOCUMENTS_DIR/logs/mrt_$(printf '%s' "$location" | tr '[:upper:] ' '[:lower:]_')_$website.log"
|