commit 0322faeaf3d22de17a08e01d3fb1256d4149bf5f Author: ytshih Date: Sun Dec 8 20:08:12 2024 +0000 Initial commit diff --git a/vpn.bash b/vpn.bash new file mode 100755 index 0000000..d7e6529 --- /dev/null +++ b/vpn.bash @@ -0,0 +1,72 @@ +#!/usr/bin/env bash + +function stopvpn() { + mapfile -t vpn_pid <<< "$(pgrep openfortivpn)$(pgrep openvpn)" + + for pid in ${vpn_pid[@]}; do + if [[ -n "$pid" ]]; then + echo "Kill process $pid." + sudo kill "$pid" + fi + done + + if [[ -e /etc/systemd/resolved.conf.d/openvpn.conf ]]; then + sudo rm /etc/systemd/resolved.conf.d/openvpn.conf + sudo systemctl reload systemd-resolved + fi +} + +function fortivpn() { + read -e -p 'Password: ' -s pass + + echo "Start openfortivpn with realm $1." + sudo sh </dev/null /dev/null & disown +EOF +} + +function ovpn() { + echo "Start openvpn." + + # Workaround, since openvpn didn't accept dns option for no reason + sudo mkdir -p /etc/systemd/resolved.conf.d/ + cat > /tmp/vpn-resolved << 'EOF' +[Resolve] +DNS=192.168.10.254 +Domains=konchin.com +EOF + sudo mv /tmp/vpn-resolved /etc/systemd/resolved.conf.d/openvpn.conf + sudo systemctl reload systemd-resolved + + sudo sh </dev/null /dev/null & disown +EOF +} + +function main() { + case "$1" in + s|stop) + stopvpn + ;; + p|prod) + stopvpn + fortivpn prod + ;; + t|test) + stopvpn + fortivpn test + ;; + h|home) + stopvpn + ovpn "$HOME/.secret/openvpn/desktop.ovpn" + ;; + esac +} + +main $@