Feat: add nchc
This commit is contained in:
94
vpn.bash
94
vpn.bash
@@ -1,7 +1,16 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
resolved_conf_d=(
|
||||||
|
'openvpn.conf'
|
||||||
|
'csit-test.conf'
|
||||||
|
'csit-prod.conf'
|
||||||
|
'nchc.conf'
|
||||||
|
)
|
||||||
|
|
||||||
function stopvpn() {
|
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
|
for pid in ${vpn_pid[@]}; do
|
||||||
if [[ -n "$pid" ]]; then
|
if [[ -n "$pid" ]]; then
|
||||||
@@ -10,63 +19,102 @@ function stopvpn() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ -e /etc/systemd/resolved.conf.d/openvpn.conf ]]; then
|
for conf in ${resolved_conf_d[@]}; do
|
||||||
sudo rm /etc/systemd/resolved.conf.d/openvpn.conf
|
if [[ -e "/etc/systemd/resolved.conf.d/$conf" ]]; then
|
||||||
sudo systemctl reload systemd-resolved
|
sudo rm "/etc/systemd/resolved.conf.d/$conf"
|
||||||
fi
|
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() {
|
function fortivpn() {
|
||||||
read -e -p 'Password: ' -s pass
|
|
||||||
|
|
||||||
echo "Start openfortivpn with realm $1."
|
echo "Start openfortivpn with realm $1."
|
||||||
sudo sh <<EOF
|
sudo sh <<EOF
|
||||||
openfortivpn \
|
openfortivpn \
|
||||||
ccvpn.it.cs.nycu.edu.tw \
|
--config "$HOME/.secret/openfortivpn/$1.conf" \
|
||||||
--username "$USER" \
|
|
||||||
--realm "$1" \
|
|
||||||
--password "$pass" \
|
|
||||||
>/dev/null </dev/null 2>/dev/null & disown
|
>/dev/null </dev/null 2>/dev/null & disown
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
function ovpn() {
|
function ovpn() {
|
||||||
echo "Start openvpn."
|
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
|
sudo sh <<EOF
|
||||||
openvpn --config "$1" \
|
openvpn \
|
||||||
|
--config "$HOME/.secret/openvpn/$1.ovpn" \
|
||||||
>/dev/null </dev/null 2>/dev/null & disown
|
>/dev/null </dev/null 2>/dev/null & disown
|
||||||
EOF
|
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
|
||||||
|
}
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
sudo echo -n
|
sudo echo -n
|
||||||
case "$1" in
|
case "$1" in
|
||||||
s|stop)
|
s|stop)
|
||||||
stopvpn
|
stopvpn
|
||||||
|
return
|
||||||
;;
|
;;
|
||||||
p|prod)
|
p|prod)
|
||||||
stopvpn
|
stopvpn
|
||||||
fortivpn prod
|
fortivpn prod
|
||||||
|
resolved csit-prod
|
||||||
;;
|
;;
|
||||||
t|test)
|
t|test)
|
||||||
stopvpn
|
stopvpn
|
||||||
fortivpn test
|
fortivpn test
|
||||||
|
resolved csit-test
|
||||||
;;
|
;;
|
||||||
h|home)
|
h|home)
|
||||||
stopvpn
|
stopvpn
|
||||||
ovpn "$HOME/.secret/openvpn/desktop.ovpn"
|
ovpn desktop
|
||||||
|
resolved openvpn
|
||||||
;;
|
;;
|
||||||
|
n|nchc)
|
||||||
|
stopvpn
|
||||||
|
fortivpn nchc && sleep 0.5
|
||||||
|
opencon nchc
|
||||||
|
resolved nchc
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user