1
0
mirror of https://github.com/donaldzou/WGDashboard.git synced 2024-11-22 15:20:09 +01:00

Modified scripts

This commit is contained in:
Daan 2024-06-05 09:16:29 +02:00
parent 560096878f
commit f400844a3d
2 changed files with 56 additions and 27 deletions

View File

@ -4,8 +4,8 @@ services:
restart: unless-stopped
container_name: wire-dash
environment:
#- global_dns=8.8.8.8
#- tz=Europe/Amsterdam # <--- is default
#- global_dns=8.8.8.8 # <--- 1.1.1.1 is default
#- tz=Europe/Amsterdam # <--- Europe/Amsterdam is default
- public_ip=212.124.66.17
ports:
- 10086:10086/tcp

View File

@ -1,32 +1,61 @@
echo "\nStarting the WireGuard Dashboard."
#!/bin/bash
echo "\nStarting the WireGuard Dashboard Docker container."
# Cleaning out previous data such as the .pid file.
rm /opt/wireguardashboard/app/src/gunicorn.pid
# Execute functions for the WireGuard Dashboard services, then set the environment variables
start_core
set_envvars
ensure_blocking
# Starting the WireGuard Dashboard Web-UI.
. ${WGDASH}/venv/bin/activate
cd ${WGDASH}/app/src
bash ./wgd.sh start
start_core() {
# Cleaning out previous data such as the .pid file and starting the WireGuard Dashboard. Making sure to use the python venv.
echo "Activating Python venv and executing the WireGuard Dashboard service..."
if [ "$tz" != "Europe/Amsterdam" ]; then
echo "Changing timezone..."
ln -sf /usr/share/zoneinfo/$tz /etc/localtime
fi
rm /opt/wireguardashboard/app/src/gunicorn.pid
. ${WGDASH}/venv/bin/activate
bash ${WGDASH}/app/src/wgd.sh start
}
if [ "$global_dns" != "1.1.1.1" ]; then # Changing the DNS used for clients. Had to change it in 2 locations.
echo "Changing default dns..."
sed -i 's/^DNS = .*/DNS = ${global_dns}/' /etc/wireguard/wg0.conf
sed -i "s/^peer_global_dns = .*/peer_global_dns = $global_dns/" /opt/wireguardashboard/app/src/wg-dashboard.ini
fi
set_envvars() {
echo "Setting relevant variables for operation..."
if [ "$public_ip" != "0.0.0.0" ]; then # Setting the public IP of the WireGuard Dashboard container host. If not defined, it will be tried using ifconfig.me.
sed -i "s/^remote_endpoint = .*/remote_endpoint = $public_ip/" /opt/wireguardashboard/app/src/wg-dashboard.ini
else
sed -i "s/^remote_endpoint = .*/remote_endpoint = $(curl ifconfig.me)/" /opt/wireguardashboard/app/src/wg-dashboard.ini
fi
# If the timezone is different, for example in North-America or Asia.
if [ "$tz" != "Europe/Amsterdam" ]; then
echo "Changing timezone..."
ln -sf /usr/share/zoneinfo/$tz /etc/localtime
fi
sleep 3s
tail -f $(ls -t /opt/wireguardashboard/app/src/log/error_*.log | head -n 1)
# Changing the DNS used for clients and the dashboard itself.
if [ "$global_dns" != "1.1.1.1" ]; then
echo "Changing default dns..."
# Blocking command in case of erroring.
sleep infinity
sed -i 's/^DNS = .*/DNS = ${global_dns}/' /etc/wireguard/wg0.conf
sed -i "s/^peer_global_dns = .*/peer_global_dns = $global_dns/" /opt/wireguardashboard/app/src/wg-dashboard.ini
fi
# Setting the public IP of the WireGuard Dashboard container host. If not defined, it will trying fetching it using a curl to ifconfig.me.
if [ "$public_ip" != "0.0.0.0" ]; then
echo "Setting the Public-IP using given variable: $public_ip"
sed -i "s/^remote_endpoint = .*/remote_endpoint = $public_ip/" /opt/wireguardashboard/app/src/wg-dashboard.ini
else
default_ip=$(curl ifconfig.me)
echo "Trying to fetch the Public-IP using ifconfig.me: $default_ip"
sed -i "s/^remote_endpoint = .*/remote_endpoint = $default_ip/" /opt/wireguardashboard/app/src/wg-dashboard.ini
fi
}
ensure_blocking() {
echo "Ensuring container continuation..."
# This function checks if the latest error log is created and tails it for docker logs uses.
if find "/opt/wireguardashboard/app/src/log" -mindepth 1 -maxdepth 1 -type f | read -r; then
latestlog=$(ls -t /opt/wireguardashboard/app/src/log/error_*.log | head -n 1)
sleep 3s
tail -f $latestlog
fi
# Blocking command in case of erroring. So the container does not quit.
sleep infinity
}