From 015ed7826593d009e1bc64b322a988b56ca80afb Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob.mottram@codethink.co.uk>
Date: Wed, 27 Jan 2016 09:54:02 +0000
Subject: [PATCH] trove enable addcert

---
 src/freedombone-addcert | 112 +++++++++++++++++++++++++++-------------
 1 file changed, 76 insertions(+), 36 deletions(-)

diff --git a/src/freedombone-addcert b/src/freedombone-addcert
index 3bb1e5b12..f5e1185d3 100755
--- a/src/freedombone-addcert
+++ b/src/freedombone-addcert
@@ -8,7 +8,7 @@
 #
 #                    Freedom in the Cloud
 #
-# A script for creating self-signed certificates on Debian
+# Create self-signed or Let's Encrypt certificates on Debian
 
 # License
 # =======
@@ -52,28 +52,86 @@ LETSENCRYPT_REPO="https://github.com/letsencrypt/letsencrypt"
 MY_EMAIL_ADDRESS=
 FRIENDS_TROVE_SERVER=
 FRIENDS_TROVE_PASSWORD=
+FRIENDS_TROVE_SSH_PORT=
+MY_TROVE_PASSWORD=
 
-if [ -f $CONFIGURATION_FILE ]; then
-    if grep -q "LETSENCRYPT_REPO" $CONFIGURATION_FILE; then
-        LETSENCRYPT_REPO=$(grep "LETSENCRYPT_REPO" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
+function read_repo_servers {
+    if grep -q "FRIENDS_TROVE_SERVER" $CONFIGURATION_FILE; then
+        FRIENDS_TROVE_SERVER=$(grep "FRIENDS_TROVE_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
+    fi
+    if grep -q "FRIENDS_TROVE_SSH_PORT" $CONFIGURATION_FILE; then
+        FRIENDS_TROVE_SSH_PORT=$(grep "FRIENDS_TROVE_SSH_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
     fi
-    if grep -q "LETSENCRYPT_SERVER" $CONFIGURATION_FILE; then
-        LETSENCRYPT_SERVER=$(grep "LETSENCRYPT_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
+    if grep -q "MY_TROVE_PASSWORD" $CONFIGURATION_FILE; then
+        MY_TROVE_PASSWORD=$(grep "MY_TROVE_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
+    fi
+    if grep -q "FRIENDS_TROVE_PASSWORD" $CONFIGURATION_FILE; then
+        FRIENDS_TROVE_PASSWORD=$(grep "FRIENDS_TROVE_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
     fi
 
-    # use a trove?
-    if ! grep -q "FRIENDS_TROVE_SERVER" $CONFIGURATION_FILE; then
-        FRIENDS_TROVE_SERVER=$(grep "FRIENDS_TROVE_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
-        FRIENDS_TROVE_SSH_PORT=2222
-        if ! grep -q "FRIENDS_TROVE_PASSWORD" $CONFIGURATION_FILE; then
-            FRIENDS_TROVE_PASSWORD=$(grep "FRIENDS_TROVE_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
+    if [ ! $FRIENDS_TROVE_SERVER ]; then
+        return
+    fi
+    if [ ${#FRIENDS_TROVE_SERVER} -lt 2 ]; then
+        return
+    fi
+
+    MAIN_COMMAND=/usr/local/bin/${PROJECT_NAME}
+    if [ ! -f $MAIN_COMMAND ]; then
+        MAIN_COMMAND=/usr/bin/${PROJECT_NAME}
+    fi
+
+    REPOS=($(cat ${MAIN_COMMAND} | grep "_REPO=\"" | uniq -u | sed 's|${PROJECT_NAME}|'"${PROJECT_NAME}"'|g'))
+
+    for line in "${REPOS[@]}"
+    do
+        repo_name=$(echo "$line" | awk -F '=' '{print $1}')
+        trove_name=$(echo "$repo_name" | sed "s|_REPO||g" | awk '{print tolower($0)}')
+        friends_repo_url="ssh://trove@${FRIENDS_TROVE_SERVER}:${FRIENDS_TROVE_SSH_PORT}/home/trove/${trove_name}"
+        ${repo_name}="${friends_repo_url}"
+    done
+}
+
+function git_clone {
+    repo_url="$1"
+    destination_dir="$2"
+    if [[ "$repo_url" == "ssh:"* ]]; then
+        if [ "${FRIENDS_TROVE_SERVER}" ]; then
+            if [ ${#FRIENDS_TROVE_SERVER} -gt 2 ]; then
+                if [ "$FRIENDS_TROVE_PASSWORD" ]; then
+                    if [ ${#FRIENDS_TROVE_PASSWORD} -gt 2 ]; then
+                        sshpass -p "$FRIENDS_TROVE_PASSWORD" git clone "$repo_url" "$destination_dir"
+                        return
+                    fi
+                fi
+            fi
         fi
-        if ! grep -q "FRIENDS_TROVE_SSH_PORT" $CONFIGURATION_FILE; then
-            FRIENDS_TROVE_SSH_PORT=$(grep "FRIENDS_TROVE_SSH_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
+    fi
+    git clone "$repo_url" "$destination_dir"
+}
+
+function git_pull {
+    git stash
+    git checkout master
+    if [ "${FRIENDS_TROVE_SERVER}" ]; then
+        if [ ${#FRIENDS_TROVE_SERVER} -gt 2 ]; then
+            if [ "$FRIENDS_TROVE_PASSWORD" ]; then
+                if [ ${#FRIENDS_TROVE_PASSWORD} -gt 2 ]; then
+                    sshpass -p "$FRIENDS_TROVE_PASSWORD" git pull
+                    if [ $1 ]; then
+                        git checkout $1 -b $1
+                    fi
+                    return
+                fi
+            fi
         fi
-        LETSENCRYPT_REPO="ssh://trove@${FRIENDS_TROVE_SERVER}:${FRIENDS_TROVE_SSH_PORT}/home/trove/letsencrypt"
     fi
-fi
+    git pull
+
+    if [ $1 ]; then
+        git checkout $1 -b $1
+    fi
+}
 
 function show_help {
     echo ''
@@ -181,24 +239,6 @@ fi
 
 CERTFILE=$HOSTNAME
 
-function git_clone {
-    repo_url="$1"
-    destination_dir="$2"
-    if [[ "$repo_url" == "ssh:"* ]]; then
-        if [ "${FRIENDS_TROVE_SERVER}" ]; then
-            if [ ${#FRIENDS_TROVE_SERVER} -gt 2 ]; then
-                if [ "$FRIENDS_TROVE_PASSWORD" ]; then
-                    if [ ${#FRIENDS_TROVE_PASSWORD} -gt 2 ]; then
-                        sshpass -p "$FRIENDS_TROVE_PASSWORD" git clone "$repo_url" "$destination_dir"
-                        return
-                    fi
-                fi
-            fi
-        fi
-    fi
-    git clone "$repo_url" "$destination_dir"
-}
-
 function add_cert_letsencrypt {
     CERTFILE=$LETSENCRYPT_HOSTNAME
 
@@ -232,8 +272,7 @@ function add_cert_letsencrypt {
         fi
     else
         cd ${INSTALL_DIR}/letsencrypt
-        git stash
-        git pull
+        git_pull
     fi
 
     # stop the web server
@@ -336,6 +375,7 @@ function create_cert {
     fi
 }
 
+read_repo_servers
 create_cert
 generate_dh_params
 restart_web_server
-- 
GitLab