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