From 7cb0dac6b10040e347f2c2f40f6bfd487d768990 Mon Sep 17 00:00:00 2001 From: Yi-Ting Shih Date: Mon, 19 Jan 2026 15:41:01 +0800 Subject: [PATCH] Feat: add nchc --- vpn.bash | 98 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 73 insertions(+), 25 deletions(-) diff --git a/vpn.bash b/vpn.bash index 14df05b..29e6ca2 100755 --- a/vpn.bash +++ b/vpn.bash @@ -1,7 +1,16 @@ #!/usr/bin/env bash +set -o xtrace + +resolved_conf_d=( + 'openvpn.conf' + 'csit-test.conf' + 'csit-prod.conf' + 'nchc.conf' +) + function stopvpn() { - mapfile -t vpn_pid <<< "$(pgrep openfortivpn)$(pgrep openvpn)" + mapfile -t vpn_pid <<< "$(pgrep openfortivpn) $(pgrep openvpn) $(pgrep openconnect)" for pid in ${vpn_pid[@]}; do if [[ -n "$pid" ]]; then @@ -10,42 +19,72 @@ function stopvpn() { 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 + for conf in ${resolved_conf_d[@]}; do + if [[ -e "/etc/systemd/resolved.conf.d/$conf" ]]; then + sudo rm "/etc/systemd/resolved.conf.d/$conf" + fi + done + + sudo systemctl reload systemd-resolved +} + +function resolved() { + # Workaround, since openvpn didn't accept dns option for no reason + sudo mkdir -p /etc/systemd/resolved.conf.d/ + + if [[ "$1" == 'openvpn' ]]; then + cat > /tmp/vpn-resolved << 'EOF' +[Resolve] +DNS=172.20.10.253 +Domains=konchin.com +EOF + elif [[ "$1" == 'csit-test' ]]; then + cat > /tmp/vpn-resolved << 'EOF' +[Resolve] +DNS=10.2.1.1 10.2.1.2 +Domains=test.cc.cs.nctu.edu.tw +EOF + elif [[ "$1" == 'csit-prod' ]]; then + cat > /tmp/vpn-resolved << 'EOF' +[Resolve] +DNS=10.1.1.1 10.1.1.2 +Domains=cc.cs.nctu.edu.tw +EOF + elif [[ "$1" == "nchc" ]]; then + cat > /tmp/vpn-resolved << 'EOF' +[Resolve] +DNS=1.1.1.1 +EOF fi + + sudo mv /tmp/vpn-resolved "/etc/systemd/resolved.conf.d/$1.conf" + sudo systemctl reload systemd-resolved } function fortivpn() { - read -e -p 'Password: ' -s pass - echo "Start openfortivpn with realm $1." sudo sh </dev/null /dev/null & disown + --config "$HOME/.secret/openfortivpn/$1.conf" \ + >/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.253 -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 + openvpn \ + --config "$HOME/.secret/openvpn/$1.ovpn" \ + >/dev/null /dev/null & disown +EOF +} + +function opencon() { + echo "Start openconnect vpn" + sudo sh </dev/null 2>/dev/null & disown EOF } @@ -54,19 +93,28 @@ function main() { case "$1" in s|stop) stopvpn + return ;; p|prod) stopvpn fortivpn prod + resolved csit-prod ;; t|test) stopvpn fortivpn test + resolved csit-test ;; h|home) stopvpn - ovpn "$HOME/.secret/openvpn/desktop.ovpn" + ovpn desktop + resolved openvpn ;; + n|nchc) + stopvpn + fortivpn nchc && sleep 0.5 + opencon nchc + resolved nchc esac }