nixos/nate-work/linked-dotfiles/waybar/scripts/vpn.sh

69 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# vpn-proxy-toggle.sh
VM_USER="nate"
VM_IP="192.168.122.241"
SOCKS_PORT=1080
PID_FILE="/tmp/vpn-socks.pid"
start_proxy() {
# Check if already running
if pgrep -f "ssh -D $SOCKS_PORT" > /dev/null; then
echo "Proxy already running"
return 1
fi
ssh -D $SOCKS_PORT -f -N $VM_USER@$VM_IP
# Get the PID of the SSH process we just started
sleep 0.5
pgrep -f "ssh -D $SOCKS_PORT" > "$PID_FILE"
# Configure system proxy
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.socks host 'localhost'
gsettings set org.gnome.system.proxy.socks port $SOCKS_PORT
echo "VPN proxy started on localhost:$SOCKS_PORT"
}
stop_proxy() {
if ! pgrep -f "ssh -D $SOCKS_PORT" > /dev/null; then
echo "Proxy not running"
return 1
fi
# Find and kill SSH process
pkill -f "ssh -D $SOCKS_PORT"
rm -f "$PID_FILE"
# Disable system proxy
gsettings set org.gnome.system.proxy mode 'none'
echo "VPN proxy stopped"
}
case "$1" in
start)
start_proxy
;;
stop)
stop_proxy
;;
restart)
stop_proxy
start_proxy
;;
status)
if pgrep -f "ssh -D $SOCKS_PORT" > /dev/null; then
echo "Proxy running on localhost:$SOCKS_PORT"
else
echo "Proxy not running"
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac