|
@@ -33,6 +33,12 @@ PROJECT_NAME='freedombone'
|
33
|
33
|
export TEXTDOMAIN=${PROJECT_NAME}-controlpanel
|
34
|
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
|
42
|
COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
|
37
|
43
|
SELECTED_USERNAME=
|
38
|
44
|
SIP_CONFIGURATION_FILE=/etc/sipwitch.conf
|
|
@@ -1097,91 +1103,46 @@ function backup_data {
|
1097
|
1103
|
}
|
1098
|
1104
|
|
1099
|
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
|
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
|
1148
|
function restore_from_remote {
|