|
@@ -224,114 +224,153 @@ function show_tor_bridges {
|
224
|
224
|
function show_domains {
|
225
|
225
|
read_config_param "DEFAULT_DOMAIN_NAME"
|
226
|
226
|
|
227
|
|
- W=()
|
|
227
|
+ while true
|
|
228
|
+ do
|
|
229
|
+ W=()
|
228
|
230
|
|
229
|
|
- W+=("IPv4" "$(get_ipv4_address) / $(get_external_ipv4_address)")
|
230
|
|
- ipv6_address="$(get_ipv6_address)"
|
231
|
|
- if [ ${#ipv6_address} -gt 0 ]; then
|
232
|
|
- W+=("IPv6" "${ipv6_address}")
|
233
|
|
- fi
|
|
231
|
+ W+=("IPv4" "$(get_ipv4_address) / $(get_external_ipv4_address)")
|
|
232
|
+ ipv6_address="$(get_ipv6_address)"
|
|
233
|
+ if [ ${#ipv6_address} -gt 0 ]; then
|
|
234
|
+ W+=("IPv6" "${ipv6_address}")
|
|
235
|
+ fi
|
234
|
236
|
|
235
|
|
- if [ -f /etc/ssh/ssh_host_rsa_key.pub ]; then
|
236
|
|
- W+=("ssh rsa sha256" "$(awk '{print $2}' /etc/ssh/ssh_host_rsa_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64 | sed 's|=||g')")
|
237
|
|
- fi
|
238
|
|
- if [ -f /etc/ssh/ssh_host_ed25519_key.pub ]; then
|
239
|
|
- W+=("ssh ed25519 sha256" "$(awk '{print $2}' /etc/ssh/ssh_host_ed25519_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64 | sed 's|=||g')")
|
240
|
|
- fi
|
|
237
|
+ if [ -f /etc/ssh/ssh_host_rsa_key.pub ]; then
|
|
238
|
+ W+=("ssh rsa sha256" "$(awk '{print $2}' /etc/ssh/ssh_host_rsa_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64 | sed 's|=||g')")
|
|
239
|
+ fi
|
|
240
|
+ if [ -f /etc/ssh/ssh_host_ed25519_key.pub ]; then
|
|
241
|
+ W+=("ssh ed25519 sha256" "$(awk '{print $2}' /etc/ssh/ssh_host_ed25519_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64 | sed 's|=||g')")
|
|
242
|
+ fi
|
241
|
243
|
|
242
|
|
- if grep -q "ssh onion domain" "$COMPLETION_FILE"; then
|
243
|
|
- domain_onion=$(grep 'ssh onion domain' "${COMPLETION_FILE}" | awk -F ':' '{print $2}')
|
244
|
|
- W+=("ssh" "${DEFAULT_DOMAIN_NAME} / ${domain_onion}")
|
245
|
|
- fi
|
246
|
|
- if grep -q "email onion domain" "$COMPLETION_FILE"; then
|
247
|
|
- domain_onion=$(grep 'email onion domain' "${COMPLETION_FILE}" | awk -F ':' '{print $2}')
|
248
|
|
- W+=("Email" "${DEFAULT_DOMAIN_NAME} / ${domain_onion}")
|
249
|
|
- fi
|
250
|
|
- if grep -q "sks onion domain" "$COMPLETION_FILE"; then
|
251
|
|
- read_config_param "KEYSERVER_DOMAIN_NAME"
|
252
|
|
- domain_onion=$(grep 'sks onion domain' "${COMPLETION_FILE}" | awk -F ':' '{print $2}')
|
253
|
|
- W+=("SKS" "${KEYSERVER_DOMAIN_NAME} / ${domain_onion}")
|
254
|
|
- fi
|
|
244
|
+ if grep -q "ssh onion domain" "$COMPLETION_FILE"; then
|
|
245
|
+ domain_onion=$(grep 'ssh onion domain' "${COMPLETION_FILE}" | awk -F ':' '{print $2}')
|
|
246
|
+ W+=("ssh" "${DEFAULT_DOMAIN_NAME} / ${domain_onion}")
|
|
247
|
+ fi
|
|
248
|
+ if grep -q "email onion domain" "$COMPLETION_FILE"; then
|
|
249
|
+ domain_onion=$(grep 'email onion domain' "${COMPLETION_FILE}" | awk -F ':' '{print $2}')
|
|
250
|
+ W+=("Email" "${DEFAULT_DOMAIN_NAME} / ${domain_onion}")
|
|
251
|
+ fi
|
|
252
|
+ if grep -q "sks onion domain" "$COMPLETION_FILE"; then
|
|
253
|
+ read_config_param "KEYSERVER_DOMAIN_NAME"
|
|
254
|
+ domain_onion=$(grep 'sks onion domain' "${COMPLETION_FILE}" | awk -F ':' '{print $2}')
|
|
255
|
+ W+=("SKS" "${KEYSERVER_DOMAIN_NAME} / ${domain_onion}")
|
|
256
|
+ fi
|
255
|
257
|
|
256
|
|
- INTRODUCER_FILENAME=/home/tahoelafs/data/private/introducer.furl
|
257
|
|
- if [ -f $INTRODUCER_FILENAME ]; then
|
258
|
|
- W+=("Tahoe-LAFS" "$(cat $INTRODUCER_FILENAME)")
|
259
|
|
- fi
|
|
258
|
+ INTRODUCER_FILENAME=/home/tahoelafs/data/private/introducer.furl
|
|
259
|
+ if [ -f $INTRODUCER_FILENAME ]; then
|
|
260
|
+ W+=("Tahoe-LAFS" "$(cat $INTRODUCER_FILENAME)")
|
|
261
|
+ fi
|
260
|
262
|
|
261
|
|
- show_tor_bridges
|
|
263
|
+ show_tor_bridges
|
262
|
264
|
|
263
|
|
- # shellcheck disable=SC2068
|
264
|
|
- for app_name in ${APPS_INSTALLED_NAMES[@]}
|
265
|
|
- do
|
266
|
|
- if ! grep -q "SHOW_ON_ABOUT=1" "/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}"; then
|
267
|
|
- continue
|
268
|
|
- fi
|
|
265
|
+ # shellcheck disable=SC2068
|
|
266
|
+ for app_name in ${APPS_INSTALLED_NAMES[@]}
|
|
267
|
+ do
|
|
268
|
+ if ! grep -q "SHOW_ON_ABOUT=1" "/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}"; then
|
|
269
|
+ continue
|
|
270
|
+ fi
|
269
|
271
|
|
270
|
|
- # handle the foibles of capitalisation
|
271
|
|
- if ! grep -q "${app_name} domain" "$COMPLETION_FILE"; then
|
272
|
|
- app_name_upper=$(echo "${app_name}" | awk '{print toupper($0)}')
|
273
|
|
- if grep -q "${app_name_upper} domain" "$COMPLETION_FILE"; then
|
274
|
|
- app_name=${app_name_upper}
|
275
|
|
- else
|
276
|
|
- app_name_first_upper="$(tr '[:lower:]' '[:upper:]' <<< "${app_name:0:1}")${app_name:1}"
|
277
|
|
- if grep -q "${app_name_first_upper} domain" "$COMPLETION_FILE"; then
|
278
|
|
- app_name=${app_name_first_upper}
|
|
272
|
+ # handle the foibles of capitalisation
|
|
273
|
+ if ! grep -q "${app_name} domain" "$COMPLETION_FILE"; then
|
|
274
|
+ app_name_upper=$(echo "${app_name}" | awk '{print toupper($0)}')
|
|
275
|
+ if grep -q "${app_name_upper} domain" "$COMPLETION_FILE"; then
|
|
276
|
+ app_name=${app_name_upper}
|
|
277
|
+ else
|
|
278
|
+ app_name_first_upper="$(tr '[:lower:]' '[:upper:]' <<< "${app_name:0:1}")${app_name:1}"
|
|
279
|
+ if grep -q "${app_name_first_upper} domain" "$COMPLETION_FILE"; then
|
|
280
|
+ app_name=${app_name_first_upper}
|
|
281
|
+ fi
|
279
|
282
|
fi
|
280
|
283
|
fi
|
281
|
|
- fi
|
282
|
284
|
|
283
|
|
- if [ ${#app_name} -gt 0 ]; then
|
284
|
|
- icann_address=$(get_app_icann_address "$app_name")
|
285
|
|
- if grep -q "SHOW_ICANN_ADDRESS_ON_ABOUT=0" "/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}"; then
|
286
|
|
- icann_address='-'
|
287
|
|
- fi
|
288
|
|
- if [[ "$ONION_ONLY" != 'no' ]]; then
|
289
|
|
- if [[ "${icann_address}" != "${LOCAL_NAME}.local" ]]; then
|
|
285
|
+ if [ ${#app_name} -gt 0 ]; then
|
|
286
|
+ icann_address=$(get_app_icann_address "$app_name")
|
|
287
|
+ if grep -q "SHOW_ICANN_ADDRESS_ON_ABOUT=0" "/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}"; then
|
290
|
288
|
icann_address='-'
|
291
|
289
|
fi
|
292
|
|
- fi
|
293
|
|
- onion_address=$(get_app_onion_address "$app_name")
|
294
|
|
- if [ ${#onion_address} -eq 0 ]; then
|
295
|
|
- onion_address="-"
|
296
|
|
- fi
|
297
|
|
-
|
298
|
|
- if [[ "${icann_address}" != '-' ]]; then
|
299
|
|
- if [[ "${onion_address}" != '-' ]]; then
|
300
|
|
- W+=("${app_name}" "${icann_address} / ${onion_address}")
|
301
|
|
- else
|
302
|
|
- W+=("${app_name}" "${icann_address}")
|
|
290
|
+ if [[ "$ONION_ONLY" != 'no' ]]; then
|
|
291
|
+ if [[ "${icann_address}" != "${LOCAL_NAME}.local" ]]; then
|
|
292
|
+ icann_address='-'
|
|
293
|
+ fi
|
|
294
|
+ fi
|
|
295
|
+ onion_address=$(get_app_onion_address "$app_name")
|
|
296
|
+ if [ ${#onion_address} -eq 0 ]; then
|
|
297
|
+ onion_address="-"
|
303
|
298
|
fi
|
304
|
|
- else
|
305
|
|
- W+=("${app_name}" "${onion_address}")
|
306
|
|
- fi
|
307
|
299
|
|
308
|
|
- if grep -q "mobile${app_name} onion domain" "$COMPLETION_FILE"; then
|
309
|
|
- onion_address=$(get_app_onion_address "${app_name}" "mobile")
|
310
|
300
|
if [[ "${icann_address}" != '-' ]]; then
|
311
|
|
- W+=("${app_name} (mobile)" "${icann_address} / ${onion_address}")
|
|
301
|
+ if [[ "${onion_address}" != '-' ]]; then
|
|
302
|
+ W+=("${app_name}" "${icann_address} / ${onion_address}")
|
|
303
|
+ else
|
|
304
|
+ W+=("${app_name}" "${icann_address}")
|
|
305
|
+ fi
|
312
|
306
|
else
|
313
|
|
- W+=("${app_name} (mobile)" "${onion_address}")
|
|
307
|
+ W+=("${app_name}" "${onion_address}")
|
|
308
|
+ fi
|
|
309
|
+
|
|
310
|
+ if grep -q "mobile${app_name} onion domain" "$COMPLETION_FILE"; then
|
|
311
|
+ onion_address=$(get_app_onion_address "${app_name}" "mobile")
|
|
312
|
+ if [[ "${icann_address}" != '-' ]]; then
|
|
313
|
+ W+=("${app_name} (mobile)" "${icann_address} / ${onion_address}")
|
|
314
|
+ else
|
|
315
|
+ W+=("${app_name} (mobile)" "${onion_address}")
|
|
316
|
+ fi
|
314
|
317
|
fi
|
315
|
318
|
fi
|
316
|
|
- fi
|
317
|
|
- done
|
|
319
|
+ done
|
318
|
320
|
|
319
|
|
- if grep -q "rss reader domain" "$COMPLETION_FILE"; then
|
320
|
|
- if [ -d /var/lib/tor/hidden_service_ttrss ]; then
|
321
|
|
- domain_onion=$(cat /var/lib/tor/hidden_service_ttrss/hostname)
|
322
|
|
- W+=("RSS Reader" "${domain_onion}")
|
323
|
|
- fi
|
324
|
|
- if [ -d /var/lib/tor/hidden_service_mobilerss ]; then
|
325
|
|
- domain_onion=$(cat /var/lib/tor/hidden_service_mobilerss/hostname)
|
326
|
|
- W+=("RSS mobile" "${domain_onion}")
|
|
321
|
+ if grep -q "rss reader domain" "$COMPLETION_FILE"; then
|
|
322
|
+ if [ -d /var/lib/tor/hidden_service_ttrss ]; then
|
|
323
|
+ domain_onion=$(cat /var/lib/tor/hidden_service_ttrss/hostname)
|
|
324
|
+ W+=("RSS Reader" "${domain_onion}")
|
|
325
|
+ fi
|
|
326
|
+ if [ -d /var/lib/tor/hidden_service_mobilerss ]; then
|
|
327
|
+ domain_onion=$(cat /var/lib/tor/hidden_service_mobilerss/hostname)
|
|
328
|
+ W+=("RSS mobile" "${domain_onion}")
|
|
329
|
+ fi
|
327
|
330
|
fi
|
328
|
|
- fi
|
329
|
331
|
|
330
|
|
- width=$(tput cols)
|
331
|
|
- height=$(tput lines)
|
|
332
|
+ width=$(tput cols)
|
|
333
|
+ height=$(tput lines)
|
332
|
334
|
|
333
|
|
- # shellcheck disable=SC2068
|
334
|
|
- dialog --backtitle $"Freedombone Control Panel" --title $"Domains" --menu $"Use Shift+cursors to select and copy onion addresses" $((height-4)) $((width-4)) $((height-4)) "${W[@]}" 3>&2 2>&1 1>&3
|
|
335
|
+ # shellcheck disable=SC2068
|
|
336
|
+ selected=$(dialog --backtitle $"Freedombone Control Panel" --title $"Domains" --menu $"Use Shift+cursors to select and copy onion addresses" $((height-4)) $((width-4)) $((height-4)) "${W[@]}" 3>&2 2>&1 1>&3)
|
|
337
|
+ if [ ! "$selected" ]; then
|
|
338
|
+ break
|
|
339
|
+ fi
|
|
340
|
+ # obtain the addresses from the key by itterating through
|
|
341
|
+ # the array. This is quite crude and maybe there's a better way
|
|
342
|
+ key_found=
|
|
343
|
+ selected_addresses=
|
|
344
|
+ for key in "${W[@]}";
|
|
345
|
+ do
|
|
346
|
+ if [ $key_found ]; then
|
|
347
|
+ selected_addresses="$key"
|
|
348
|
+ break
|
|
349
|
+ fi
|
|
350
|
+ if [[ "$key" == "$selected" ]]; then
|
|
351
|
+ key_found=1
|
|
352
|
+ fi
|
|
353
|
+ done
|
|
354
|
+ # Was the key matched?
|
|
355
|
+ if [ ! "$selected_addresses" ]; then
|
|
356
|
+ break
|
|
357
|
+ fi
|
|
358
|
+ # addresses were found - is this an onion?
|
|
359
|
+ if [[ "$selected_addresses" != *".onion"* ]]; then
|
|
360
|
+ continue
|
|
361
|
+ fi
|
|
362
|
+ # There are two forms of addresses: "x / y.onion" and "x.onion"
|
|
363
|
+ if [[ "$selected_addresses" == *'/'* ]]; then
|
|
364
|
+ onion_addr=$(echo "$selected_addresses" | awk -F '/' '{print $2}' | awk -F ' ' '{print $1}')
|
|
365
|
+ else
|
|
366
|
+ onion_addr="$selected_addresses"
|
|
367
|
+ fi
|
|
368
|
+ # show the onion address as a QR code
|
|
369
|
+ clear
|
|
370
|
+ echo "${selected}: ${onion_addr}"
|
|
371
|
+ echo -n "$onion_addr" | qrencode -t UTF8
|
|
372
|
+ any_key
|
|
373
|
+ done
|
335
|
374
|
}
|
336
|
375
|
|
337
|
376
|
function show_users {
|