From 3994091cb54c26d55963a45f57ab8e1db9355eec Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Fri, 2 Sep 2022 23:24:10 -0500 Subject: [PATCH] Add client export option - Add an option to export configuration for an existing client. --- openvpn-install.sh | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/openvpn-install.sh b/openvpn-install.sh index 285667c..01cdbd0 100644 --- a/openvpn-install.sh +++ b/openvpn-install.sh @@ -538,11 +538,12 @@ else echo echo "Select an option:" echo " 1) Add a new client" - echo " 2) Revoke an existing client" - echo " 3) Remove OpenVPN" - echo " 4) Exit" + echo " 2) Export configuration for an existing client" + echo " 3) Revoke an existing client" + echo " 4) Remove OpenVPN" + echo " 5) Exit" read -p "Option: " option - until [[ "$option" =~ ^[1-4]$ ]]; do + until [[ "$option" =~ ^[1-5]$ ]]; do echo "$option: invalid selection." read -p "Option: " option done @@ -569,6 +570,27 @@ else exit ;; 2) + number_of_clients=$(tail -n +2 /etc/openvpn/server/easy-rsa/pki/index.txt | grep -c "^V") + if [[ "$number_of_clients" = 0 ]]; then + echo + echo "There are no existing clients!" + exit + fi + echo + echo "Select the client to export:" + tail -n +2 /etc/openvpn/server/easy-rsa/pki/index.txt | grep "^V" | cut -d '=' -f 2 | nl -s ') ' + read -p "Client: " client_number + until [[ "$client_number" =~ ^[0-9]+$ && "$client_number" -le "$number_of_clients" ]]; do + echo "$client_number: invalid selection." + read -p "Client: " client_number + done + client=$(tail -n +2 /etc/openvpn/server/easy-rsa/pki/index.txt | grep "^V" | cut -d '=' -f 2 | sed -n "$client_number"p) + new_client + echo + echo "$client exported. Configuration available in: $export_dir$client.ovpn" + exit + ;; + 3) # This option could be documented a bit better and maybe even be simplified # ...but what can I say, I want some sleep too number_of_clients=$(tail -n +2 /etc/openvpn/server/easy-rsa/pki/index.txt | grep -c "^V") @@ -611,7 +633,7 @@ else fi exit ;; - 3) + 4) echo read -p "Confirm OpenVPN removal? [y/N]: " remove until [[ "$remove" =~ ^[yYnN]*$ ]]; do @@ -671,7 +693,7 @@ else fi exit ;; - 4) + 5) exit ;; esac