mirror of
https://github.com/darkclip/netlist.git
synced 2026-11-12 19:04:20 +08:00
48 lines
1.3 KiB
Bash
Executable File
48 lines
1.3 KiB
Bash
Executable File
dev=$1;
|
|
conf=$2;
|
|
|
|
pids=$(pgrep -afl $0);
|
|
if [ $(echo $pids|grep -o $0|wc -l) -gt 1 ]; then
|
|
exit;
|
|
fi;
|
|
|
|
get_rnd(){
|
|
echo $(od -An -N2 -i /dev/random);
|
|
return $?;
|
|
};
|
|
|
|
get_ping_loss(){
|
|
loss_percent=$(ping -c 10 -qn $1 | awk '/packet loss/{for(i=6;i<=NF;i++)if($i ~ /packet/)print $((i-1))}');
|
|
loss=${loss_percent%?};
|
|
echo ${loss%.*};
|
|
return $?;
|
|
};
|
|
|
|
cf_v4(){
|
|
echo 188.114.$((($(get_rnd) % 4) + 96)).$((($(get_rnd) % 253) + 1));
|
|
return $?;
|
|
};
|
|
|
|
cf_v6(){
|
|
hex=$(head /dev/urandom | md5sum | head -c 16);
|
|
hex1=$(echo $hex | awk '{print substr($0,1,4)}');
|
|
hex2=$(echo $hex | awk '{print substr($0,5,4)}');
|
|
hex3=$(echo $hex | awk '{print substr($0,9,4)}');
|
|
hex4=$(echo $hex | awk '{print substr($0,13,4)}');
|
|
echo 2606:4700:d$(($(get_rnd) % 2))::$hex1:$hex2:$hex3:$hex4;
|
|
return $?;
|
|
};
|
|
|
|
watch="1.1.1.1";
|
|
loss=$(get_ping_loss $watch);
|
|
while [ $loss -gt 40 ]; do
|
|
cfip=$(cf_v4);
|
|
echo "changing $dev endpoint to $cfip";
|
|
wg set $dev peer "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=" endpoint "$cfip:4500";
|
|
sleep 5;
|
|
loss=$(get_ping_loss $watch);
|
|
done;
|
|
endpoint=$(wg show $dev endpoints | awk '{print $2}');
|
|
if [ $(pfSsh.php playback chgwgpeer $conf) != $endpoint ]; then
|
|
pfSsh.php playback chgwgpeer $conf $(echo $endpoint|awk -F: '{print $1}') $(echo $endpoint|awk -F: '{print $2}') || true;
|
|
fi; |