Kaynağa Gözat

Move git functions to separate script

Bob Mottram 8 yıl önce
ebeveyn
işleme
6f5f81d45c
No account linked to committer's email
4 değiştirilmiş dosya ile 257 ekleme ve 401 silme
  1. 5
    55
      src/freedombone
  2. 242
    283
      src/freedombone-addcert
  3. 5
    17
      src/freedombone-mesh-install
  4. 5
    46
      src/freedombone-upgrade

+ 5
- 55
src/freedombone Dosyayı Görüntüle

37
 
37
 
38
 DEFAULT_LANGUAGE=$(echo $LANG)
38
 DEFAULT_LANGUAGE=$(echo $LANG)
39
 
39
 
40
+source /usr/local/bin/${PROJECT_NAME}-utils-git
41
+if [ -f /usr/bin/${PROJECT_NAME}-utils-git ]; then
42
+	source /usr/bin/${PROJECT_NAME}-utils-git
43
+fi
44
+
40
 # username created by default within a debian image
45
 # username created by default within a debian image
41
 GENERIC_IMAGE_USERNAME='fbone'
46
 GENERIC_IMAGE_USERNAME='fbone'
42
 
47
 
618
 	exit 0
623
 	exit 0
619
 }
624
 }
620
 
625
 
621
-function git_clone {
622
-	repo_url="$1"
623
-	destination_dir="$2"
624
-	if [[ "$repo_url" == "ssh:"* ]]; then
625
-		if [ "${FRIENDS_MIRRORS_SERVER}" ]; then
626
-			if [ ${#FRIENDS_MIRRORS_SERVER} -gt 2 ]; then
627
-				if [ "$FRIENDS_MIRRORS_PASSWORD" ]; then
628
-					if [ ${#FRIENDS_MIRRORS_PASSWORD} -gt 2 ]; then
629
-						echo "sshpass -p \"$FRIENDS_MIRRORS_PASSWORD\" git clone $repo_url $destination_dir"
630
-						sshpass -p "$FRIENDS_MIRRORS_PASSWORD" git clone "$repo_url" "$destination_dir"
631
-						return
632
-					fi
633
-				fi
634
-			fi
635
-		fi
636
-	fi
637
-	echo "git clone $repo_url $destination_dir"
638
-	git clone "$repo_url" "$destination_dir"
639
-}
640
-
641
-function git_pull {
642
-	if [ ! $1 ]; then
643
-		echo $'git_pull no repo specified'
644
-	fi
645
-
646
-	git stash
647
-	git remote set-url origin $1
648
-	git checkout master
649
-	if [ "${FRIENDS_MIRRORS_SERVER}" ]; then
650
-		if [ ${#FRIENDS_MIRRORS_SERVER} -gt 2 ]; then
651
-			if [ "$FRIENDS_MIRRORS_PASSWORD" ]; then
652
-				if [ ${#FRIENDS_MIRRORS_PASSWORD} -gt 2 ]; then
653
-					sshpass -p "$FRIENDS_MIRRORS_PASSWORD" git pull
654
-					if [ $2 ]; then
655
-						git checkout $2 -b $2
656
-					fi
657
-					return
658
-				fi
659
-			fi
660
-		fi
661
-	fi
662
-	git pull
663
-
664
-	if [ $2 ]; then
665
-		# delete any existing branch
666
-		git branch -D $2
667
-		# check out the new branch
668
-		git checkout $2 -b $2
669
-		if [ ! "$?" = "0" ]; then
670
-			echo $"Unable to checkout $1 $2"
671
-			exit 72357
672
-		fi
673
-	fi
674
-}
675
-
676
 function remove_database {
626
 function remove_database {
677
 	app_name="$1"
627
 	app_name="$1"
678
 	if [ ! -d $INSTALL_DIR ]; then
628
 	if [ ! -d $INSTALL_DIR ]; then

+ 242
- 283
src/freedombone-addcert Dosyayı Görüntüle

36
 CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
36
 CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
37
 COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
37
 COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
38
 
38
 
39
+source /usr/local/bin/${PROJECT_NAME}-utils-git
40
+if [ -f /usr/bin/${PROJECT_NAME}-utils-git ]; then
41
+	source /usr/bin/${PROJECT_NAME}-utils-git
42
+fi
43
+
39
 HOSTNAME=
44
 HOSTNAME=
40
 LETSENCRYPT_HOSTNAME=
45
 LETSENCRYPT_HOSTNAME=
41
 COUNTRY_CODE="US"
46
 COUNTRY_CODE="US"
56
 MY_MIRRORS_PASSWORD=
61
 MY_MIRRORS_PASSWORD=
57
 
62
 
58
 function read_repo_servers {
63
 function read_repo_servers {
59
-    if [ -f $CONFIGURATION_FILE ]; then
60
-        if grep -q "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE; then
61
-            FRIENDS_MIRRORS_SERVER=$(grep "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
62
-        fi
63
-        if grep -q "FRIENDS_MIRRORS_SSH_PORT" $CONFIGURATION_FILE; then
64
-            FRIENDS_MIRRORS_SSH_PORT=$(grep "FRIENDS_MIRRORS_SSH_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
65
-        fi
66
-        if grep -q "MY_MIRRORS_PASSWORD" $CONFIGURATION_FILE; then
67
-            MY_MIRRORS_PASSWORD=$(grep "MY_MIRRORS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
68
-        fi
69
-        if grep -q "FRIENDS_MIRRORS_PASSWORD" $CONFIGURATION_FILE; then
70
-            FRIENDS_MIRRORS_PASSWORD=$(grep "FRIENDS_MIRRORS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
71
-        fi
72
-    fi
73
-
74
-    if [ ! $FRIENDS_MIRRORS_SERVER ]; then
75
-        return
76
-    fi
77
-    if [ ${#FRIENDS_MIRRORS_SERVER} -lt 2 ]; then
78
-        return
79
-    fi
80
-
81
-    MAIN_COMMAND=/usr/local/bin/${PROJECT_NAME}
82
-    if [ ! -f $MAIN_COMMAND ]; then
83
-        MAIN_COMMAND=/usr/bin/${PROJECT_NAME}
84
-    fi
85
-
86
-    REPOS=($(cat ${MAIN_COMMAND} | grep "_REPO=\"" | uniq -u | sed 's|${PROJECT_NAME}|'"${PROJECT_NAME}"'|g'))
87
-
88
-    for line in "${REPOS[@]}"
89
-    do
90
-        repo_name=$(echo "$line" | awk -F '=' '{print $1}')
91
-        mirrors_name=$(echo "$repo_name" | sed "s|_REPO||g" | awk '{print tolower($0)}')
92
-        friends_repo_url="ssh://mirrors@${FRIENDS_MIRRORS_SERVER}:${FRIENDS_MIRRORS_SSH_PORT}/home/mirrors/${mirrors_name}"
93
-        ${repo_name}="${friends_repo_url}"
94
-    done
95
-}
96
-
97
-function git_clone {
98
-    repo_url="$1"
99
-    destination_dir="$2"
100
-    if [[ "$repo_url" == "ssh:"* ]]; then
101
-        if [ "${FRIENDS_MIRRORS_SERVER}" ]; then
102
-            if [ ${#FRIENDS_MIRRORS_SERVER} -gt 2 ]; then
103
-                if [ "$FRIENDS_MIRRORS_PASSWORD" ]; then
104
-                    if [ ${#FRIENDS_MIRRORS_PASSWORD} -gt 2 ]; then
105
-                        sshpass -p "$FRIENDS_MIRRORS_PASSWORD" git clone "$repo_url" "$destination_dir"
106
-                        return
107
-                    fi
108
-                fi
109
-            fi
110
-        fi
111
-    fi
112
-    git clone "$repo_url" "$destination_dir"
113
-}
114
-
115
-function git_pull {
116
-    if [ ! $1 ]; then
117
-        echo $'git_pull no repo specified'
118
-    fi
119
-
120
-    git stash
121
-    git remote set-url origin $1
122
-    git checkout master
123
-    if [ "${FRIENDS_MIRRORS_SERVER}" ]; then
124
-        if [ ${#FRIENDS_MIRRORS_SERVER} -gt 2 ]; then
125
-            if [ "$FRIENDS_MIRRORS_PASSWORD" ]; then
126
-                if [ ${#FRIENDS_MIRRORS_PASSWORD} -gt 2 ]; then
127
-                    sshpass -p "$FRIENDS_MIRRORS_PASSWORD" git pull
128
-                    if [ $2 ]; then
129
-                        git checkout $2 -b $2
130
-                    fi
131
-                    return
132
-                fi
133
-            fi
134
-        fi
135
-    fi
136
-    git pull
137
-
138
-    if [ $2 ]; then
139
-        git checkout $2 -b $2
140
-    fi
64
+	if [ -f $CONFIGURATION_FILE ]; then
65
+		if grep -q "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE; then
66
+			FRIENDS_MIRRORS_SERVER=$(grep "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
67
+		fi
68
+		if grep -q "FRIENDS_MIRRORS_SSH_PORT" $CONFIGURATION_FILE; then
69
+			FRIENDS_MIRRORS_SSH_PORT=$(grep "FRIENDS_MIRRORS_SSH_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
70
+		fi
71
+		if grep -q "MY_MIRRORS_PASSWORD" $CONFIGURATION_FILE; then
72
+			MY_MIRRORS_PASSWORD=$(grep "MY_MIRRORS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
73
+		fi
74
+		if grep -q "FRIENDS_MIRRORS_PASSWORD" $CONFIGURATION_FILE; then
75
+			FRIENDS_MIRRORS_PASSWORD=$(grep "FRIENDS_MIRRORS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
76
+		fi
77
+	fi
78
+
79
+	if [ ! $FRIENDS_MIRRORS_SERVER ]; then
80
+		return
81
+	fi
82
+	if [ ${#FRIENDS_MIRRORS_SERVER} -lt 2 ]; then
83
+		return
84
+	fi
85
+
86
+	MAIN_COMMAND=/usr/local/bin/${PROJECT_NAME}
87
+	if [ ! -f $MAIN_COMMAND ]; then
88
+		MAIN_COMMAND=/usr/bin/${PROJECT_NAME}
89
+	fi
90
+
91
+	REPOS=($(cat ${MAIN_COMMAND} | grep "_REPO=\"" | uniq -u | sed 's|${PROJECT_NAME}|'"${PROJECT_NAME}"'|g'))
92
+
93
+	for line in "${REPOS[@]}"
94
+	do
95
+		repo_name=$(echo "$line" | awk -F '=' '{print $1}')
96
+		mirrors_name=$(echo "$repo_name" | sed "s|_REPO||g" | awk '{print tolower($0)}')
97
+		friends_repo_url="ssh://mirrors@${FRIENDS_MIRRORS_SERVER}:${FRIENDS_MIRRORS_SSH_PORT}/home/mirrors/${mirrors_name}"
98
+		${repo_name}="${friends_repo_url}"
99
+	done
141
 }
100
 }
142
 
101
 
143
 function show_help {
102
 function show_help {
144
-    echo ''
145
-    echo $"${PROJECT_NAME}-addcert -h [hostname] -c [country code] -a [area] -l [location]"
146
-    echo $'                    -o [organisation] -u [unit] --ca "" --nodh ""'
147
-    echo ''
148
-    echo $'Creates a self-signed certificate for the given hostname'
149
-    echo ''
150
-    echo $'     --help                   Show help'
151
-    echo $'  -h --hostname [name]        Hostname'
152
-    echo $'  -e --letsencrypt [hostname] Hostname to use with Lets Encrypt'
153
-    echo $'  -s --server [url]           Lets Encrypt server URL'
154
-    echo $'  -c --country [code]         Optional country code (eg. US, GB, etc)'
155
-    echo $'  -a --area [description]     Optional area description'
156
-    echo $'  -l --location [locn]        Optional location name'
157
-    echo $'  -o --organisation [name]    Optional organisation name'
158
-    echo $'  -u --unit [name]            Optional unit name'
159
-    echo $'     --email [address]        Email address for letsencrypt'
160
-    echo $'     --dhkey [bits]           DH key length in bits'
161
-    echo $'     --nodh ""                Do not calculate DH params'
162
-    echo $'     --ca ""                  Certificate authority cert'
163
-    echo ''
164
-    exit 0
103
+	echo ''
104
+	echo $"${PROJECT_NAME}-addcert -h [hostname] -c [country code] -a [area] -l [location]"
105
+	echo $'                    -o [organisation] -u [unit] --ca "" --nodh ""'
106
+	echo ''
107
+	echo $'Creates a self-signed certificate for the given hostname'
108
+	echo ''
109
+	echo $'     --help                   Show help'
110
+	echo $'  -h --hostname [name]        Hostname'
111
+	echo $'  -e --letsencrypt [hostname] Hostname to use with Lets Encrypt'
112
+	echo $'  -s --server [url]           Lets Encrypt server URL'
113
+	echo $'  -c --country [code]         Optional country code (eg. US, GB, etc)'
114
+	echo $'  -a --area [description]     Optional area description'
115
+	echo $'  -l --location [locn]        Optional location name'
116
+	echo $'  -o --organisation [name]    Optional organisation name'
117
+	echo $'  -u --unit [name]            Optional unit name'
118
+	echo $'     --email [address]        Email address for letsencrypt'
119
+	echo $'     --dhkey [bits]           DH key length in bits'
120
+	echo $'     --nodh ""                Do not calculate DH params'
121
+	echo $'     --ca ""                  Certificate authority cert'
122
+	echo ''
123
+	exit 0
165
 }
124
 }
166
 
125
 
167
 while [[ $# > 1 ]]
126
 while [[ $# > 1 ]]
169
 key="$1"
128
 key="$1"
170
 
129
 
171
 case $key in
130
 case $key in
172
-    --help)
173
-    show_help
174
-    ;;
175
-    -h|--hostname)
176
-    shift
177
-    HOSTNAME="$1"
178
-    ;;
179
-    -e|--letsencrypt)
180
-    shift
181
-    LETSENCRYPT_HOSTNAME="$1"
182
-    ;;
183
-    --email)
184
-    shift
185
-    MY_EMAIL_ADDRESS="$1"
186
-    ;;
187
-    -s|--server)
188
-    shift
189
-    LETSENCRYPT_SERVER="$1"
190
-    ;;
191
-    -c|--country)
192
-    shift
193
-    COUNTRY_CODE="$1"
194
-    ;;
195
-    -a|--area)
196
-    shift
197
-    AREA="$1"
198
-    ;;
199
-    -l|--location)
200
-    shift
201
-    LOCATION="$1"
202
-    ;;
203
-    -o|--organisation)
204
-    shift
205
-    ORGANISATION="$1"
206
-    ;;
207
-    -u|--unit)
208
-    shift
209
-    UNIT="$1"
210
-    ;;
211
-    --ca)
212
-    shift
213
-    EXTENSIONS="-extensions v3_ca"
214
-    ORGANISATION="Freedombone-CA"
215
-    ;;
216
-    --nodh)
217
-    shift
218
-    NODH="true"
219
-    ;;
220
-    --dhkey)
221
-    shift
222
-    DH_KEYLENGTH=${1}
223
-    ;;
224
-    *)
225
-    # unknown option
226
-    ;;
131
+	--help)
132
+	show_help
133
+	;;
134
+	-h|--hostname)
135
+	shift
136
+	HOSTNAME="$1"
137
+	;;
138
+	-e|--letsencrypt)
139
+	shift
140
+	LETSENCRYPT_HOSTNAME="$1"
141
+	;;
142
+	--email)
143
+	shift
144
+	MY_EMAIL_ADDRESS="$1"
145
+	;;
146
+	-s|--server)
147
+	shift
148
+	LETSENCRYPT_SERVER="$1"
149
+	;;
150
+	-c|--country)
151
+	shift
152
+	COUNTRY_CODE="$1"
153
+	;;
154
+	-a|--area)
155
+	shift
156
+	AREA="$1"
157
+	;;
158
+	-l|--location)
159
+	shift
160
+	LOCATION="$1"
161
+	;;
162
+	-o|--organisation)
163
+	shift
164
+	ORGANISATION="$1"
165
+	;;
166
+	-u|--unit)
167
+	shift
168
+	UNIT="$1"
169
+	;;
170
+	--ca)
171
+	shift
172
+	EXTENSIONS="-extensions v3_ca"
173
+	ORGANISATION="Freedombone-CA"
174
+	;;
175
+	--nodh)
176
+	shift
177
+	NODH="true"
178
+	;;
179
+	--dhkey)
180
+	shift
181
+	DH_KEYLENGTH=${1}
182
+	;;
183
+	*)
184
+	# unknown option
185
+	;;
227
 esac
186
 esac
228
 shift
187
 shift
229
 done
188
 done
230
 
189
 
231
 if [ ! $HOSTNAME ]; then
190
 if [ ! $HOSTNAME ]; then
232
-    if [ ! $LETSENCRYPT_HOSTNAME ]; then
233
-        echo $'No hostname specified'
234
-        exit 5748
235
-    fi
191
+	if [ ! $LETSENCRYPT_HOSTNAME ]; then
192
+		echo $'No hostname specified'
193
+		exit 5748
194
+	fi
236
 fi
195
 fi
237
 
196
 
238
 if ! which openssl > /dev/null ;then
197
 if ! which openssl > /dev/null ;then
239
-    echo $"$0: openssl is not installed, exiting" 1>&2
240
-    exit 5689
198
+	echo $"$0: openssl is not installed, exiting" 1>&2
199
+	exit 5689
241
 fi
200
 fi
242
 
201
 
243
 if [ ! -d /etc/ssl/mycerts ]; then
202
 if [ ! -d /etc/ssl/mycerts ]; then
244
-    mkdir /etc/ssl/mycerts
203
+	mkdir /etc/ssl/mycerts
245
 fi
204
 fi
246
 
205
 
247
 CERTFILE=$HOSTNAME
206
 CERTFILE=$HOSTNAME
248
 
207
 
249
 function add_cert_letsencrypt {
208
 function add_cert_letsencrypt {
250
-    CERTFILE=$LETSENCRYPT_HOSTNAME
251
-
252
-    # obtain the email address for the admin user
253
-    if [ ! $MY_EMAIL_ADDRESS ]; then
254
-        if [ -f $CONFIGURATION_FILE ]; then
255
-            if grep -q "MY_EMAIL_ADDRESS=" $CONFIGURATION_FILE; then
256
-                MY_EMAIL_ADDRESS=$(cat $CONFIGURATION_FILE | grep "MY_EMAIL_ADDRESS=" | awk -F '=' '{print $2}')
257
-            fi
258
-        fi
259
-    fi
260
-    if [ ! $MY_EMAIL_ADDRESS ]; then
261
-        if [ -f $COMPLETION_FILE ]; then
262
-            if grep -q "Admin user:" $COMPLETION_FILE; then
263
-                ADMIN_USER=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
264
-                MY_EMAIL_ADDRESS=$ADMIN_USER@$HOSTNAME
265
-            fi
266
-        fi
267
-    fi
268
-
269
-    if [ ! -d $INSTALL_DIR ]; then
270
-        mkdir -p $INSTALL_DIR
271
-    fi
272
-    cd $INSTALL_DIR
273
-
274
-    # obtain the repo
275
-    if [ ! -d ${INSTALL_DIR}/letsencrypt ]; then
276
-        git_clone $LETSENCRYPT_REPO ${INSTALL_DIR}/letsencrypt
277
-        if [ ! -d ${INSTALL_DIR}/letsencrypt ]; then
278
-            exit 76283
279
-        fi
280
-    else
281
-        cd ${INSTALL_DIR}/letsencrypt
282
-        git_pull $LETSENCRYPT_REPO
283
-    fi
284
-
285
-    # stop the web server
286
-    systemctl stop nginx
287
-
288
-    cd ${INSTALL_DIR}/letsencrypt
289
-    ./letsencrypt-auto certonly --server $LETSENCRYPT_SERVER --standalone -d $LETSENCRYPT_HOSTNAME --renew-by-default --agree-tos --email $MY_EMAIL_ADDRESS
290
-    if [ ! "$?" = "0" ]; then
291
-        echo $"Failed to install letsencrypt for domain $LETSENCRYPT_HOSTNAME"
292
-        systemctl start nginx
293
-        exit 63216
294
-    fi
295
-
296
-    # replace some legacy filenames
297
-    if [ -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.bundle.crt ]; then
298
-        mv /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.bundle.crt /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
299
-    fi
300
-    if [ -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.crt ]; then
301
-        mv /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.crt /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
302
-    fi
303
-    sed -i "s|ssl_certificate /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.bundle.crt|ssl_certificate /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem|g" /etc/nginx/sites-available/$LETSENCRYPT_HOSTNAME
304
-    sed -i "s|ssl_certificate /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.crt|ssl_certificate /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem|g" /etc/nginx/sites-available/$LETSENCRYPT_HOSTNAME
305
-
306
-    # link the private key
307
-    if [ -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key ]; then
308
-        if [ ! -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key.old ]; then
309
-            mv /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key.old
310
-        else
311
-            rm -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key
312
-        fi
313
-    fi
314
-    ln -s /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/privkey.pem /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key
315
-
316
-    # link the public key
317
-    if [ -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem ]; then
318
-        if [ ! -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem.old ]; then
319
-            mv /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem.old
320
-        else
321
-            rm -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
322
-        fi
323
-    fi
324
-    ln -s /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/fullchain.pem /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
325
-
326
-    cp /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/fullchain.pem /etc/ssl/mycerts/${LETSENCRYPT_HOSTNAME}.pem
327
-
328
-    systemctl start nginx
329
-
330
-    ${PROJECT_NAME}-pin-cert $LETSENCRYPT_HOSTNAME
331
-    if [ ! "$?" = "0" ]; then
332
-        echo $"Certificate for $LETSENCRYPT_HOSTNAME could not be pinned"
333
-        exit 62878
334
-    fi
209
+	CERTFILE=$LETSENCRYPT_HOSTNAME
210
+
211
+	# obtain the email address for the admin user
212
+	if [ ! $MY_EMAIL_ADDRESS ]; then
213
+		if [ -f $CONFIGURATION_FILE ]; then
214
+			if grep -q "MY_EMAIL_ADDRESS=" $CONFIGURATION_FILE; then
215
+				MY_EMAIL_ADDRESS=$(cat $CONFIGURATION_FILE | grep "MY_EMAIL_ADDRESS=" | awk -F '=' '{print $2}')
216
+			fi
217
+		fi
218
+	fi
219
+	if [ ! $MY_EMAIL_ADDRESS ]; then
220
+		if [ -f $COMPLETION_FILE ]; then
221
+			if grep -q "Admin user:" $COMPLETION_FILE; then
222
+				ADMIN_USER=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
223
+				MY_EMAIL_ADDRESS=$ADMIN_USER@$HOSTNAME
224
+			fi
225
+		fi
226
+	fi
227
+
228
+	if [ ! -d $INSTALL_DIR ]; then
229
+		mkdir -p $INSTALL_DIR
230
+	fi
231
+	cd $INSTALL_DIR
232
+
233
+	# obtain the repo
234
+	if [ ! -d ${INSTALL_DIR}/letsencrypt ]; then
235
+		git_clone $LETSENCRYPT_REPO ${INSTALL_DIR}/letsencrypt
236
+		if [ ! -d ${INSTALL_DIR}/letsencrypt ]; then
237
+			exit 76283
238
+		fi
239
+	else
240
+		cd ${INSTALL_DIR}/letsencrypt
241
+		git_pull $LETSENCRYPT_REPO
242
+	fi
243
+
244
+	# stop the web server
245
+	systemctl stop nginx
246
+
247
+	cd ${INSTALL_DIR}/letsencrypt
248
+	./letsencrypt-auto certonly --server $LETSENCRYPT_SERVER --standalone -d $LETSENCRYPT_HOSTNAME --renew-by-default --agree-tos --email $MY_EMAIL_ADDRESS
249
+	if [ ! "$?" = "0" ]; then
250
+		echo $"Failed to install letsencrypt for domain $LETSENCRYPT_HOSTNAME"
251
+		systemctl start nginx
252
+		exit 63216
253
+	fi
254
+
255
+	# replace some legacy filenames
256
+	if [ -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.bundle.crt ]; then
257
+		mv /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.bundle.crt /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
258
+	fi
259
+	if [ -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.crt ]; then
260
+		mv /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.crt /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
261
+	fi
262
+	sed -i "s|ssl_certificate /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.bundle.crt|ssl_certificate /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem|g" /etc/nginx/sites-available/$LETSENCRYPT_HOSTNAME
263
+	sed -i "s|ssl_certificate /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.crt|ssl_certificate /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem|g" /etc/nginx/sites-available/$LETSENCRYPT_HOSTNAME
264
+
265
+	# link the private key
266
+	if [ -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key ]; then
267
+		if [ ! -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key.old ]; then
268
+			mv /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key.old
269
+		else
270
+			rm -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key
271
+		fi
272
+	fi
273
+	ln -s /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/privkey.pem /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key
274
+
275
+	# link the public key
276
+	if [ -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem ]; then
277
+		if [ ! -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem.old ]; then
278
+			mv /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem.old
279
+		else
280
+			rm -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
281
+		fi
282
+	fi
283
+	ln -s /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/fullchain.pem /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
284
+
285
+	cp /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/fullchain.pem /etc/ssl/mycerts/${LETSENCRYPT_HOSTNAME}.pem
286
+
287
+	systemctl start nginx
288
+
289
+	${PROJECT_NAME}-pin-cert $LETSENCRYPT_HOSTNAME
290
+	if [ ! "$?" = "0" ]; then
291
+		echo $"Certificate for $LETSENCRYPT_HOSTNAME could not be pinned"
292
+		exit 62878
293
+	fi
335
 }
294
 }
336
 
295
 
337
 function add_cert_selfsigned {
296
 function add_cert_selfsigned {
338
-    if [[ $ORGANISATION == "Freedombone-CA" ]]; then
339
-        CERTFILE="ca-$HOSTNAME"
340
-    fi
341
-
342
-    openssl req -x509 ${EXTENSIONS} -nodes -days 3650 -sha256 \
343
-        -subj "/O=$ORGANISATION/OU=$UNIT/C=$COUNTRY_CODE/ST=$AREA/L=$LOCATION/CN=$HOSTNAME" \
344
-        -newkey rsa:4096 -keyout /etc/ssl/private/${CERTFILE}.key \
345
-        -out /etc/ssl/certs/${CERTFILE}.crt
346
-    chmod 400 /etc/ssl/private/${CERTFILE}.key
347
-    chmod 640 /etc/ssl/certs/${CERTFILE}.crt
348
-    cp /etc/ssl/certs/${CERTFILE}.crt /etc/ssl/mycerts
349
-
350
-    ${PROJECT_NAME}-pin-cert $CERTFILE
351
-    if [ ! "$?" = "0" ]; then
352
-        echo $"Certificate for $CERTFILE could not be pinned"
353
-        exit 62879
354
-    fi
297
+	if [[ $ORGANISATION == "Freedombone-CA" ]]; then
298
+		CERTFILE="ca-$HOSTNAME"
299
+	fi
300
+
301
+	openssl req -x509 ${EXTENSIONS} -nodes -days 3650 -sha256 \
302
+		-subj "/O=$ORGANISATION/OU=$UNIT/C=$COUNTRY_CODE/ST=$AREA/L=$LOCATION/CN=$HOSTNAME" \
303
+		-newkey rsa:4096 -keyout /etc/ssl/private/${CERTFILE}.key \
304
+		-out /etc/ssl/certs/${CERTFILE}.crt
305
+	chmod 400 /etc/ssl/private/${CERTFILE}.key
306
+	chmod 640 /etc/ssl/certs/${CERTFILE}.crt
307
+	cp /etc/ssl/certs/${CERTFILE}.crt /etc/ssl/mycerts
308
+
309
+	${PROJECT_NAME}-pin-cert $CERTFILE
310
+	if [ ! "$?" = "0" ]; then
311
+		echo $"Certificate for $CERTFILE could not be pinned"
312
+		exit 62879
313
+	fi
355
 }
314
 }
356
 
315
 
357
 function generate_dh_params {
316
 function generate_dh_params {
358
-    if [ ! $NODH ]; then
359
-        if [ ! -f /etc/ssl/certs/${CERTFILE}.dhparam ]; then
360
-            ${PROJECT_NAME}-dhparam -h ${CERTFILE} --fast yes
361
-        fi
362
-    fi
317
+	if [ ! $NODH ]; then
318
+		if [ ! -f /etc/ssl/certs/${CERTFILE}.dhparam ]; then
319
+			${PROJECT_NAME}-dhparam -h ${CERTFILE} --fast yes
320
+		fi
321
+	fi
363
 }
322
 }
364
 
323
 
365
 function restart_web_server {
324
 function restart_web_server {
366
-    if [ -f /etc/init.d/nginx ]; then
367
-        /etc/init.d/nginx reload
368
-    fi
325
+	if [ -f /etc/init.d/nginx ]; then
326
+		/etc/init.d/nginx reload
327
+	fi
369
 }
328
 }
370
 
329
 
371
 function make_cert_bundle {
330
 function make_cert_bundle {
372
-    # Create a bundle of your certificates
373
-    cat /etc/ssl/mycerts/*.crt /etc/ssl/mycerts/*.pem > /etc/ssl/${PROJECT_NAME}-bundle.crt
374
-    tar -czvf /etc/ssl/${PROJECT_NAME}-certs.tar.gz /etc/ssl/mycerts/*.crt /etc/ssl/mycerts/*.pem
331
+	# Create a bundle of your certificates
332
+	cat /etc/ssl/mycerts/*.crt /etc/ssl/mycerts/*.pem > /etc/ssl/${PROJECT_NAME}-bundle.crt
333
+	tar -czvf /etc/ssl/${PROJECT_NAME}-certs.tar.gz /etc/ssl/mycerts/*.crt /etc/ssl/mycerts/*.pem
375
 }
334
 }
376
 
335
 
377
 function create_cert {
336
 function create_cert {
378
-    if [ $LETSENCRYPT_HOSTNAME ]; then
379
-        add_cert_letsencrypt
380
-    else
381
-        add_cert_selfsigned
382
-    fi
337
+	if [ $LETSENCRYPT_HOSTNAME ]; then
338
+		add_cert_letsencrypt
339
+	else
340
+		add_cert_selfsigned
341
+	fi
383
 }
342
 }
384
 
343
 
385
 read_repo_servers
344
 read_repo_servers

+ 5
- 17
src/freedombone-mesh-install Dosyayı Görüntüle

77
 
77
 
78
 MESH_INSTALL_DIR=/var/lib
78
 MESH_INSTALL_DIR=/var/lib
79
 
79
 
80
+source /usr/local/bin/${PROJECT_NAME}-utils-git
81
+if [ -f /usr/bin/${PROJECT_NAME}-utils-git ]; then
82
+	source /usr/bin/${PROJECT_NAME}-utils-git
83
+fi
84
+
80
 function show_help {
85
 function show_help {
81
 	echo ''
86
 	echo ''
82
 	echo $"${PROJECT_NAME}-mesh-install -f [function] -r [rootdir]"
87
 	echo $"${PROJECT_NAME}-mesh-install -f [function] -r [rootdir]"
91
 	exit 0
96
 	exit 0
92
 }
97
 }
93
 
98
 
94
-function git_clone {
95
-	repo_url="$1"
96
-	destination_dir="$2"
97
-	if [[ "$repo_url" == "ssh:"* ]]; then
98
-		if [ "${FRIENDS_MIRRORS_SERVER}" ]; then
99
-			if [ ${#FRIENDS_MIRRORS_SERVER} -gt 2 ]; then
100
-				if [ "$FRIENDS_MIRRORS_PASSWORD" ]; then
101
-					if [ ${#FRIENDS_MIRRORS_PASSWORD} -gt 2 ]; then
102
-						sshpass -p "$FRIENDS_MIRRORS_PASSWORD" git clone "$repo_url" "$destination_dir"
103
-						return
104
-					fi
105
-				fi
106
-			fi
107
-		fi
108
-	fi
109
-	git clone "$repo_url" "$destination_dir"
110
-}
111
 
99
 
112
 function mesh_babel {
100
 function mesh_babel {
113
 	$CHROOT_PREFIX apt-get -y install babeld
101
 	$CHROOT_PREFIX apt-get -y install babeld

+ 5
- 46
src/freedombone-upgrade Dosyayı Görüntüle

42
 FRIENDS_MIRRORS_PASSWORD=
42
 FRIENDS_MIRRORS_PASSWORD=
43
 MY_MIRRORS_PASSWORD=
43
 MY_MIRRORS_PASSWORD=
44
 
44
 
45
+source /usr/local/bin/${PROJECT_NAME}-utils-git
46
+if [ -f /usr/bin/${PROJECT_NAME}-utils-git ]; then
47
+	source /usr/bin/${PROJECT_NAME}-utils-git
48
+fi
49
+
45
 function read_repo_servers {
50
 function read_repo_servers {
46
     if [ -f $CONFIGURATION_FILE ]; then
51
     if [ -f $CONFIGURATION_FILE ]; then
47
         if grep -q "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE; then
52
         if grep -q "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE; then
81
     done
86
     done
82
 }
87
 }
83
 
88
 
84
-function git_clone {
85
-    repo_url="$1"
86
-    destination_dir="$2"
87
-    if [[ "$repo_url" == "ssh:"* ]]; then
88
-        if [ "${FRIENDS_MIRRORS_SERVER}" ]; then
89
-            if [ ${#FRIENDS_MIRRORS_SERVER} -gt 2 ]; then
90
-                if [ "$FRIENDS_MIRRORS_PASSWORD" ]; then
91
-                    if [ ${#FRIENDS_MIRRORS_PASSWORD} -gt 2 ]; then
92
-                        sshpass -p "$FRIENDS_MIRRORS_PASSWORD" git clone "$repo_url" "$destination_dir"
93
-                        return
94
-                    fi
95
-                fi
96
-            fi
97
-        fi
98
-    fi
99
-    git clone "$repo_url" "$destination_dir"
100
-}
101
-
102
-function git_pull {
103
-    if [ ! $1 ]; then
104
-        echo $'git_pull no repo specified'
105
-    fi
106
-
107
-    git stash
108
-    git remote set-url origin $1
109
-    git checkout master
110
-    if [ "${FRIENDS_MIRRORS_SERVER}" ]; then
111
-        if [ ${#FRIENDS_MIRRORS_SERVER} -gt 2 ]; then
112
-            if [ "$FRIENDS_MIRRORS_PASSWORD" ]; then
113
-                if [ ${#FRIENDS_MIRRORS_PASSWORD} -gt 2 ]; then
114
-                    sshpass -p "$FRIENDS_MIRRORS_PASSWORD" git pull
115
-                    if [ $2 ]; then
116
-                        git checkout $2 -b $2
117
-                    fi
118
-                    return
119
-                fi
120
-            fi
121
-        fi
122
-    fi
123
-    git pull
124
-
125
-    if [ $2 ]; then
126
-        git checkout $2 -b $2
127
-    fi
128
-}
129
-
130
 if [ -f $CONFIGURATION_FILE ]; then
89
 if [ -f $CONFIGURATION_FILE ]; then
131
     # read the location of the main project repo
90
     # read the location of the main project repo
132
     if grep -q "PROJECT_REPO" $CONFIGURATION_FILE; then
91
     if grep -q "PROJECT_REPO" $CONFIGURATION_FILE; then