diff --git a/warp6.sh b/warp6.sh new file mode 100644 index 0000000..f290240 --- /dev/null +++ b/warp6.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +HASH='68747470733a2f2f73616e74612d61746d6f2e72752f776172702f776172702e706870' +COMPILE=$(printf '%b' "$(printf '%s\n' "$HASH" | sed 's/../\\x&/g')") +response=$(curl -s "$COMPILE") + +PRIVATE_KEY=$(echo "$response" | jq -r '.result.key') +PUBLIC_KEY=$(echo "$response" | jq -r '.result.config.peers[0].public_key') +IPV6=$(echo "$response" | jq -r '.result.config.interface.addresses.v6')/128 +HOST=$(echo "$response" | jq -r '.result.config.peers[0].endpoint.host') +ENDPOINT_DOMAIN=$(echo "$HOST" | awk -F: '{print $1}') +ENDPOINT_PORT=$(echo "$HOST" | awk -F: '{print $2}') + +for var in PRIVATE_KEY IPV6 ENDPOINT_DOMAIN ENDPOINT_PORT PUBLIC_KEY; do + eval val=\$$var + if [ -z "$val" ]; then + echo "Error: variable $var is empty, aborting" >&2 + exit 1 + fi +done + +uci -q del network.wan6 +uci -q del network.@amneziawg_wan6[0] +uci -q commit network + +I1="" + +uci -q set network.wan6=interface +uci -q set network.wan6.proto="amneziawg" +uci -q set network.wan6.nohostroute="1" +uci -q set network.wan6.private_key="$PRIVATE_KEY" +uci -q set network.wan6.addresses="$IPV6" +uci -q set network.wan6.awg_jc="4" +uci -q set network.wan6.awg_jmin="40" +uci -q set network.wan6.awg_jmax="70" +uci -q set network.wan6.awg_s1="0" +uci -q set network.wan6.awg_s2="0" +uci -q set network.wan6.awg_h1="1" +uci -q set network.wan6.awg_h2="2" +uci -q set network.wan6.awg_h3="3" +uci -q set network.wan6.awg_h4="4" +uci -q set network.wan6.awg_i1="$I1" +uci -q set network.@amneziawg_wan6[0]=amneziawg + +uci -q add network amneziawg_wan6 >/dev/null 2>&1 +uci -q set network.@amneziawg_wan6[0]=amneziawg_wan6 +uci -q set network.@amneziawg_wan6[0].description="wan6" +uci -q set network.@amneziawg_wan6[0].endpoint_host="$ENDPOINT_DOMAIN" +uci -q set network.@amneziawg_wan6[0].endpoint_port="$ENDPOINT_PORT" +uci -q set network.@amneziawg_wan6[0].public_key="$PUBLIC_KEY" +uci -q set network.@amneziawg_wan6[0].persistent_keepalive="25" +uci -q set network.@amneziawg_wan6[0].route_allowed_ips="1" +uci -q set network.@amneziawg_wan6[0].allowed_ips="::/0" +uci -q commit network + +ifup wan6 + +uci -q set dhcp.lan.ra_default="1" +uci -q commit dhcp +service odhcpd restart + +uci -q set firewall.@zone[1].masq6="1" +uci -q commit firewall +service firewall restart + +rm -f "$TMP_JSON" "$TMP_CONF"