瀏覽代碼

Function to upgrade apps

Bob Mottram 8 年之前
父節點
當前提交
835c14d928
共有 2 個檔案被更改,包括 241 行新增218 行删除
  1. 1
    0
      src/freedombone-backup-local
  2. 240
    218
      src/freedombone-utils-setup

+ 1
- 0
src/freedombone-backup-local 查看文件

@@ -259,6 +259,7 @@ function backup_apps {
259 259
 	do
260 260
 		app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
261 261
 		if [[ $(item_in_array ${app_name} ${APPS_COMPLETED[@]}) != 0 ]]; then
262
+			function_check app_is_installed
262 263
 			if [[ "$(app_is_installed $a)" == "1" ]]; then
263 264
 				APPS_COMPLETED+=("${app_name}")
264 265
 				function_check backup_local_${app_name}

+ 240
- 218
src/freedombone-utils-setup 查看文件

@@ -87,152 +87,152 @@ CHECK_MESSAGE="Check your internet connection, /etc/network/interfaces and /etc/
87 87
 DH_KEYLENGTH=2048
88 88
 
89 89
 function initial_setup {
90
-    if grep -Fxq "initial_setup" $COMPLETION_FILE; then
91
-        return
92
-    fi
93
-
94
-    apt-get -y remove --purge apache*
95
-    apt-get -y dist-upgrade
96
-    apt-get -y install ca-certificates emacs24 cpulimit
97
-    apt-get -y install cryptsetup libgfshare-bin obnam sshpass wget
98
-    apt-get -y install avahi-daemon avahi-utils avahi-discover
99
-    apt-get -y install connect-proxy
100
-
101
-    if [ ! -d $INSTALL_DIR ]; then
102
-        mkdir -p $INSTALL_DIR
103
-    fi
104
-
105
-    echo 'initial_setup' >> $COMPLETION_FILE
90
+	if grep -Fxq "initial_setup" $COMPLETION_FILE; then
91
+		return
92
+	fi
93
+
94
+	apt-get -y remove --purge apache*
95
+	apt-get -y dist-upgrade
96
+	apt-get -y install ca-certificates emacs24 cpulimit
97
+	apt-get -y install cryptsetup libgfshare-bin obnam sshpass wget
98
+	apt-get -y install avahi-daemon avahi-utils avahi-discover
99
+	apt-get -y install connect-proxy
100
+
101
+	if [ ! -d $INSTALL_DIR ]; then
102
+		mkdir -p $INSTALL_DIR
103
+	fi
104
+
105
+	echo 'initial_setup' >> $COMPLETION_FILE
106 106
 }
107 107
 
108 108
 function search_for_attached_usb_drive {
109
-    # If a USB drive is attached then search for email,
110
-    # gpg, ssh keys and emacs configuration
111
-    if grep -Fxq "search_for_attached_usb_drive" $COMPLETION_FILE; then
112
-        return
113
-    fi
114
-    if [ -b $USB_DRIVE ]; then
115
-        if [ ! -d $USB_MOUNT ]; then
116
-            echo $'Mounting USB drive'
117
-            mkdir $USB_MOUNT
118
-            mount $USB_DRIVE $USB_MOUNT
119
-        fi
120
-        if ! [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_DEVELOPER" || $SYSTEM_TYPE == "$VARIANT_MESH" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
121
-            if [ -d $USB_MOUNT/Maildir ]; then
122
-                echo $'Maildir found on USB drive'
123
-                IMPORT_MAILDIR=$USB_MOUNT/Maildir
124
-            fi
125
-            if [ -d $USB_MOUNT/.gnupg ]; then
126
-                echo $'Importing GPG keyring'
127
-                cp -r $USB_MOUNT/.gnupg /home/$MY_USERNAME
128
-                chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.gnupg
129
-                GPG_KEYS_IMPORTED="yes"
130
-                if [ ! -f /home/$MY_USERNAME/.gnupg/secring.gpg ]; then
131
-                    echo $'GPG files did not copy'
132
-                    exit 73529
133
-                fi
134
-            fi
135
-
136
-            if [ -f $USB_MOUNT/.procmailrc ]; then
137
-                echo $'Importing procmail settings'
138
-                cp $USB_MOUNT/.procmailrc /home/$MY_USERNAME
139
-                chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.procmailrc
140
-            fi
141
-
142
-            if [ -f $USB_MOUNT/private_key.gpg ]; then
143
-                echo $'GPG private key found on USB drive'
144
-                MY_GPG_PRIVATE_KEY=$USB_MOUNT/private_key.gpg
145
-            fi
146
-            if [ -f $USB_MOUNT/public_key.gpg ]; then
147
-                echo $'GPG public key found on USB drive'
148
-                MY_GPG_PUBLIC_KEY=$USB_MOUNT/public_key.gpg
149
-            fi
150
-        fi
151
-        if [ -d $USB_MOUNT/prosody ]; then
152
-            if [ ! -d $XMPP_DIRECTORY ]; then
153
-                mkdir $XMPP_DIRECTORY
154
-            fi
155
-            cp -r $USB_MOUNT/prosody/* $XMPP_DIRECTORY
156
-            chown -R prosody:prosody $XMPP_DIRECTORY
157
-        fi
158
-        if [ -d $USB_MOUNT/.ssh ]; then
159
-            echo $'Importing ssh keys'
160
-            cp -r $USB_MOUNT/.ssh /home/$MY_USERNAME
161
-            chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.ssh
162
-            # for security delete the ssh keys from the usb drive
163
-            if [ ! -f /home/$MY_USERNAME/.ssh/id_rsa ]; then
164
-                echo $'ssh files did not copy'
165
-                exit 8
166
-            fi
167
-        fi
168
-        if [ -f $USB_MOUNT/.emacs ]; then
169
-            echo $'Importing .emacs file'
170
-            cp -f $USB_MOUNT/.emacs /home/$MY_USERNAME/.emacs
171
-            chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs
172
-        fi
173
-        if [ -d $USB_MOUNT/.emacs.d ]; then
174
-            echo $'Importing .emacs.d directory'
175
-            cp -r $USB_MOUNT/.emacs.d /home/$MY_USERNAME
176
-            chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs.d
177
-        fi
178
-        if [ -d $USB_MOUNT/ssl ]; then
179
-            echo $'Importing SSL certificates'
180
-            cp -r $USB_MOUNT/ssl/* /etc/ssl
181
-            chmod 640 /etc/ssl/certs/*
182
-            chmod 400 /etc/ssl/private/*
183
-            # change ownership of some certificates
184
-            if [ -d /etc/prosody ]; then
185
-                chown prosody:prosody /etc/ssl/private/xmpp.*
186
-                chown prosody:prosody /etc/ssl/certs/xmpp.*
187
-            fi
188
-            if [ -d /etc/dovecot ]; then
189
-                chown root:dovecot /etc/ssl/certs/dovecot.*
190
-                chown root:dovecot /etc/ssl/private/dovecot.*
191
-            fi
192
-            if [ -f /etc/ssl/private/exim.key ]; then
193
-                cp /etc/ssl/private/exim.key /etc/exim4
194
-                cp /etc/ssl/certs/exim.crt /etc/exim4
195
-                cp /etc/ssl/certs/exim.dhparam /etc/exim4
196
-                chown root:Debian-exim /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
197
-                chmod 640 /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
198
-            fi
199
-        fi
200
-        if [ -d $USB_MOUNT/personal ]; then
201
-            echo $'Importing personal directory'
202
-            cp -r $USB_MOUNT/personal /home/$MY_USERNAME
203
-            chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/personal
204
-        fi
205
-    else
206
-        if [ -d $USB_MOUNT ]; then
207
-            umount $USB_MOUNT
208
-            rm -rf $USB_MOUNT
209
-        fi
210
-        echo $'No USB drive attached'
211
-    fi
212
-    echo 'search_for_attached_usb_drive' >> $COMPLETION_FILE
109
+	# If a USB drive is attached then search for email,
110
+	# gpg, ssh keys and emacs configuration
111
+	if grep -Fxq "search_for_attached_usb_drive" $COMPLETION_FILE; then
112
+		return
113
+	fi
114
+	if [ -b $USB_DRIVE ]; then
115
+		if [ ! -d $USB_MOUNT ]; then
116
+			echo $'Mounting USB drive'
117
+			mkdir $USB_MOUNT
118
+			mount $USB_DRIVE $USB_MOUNT
119
+		fi
120
+		if ! [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_DEVELOPER" || $SYSTEM_TYPE == "$VARIANT_MESH" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
121
+			if [ -d $USB_MOUNT/Maildir ]; then
122
+				echo $'Maildir found on USB drive'
123
+				IMPORT_MAILDIR=$USB_MOUNT/Maildir
124
+			fi
125
+			if [ -d $USB_MOUNT/.gnupg ]; then
126
+				echo $'Importing GPG keyring'
127
+				cp -r $USB_MOUNT/.gnupg /home/$MY_USERNAME
128
+				chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.gnupg
129
+				GPG_KEYS_IMPORTED="yes"
130
+				if [ ! -f /home/$MY_USERNAME/.gnupg/secring.gpg ]; then
131
+					echo $'GPG files did not copy'
132
+					exit 73529
133
+				fi
134
+			fi
135
+
136
+			if [ -f $USB_MOUNT/.procmailrc ]; then
137
+				echo $'Importing procmail settings'
138
+				cp $USB_MOUNT/.procmailrc /home/$MY_USERNAME
139
+				chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.procmailrc
140
+			fi
141
+
142
+			if [ -f $USB_MOUNT/private_key.gpg ]; then
143
+				echo $'GPG private key found on USB drive'
144
+				MY_GPG_PRIVATE_KEY=$USB_MOUNT/private_key.gpg
145
+			fi
146
+			if [ -f $USB_MOUNT/public_key.gpg ]; then
147
+				echo $'GPG public key found on USB drive'
148
+				MY_GPG_PUBLIC_KEY=$USB_MOUNT/public_key.gpg
149
+			fi
150
+		fi
151
+		if [ -d $USB_MOUNT/prosody ]; then
152
+			if [ ! -d $XMPP_DIRECTORY ]; then
153
+				mkdir $XMPP_DIRECTORY
154
+			fi
155
+			cp -r $USB_MOUNT/prosody/* $XMPP_DIRECTORY
156
+			chown -R prosody:prosody $XMPP_DIRECTORY
157
+		fi
158
+		if [ -d $USB_MOUNT/.ssh ]; then
159
+			echo $'Importing ssh keys'
160
+			cp -r $USB_MOUNT/.ssh /home/$MY_USERNAME
161
+			chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.ssh
162
+			# for security delete the ssh keys from the usb drive
163
+			if [ ! -f /home/$MY_USERNAME/.ssh/id_rsa ]; then
164
+				echo $'ssh files did not copy'
165
+				exit 8
166
+			fi
167
+		fi
168
+		if [ -f $USB_MOUNT/.emacs ]; then
169
+			echo $'Importing .emacs file'
170
+			cp -f $USB_MOUNT/.emacs /home/$MY_USERNAME/.emacs
171
+			chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs
172
+		fi
173
+		if [ -d $USB_MOUNT/.emacs.d ]; then
174
+			echo $'Importing .emacs.d directory'
175
+			cp -r $USB_MOUNT/.emacs.d /home/$MY_USERNAME
176
+			chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs.d
177
+		fi
178
+		if [ -d $USB_MOUNT/ssl ]; then
179
+			echo $'Importing SSL certificates'
180
+			cp -r $USB_MOUNT/ssl/* /etc/ssl
181
+			chmod 640 /etc/ssl/certs/*
182
+			chmod 400 /etc/ssl/private/*
183
+			# change ownership of some certificates
184
+			if [ -d /etc/prosody ]; then
185
+				chown prosody:prosody /etc/ssl/private/xmpp.*
186
+				chown prosody:prosody /etc/ssl/certs/xmpp.*
187
+			fi
188
+			if [ -d /etc/dovecot ]; then
189
+				chown root:dovecot /etc/ssl/certs/dovecot.*
190
+				chown root:dovecot /etc/ssl/private/dovecot.*
191
+			fi
192
+			if [ -f /etc/ssl/private/exim.key ]; then
193
+				cp /etc/ssl/private/exim.key /etc/exim4
194
+				cp /etc/ssl/certs/exim.crt /etc/exim4
195
+				cp /etc/ssl/certs/exim.dhparam /etc/exim4
196
+				chown root:Debian-exim /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
197
+				chmod 640 /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
198
+			fi
199
+		fi
200
+		if [ -d $USB_MOUNT/personal ]; then
201
+			echo $'Importing personal directory'
202
+			cp -r $USB_MOUNT/personal /home/$MY_USERNAME
203
+			chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/personal
204
+		fi
205
+	else
206
+		if [ -d $USB_MOUNT ]; then
207
+			umount $USB_MOUNT
208
+			rm -rf $USB_MOUNT
209
+		fi
210
+		echo $'No USB drive attached'
211
+	fi
212
+	echo 'search_for_attached_usb_drive' >> $COMPLETION_FILE
213 213
 }
214 214
 
215 215
 function mark_admin_user_account {
216
-    if ! grep -q "Admin user:" $COMPLETION_FILE; then
217
-        echo "Admin user:$MY_USERNAME" >> $COMPLETION_FILE
218
-    fi
216
+	if ! grep -q "Admin user:" $COMPLETION_FILE; then
217
+		echo "Admin user:$MY_USERNAME" >> $COMPLETION_FILE
218
+	fi
219 219
 }
220 220
 
221 221
 function remove_instructions_from_motd {
222
-    sed -i '/## /d' /etc/motd
222
+	sed -i '/## /d' /etc/motd
223 223
 }
224 224
 
225 225
 function remove_default_user {
226
-    # make sure you don't use the default user account
227
-    if [[ $MY_USERNAME == "debian" ]]; then
228
-        echo 'Do not use the default debian user account. Create a different user with: adduser [username]'
229
-        exit 68
230
-    fi
231
-    # remove the default debian user to prevent it from becoming an attack vector
232
-    if [ -d /home/debian ]; then
233
-        userdel -r debian
234
-        echo 'Default debian user account removed'
235
-    fi
226
+	# make sure you don't use the default user account
227
+	if [[ $MY_USERNAME == "debian" ]]; then
228
+		echo 'Do not use the default debian user account. Create a different user with: adduser [username]'
229
+		exit 68
230
+	fi
231
+	# remove the default debian user to prevent it from becoming an attack vector
232
+	if [ -d /home/debian ]; then
233
+		userdel -r debian
234
+		echo 'Default debian user account removed'
235
+	fi
236 236
 }
237 237
 
238 238
 function upgrade_installation {
@@ -241,102 +241,124 @@ function upgrade_installation {
241 241
 }
242 242
 
243 243
 function setup_firewall {
244
-    configure_firewall
245
-    configure_firewall_ping
246
-    configure_firewall_for_dns
247
-    configure_firewall_for_avahi
244
+	configure_firewall
245
+	configure_firewall_ping
246
+	configure_firewall_for_dns
247
+	configure_firewall_for_avahi
248 248
 }
249 249
 
250 250
 function setup_utils {
251
-    read_configuration
252
-    upgrade_installation
253
-    set_default_onion_domains
254
-    locale_setup
255
-    parse_args
256
-    check_domains
257
-    install_static_network
258
-    remove_default_user
259
-    setup_firewall
260
-    create_repo_sources
261
-    configure_dns
262
-    initial_setup
263
-    install_tor
264
-    #resolve_dns_via_tor
265
-    install_command_line_browser
266
-    enable_ssh_via_onion
267
-    check_date
268
-    install_dynamicdns
269
-    randomize_cron
270
-    create_freedns_updater
271
-    mark_admin_user_account
272
-    enforce_good_passwords
273
-    install_editor
274
-    change_login_message
275
-    enable_zram
276
-    random_number_generator
277
-    set_your_domain_name
278
-    time_synchronisation_tlsdate
279
-    configure_internet_protocol
280
-    create_git_project
281
-    setup_wifi
282
-    configure_ssh
283
-    configure_ssh_onion
284
-    allow_ssh_to_onion_address
285
-    remove_instructions_from_motd
286
-    check_hwrng
287
-    search_for_attached_usb_drive
288
-    regenerate_ssh_keys
289
-    create_mirrors
290
-    create_upgrade_script
291
-    letsencrypt_renewals
292
-    install_watchdog_script
293
-    configure_avahi
294
-    create_avahi_onion_domains
295
-    #install_atheros_wifi
296
-    route_outgoing_traffic_through_tor
297
-    upgrade_golang
251
+	read_configuration
252
+	upgrade_installation
253
+	set_default_onion_domains
254
+	locale_setup
255
+	parse_args
256
+	check_domains
257
+	install_static_network
258
+	remove_default_user
259
+	setup_firewall
260
+	create_repo_sources
261
+	configure_dns
262
+	initial_setup
263
+	install_tor
264
+	#resolve_dns_via_tor
265
+	install_command_line_browser
266
+	enable_ssh_via_onion
267
+	check_date
268
+	install_dynamicdns
269
+	randomize_cron
270
+	create_freedns_updater
271
+	mark_admin_user_account
272
+	enforce_good_passwords
273
+	install_editor
274
+	change_login_message
275
+	enable_zram
276
+	random_number_generator
277
+	set_your_domain_name
278
+	time_synchronisation_tlsdate
279
+	configure_internet_protocol
280
+	create_git_project
281
+	setup_wifi
282
+	configure_ssh
283
+	configure_ssh_onion
284
+	allow_ssh_to_onion_address
285
+	remove_instructions_from_motd
286
+	check_hwrng
287
+	search_for_attached_usb_drive
288
+	regenerate_ssh_keys
289
+	create_mirrors
290
+	create_upgrade_script
291
+	letsencrypt_renewals
292
+	install_watchdog_script
293
+	configure_avahi
294
+	create_avahi_onion_domains
295
+	#install_atheros_wifi
296
+	route_outgoing_traffic_through_tor
297
+	upgrade_golang
298 298
 }
299 299
 
300 300
 function setup_email {
301
-    install_email
302
-    create_procmail
303
-    handle_admin_emails
304
-    spam_filtering
305
-    configure_imap
306
-    #configure_imap_client_certs
307
-    configure_gpg
308
-    refresh_gpg_keys
309
-    configure_backup_key
310
-    install_monkeysphere
311
-    encrypt_incoming_email
312
-    encrypt_outgoing_email
313
-    email_client
314
-    email_archiving
315
-    email_from_address
316
-    create_public_mailing_list
317
-    #create_private_mailing_list
318
-    encrypt_all_email
319
-    import_email
301
+	install_email
302
+	create_procmail
303
+	handle_admin_emails
304
+	spam_filtering
305
+	configure_imap
306
+	#configure_imap_client_certs
307
+	configure_gpg
308
+	refresh_gpg_keys
309
+	configure_backup_key
310
+	install_monkeysphere
311
+	encrypt_incoming_email
312
+	encrypt_outgoing_email
313
+	email_client
314
+	email_archiving
315
+	email_from_address
316
+	create_public_mailing_list
317
+	#create_private_mailing_list
318
+	encrypt_all_email
319
+	import_email
320 320
 }
321 321
 
322 322
 function setup_web {
323
-    install_web_server
324
-    install_web_server_access_control
323
+	install_web_server
324
+	install_web_server_access_control
325
+}
326
+
327
+function upgrade_apps {
328
+	APPS_COMPLETED=()
329
+	FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
330
+
331
+	# for all the app scripts
332
+	for filename in $FILES
333
+	do
334
+		app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
335
+		if [[ $(item_in_array ${app_name} ${APPS_COMPLETED[@]}) != 0 ]]; then
336
+			function_check app_is_installed
337
+			if [[ "$(app_is_installed $a)" == "1" ]]; then
338
+				APPS_COMPLETED+=("${app_name}")
339
+				function_check upgrade_${app_name}
340
+				upgrade_${app_name}
341
+			fi
342
+		fi
343
+	done
325 344
 }
326 345
 
327 346
 function setup_apps {
328
-    function_check choose_apps_for_variant
329
-    choose_apps_for_variant "$SYSTEM_TYPE"
330
-
331
-    echo $"System variant: $SYSTEM_TYPE"
332
-    echo $'The following apps have been selected'
333
-    echo ''
334
-    function_check list_chosen_apps
335
-    list_chosen_apps
336
-    echo ''
337
-
338
-    function_check install_apps
339
-    install_apps
347
+	function_check choose_apps_for_variant
348
+	choose_apps_for_variant "$SYSTEM_TYPE"
349
+
350
+	echo $"System variant: $SYSTEM_TYPE"
351
+	echo $'The following apps have been selected'
352
+	echo ''
353
+	function_check list_chosen_apps
354
+	list_chosen_apps
355
+	echo ''
356
+
357
+	function_check upgrade_apps
358
+	upgrade_apps
359
+
360
+	function_check install_apps
361
+	install_apps
340 362
 }
341 363
 
342 364
 # NOTE: deliberately no exit 0