Sfoglia il codice sorgente

Restoring apps from the control panel

Bob Mottram 8 anni fa
parent
commit
7723c26036
2 ha cambiato i file con 57 aggiunte e 82 eliminazioni
  1. 43
    82
      src/freedombone-controlpanel
  2. 14
    0
      src/freedombone-utils-selector

+ 43
- 82
src/freedombone-controlpanel Vedi File

33
 export TEXTDOMAIN=${PROJECT_NAME}-controlpanel
33
 export TEXTDOMAIN=${PROJECT_NAME}-controlpanel
34
 export TEXTDOMAINDIR="/usr/share/locale"
34
 export TEXTDOMAINDIR="/usr/share/locale"
35
 
35
 
36
+UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
37
+for f in $UTILS_FILES
38
+do
39
+  source $f
40
+done
41
+
36
 COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
42
 COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
37
 SELECTED_USERNAME=
43
 SELECTED_USERNAME=
38
 SIP_CONFIGURATION_FILE=/etc/sipwitch.conf
44
 SIP_CONFIGURATION_FILE=/etc/sipwitch.conf
1097
 }
1103
 }
1098
 
1104
 
1099
 function restore_from_usb {
1105
 function restore_from_usb {
1100
-	while true
1106
+	detect_apps
1107
+	applist="all"
1108
+	n=1
1109
+	app_index=0
1110
+	for a in "${APPS_INSTALLED_NAMES[@]}"
1101
 	do
1111
 	do
1102
-		data=$(tempfile 2>/dev/null)
1103
-		trap "rm -f $data" 0 1 2 5 15
1104
-		dialog --backtitle $"Freedombone Control Panel" \
1105
-			   --title $"Restore from USB backup" \
1106
-			   --radiolist $"Choose an application to restore:" 32 70 28 \
1107
-			   1 $"Everything" off \
1108
-			   2 $"Return to the backup and restore menu" on \
1109
-			   3 $"Configuration files" off \
1110
-			   4 $"MariaDB settings" off \
1111
-			   5 $"Let's Encrypt account" off \
1112
-			   6 $"Mutt email client settings" off \
1113
-			   7 $"GPG keys" off \
1114
-			   8 $"Email processing rules" off \
1115
-			   9 $"Spam filtering rules" off \
1116
-			   10 $"Administrator's README file" off \
1117
-			   11 $"IPFS" off \
1118
-			   12 $"SSH keys" off \
1119
-			   13 $"User configuration files" off \
1120
-			   14 $"User local files" off \
1121
-			   15 $"User fin files" off \
1122
-			   16 $"SSL/TLS certificates" off \
1123
-			   17 $"Personal settings" off \
1124
-			   18 $"Mailing List" off \
1125
-			   19 $"XMPP chat" off \
1126
-			   20 $"GNU Social" off \
1127
-			   21 $"Hubzilla" off \
1128
-			   22 $"Syncthing" off \
1129
-			   23 $"Gogs" off \
1130
-			   24 $"Wiki" off \
1131
-			   25 $"Blog" off \
1132
-			   26 $"CJDNS" off \
1133
-			   27 $"Email" off \
1134
-			   28 $"DLNA" off \
1135
-			   29 $"VoIP" off \
1136
-			   30 $"RSS reader" off \
1137
-			   31 $"Tox" off \
1138
-			   32 $"Mediagoblin" off 2> $data
1139
-		sel=$?
1140
-		case $sel in
1141
-			1) break;;
1142
-			255) break;;
1143
-		esac
1112
+		applist="$applist $n $a off"
1113
+		n=$[n+1]
1114
+		app_index=$[app_index+1]
1115
+	done
1144
 
1116
 
1145
-		if [ $(cat $data) -ne 2 ]; then
1146
-			clear
1147
-		fi
1117
+	choices=$(dialog --stdout --backtitle $"Freedombone" \
1118
+					 --title $"Restore apps" \
1119
+					 --checklist $'Choose:' \
1120
+					 80 40 20 $applist)
1148
 
1121
 
