Feat: add nchc

This commit is contained in:
2026-01-19 15:41:01 +08:00
parent 29ef987b9c
commit 7cb0dac6b1

View File

@@ -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 <<EOF
openfortivpn \
ccvpn.it.cs.nycu.edu.tw \
--username "$USER" \
--realm "$1" \
--password "$pass" \
>/dev/null </dev/null 2>/dev/null & disown
--config "$HOME/.secret/openfortivpn/$1.conf" \
>/dev/null </dev/null 2>/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 <<EOF
openvpn --config "$1" \
>/dev/null </dev/null 2>/dev/null & disown
openvpn \
--config "$HOME/.secret/openvpn/$1.ovpn" \
>/dev/null </dev/null 2>/dev/null & disown
EOF
}
function opencon() {
echo "Start openconnect vpn"
sudo sh <<EOF
cat "$HOME/.secret/openconnect/$1.pass" | \
openconnect --config "$HOME/.secret/openconnect/$1.conf" \
>/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
}