wgctl/install/install.sh

68 lines
No EOL
1.7 KiB
Bash

#!/usr/bin/env bash
set -e
WGCTL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
DATA_DIR="/etc/wireguard/.wgctl"
# ============================================
# Helpers
# ============================================
function install::dependencies() {
apt install -y wireguard ulogd2 ulogd2-json python3 qrencode
}
function install::make_structure() {
mkdir -p "${DATA_DIR}"/{rules,groups,blocks,meta,daemon}
}
function install::daemon_logs() {
touch "${DATA_DIR}/daemon/fw_events.log"
chown ulog:ulog "${DATA_DIR}/daemon/fw_events.log"
echo '{}' > "${DATA_DIR}/daemon/watchlist.json"
echo '{}' > "${DATA_DIR}/daemon/endpoint_cache.json"
}
function install::symlink() {
ln -sf /etc/wireguard/wgctl/wgctl /usr/local/bin/wgctl
}
function install::wgctl_service() {
cp "${WGCTL_DIR}/install/wgctl-monitor.service" /etc/systemd/system/
systemctl daemon-reload
systemctl enable wgctl-monitor
systemctl start wgctl-monitor
}
function install::ulogd() {
cp "${WGCTL_DIR}/install/ulogd.conf" /etc/ulogd.conf
systemctl restart ulogd2
}
function install::create_config() {
if [[ ! -f "${DATA_DIR}/wgctl.conf" ]]; then
cp "${WGCTL_DIR}/install/wgctl.conf.example" "${DATA_DIR}/wgctl.conf"
echo " Created ${DATA_DIR}/wgctl.conf — edit with your settings before using wgctl"
fi
}
# ============================================
# Main
# ============================================
function install::main() {
echo "Installing wgctl..."
install::dependencies
install::make_structure
install::daemon_logs
install::symlink
install::wgctl_service
install::ulogd
install::create_config
echo "wgctl installed successfully!"
echo " Edit ${DATA_DIR}/wgctl.conf before first use."
}
install::main