You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mikrus-installer/src/app_config.sh

235 lines
7.8 KiB
Bash

# shellcheck disable=SC2148
# shellcheck disable=SC2155
#dev-begin
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# IMPORTS
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# shellcheck source=./headers.sh
source ./headers.sh
#dev-end
#=======================================
# CONFIG AND MANAGEMENT UI
#=======================================
version_menu() {
local tags=$(wget -q -O - "https://hub.docker.com/v2/namespaces/nightscout/repositories/cgm-remote-monitor/tags?page_size=100" | jq -r ".results[].name" | sed "/dev_[a-f0-9]*/d" | sort --version-sort -u -r | head -n 8)
while :; do
local ns_tag=$(dotenv-tool -r get -f "$ENV_FILE_DEP" "NS_NIGHTSCOUT_TAG")
local versions=()
while read -r line; do
if [ "$line" == "$ns_tag" ]; then
continue
fi
label=" - na sztywno $line "
if [ "$line" == "latest_dev" ]; then
label=" - najnowsza wersja rozwojowa "
fi
if [ "$line" == "latest" ]; then
label=" - aktualna wersja stabilna "
fi
versions+=("$line")
versions+=("$label")
done <<<"$tags"
versions+=("M)")
versions+=(" Powrót do poprzedniego menu")
local CHOICE=$(whiptail --title "Wersja Nightscout" --menu "\nZmień wersję kontenera Nightscout z: $ns_tag na:\n\n" 20 60 10 \
"${versions[@]}" \
--ok-button="Zmień" --cancel-button="$uni_back" \
3>&2 2>&1 1>&3)
if [ "$CHOICE" == "M)" ]; then
break
fi
if [ "$CHOICE" == "" ]; then
break
fi
if [ "$CHOICE" == "$ns_tag" ]; then
whiptail --title "Ta sama wersja!" --msgbox "Wybrano bieżącą wersję - brak zmiany" 7 50
else
whiptail --title "Zmienić wersję Nightscout?" --yesno --defaultno "Czy na pewno chcesz zmienić wersję z: $ns_tag na: $CHOICE?\n\n${uni_bullet}dane i konfiguracja NIE SĄ usuwane\n${uni_bullet}wersję można łatwo zmienić ponownie\n${uni_bullet}dane w bazie danych mogą ulec zmianie i NIE BYĆ kompatybilne" --yes-button "$uni_confirm_ch" --no-button "$uni_resign" 13 73
if ! [ $? -eq 1 ]; then
event_mark "change_ns_version"
docker_compose_down
ohai "Changing Nightscout container tag from: $ns_tag to: $CHOICE"
dotenv-tool -pmr -i "$ENV_FILE_DEP" -- "NS_NIGHTSCOUT_TAG=$CHOICE"
docker_compose_update
whiptail --title "Zmieniono wersję Nightscout" --msgbox "$(center_multiline 65 \
"Zmieniono wersję Nightscout na: $CHOICE" \
"${TL}Sprawdź czy Nightscout działa poprawnie, w razie problemów:" \
"${NL}${uni_bullet}aktualizuj kontenery" \
"${NL}${uni_bullet}spróbuj wyczyścić bazę danych" \
"${NL}${uni_bullet}wróć do poprzedniej wersji ($ns_tag)")" \
13 70
break
fi
fi
done
}
uninstall_menu() {
while :; do
local extraMenu=()
extraMenu+=("A)" "Ustaw adres strony (subdomenę)")
local ns_tag=$(dotenv-tool -r get -f "$ENV_FILE_DEP" "NS_NIGHTSCOUT_TAG")
local CHOICE=$(whiptail --title "Zmień lub odinstaluj Nightscout" --menu "\n" 17 70 8 \
"${extraMenu[@]}" \
"W)" "Zmień wersję Nightscouta (bieżąca: $ns_tag)" \
"E)" "Edytuj ustawienia (zmienne środowiskowe)" \
"K)" "Usuń kontenery" \
"B)" "Wyczyść bazę danych" \
"D)" "Usuń kontenery, dane i konfigurację" \
"U)" "Usuń wszystko - odinstaluj" \
"M)" "Powrót do menu" \
--ok-button="$uni_select" --cancel-button="$uni_back" \
3>&2 2>&1 1>&3)
case $CHOICE in
"A)")
domain_setup
;;
"W)")
version_menu
;;
"E)")
cachedMenuDomain=''
invalidate_domain_cache
if ! [[ "$0" =~ .*"/usr/bin/nightscout-tool" ]]; then
okdlg "Opcja niedostępna" \
"Edytor ustawień dostępny po uruchomieniu narzędzia komendą:" \
"${TL}nightscout-tool"
else
yesnodlg "Edycja ustawień Nightscout" "$uni_confirm_ed" "$uni_resign" \
"Za chwilę otworzę plik konfiguracji Nightscout w edytorze NANO" \
"$(pad_multiline \
"${TL}Wskazówki co do obsługi edytora:" \
"${NL}${uni_bullet}Aby ZAPISAĆ zmiany naciśnij Ctrl+O" \
"${NL}${uni_bullet}Aby ZAKOŃCZYĆ edycję naciśnij Ctrl+X")" \
"${TL}${uni_warn} Edycja spowoduje też restart i aktualizację kontenerów ${uni_warn}"
if ! [ $? -eq 1 ]; then
event_mark "edit_env_manual"
nano "$ENV_FILE_NS"
docker_compose_down
docker_compose_update
fi
fi
;;
"K)")
noyesdlg "Usunąć kontenery?" "$uni_confirm_del" "$uni_resign" \
"Czy na pewno chcesz usunąć kontenery powiązane z Nightscout?" \
"$(pad_multiline \
"${TL}${uni_bullet}dane i konfiguracja NIE SĄ usuwane" \
"${NL}${uni_bullet}kontenery można łatwo odzyskać (opcja Aktualizuj kontenery)")"
if ! [ $? -eq 1 ]; then
event_mark "remove_containers"
docker_compose_down
fi
;;
"B)")
noyesdlg "Usunąć dane z bazy danych?" "$uni_confirm_del" "$uni_resign" \
"Czy na pewno chcesz usunąć dane z bazy danych?" \
"$(pad_multiline \
"${TL}${uni_bullet}konfiguracja serwera NIE ZOSTANIE usunięta" \
"${NL}${uni_bullet}usunięte zostaną wszystkie dane użytkownika" \
"${NL}${uni_bullet_pad} (m.in. historia glikemii, wpisy, notatki, pomiary, profile)" \
"${NL}${uni_bullet}kontenery zostaną zatrzymane i uruchomione ponownie (zaktualizowane)")"
if ! [ $? -eq 1 ]; then
docker_compose_down
dialog --title " Czyszczenie bazy danych " --infobox "\n Usuwanie plików bazy\n ... Proszę czekać ..." 6 32
rm -r "${MONGO_DB_DIR:?}/data"
event_mark "remove_db_data"
docker_compose_update
fi
;;
"D)")
noyesdlg "Usunąć wszystkie dane?" "$uni_confirm_del" "$uni_resign" \
"Czy na pewno chcesz usunąć wszystkie dane i konfigurację?" \
"$(pad_multiline \
"${TL}${uni_bullet}konfigurację panelu, ustawienia Nightscout" \
"${NL}${uni_bullet}wszystkie dane użytkownika" \
"${NL}${uni_bullet_pad}(m.in. glikemia, wpisy, notatki, pomiary, profile)" \
"${NL}${uni_bullet}kontenery zostaną zatrzymane")"
if ! [ $? -eq 1 ]; then
docker_compose_down
dialog --title " Czyszczenie bazy danych" --infobox "\n Usuwanie plików bazy\n ... Proszę czekać ..." 6 32
rm -r "${MONGO_DB_DIR:?}/data"
event_mark "remove_all_data"
dialog --title " Czyszczenie konfiguracji" --infobox "\n Usuwanie konfiguracji\n ... Proszę czekać ..." 6 32
rm -r "${CONFIG_ROOT_DIR:?}"
do_cleanup_diagnostics
do_cleanup_app_logs
okdlg "Usunięto dane użytkownika" \
"Usunęto dane użytkwnika i konfigurację." \
"${TL}Aby zainstalować Nightscout od zera:" \
"${NL}uruchom ponownie skrypt i podaj konfigurację"
exit 0
fi
;;
"U)")
noyesdlg "Odinstalować?" "$uni_confirm_del" "$uni_resign" \
"Czy na pewno chcesz usunąć wszystko?" \
"$(pad_multiline \
"${TL}${uni_bullet}konfigurację panelu, ustawienia Nightscout" \
"${NL}${uni_bullet}wszystkie dane użytkownika (glikemia, status, profile)" \
"${NL}${uni_bullet}kontenery, skrypt nightscout-tool")" \
"${TL}NIE ZOSTANĄ USUNIĘTE/ODINSTALOWANE:" \
"$(pad_multiline \
"${TL}${uni_bullet}użytkownik mongo db, firewall, doinstalowane pakiety" \
"${NL}${uni_bullet}kopie zapasowe bazy danych")"
if ! [ $? -eq 1 ]; then
docker_compose_down
dialog --title " Odinstalowanie" --infobox "\n Usuwanie plików\n ... Proszę czekać ..." 6 32
uninstall_cron
rm -r "${MONGO_DB_DIR:?}/data"
rm -r "${CONFIG_ROOT_DIR:?}"
rm "$TOOL_LINK"
rm -r "${NIGHTSCOUT_ROOT_DIR:?}/tools"
rm -r "${NIGHTSCOUT_ROOT_DIR:?}/updates"
do_cleanup_diagnostics
do_cleanup_app_logs
do_cleanup_app_state
event_mark "uninstall"
okdlg "Odinstalowano" \
"Odinstalowano Nightscout z Mikr.us-a" \
"${TL}Aby ponownie zainstalować, postępuj według instrukcji na stronie:" \
"${NL}https://t1d.dzienia.pl/nightscout_mikrus_tutorial" \
"${TL}Dziękujemy i do zobaczenia!"
exit 0
fi
;;
"M)")
break
;;
"")
break
;;
esac
done
}