瀏覽代碼

trove enable addcert

Bob Mottram 9 年之前
父節點
當前提交
015ed78265
共有 1 個檔案被更改,包括 76 行新增36 行删除
  1. 76
    36
      src/freedombone-addcert

+ 76
- 36
src/freedombone-addcert 查看文件

@@ -8,7 +8,7 @@
8 8
 #
9 9
 #                    Freedom in the Cloud
10 10
 #
11
-# A script for creating self-signed certificates on Debian
11
+# Create self-signed or Let's Encrypt certificates on Debian
12 12
 
13 13
 # License
14 14
 # =======
@@ -52,28 +52,86 @@ LETSENCRYPT_REPO="https://github.com/letsencrypt/letsencrypt"
52 52
 MY_EMAIL_ADDRESS=
53 53
 FRIENDS_TROVE_SERVER=
54 54
 FRIENDS_TROVE_PASSWORD=
55
+FRIENDS_TROVE_SSH_PORT=
56
+MY_TROVE_PASSWORD=
55 57
 
56
-if [ -f $CONFIGURATION_FILE ]; then
57
-    if grep -q "LETSENCRYPT_REPO" $CONFIGURATION_FILE; then
58
-        LETSENCRYPT_REPO=$(grep "LETSENCRYPT_REPO" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
58
+function read_repo_servers {
59
+    if grep -q "FRIENDS_TROVE_SERVER" $CONFIGURATION_FILE; then
60
+        FRIENDS_TROVE_SERVER=$(grep "FRIENDS_TROVE_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
61
+    fi
62
+    if grep -q "FRIENDS_TROVE_SSH_PORT" $CONFIGURATION_FILE; then
63
+        FRIENDS_TROVE_SSH_PORT=$(grep "FRIENDS_TROVE_SSH_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
59 64
     fi
60
-    if grep -q "LETSENCRYPT_SERVER" $CONFIGURATION_FILE; then
61
-        LETSENCRYPT_SERVER=$(grep "LETSENCRYPT_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
65
+    if grep -q "MY_TROVE_PASSWORD" $CONFIGURATION_FILE; then
66
+        MY_TROVE_PASSWORD=$(grep "MY_TROVE_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
67
+    fi
68
+    if grep -q "FRIENDS_TROVE_PASSWORD" $CONFIGURATION_FILE; then
69
+        FRIENDS_TROVE_PASSWORD=$(grep "FRIENDS_TROVE_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
62 70
     fi
63 71
 
64
-    # use a trove?
65
-    if ! grep -q "FRIENDS_TROVE_SERVER" $CONFIGURATION_FILE; then
66
-        FRIENDS_TROVE_SERVER=$(grep "FRIENDS_TROVE_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
67
-        FRIENDS_TROVE_SSH_PORT=2222
68
-        if ! grep -q "FRIENDS_TROVE_PASSWORD" $CONFIGURATION_FILE; then
69
-            FRIENDS_TROVE_PASSWORD=$(grep "FRIENDS_TROVE_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
72
+    if [ ! $FRIENDS_TROVE_SERVER ]; then
73
+        return
74
+    fi
75
+    if [ ${#FRIENDS_TROVE_SERVER} -lt 2 ]; then
76
+        return
77
+    fi
78
+
79
+    MAIN_COMMAND=/usr/local/bin/${PROJECT_NAME}
80
+    if [ ! -f $MAIN_COMMAND ]; then
81
+        MAIN_COMMAND=/usr/bin/${PROJECT_NAME}
82
+    fi
83
+
84
+    REPOS=($(cat ${MAIN_COMMAND} | grep "_REPO=\"" | uniq -u | sed 's|${PROJECT_NAME}|'"${PROJECT_NAME}"'|g'))
85
+
86
+    for line in "${REPOS[@]}"
87
+    do
88
+        repo_name=$(echo "$line" | awk -F '=' '{print $1}')
89
+        trove_name=$(echo "$repo_name" | sed "s|_REPO||g" | awk '{print tolower($0)}')
90
+        friends_repo_url="ssh://trove@${FRIENDS_TROVE_SERVER}:${FRIENDS_TROVE_SSH_PORT}/home/trove/${trove_name}"
91
+        ${repo_name}="${friends_repo_url}"
92
+    done
93
+}
94
+
95
+function git_clone {
96
+    repo_url="$1"
97
+    destination_dir="$2"
98
+    if [[ "$repo_url" == "ssh:"* ]]; then
99
+        if [ "${FRIENDS_TROVE_SERVER}" ]; then
100
+            if [ ${#FRIENDS_TROVE_SERVER} -gt 2 ]; then
101
+                if [ "$FRIENDS_TROVE_PASSWORD" ]; then
102
+                    if [ ${#FRIENDS_TROVE_PASSWORD} -gt 2 ]; then
103
+                        sshpass -p "$FRIENDS_TROVE_PASSWORD" git clone "$repo_url" "$destination_dir"
104
+                        return
105
+                    fi
106
+                fi
107
+            fi
70 108
         fi
71
-        if ! grep -q "FRIENDS_TROVE_SSH_PORT" $CONFIGURATION_FILE; then
72
-            FRIENDS_TROVE_SSH_PORT=$(grep "FRIENDS_TROVE_SSH_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
109
+    fi
110
+    git clone "$repo_url" "$destination_dir"
111
+}
112
+
113
+function git_pull {
114
+    git stash
115
+    git checkout master
116
+    if [ "${FRIENDS_TROVE_SERVER}" ]; then
117
+        if [ ${#FRIENDS_TROVE_SERVER} -gt 2 ]; then
118
+            if [ "$FRIENDS_TROVE_PASSWORD" ]; then
119
+                if [ ${#FRIENDS_TROVE_PASSWORD} -gt 2 ]; then
120
+                    sshpass -p "$FRIENDS_TROVE_PASSWORD" git pull
121
+                    if [ $1 ]; then
122
+                        git checkout $1 -b $1
123
+                    fi
124
+                    return
125
+                fi
126
+            fi
73 127
         fi
74
-        LETSENCRYPT_REPO="ssh://trove@${FRIENDS_TROVE_SERVER}:${FRIENDS_TROVE_SSH_PORT}/home/trove/letsencrypt"
75 128
     fi
76
-fi
129
+    git pull
130
+
131
+    if [ $1 ]; then
132
+        git checkout $1 -b $1
133
+    fi
134
+}
77 135
 
78 136
 function show_help {
79 137
     echo ''
@@ -181,24 +239,6 @@ fi
181 239
 
182 240
 CERTFILE=$HOSTNAME
183 241
 
184
-function git_clone {
185
-    repo_url="$1"
186
-    destination_dir="$2"
187
-    if [[ "$repo_url" == "ssh:"* ]]; then
188
-        if [ "${FRIENDS_TROVE_SERVER}" ]; then
189
-            if [ ${#FRIENDS_TROVE_SERVER} -gt 2 ]; then
190
-                if [ "$FRIENDS_TROVE_PASSWORD" ]; then
191
-                    if [ ${#FRIENDS_TROVE_PASSWORD} -gt 2 ]; then
192
-                        sshpass -p "$FRIENDS_TROVE_PASSWORD" git clone "$repo_url" "$destination_dir"
193
-                        return
194
-                    fi
195
-                fi
196
-            fi
197
-        fi
198
-    fi
199
-    git clone "$repo_url" "$destination_dir"
200
-}
201
-
202 242
 function add_cert_letsencrypt {
203 243
     CERTFILE=$LETSENCRYPT_HOSTNAME
204 244
 
@@ -232,8 +272,7 @@ function add_cert_letsencrypt {
232 272
         fi
233 273
     else
234 274
         cd ${INSTALL_DIR}/letsencrypt
235
-        git stash
236
-        git pull
275
+        git_pull
237 276
     fi
238 277
 
239 278
     # stop the web server
@@ -336,6 +375,7 @@ function create_cert {
336 375
     fi
337 376
 }
338 377
 
378
+read_repo_servers
339 379
 create_cert
340 380
 generate_dh_params
341 381
 restart_web_server