mauvehed's dotfiles for personal and work environments
1#!/bin/bash
2
3# Define variables for paths
4OPENVPN_PATH="/usr/sbin/openvpn"
5OPENVPN_CONFIG_DIR="/etc/openvpn"
6OPENVPN_LOG_DIR="/var/log/openvpn"
7
8# Check if the script is run as root
9if [[ $EUID -ne 0 ]]; then
10 echo "Error: This script must be run as root."
11 exit 1
12fi
13
14# Function to get the PID of OpenVPN process
15get_pid() {
16 sleep 2
17 local pid=$(pidof openvpn)
18 if [[ -z "$pid" ]]; then
19 echo "OpenVPN is not running."
20 else
21 echo "The PID of OpenVPN is: $pid"
22 fi
23}
24
25# Main script starts here
26echo ""
27echo "Please choose an option:"
28echo ""
29echo " 1) GPN, UDP, No Default Route"
30echo " 2) GPN, UDP, Default Route"
31echo " 3) GPN, TCP, No Default Route"
32echo " 4) GPN, TCP, Default Route"
33echo " 5) Disconnect OpenVPN"
34echo " 6) Exit"
35echo ""
36read -p "Selection: " selection
37
38case $selection in
39 1)
40 $OPENVPN_PATH --config "${OPENVPN_CONFIG_DIR}/gpn-nate-laptop-main-udp.ovpn" \
41 --log-append "${OPENVPN_LOG_DIR}/openvpn.log" \
42 --status "${OPENVPN_LOG_DIR}/openvpn-status.log" \
43 > /dev/null 2>&1 &
44 if [[ $? -eq 0 ]]; then
45 echo "Started GPN with UDP and No Default Route."
46 else
47 echo "Failed to start OpenVPN with UDP and No Default Route."
48 fi
49 get_pid
50 ;;
51 2)
52 $OPENVPN_PATH --config "${OPENVPN_CONFIG_DIR}/gpn-nate-laptop-main-udp-default.ovpn" \
53 --log-append "${OPENVPN_LOG_DIR}/openvpn.log" \
54 --status "${OPENVPN_LOG_DIR}/openvpn-status.log" \
55 > /dev/null 2>&1 &
56 if [[ $? -eq 0 ]]; then
57 echo "Started GPN with UDP using Default Route."
58 else
59 echo "Failed to start OpenVPN with UDP using Default Route."
60 fi
61 get_pid
62 ;;
63 3)
64 $OPENVPN_PATH --config "${OPENVPN_CONFIG_DIR}/gpn-nate-laptop-main-tcp.ovpn" \
65 --log-append "${OPENVPN_LOG_DIR}/openvpn.log" \
66 --status "${OPENVPN_LOG_DIR}/openvpn-status.log" \
67 > /dev/null 2>&1 &
68 if [[ $? -eq 0 ]]; then
69 echo "Started GPN with TCP and No Default Route."
70 else
71 echo "Failed to start OpenVPN with TCP and No Default Route."
72 fi
73 get_pid
74 ;;
75 4)
76 $OPENVPN_PATH --config "${OPENVPN_CONFIG_DIR}/gpn-nate-laptop-main-tcp-default.ovpn" \
77 --log-append "${OPENVPN_LOG_DIR}/openvpn.log" \
78 --status "${OPENVPN_LOG_DIR}/openvpn-status.log" \
79 > /dev/null 2>&1 &
80 if [[ $? -eq 0 ]]; then
81 echo "Started GPN with TCP using Default Route."
82 else
83 echo "Failed to start OpenVPN with TCP using Default Route."
84 fi
85 get_pid
86 ;;
87 5)
88 if pidof openvpn > /dev/null; then
89 echo "Stopping OpenVPN processes..."
90 killall openvpn
91 if [[ $? -eq 0 ]]; then
92 echo "Successfully stopped all OpenVPN processes."
93 else
94 echo "Failed to stop OpenVPN processes."
95 fi
96 else
97 echo "No running OpenVPN processes found to stop."
98 fi
99 get_pid
100 ;;
101 6)
102 echo ""
103 echo "Why did you run the script if you're just going to exit?"
104 exit
105 ;;
106 *)
107 echo "Invalid selection. Please enter a number between 1 and 6."
108 ;;
109esac