69 lines
1.5 KiB
Bash
Executable File
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
|