1149
-		case $(cat $data) in
1150
-			1) ${PROJECT_NAME}-restore-local $USB_DRIVE;;
1151
-			2) return;;
1152
-			3) ${PROJECT_NAME}-restore-local $USB_DRIVE configuration;;
1153
-			4) ${PROJECT_NAME}-restore-local $USB_DRIVE mariadb;;
1154
-			5) ${PROJECT_NAME}-restore-local $USB_DRIVE letsencrypt;;
1155
-			6) ${PROJECT_NAME}-restore-local $USB_DRIVE mutt;;
1156
-			7) ${PROJECT_NAME}-restore-local $USB_DRIVE gpg;;
1157
-			8) ${PROJECT_NAME}-restore-local $USB_DRIVE procmail;;
1158
-			9) ${PROJECT_NAME}-restore-local $USB_DRIVE spamassassin;;
1159
-			10) ${PROJECT_NAME}-restore-local $USB_DRIVE readme;;
1160
-			11) ${PROJECT_NAME}-restore-local $USB_DRIVE ipfs;;
1161
-			12) ${PROJECT_NAME}-restore-local $USB_DRIVE ssh;;
1162
-			13) ${PROJECT_NAME}-restore-local $USB_DRIVE userconfig;;
1163
-			14) ${PROJECT_NAME}-restore-local $USB_DRIVE userlocal;;
1164
-			15) ${PROJECT_NAME}-restore-local $USB_DRIVE userfin;;
1165
-			16) ${PROJECT_NAME}-restore-local $USB_DRIVE certs;;
1166
-			17) ${PROJECT_NAME}-restore-local $USB_DRIVE personal;;
1167
-			18) ${PROJECT_NAME}-restore-local $USB_DRIVE mailinglist;;
1168
-			19) ${PROJECT_NAME}-restore-local $USB_DRIVE xmpp;;
1169
-			20) ${PROJECT_NAME}-restore-local $USB_DRIVE gnusocial;;
1170
-			21) ${PROJECT_NAME}-restore-local $USB_DRIVE hubzilla;;
1171
-			22) ${PROJECT_NAME}-restore-local $USB_DRIVE syncthing;;
1172
-			23) ${PROJECT_NAME}-restore-local $USB_DRIVE gogs;;
1173
-			24) ${PROJECT_NAME}-restore-local $USB_DRIVE wiki;;
1174
-			25) ${PROJECT_NAME}-restore-local $USB_DRIVE blog;;
1175
-			26) ${PROJECT_NAME}-restore-local $USB_DRIVE cjdns;;
1176
-			27) ${PROJECT_NAME}-restore-local $USB_DRIVE email;;
1177
-			28) ${PROJECT_NAME}-restore-local $USB_DRIVE dlna;;
1178
-			29) ${PROJECT_NAME}-restore-local $USB_DRIVE voip;;
1179
-			30) ${PROJECT_NAME}-restore-local $USB_DRIVE ttrss;;
1180
-			31) ${PROJECT_NAME}-restore-local $USB_DRIVE tox;;
1181
-			32) ${PROJECT_NAME}-restore-local $USB_DRIVE mediagoblin;;
1182
-		esac
1183
-	done
1184
-	any_key
1122
+	if [ $? -eq 0 ]; then
1123
+		clear
1124
+		ctr=0
1125
+		for choice in $choices
1126
+		do
1127
+			app_index = $[choice-1]
1128
+			app_name=${APPS_INSTALLED_NAMES[app_index]}
1129
+			if [[ "${app_name}" == 'all' ]]; then
1130
+				${PROJECT_NAME}-restore-local $USB_DRIVE
1131
+			else
1132
+				${PROJECT_NAME}-restore-local $USB_DRIVE "${app_name}"
1133
+			fi
1134
+			if [ ! "$?" = "0" ]; then
1135
+				dialog --title $"Restore apps from USB" \
1136
+					   --msgbox $"Restore of ${app_name} failed with code $?" 6 40
1137
+				return
1138
+			fi
1139
+			ctr=$((ctr + 1))
1140
+		done
1141
+		if [ $ctr -gt 0 ]; then
1142
+			dialog --title $"Restore apps from USB" \
1143
+				   --msgbox $"Restore complete" 6 40
1144
+		fi
1145
+	fi
1185
 }
1146
 }
1186
 
1147
 
1187
 function restore_from_remote {
1148
 function restore_from_remote {

+ 14
- 0
src/freedombone-utils-selector Vedi File

37
 # Apps selected with checklist
37
 # Apps selected with checklist
38
 APPS_CHOSEN=()
38
 APPS_CHOSEN=()
39
 
39
 
40
+# A list of the names of installed apps
41
+APPS_INSTALLED_NAMES=()
42
+
40
 function item_in_array {
43
 function item_in_array {
41
 	local e
44
 	local e
42
 	for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
45
 	for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
64
 	done
67
 	done
65
 }
68
 }
66
 
69
 
70
+function get_apps_installed_names {
71
+	APPS_INSTALLED_NAMES=()
72
+	for a in "${APPS_AVAILABLE[@]}"
73
+	do
74
+		if [[ $(app_is_installed $a) == "1" ]]; then
75
+			APPS_INSTALLED_NAMES+=("$a")
76
+		fi
77
+	done
78
+}
79
+
67
 function detect_apps {
80
 function detect_apps {
68
 	FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
81
 	FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
69
 
82
 
82
 
95
 
83
 	function_check get_apps_installed
96
 	function_check get_apps_installed
84
 	get_apps_installed
97
 	get_apps_installed
98
+	get_apps_installed_names
85
 }
99
 }
86
 
100
 
87
 # creates the APPS_AVAILABLE and APPS_CHOSEN arrays based on
101
 # creates the APPS_AVAILABLE and APPS_CHOSEN arrays based on