From 063bcca516337744196a1c9502ca620e948f8904 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@freedombone.net>
Date: Tue, 26 Sep 2017 23:12:32 +0100
Subject: [PATCH] Regenerating user vpn keys

---
 src/freedombone-app-vpn | 31 ++++++++++++++++++++++++++++---
 1 file changed, 28 insertions(+), 3 deletions(-)

diff --git a/src/freedombone-app-vpn b/src/freedombone-app-vpn
index c890dff7a..e26384003 100755
--- a/src/freedombone-app-vpn
+++ b/src/freedombone-app-vpn
@@ -107,6 +107,7 @@ function vpn_change_tls_port {
             tlsport=$(<$data)
             if [ ${#tlsport} -gt 0 ]; then
                 if [[ "$tlsport" != "$EXISTING_VPN_TLS_PORT" ]]; then
+                    clear
                     VPN_TLS_PORT=$tlsport
                     write_config_param "VPN_TLS_PORT" "$VPN_TLS_PORT"
                     sed -i "s|accept =.*|accept = $VPN_TLS_PORT|g" /etc/stunnel/stunnel.conf
@@ -138,6 +139,28 @@ function vpn_change_tls_port {
     esac
 }
 
+function vpn_regenerate_client_keys {
+    data=$(tempfile 2>/dev/null)
+    trap "rm -f $data" 0 1 2 5 15
+    dialog --title $"Regenerate VPN keys for a user" \
+           --backtitle $"Freedombone Control Panel" \
+           --inputbox $'username' 10 50 2>$data
+    sel=$?
+    case $sel in
+        0)
+            USERNAME=$(<$data)
+            if [ ${#USERNAME} -gt 0 ]; then
+                if [ -d /home/$USERNAME ]; then
+                    clear
+                    create_user_vpn_key $USERNAME
+                    dialog --title $"Regenerate VPN keys for a user" \
+                           --msgbox $"VPN keys were regenerated for $USERNAME" 6 60
+                fi
+            fi
+            ;;
+    esac
+}
+
 function configure_interactive_vpn {
     read_config_param VPN_TLS_PORT
     while true
@@ -146,9 +169,10 @@ function configure_interactive_vpn {
         trap "rm -f $data" 0 1 2 5 15
         dialog --backtitle $"Freedombone Control Panel" \
                --title $"VPN Configuration" \
-               --radiolist $"Choose an operation:" 12 70 2 \
+               --radiolist $"Choose an operation:" 13 70 3 \
                1 $"Change TLS port (currently $VPN_TLS_PORT)" off \
-               2 $"Exit" on 2> $data
+               2 $"Regenerate keys for a user" off \
+               3 $"Exit" on 2> $data
         sel=$?
         case $sel in
             1) return;;
@@ -156,7 +180,8 @@ function configure_interactive_vpn {
         esac
         case $(cat $data) in
             1) vpn_change_tls_port;;
-            2) break;;
+            2) vpn_regenerate_client_keys;;
+            3) break;;
         esac
     done
 }
-- 
GitLab