|
@@ -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
|