Files
wgtunnel-desktop/scripts/linux/install.sh
T
2026-02-28 20:31:51 -05:00

86 lines
3.1 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}=== WG Tunnel Installer ===${NC}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
APP_NAME="wgtunnel"
INSTALL_DIR="$HOME/.local/opt/$APP_NAME"
echo -e "Installing to: ${YELLOW}$INSTALL_DIR${NC}"
read -p "Press Enter to continue (Ctrl+C to cancel)..."
mkdir -p "$INSTALL_DIR"
echo "Copying files..."
rsync -a --delete \
--exclude="install.sh" \
--exclude="uninstall.sh" \
"$SCRIPT_DIR/" "$INSTALL_DIR/"
chmod +x "$INSTALL_DIR/bin/"*
# Setup CLI symlinks
mkdir -p "$HOME/.local/bin"
ln -sf "$INSTALL_DIR/bin/wgtunnel" "$HOME/.local/bin/wgtunnel"
ln -sf "$INSTALL_DIR/bin/wgtctl" "$HOME/.local/bin/wgtctl"
echo -e "${GREEN}✓ CLI (wgtctl) and app (wgtunnel) added to PATH${NC}"
# Add GUI desktop entry
mkdir -p "$HOME/.local/share/applications"
DESKTOP_SRC="$INSTALL_DIR/share/applications/com.zaneschepke.wireguardautotunnel.wgtunnel.desktop"
DESKTOP_DEST="$HOME/.local/share/applications/com.zaneschepke.wireguardautotunnel.wgtunnel.desktop"
cp "$DESKTOP_SRC" "$DESKTOP_DEST"
sed -i "s|^Exec=.*|Exec=$INSTALL_DIR/bin/wgtunnel|" "$DESKTOP_DEST"
sed -i "s|^Icon=.*|Icon=$INSTALL_DIR/share/icons/hicolor/256x256/apps/wgtunnel.png|" "$DESKTOP_DEST"
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
echo -e "${GREEN}✓ Desktop entry installed${NC}"
# Add metainfo (app stores)
mkdir -p "$HOME/.local/share/metainfo"
cp -f "$INSTALL_DIR/share/metainfo/com.zaneschepke.wireguardautotunnel.wgtunnel.metainfo.xml" \
"$HOME/.local/share/metainfo/" 2>/dev/null || true
# Setup the system daemon
read -p "Install system-wide wgtunnel daemon (requires sudo)? [Y/n] " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then
echo "Preparing for daemon install..."
# Remove old, if it exists
if systemctl is-active --quiet wgtunnel-daemon.service 2>/dev/null; then
sudo systemctl stop wgtunnel-daemon.service
fi
sudo systemctl disable wgtunnel-daemon.service 2>/dev/null || true
sudo rm -f /etc/systemd/system/wgtunnel-daemon.service
SERVICE_SRC="$INSTALL_DIR/lib/systemd/system/wgtunnel-daemon.service"
SERVICE_DEST="/etc/systemd/system/wgtunnel-daemon.service"
sudo cp "$SERVICE_SRC" "$SERVICE_DEST"
# Fix ExecStart and WorkingDirectory of the tarball
sudo sed -i "s|^ExecStart=.*|ExecStart=$INSTALL_DIR/bin/daemon|" "$SERVICE_DEST"
sudo sed -i "s|WorkingDirectory=.*|WorkingDirectory=$INSTALL_DIR|" "$SERVICE_DEST"
# For SELinux systems
if command -v chcon >/dev/null 2>&1; then
sudo chcon -t bin_t "$INSTALL_DIR/bin/daemon" 2>/dev/null || true
fi
sudo systemctl daemon-reload
sudo systemctl enable --now wgtunnel-daemon.service
echo -e "${GREEN}✓ Daemon successfully installed and started${NC}"
sudo systemctl status wgtunnel-daemon.service --no-pager -l
else
echo "Daemon skipped."
fi
echo -e "\n${GREEN}=== Installation complete! ===${NC}"
echo -e "GUI: ${BLUE}wgtunnel${NC}"
echo -e "CLI: ${BLUE}wgtctl${NC}"
echo -e "Update: extract new tarball → run ./install.sh again"