Update command for FRKN tool
This commit is contained in:
parent
737da43522
commit
df826ba9c9
@ -1,13 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
function disconnect() {
|
function disconnect() {
|
||||||
echo "Отключаю $1"
|
echo "Connecting to $1"
|
||||||
sudo wg-quick down "$1"
|
sudo wg-quick down "$1"
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
|
||||||
function connect() {
|
function connect() {
|
||||||
echo "Подключаю frkn-$1"
|
echo "Disconnecting frkn-$1"
|
||||||
sudo wg-quick up "frkn-$1"
|
sudo wg-quick up "frkn-$1"
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
@ -21,7 +21,44 @@ function in_array() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
country="$1"
|
function update_wg() {
|
||||||
|
sudo apt install -y wireguard jq && wg --version
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_frkn() {
|
||||||
|
local countries=(uk ru nl nl2 ch)
|
||||||
|
for idx in ${!countries[@]}; do
|
||||||
|
country=${countries[idx]}
|
||||||
|
echo "Downloading config for $country ($(expr $idx + 1)/${#countries[@]})"
|
||||||
|
|
||||||
|
json=$(curl -s "https://api.frkn.org/peer?location=$country" | jq)
|
||||||
|
|
||||||
|
iface_address=$(echo $json | jq -r .iface.address)
|
||||||
|
iface_privkey=$(echo $json | jq -r .iface.key)
|
||||||
|
iface_dns=$(echo $json | jq -r .iface.dns)
|
||||||
|
peer_pubkey=$(echo $json | jq -r .peer.pubkey)
|
||||||
|
peer_psk=$(echo $json | jq -r .peer.psk)
|
||||||
|
peer_allowed_ips=$(echo $json | jq -r .peer.allowed_ips)
|
||||||
|
peer_endpoint=$(echo $json | jq -r .peer.endpoint)
|
||||||
|
|
||||||
|
cat << EOF > "./frkn-$country.conf"
|
||||||
|
[Interface]
|
||||||
|
Address = $iface_address
|
||||||
|
DNS = $iface_dns
|
||||||
|
PrivateKey = $iface_privkey
|
||||||
|
|
||||||
|
[Peer]
|
||||||
|
PublicKey = $peer_pubkey
|
||||||
|
PresharedKey = $peer_psk
|
||||||
|
AllowedIPs = $peer_allowed_ips
|
||||||
|
Endpoint = $peer_endpoint
|
||||||
|
PersistentKeepalive = 25
|
||||||
|
EOF
|
||||||
|
done
|
||||||
|
sudo mv ./frkn-*.conf /etc/wireguard/
|
||||||
|
}
|
||||||
|
|
||||||
|
command="$1"
|
||||||
countries=()
|
countries=()
|
||||||
current=$(sudo wg show | head -n 1 | awk '{print $2}')
|
current=$(sudo wg show | head -n 1 | awk '{print $2}')
|
||||||
|
|
||||||
@ -32,10 +69,10 @@ for file in /etc/wireguard/*.conf; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
correct=-1
|
correct=-1
|
||||||
if [ -z "$country" ] ; then
|
if [ -z "$command" ] ; then
|
||||||
while [ $correct -lt 0 ]; do
|
while [ $correct -lt 0 ]; do
|
||||||
read -rp "Выбери страну (${countries[*]}): " country
|
read -rp "Entry on of country code (${countries[*]}): " command
|
||||||
if in_array "$country" ${countries[@]}; then
|
if in_array "$command" ${countries[@]}; then
|
||||||
correct=1
|
correct=1
|
||||||
else
|
else
|
||||||
echo "Неверный код страны!"
|
echo "Неверный код страны!"
|
||||||
@ -43,14 +80,23 @@ if [ -z "$country" ] ; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$country" in
|
case "$command" in
|
||||||
|
"update" )
|
||||||
|
if update_wg && update_frkn; then
|
||||||
|
echo "Wireguard and FRKN updated"
|
||||||
|
else
|
||||||
|
echo "Something went wrong"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
"down" )
|
"down" )
|
||||||
if [ -n "$current" ]; then
|
if [ -n "$current" ]; then
|
||||||
disconnect "$current"
|
disconnect "$current"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"status"|"show" )
|
"show" )
|
||||||
sudo wg show
|
sudo wg show
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -58,6 +104,6 @@ case "$country" in
|
|||||||
if [ -n "$current" ]; then
|
if [ -n "$current" ]; then
|
||||||
disconnect "$current"
|
disconnect "$current"
|
||||||
fi
|
fi
|
||||||
connect "$country"
|
connect "$command"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
Loading…
Reference in New Issue
Block a user