118 lines
3.3 KiB
Bash
118 lines
3.3 KiB
Bash
#!/bin/sh
|
|
|
|
name=$1
|
|
file=$2
|
|
auto=$3
|
|
if [ -z $auto ]; then
|
|
auto="0"
|
|
fi
|
|
|
|
extract() {
|
|
line=$1
|
|
PD=$(echo "$line" | grep "#")
|
|
if [ ! -z "$PD" ]; then
|
|
return
|
|
fi
|
|
PRK=$(echo "$line" | grep "PrivateKey" | tr " " ",")
|
|
if [ ! -z "$PRK" ]; then
|
|
PrivateKey=$(echo $PRK | cut -d, -f3)
|
|
fi
|
|
PRK=$(echo "$line" | grep "PublicKey" | tr " " ",")
|
|
if [ ! -z "$PRK" ]; then
|
|
PublicKey=$(echo $PRK | cut -d, -f3)
|
|
fi
|
|
PRK=$(echo "$line" | grep "PresharedKey" | tr " " ",")
|
|
if [ ! -z "$PRK" ]; then
|
|
PreSharedKey=$(echo $PRK | cut -d, -f3)
|
|
fi
|
|
PRK=$(echo "$line" | grep "Address" | tr " " "#")
|
|
if [ ! -z "$PRK" ]; then
|
|
if [ -z $Address ]; then
|
|
Address=$(echo $PRK | cut -d# -f3)
|
|
else
|
|
Address=$Address","$(echo $PRK | cut -d# -f3)
|
|
fi
|
|
fi
|
|
PRK=$(echo "$line" | grep "dns" | tr " " "#")
|
|
if [ ! -z "$PRK" ]; then
|
|
dns=$(echo $PRK | cut -d# -f3)
|
|
fi
|
|
PRK=$(echo "$line" | grep "DNS" | tr " " "#")
|
|
if [ ! -z "$PRK" ]; then
|
|
dns=$(echo $PRK | cut -d# -f3)
|
|
fi
|
|
PRK=$(echo "$line" | grep "ListenPort" | tr " " ",")
|
|
if [ ! -z "$PRK" ]; then
|
|
listenport=$(echo $PRK | cut -d, -f3)
|
|
fi
|
|
PRK=$(echo "$line" | grep "AllowedIPs" | tr " " "#")
|
|
if [ ! -z "$PRK" ]; then
|
|
if [ -z $allowedips ]; then
|
|
allowedips=$(echo $PRK | cut -d# -f3)
|
|
else
|
|
allowedips=$allowedips","$(echo $PRK | cut -d# -f3)
|
|
fi
|
|
fi
|
|
PRK=$(echo "$line" | grep "Endpoint" | tr " " ",")
|
|
if [ ! -z "$PRK" ]; then
|
|
endpoint=$(echo $PRK | cut -d, -f3)
|
|
fi
|
|
MTU=$(echo "$line" | grep "MTU" | tr " " ",")
|
|
if [ ! -z "$MTU" ]; then
|
|
mtu=$(echo $MTU | cut -d, -f3)
|
|
fi
|
|
}
|
|
|
|
listenport="51280"
|
|
dns=""
|
|
sed -i -e "s!PrivateKey= !PrivateKey=!g" $file
|
|
sed -i -e "s!PrivateKey=!PrivateKey = !g" $file
|
|
sed -i -e "s!PublicKey= !PublicKey=!g" $file
|
|
sed -i -e "s!PublicKey=!PublicKey = !g" $file
|
|
sed -i -e "s!PresharedKey= !PresharedKey=!g" $file
|
|
sed -i -e "s!PresharedKey=!PresharedKey = !g" $file
|
|
sed -i -e "s!Address= !Address=!g" $file
|
|
sed -i -e "s!Address=!Address = !g" $file
|
|
sed -i -e "s!dns= !dns=!g" $file
|
|
sed -i -e "s!dns=!dns = !g" $file
|
|
sed -i -e "s!DNS= !DNS=!g" $file
|
|
sed -i -e "s!DNS=!DNS = !g" $file
|
|
sed -i -e "s!ListenPort= !ListenPort=!g" $file
|
|
sed -i -e "s!ListenPort=!ListenPort = !g" $file
|
|
sed -i -e "s!AllowedIPs= !AllowedIPs=!g" $file
|
|
sed -i -e "s!AllowedIPs=!AllowedIPs = !g" $file
|
|
sed -i -e "s!Endpoint= !Endpoint=!g" $file
|
|
sed -i -e "s!Endpoint=!Endpoint = !g" $file
|
|
sed -i -e "s!MTU= !MTU=!g" $file
|
|
sed -i -e "s!MTU=!MTU = !g" $file
|
|
|
|
while IFS= read -r linex
|
|
do
|
|
extract "$linex"
|
|
done < $file
|
|
extract "$linex"
|
|
PRK=$(echo "$endpoint" | tr ":" ",")
|
|
endpoint=$(echo $PRK | cut -d, -f1)
|
|
sport=$(echo $PRK | cut -d, -f2)
|
|
|
|
uci delete wireguard.$name
|
|
uci set wireguard.$name=wireguard
|
|
uci set wireguard.$name.auto=$auto
|
|
uci set wireguard.$name.client="1"
|
|
uci set wireguard.$name.active="0"
|
|
uci set wireguard.$name.privatekey="$PrivateKey"
|
|
uci set wireguard.$name.presharedkey="$PreSharedKey"
|
|
uci set wireguard.$name.port="$listenport"
|
|
uci set wireguard.$name.addresses="$Address"
|
|
uci set wireguard.$name.dns="$dns"
|
|
uci set wireguard.$name.publickey="$PublicKey"
|
|
uci set wireguard.$name.endpoint_host="$endpoint"
|
|
uci set wireguard.$name.ips="$allowedips"
|
|
uci set wireguard.$name.name="$name"
|
|
uci set wireguard.$name.sport="$sport"
|
|
uci set wireguard.$name.mtu="$mtu"
|
|
uci set wireguard.$name.persistent_keepalive='25'
|
|
uci commit wireguard
|
|
|
|
rm -f $file
|
|
|