mirror of
https://codeberg.org/Freedium-cfd/web.git
synced 2026-03-11 09:04:37 +00:00
120 lines
3 KiB
Bash
Executable file
120 lines
3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
_downwgcf() {
|
|
echo
|
|
echo "clean up"
|
|
if ! wg-quick down wgcf; then
|
|
echo "error down"
|
|
fi
|
|
echo "clean up done"
|
|
exit 0
|
|
}
|
|
|
|
#-4|-6
|
|
runwgcf() {
|
|
trap '_downwgcf' ERR TERM INT
|
|
|
|
_enableV4="1"
|
|
if [ "$1" = "-6" ]; then
|
|
_enableV4=""
|
|
fi
|
|
|
|
if [ ! -e "wgcf-account.toml" ]; then
|
|
wgcf register --accept-tos
|
|
fi
|
|
|
|
if [ -e "custom-wgcf-license.conf" ]; then
|
|
_license_key=$(cat custom-wgcf-license.conf)
|
|
_old_license_key=$(awk -F "['']" '/license_key/{print $2}' wgcf-account.toml)
|
|
if [ "$_license_key" != "$_old_license_key" ]; then
|
|
echo 'updating license key'
|
|
sed -i "s/license_key.*$/license_key = '${_license_key}'/" wgcf-account.toml
|
|
wgcf update
|
|
fi
|
|
fi
|
|
|
|
if [ ! -e "wgcf-profile.conf" ]; then
|
|
wgcf generate
|
|
else
|
|
_account_file_private_key=$(awk -F "['']" '/private_key/{print $2}' wgcf-account.toml)
|
|
_profile_file_private_key=$(awk -F " = " '/PrivateKey/{print $2}' wgcf-profile.conf)
|
|
if [ "$_account_file_private_key" != "$_profile_file_private_key" ]; then
|
|
echo 're generate profile'
|
|
wgcf generate
|
|
fi
|
|
fi
|
|
|
|
if [ -e "custom-wgcf-endpoint.conf" ]; then
|
|
_endpoint=$(cat custom-wgcf-endpoint.conf)
|
|
sed -i "s/Endpoint.*$/Endpoint = ${_endpoint}/" wgcf-profile.conf
|
|
fi
|
|
|
|
cp wgcf-profile.conf /etc/wireguard/wgcf.conf
|
|
|
|
DEFAULT_GATEWAY_NETWORK_CARD_NAME=$(route | grep default | awk '{print $8}' | head -1)
|
|
DEFAULT_ROUTE_IP=$(ifconfig $DEFAULT_GATEWAY_NETWORK_CARD_NAME | grep "inet " | awk '{print $2}' | sed "s/addr://")
|
|
|
|
echo ${DEFAULT_GATEWAY_NETWORK_CARD_NAME}
|
|
echo ${DEFAULT_ROUTE_IP}
|
|
|
|
sed -i "/\[Interface\]/a PostDown = ip rule delete from $DEFAULT_ROUTE_IP lookup main" /etc/wireguard/wgcf.conf
|
|
sed -i "/\[Interface\]/a PostUp = ip rule add from $DEFAULT_ROUTE_IP lookup main" /etc/wireguard/wgcf.conf
|
|
|
|
if [ "$1" = "-6" ]; then
|
|
sed -i 's/AllowedIPs = 0.0.0.0/#AllowedIPs = 0.0.0.0/' /etc/wireguard/wgcf.conf
|
|
elif [ "$1" = "-4" ]; then
|
|
sed -i 's/AllowedIPs = ::/#AllowedIPs = ::/' /etc/wireguard/wgcf.conf
|
|
fi
|
|
|
|
modprobe ip6table_raw
|
|
|
|
wg-quick up wgcf
|
|
|
|
if [ "$_enableV4" ]; then
|
|
_checkV4
|
|
else
|
|
_checkV6
|
|
fi
|
|
|
|
echo
|
|
echo
|
|
echo "wgcf status"
|
|
wgcf status
|
|
|
|
echo
|
|
echo "OK, wgcf is up."
|
|
|
|
sleep infinity &
|
|
wait
|
|
|
|
}
|
|
|
|
_checkV4() {
|
|
echo "Checking network status, please wait...."
|
|
while ! curl --max-time 2 ipinfo.io; do
|
|
wg-quick down wgcf
|
|
echo "Sleep 2 and retry again."
|
|
sleep 2
|
|
wg-quick up wgcf
|
|
done
|
|
|
|
}
|
|
|
|
_checkV6() {
|
|
echo "Checking network status, please wait...."
|
|
while ! curl --max-time 2 -6 ipv6.google.com; do
|
|
wg-quick down wgcf
|
|
echo "Sleep 2 and retry again."
|
|
sleep 2
|
|
wg-quick up wgcf
|
|
done
|
|
|
|
}
|
|
|
|
if [ -z "$@" ] || [[ "$1" = -* ]]; then
|
|
runwgcf "$@"
|
|
else
|
|
exec "$@"
|
|
fi
|