From be5afc38fbc88c443dc9648cf511b46f1eda48e7 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@freedombone.net>
Date: Tue, 31 Jul 2018 11:23:46 +0100
Subject: [PATCH] Tidying

---
 src/freedombone-utils-webadmin | 85 ++++++++++++++++++++--------------
 1 file changed, 51 insertions(+), 34 deletions(-)

diff --git a/src/freedombone-utils-webadmin b/src/freedombone-utils-webadmin
index 628b154c0..db3e5a528 100755
--- a/src/freedombone-utils-webadmin
+++ b/src/freedombone-utils-webadmin
@@ -33,6 +33,13 @@
 
 WEBADMIN_LOGIN_TEXT=$"Welcome to ${PROJECT_NAME}"
 
+function web_admin_get_hostname {
+    # get the local name (usually freedombone.local) from avahi config
+    local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
+    # where the web admin files are
+    webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin"
+}
+
 function web_admin_configure_installer_daemon {
     if [ -f /etc/systemd/system/webadmin.service ]; then
         return
@@ -81,9 +88,9 @@ function web_admin_avahi {
 
 function web_admin_create_users {
     ADMIN_USER=$(get_completion_param "Admin user")
-    local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
-    users_file="/var/www/${local_hostname}/htdocs/admin/users.html"
-    cp "/var/www/${local_hostname}/htdocs/admin/users_template.html" "$users_file"
+    web_admin_get_hostname
+    users_file="$webadmin_install_dir/users.html"
+    cp "$webadmin_install_dir/users_template.html" "$users_file"
     sed -i '/users list/,/end of users/d' "$users_file"
     sed -i '/<\/body>/d' "$users_file"
     sed -i '/<\/html>/d' "$users_file"
@@ -91,12 +98,12 @@ function web_admin_create_users {
     echo "    <div class=\"row\">" >> "$users_file"
     echo "      <div class=\"column\">" >> "$users_file"
 
-    rm "/var/www/${local_hostname}/htdocs/admin/userprofile_"*
+    rm "$webadmin_install_dir/userprofile_"*
 
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
         if [[ $(is_valid_user "$USERNAME") == "1" ]]; then
-            userfile="/var/www/${local_hostname}/htdocs/admin/userprofile_${USERNAME}.html"
+            userfile="$webadmin_install_dir/userprofile_${USERNAME}.html"
             useremail=${USERNAME}@${DEFAULT_DOMAIN_NAME}
             GPG_ID=$(su -c "gpg --list-keys '$useremail'" - "$USERNAME" | sed -n '2p' | sed 's/^[ \t]*//')
             if [ -f "/home/$USERNAME/.gnupg/gpg.conf" ]; then
@@ -110,7 +117,7 @@ function web_admin_create_users {
                     fi
                 fi
             fi
-            pubkey_qrcode="/var/www/${local_hostname}/htdocs/admin/images/userprofile_${USERNAME}.png"
+            pubkey_qrcode="$webadmin_install_dir/images/userprofile_${USERNAME}.png"
             su -c "gpg --armor --export \"$GPG_ID\"" - "$USERNAME" | qrencode -t PNG -o "$pubkey_qrcode"
 
             { echo '        <div class="chip">';
@@ -120,7 +127,7 @@ function web_admin_create_users {
               echo '          </a>';
               echo '        </div>'; } >> "$users_file"
 
-            cp "/var/www/${local_hostname}/htdocs/admin/userprofile.html" "$userfile"
+            cp "$webadmin_install_dir/userprofile.html" "$userfile"
             sed -i "s|USERNAME|${USERNAME}|g" "$userfile"
             if [[ "$USERNAME" == "$ADMIN_USER" ]]; then
                 sed -i "s|USERTYPE|Admin|g" "$userfile"
@@ -152,12 +159,12 @@ function web_admin_create_users {
 
 function web_admin_create_add_apps {
     read_config_param DDNS_PROVIDER
-    local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
-    apps_add_template_filename="/var/www/${local_hostname}/htdocs/admin/apps_add_template.html"
-    appslist_add_filename="/var/www/${local_hostname}/htdocs/admin/apps_add.html"
-    pending_installs="/var/www/${local_hostname}/htdocs/admin/pending_installs.txt"
-    icons_dir="/var/www/${local_hostname}/htdocs/admin/icons"
-    app_add_template_filename="/var/www/${local_hostname}/htdocs/admin/app_add_template.html"
+    web_admin_get_hostname
+    apps_add_template_filename="$webadmin_install_dir/apps_add_template.html"
+    appslist_add_filename="$webadmin_install_dir/apps_add.html"
+    pending_installs="$webadmin_install_dir/pending_installs.txt"
+    icons_dir="$webadmin_install_dir/icons"
+    app_add_template_filename="$webadmin_install_dir/app_add_template.html"
     FILES="/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*"
 
     if [ ! -d "$icons_dir" ]; then
@@ -206,7 +213,7 @@ function web_admin_create_add_apps {
                 # get the icon for the app
                 icon_filename="/usr/share/${PROJECT_NAME}/android-app/${app_name}.png"
                 if [ -f "$icon_filename" ]; then
-                    cp "$icon_filename" "/var/www/${local_hostname}/htdocs/admin/icons/${app_name}.png"
+                    cp "$icon_filename" "$webadmin_install_dir/icons/${app_name}.png"
                 else
                     icon_filename=
                     continue
@@ -232,12 +239,12 @@ function web_admin_create_add_apps {
                     echo '    <div class="row">' >> "$appslist_add_filename"
                 fi
 
-                filename="/var/www/${local_hostname}/htdocs/admin/app_${app_name}.html"
+                filename="$webadmin_install_dir/app_${app_name}.html"
                 if [ -f "$filename" ]; then
                     rm "$filename"
                 fi
 
-                filename="/var/www/${local_hostname}/htdocs/admin/app_add_${app_name}.html"
+                filename="$webadmin_install_dir/app_add_${app_name}.html"
 
                 if [ ! $app_pending_install ]; then
                     { echo '      <div class="column">';
@@ -295,16 +302,16 @@ function web_admin_create_add_apps {
     echo '  </body>' >> "$appslist_add_filename"
     echo '</html>' >> "$appslist_add_filename"
 
-    chown -R www-data:www-data "/var/www/${local_hostname}/htdocs/admin"
+    chown -R www-data:www-data "$webadmin_install_dir"
 }
 
 function web_admin_create_installed_apps {
-    local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
-    appslist_template_filename="/var/www/${local_hostname}/htdocs/admin/apps_template.html"
-    app_template_filename="/var/www/${local_hostname}/htdocs/admin/app_template.html"
-    appslist_filename="/var/www/${local_hostname}/htdocs/admin/apps.html"
-    icons_dir="/var/www/${local_hostname}/htdocs/admin/icons"
-    pending_removes="/var/www/${local_hostname}/htdocs/admin/pending_removes.txt"
+    web_admin_get_hostname
+    appslist_template_filename="$webadmin_install_dir/apps_template.html"
+    app_template_filename="$webadmin_install_dir/app_template.html"
+    appslist_filename="$webadmin_install_dir/apps.html"
+    icons_dir="$webadmin_install_dir/icons"
+    pending_removes="$webadmin_install_dir/pending_removes.txt"
 
     if [ ! -d "$icons_dir" ]; then
         mkdir -p "$icons_dir"
@@ -339,7 +346,7 @@ function web_admin_create_installed_apps {
                     # get the icon for the app
                     icon_filename="/usr/share/${PROJECT_NAME}/android-app/${app_name}.png"
                     if [ -f "$icon_filename" ]; then
-                        cp "$icon_filename" "/var/www/${local_hostname}/htdocs/admin/icons/${app_name}.png"
+                        cp "$icon_filename" "$webadmin_install_dir/icons/${app_name}.png"
                     else
                         icon_filename=
                     fi
@@ -377,12 +384,12 @@ function web_admin_create_installed_apps {
                         echo '    <div class="row">' >> "$appslist_filename"
                     fi
 
-                    filename="/var/www/${local_hostname}/htdocs/admin/app_add_${app_name}.html"
+                    filename="$webadmin_install_dir/app_add_${app_name}.html"
                     if [ -f "$filename" ]; then
                         rm "$filename"
                     fi
 
-                    filename="/var/www/${local_hostname}/htdocs/admin/app_${app_name}.html"
+                    filename="$webadmin_install_dir/app_${app_name}.html"
 
                     { echo '      <div class="column">';
                       echo '        <div>';
@@ -427,7 +434,7 @@ function web_admin_create_installed_apps {
     echo '  </body>' >> "$appslist_filename"
     echo '</html>' >> "$appslist_filename"
 
-    chown -R www-data:www-data "/var/www/${local_hostname}/htdocs/admin"
+    chown -R www-data:www-data "$webadmin_install_dir"
 }
 
 function web_admin_get_language_subdir {
@@ -447,9 +454,22 @@ function web_admin_get_language_subdir {
 function web_admin_onion_only {
     # In onion only mode domain names or ddns codes
     # don't need to be provided
-    sed -i '/freedns_code/d' "/var/www/${local_hostname}/htdocs/admin/app_add_template.html"
-    sed -i '/install_domain/d' "/var/www/${local_hostname}/htdocs/admin/app_add_template.html"
-    sed -i 's|onion_only=false;|onion_only=true;|g' "/var/www/${local_hostname}/htdocs/admin/installapp.php"
+    web_admin_get_hostname
+    sed -i '/freedns_code/d' "$webadmin_install_dir/app_add_template.html"
+    sed -i '/install_domain/d' "$webadmin_install_dir/app_add_template.html"
+    sed -i 's|onion_only=false;|onion_only=true;|g' "$webadmin_install_dir/installapp.php"
+}
+
+function web_admin_reset {
+    web_admin_get_hostname
+
+    # reset the box back to the setup screen
+    if [ -f /etc/nginx/.webadminpasswd ]; then
+        rm /etc/nginx/.webadminpasswd
+    fi
+    touch "$webadmin_install_dir/.setupscreenactive"
+
+    install_web_admin
 }
 
 function web_admin_setup_login {
@@ -505,10 +525,7 @@ function install_web_admin {
     # This is usually EN
     language_subdir=$(web_admin_get_language_subdir)
 
-    # get the local name (usually freedombone.local) from avahi config
-    local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
-    # where the web admin files are
-    webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin"
+    web_admin_get_hostname
 
     # whether or not to add authentication to freedombone.local
     basic_auth_str='#auth_basic'
-- 
GitLab