]> www.git.dmfe.net Git - dotfiles/commitdiff
Add l2tp vpn connection script. Fix iface script.
authorDmitry Fedotov <dm.fe@yandex.ru>
Mon, 8 Mar 2021 17:47:48 +0000 (20:47 +0300)
committerDmitry Fedotov <dm.fe@yandex.ru>
Mon, 8 Mar 2021 17:50:08 +0000 (20:50 +0300)
scripts/iface.sh
scripts/vpn/l2tp [new file with mode: 0755]

index 437d9b182d8fcab57aa91b96f37bd0af4f897c5f..aa2b1f600304d21ee8c27142ff6f3e6fd4b1c195 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 icon=ξΎ₯
-iface=$(ip route | awk '/^default/ { print $5 ; exit }')
+iface=$(ip route | awk '/^default via/ { print $5 ; exit }')
 
 [[ ! -d /sys/class/net/${iface} ]] && exit
 
diff --git a/scripts/vpn/l2tp b/scripts/vpn/l2tp
new file mode 100755 (executable)
index 0000000..ee95f4d
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+set -e
+
+print_help() {
+    printf 'Usage:\n'
+    printf 'l2tp --vpn_name vpn-name [--connect|--disconnect|-c|-d]\n'
+}
+
+connect() {
+    local vpn_name=$1
+    echo "connecting (VPN Name: $1)..."
+
+    ipsec up ${vpn_name}
+    echo "c ${vpn_name}" > /var/run/xl2tpd/l2tp-control
+    sleep 5
+    route add default dev ppp0
+}
+
+disconnect() {
+    local vpn_name=$1
+    echo "disconnecting (VPN Name: ${vpn_name})..."
+
+    route del default dev ppp0
+    echo "d ${vpn_name}" > /var/run/xl2tpd/l2tp-control
+    ipsec down ${vpn_name}
+}
+
+die() {
+    printf '%s\n' "$1" >&2
+    exit 1
+}
+
+while :; do
+    case $1 in
+        -c|--connect)
+            ACTION=connect
+            shift
+            ;;
+        -d|--disconnect)
+            ACTION=disconnect
+            shift
+            ;;
+        --vpn-name)
+            if [[ "$2" ]]; then
+                VPN_NAME=$2
+                shift
+                shift
+            else
+                die 'ERROR: "--vpn-name" requires a non-empty option argument.'
+            fi
+            ;;
+        --help|-h)
+            print_help
+            exit 0
+            ;;
+        --)
+            shift
+            break
+            ;;
+        -?*)
+            printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
+            shift
+            ;;
+        *)
+            break
+    esac
+done
+
+#echo "ACTION: ${ACTION}"
+#echo "VPN_NAME: ${VPN_NAME}"
+
+[[ ${VPN_NAME} ]] || \
+    die 'VPN Name is not specified. Plese use --vpn-name option.'
+
+if [[ ${ACTION} == "disconnect" ]]; then
+    disconnect ${VPN_NAME}
+else
+    connect ${VPN_NAME}
+fi
+