diff --git a/CHANGELOG.md b/CHANGELOG.md index b46fc43..1883bc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - ## [1.8.0] - 2024-01-06 ### Added @@ -18,7 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Main menu status show overal calculated status instead of Nightscout container +- Main menu status show live calculated status instead of Nightscout container status ### Fixed diff --git a/install.sh b/install.sh index 0f4e91a..01a6c21 100644 --- a/install.sh +++ b/install.sh @@ -42,7 +42,7 @@ TOOL_LINK=/usr/bin/nightscout-tool UPDATES_DIR=/srv/nightscout/updates UPDATE_CHANNEL=master SCRIPT_VERSION="1.8.0" #auto-update -SCRIPT_BUILD_TIME="2024.01.06" #auto-update +SCRIPT_BUILD_TIME="2024.01.07" #auto-update #======================================= # SETUP @@ -132,8 +132,10 @@ tty_reset="$(tty_escape 0)" emoji_check="\U2705" emoji_ok="\U1F197" emoji_err="\U274C" +emoji_note="\U1F4A1" uni_bullet=" $(printf '\u2022') " +uni_copyright="$(printf '\uA9\uFE0F')" uni_bullet_pad=" " uni_exit=" $(printf '\U274C') Wyjdź " @@ -152,6 +154,9 @@ uni_confirm_ed=" $(printf '\U1F4DD') Edytuj " uni_install=" $(printf '\U1F680') Instaluj " uni_resign=" $(printf '\U1F6AB') Rezygnuję " +uni_ns_ok="$(printf '\U1F7E2') działa" +uni_watchdog_ok="$(printf '\U1F415') Nightscout działa" + #======================================= # UTILS #======================================= @@ -179,6 +184,11 @@ msgok() { printf "$emoji_ok $1\n" } +msgnote() { + # shellcheck disable=SC2059 + printf "$emoji_note $1\n" +} + msgcheck() { # shellcheck disable=SC2059 printf "$emoji_check $1\n" @@ -545,15 +555,18 @@ setup_firewall_for_ns() { } install_cron() { - local croncmd="$TOOL_LINK -w > $WATCHDOG_CRON_LOG 2>&1" - local cronjob="*/5 * * * * $croncmd" - msgok "Configuring watchdog..." - ( crontab -l | grep -v -F "$croncmd" || : ; echo "$cronjob" ) | crontab - + local croncmd="$TOOL_LINK -w > $WATCHDOG_CRON_LOG 2>&1" + local cronjob="*/5 * * * * $croncmd" + msgok "Configuring watchdog..." + ( + crontab -l | grep -v -F "$croncmd" || : + echo "$cronjob" + ) | crontab - } uninstall_cron() { - local croncmd="nightscout-tool" - ( crontab -l | grep -v -F "$croncmd" ) | crontab - + local croncmd="nightscout-tool" + (crontab -l | grep -v -F "$croncmd") | crontab - } get_docker_status() { @@ -758,7 +771,7 @@ update_if_needed() { about_dialog() { okdlg "O tym narzędziu..." \ - "$(printf '\U1F9D1') (c) 2023 Dominik Dzienia\n$(printf '\U1F4E7') dominik.dzienia@gmail.com\n\n$(printf '\U1F3DB') To narzędzie jest dystrybuowane na licencji CC BY-NC-ND 4.0\nhttps://creativecommons.org/licenses/by-nc-nd/4.0/deed.pl\n\nwersja: $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)" + "$(printf '\U1F9D1') (c) 2023 Dominik Dzienia\n$(printf '\U1F4E7') dominik.dzienia@gmail.com\n\n$(printf '\U1F3DB') To narzędzie jest dystrybuowane na licencji CC BY-NC-ND 4.0\nhttps://creativecommons.org/licenses/by-nc-nd/4.0/deed.pl\n\nwersja: $SCRIPT_VERSION ($SCRIPT_BUILD_TIME) $UPDATE_CHANNEL" } prompt_welcome() { @@ -1015,6 +1028,151 @@ admin_panel_promo() { whiptail --title "Panel zarządzania Mikr.us-em" --msgbox "$(center_multiline "Ta instalacja Nightscout dodaje dodatkowy panel administracyjny\ndo zarządzania serwerem i konfiguracją - online.\n\nZnajdziesz go klikając na ikonkę serwera w menu strony Nightscout\nlub dodając /mikrus na końcu swojego adresu Nightscout" 70)" 12 75 } +get_watchdog_age_string() { + local curr_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local last_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + + if [[ -f $WATCHDOG_TIME_FILE ]]; then + last_time=$(cat $WATCHDOG_TIME_FILE) + local status_ago=$(dateutils.ddiff "$last_time" "$curr_time" -f '%Mmin. %Ssek.') + echo "$last_time ($status_ago temu)" + else + echo "jescze nie uruchomiony" + fi +} + +get_watchdog_status_code() { + local curr_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local last_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local status="unknown" + + if [[ -f $WATCHDOG_TIME_FILE ]]; then + last_time=$(cat $WATCHDOG_TIME_FILE) + fi + + if [[ -f $WATCHDOG_STATUS_FILE ]]; then + status=$(cat $WATCHDOG_STATUS_FILE) + fi + + local status_ago=$(dateutils.ddiff "$curr_time" "$last_time" -f '%S') + + if [ "$status_ago" -gt 900 ]; then + status="unknown" + fi + + echo "$status" +} + +get_watchdog_status_code_live() { + local curr_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local last_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local status="unknown" + + if [[ -f $WATCHDOG_TIME_FILE ]]; then + last_time=$(cat $WATCHDOG_TIME_FILE) + fi + + if [[ -f $WATCHDOG_STATUS_FILE ]]; then + status=$(cat $WATCHDOG_STATUS_FILE) + fi + + local status_ago=$(dateutils.ddiff "$curr_time" "$last_time" -f '%S') + + if [ "$status_ago" -gt 900 ]; then + status="unknown" + fi + + local NS_STATUS=$(get_container_status_code 'ns-server') + local DB_STATUS=$(get_container_status_code 'ns-database') + local COMBINED_STATUS="$NS_STATUS $DB_STATUS" + + if [ "$COMBINED_STATUS" = "running running" ]; then + local domain=$(get_td_domain) + local html=$(curl -Lks "$domain") + + if [[ "$html" =~ github.com/nightscout/cgm-remote-monitor ]]; then + status="ok" + fi + + if [[ "$html" =~ 'MongoDB connection failed' ]]; then + status="crashed" + fi + + regex3='MIKR.US - coś poszło nie tak' + if [[ "$html" =~ $regex3 ]]; then + status="restarting" + fi + + else + if [ "$NS_STATUS" = "restarting" ] || [ "$DB_STATUS" = "restarting" ]; then + status="restarting" + else + status="not_running" + fi + fi + + echo "$status" +} + +get_watchdog_status() { + local status="$1" + case "$status" in + "ok") + echo "$2" + ;; + "restart") + printf "\U1F680 wymuszono restart NS" + ;; + "restarting") + printf "\U23F3 uruchamia się" + ;; + "unknown") + printf "\U1F4A4 brak statusu" + ;; + "not_running") + printf "\U1F534 serwer nie działa" + ;; + "detection_failed") + printf "\U2753 nieznany stan" + ;; + "crashed") + printf "\U1F4A5 awaria NS" + ;; + esac + +} + +show_watchdog_logs() { + local col=$((COLUMNS - 10)) + local rws=$((LINES - 3)) + if [ $col -gt 120 ]; then + col=160 + fi + if [ $col -lt 60 ]; then + col=60 + fi + if [ $rws -lt 12 ]; then + rws=12 + fi + + local tmpfile=$(mktemp) + { + echo "Ostatnie uruchomienie watchdoga:" + get_watchdog_age_string + echo "-------------------------------------------------------" + + echo "Statusy ostatnich przebiegów watchdoga:" + tail -5 "$WATCHDOG_LOG_FILE" + echo "-------------------------------------------------------" + + echo "Log ostatniego przebiegu watchdoga:" + cat "$WATCHDOG_CRON_LOG" + } >"$tmpfile" + + whiptail --title "Logi Watchdoga" --scrolltext --textbox "$tmpfile" $rws $col + rm "$tmpfile" +} + get_container_status() { local ID=$(docker ps -a --no-trunc --filter name="^$1$" --format '{{ .ID }}') if [[ "$ID" =~ [0-9a-fA-F]{12,} ]]; then @@ -1079,10 +1237,11 @@ show_logs() { status_menu() { while :; do - local CHOICE=$(whiptail --title "Status kontenerów" --menu "\nWybierz pozycję aby zobaczyć logi:\n" 15 60 5 \ + local CHOICE=$(whiptail --title "Status kontenerów" --menu "\n Aktualizacja: kontenery na żywo, watchdog co 5 minut\n\n Wybierz pozycję aby zobaczyć logi:\n" 17 60 5 \ "1)" " Nightscout: $(get_container_status 'ns-server')" \ "2)" " Baza danych: $(get_container_status 'ns-database')" \ "3)" " Backup: $(get_container_status 'ns-backup')" \ + "4)" " Watchdog: $(get_watchdog_status "$(get_watchdog_status_code)" "$uni_watchdog_ok")" \ "M)" "Powrót do menu" \ --ok-button="Zobacz logi" --cancel-button="$uni_back" \ 3>&2 2>&1 1>&3) @@ -1097,6 +1256,9 @@ status_menu() { "3)") show_logs 'ns-backup' 'usługi kopii zapasowych' ;; + "4)") + show_watchdog_logs + ;; "M)") break ;; @@ -1240,7 +1402,7 @@ uninstall_menu() { if ! [ $? -eq 1 ]; then docker_compose_down dialog --title " Odinstalowanie" --infobox "\n Usuwanie plików\n ... Proszę czekać ..." 6 32 - uninstall_cron + uninstall_cron rm -r "${MONGO_DB_DIR:?}/data" rm -r "${CONFIG_ROOT_DIR:?}" rm "$TOOL_LINK" @@ -1279,7 +1441,7 @@ get_domain_status() { main_menu() { while :; do local ns_tag=$(dotenv-tool -r get -f $ENV_FILE_DEP "NS_NIGHTSCOUT_TAG") - local quickStatus=$(center_text "Nightscout: $(get_container_status 'ns-server')" 55) + local quickStatus=$(center_text "Strona Nightscout: $(get_watchdog_status "$(get_watchdog_status_code_live)" "$uni_ns_ok")" 55) local quickVersion=$(center_text "Wersja: $ns_tag" 55) local quickDomain=$(center_text "Domena: $(get_domain_status 'ns-server')" 55) local CHOICE=$(whiptail --title "Zarządzanie Nightscoutem :: $SCRIPT_VERSION" --menu "\n$quickStatus\n$quickVersion\n$quickDomain\n" 20 60 9 \ @@ -1408,8 +1570,8 @@ watchdog_check() { if [ "$COMBINED_STATUS" = "running running" ]; then echo "Will check page contents" - local ns_external_port=$(dotenv-tool -r get -f $ENV_FILE_DEP "NS_PORT") - local html=$(curl -s "127.0.0.1:$ns_external_port") + local domain=$(get_td_domain) + local html=$(curl -Lks "$domain") WATCHDOG_STATUS="detection_failed" @@ -1421,13 +1583,13 @@ watchdog_check() { if [[ "$html" =~ 'MongoDB connection failed' ]]; then echo "Nightscout is crashed, restarting..." WATCHDOG_STATUS="restart" - if [ "$WATCHDOG_LAST_STATUS" != "restart" ]; then - docker restart 'ns-server' - echo "...done" - fi + if [ "$WATCHDOG_LAST_STATUS" != "restart" ]; then + docker restart 'ns-server' + echo "...done" + fi fi - regex3='MIKR.US - coś poszło nie tak' + regex3='MIKR.US - coś poszło nie tak' if [[ "$html" =~ $regex3 ]]; then echo "Nightscout is still restarting..." WATCHDOG_STATUS="restarting" @@ -1461,13 +1623,19 @@ watchdog_check() { load_update_channel() { if [[ -f $UPDATE_CHANNEL_FILE ]]; then UPDATE_CHANNEL=$(cat $UPDATE_CHANNEL_FILE) - msgok "Loaded update channel: $UPDATE_CHANNEL" + msgok "Loaded update channel: $UPDATE_CHANNEL" fi } +startup_version() { + msgnote "nightscout-tool version $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)" + msgnote "$uni_copyright 2023-2024 Dominik Dzienia" + msgnote "Licensed under CC BY-NC-ND 4.0" +} + parse_commandline_args() { - load_update_channel + load_update_channel CMDARGS=$(getopt --quiet -o wvdp --long watchdog,version,develop,production -n 'nightscout-tool' -- "$@") @@ -1492,16 +1660,16 @@ parse_commandline_args() { exit 0 ;; -d | --develop) - warn "Switching to DEVELOP update channel" - UPDATE_CHANNEL=develop - echo "$UPDATE_CHANNEL" > $UPDATE_CHANNEL_FILE - shift + warn "Switching to DEVELOP update channel" + UPDATE_CHANNEL=develop + echo "$UPDATE_CHANNEL" >$UPDATE_CHANNEL_FILE + shift ;; -p | --production) - warn "Switching to PRODUCTION update channel" - UPDATE_CHANNEL=master - echo "$UPDATE_CHANNEL" > $UPDATE_CHANNEL_FILE - shift + warn "Switching to PRODUCTION update channel" + UPDATE_CHANNEL=master + echo "$UPDATE_CHANNEL" >$UPDATE_CHANNEL_FILE + shift ;; --) shift @@ -1522,6 +1690,7 @@ parse_commandline_args() { # MAIN SCRIPT #======================================= +startup_version parse_commandline_args "$@" # check_interactive check_git diff --git a/src/lib.sh b/src/lib.sh index 02dd810..dbf54c6 100644 --- a/src/lib.sh +++ b/src/lib.sh @@ -26,7 +26,7 @@ TOOL_LINK=/usr/bin/nightscout-tool UPDATES_DIR=/srv/nightscout/updates UPDATE_CHANNEL=master SCRIPT_VERSION="1.8.0" #auto-update -SCRIPT_BUILD_TIME="2024.01.06" #auto-update +SCRIPT_BUILD_TIME="2024.01.07" #auto-update #======================================= # SETUP @@ -116,8 +116,10 @@ tty_reset="$(tty_escape 0)" emoji_check="\U2705" emoji_ok="\U1F197" emoji_err="\U274C" +emoji_note="\U1F4A1" uni_bullet=" $(printf '\u2022') " +uni_copyright="$(printf '\uA9\uFE0F')" uni_bullet_pad=" " uni_exit=" $(printf '\U274C') Wyjdź " @@ -136,6 +138,9 @@ uni_confirm_ed=" $(printf '\U1F4DD') Edytuj " uni_install=" $(printf '\U1F680') Instaluj " uni_resign=" $(printf '\U1F6AB') Rezygnuję " +uni_ns_ok="$(printf '\U1F7E2') działa" +uni_watchdog_ok="$(printf '\U1F415') Nightscout działa" + #======================================= # UTILS #======================================= @@ -163,6 +168,11 @@ msgok() { printf "$emoji_ok $1\n" } +msgnote() { + # shellcheck disable=SC2059 + printf "$emoji_note $1\n" +} + msgcheck() { # shellcheck disable=SC2059 printf "$emoji_check $1\n" @@ -529,15 +539,18 @@ setup_firewall_for_ns() { } install_cron() { - local croncmd="$TOOL_LINK -w > $WATCHDOG_CRON_LOG 2>&1" - local cronjob="*/5 * * * * $croncmd" - msgok "Configuring watchdog..." - ( crontab -l | grep -v -F "$croncmd" || : ; echo "$cronjob" ) | crontab - + local croncmd="$TOOL_LINK -w > $WATCHDOG_CRON_LOG 2>&1" + local cronjob="*/5 * * * * $croncmd" + msgok "Configuring watchdog..." + ( + crontab -l | grep -v -F "$croncmd" || : + echo "$cronjob" + ) | crontab - } uninstall_cron() { - local croncmd="nightscout-tool" - ( crontab -l | grep -v -F "$croncmd" ) | crontab - + local croncmd="nightscout-tool" + (crontab -l | grep -v -F "$croncmd") | crontab - } get_docker_status() { @@ -742,7 +755,7 @@ update_if_needed() { about_dialog() { okdlg "O tym narzędziu..." \ - "$(printf '\U1F9D1') (c) 2023 Dominik Dzienia\n$(printf '\U1F4E7') dominik.dzienia@gmail.com\n\n$(printf '\U1F3DB') To narzędzie jest dystrybuowane na licencji CC BY-NC-ND 4.0\nhttps://creativecommons.org/licenses/by-nc-nd/4.0/deed.pl\n\nwersja: $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)" + "$(printf '\U1F9D1') (c) 2023 Dominik Dzienia\n$(printf '\U1F4E7') dominik.dzienia@gmail.com\n\n$(printf '\U1F3DB') To narzędzie jest dystrybuowane na licencji CC BY-NC-ND 4.0\nhttps://creativecommons.org/licenses/by-nc-nd/4.0/deed.pl\n\nwersja: $SCRIPT_VERSION ($SCRIPT_BUILD_TIME) $UPDATE_CHANNEL" } prompt_welcome() { @@ -999,6 +1012,151 @@ admin_panel_promo() { whiptail --title "Panel zarządzania Mikr.us-em" --msgbox "$(center_multiline "Ta instalacja Nightscout dodaje dodatkowy panel administracyjny\ndo zarządzania serwerem i konfiguracją - online.\n\nZnajdziesz go klikając na ikonkę serwera w menu strony Nightscout\nlub dodając /mikrus na końcu swojego adresu Nightscout" 70)" 12 75 } +get_watchdog_age_string() { + local curr_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local last_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + + if [[ -f $WATCHDOG_TIME_FILE ]]; then + last_time=$(cat $WATCHDOG_TIME_FILE) + local status_ago=$(dateutils.ddiff "$last_time" "$curr_time" -f '%Mmin. %Ssek.') + echo "$last_time ($status_ago temu)" + else + echo "jescze nie uruchomiony" + fi +} + +get_watchdog_status_code() { + local curr_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local last_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local status="unknown" + + if [[ -f $WATCHDOG_TIME_FILE ]]; then + last_time=$(cat $WATCHDOG_TIME_FILE) + fi + + if [[ -f $WATCHDOG_STATUS_FILE ]]; then + status=$(cat $WATCHDOG_STATUS_FILE) + fi + + local status_ago=$(dateutils.ddiff "$curr_time" "$last_time" -f '%S') + + if [ "$status_ago" -gt 900 ]; then + status="unknown" + fi + + echo "$status" +} + +get_watchdog_status_code_live() { + local curr_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local last_time=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + local status="unknown" + + if [[ -f $WATCHDOG_TIME_FILE ]]; then + last_time=$(cat $WATCHDOG_TIME_FILE) + fi + + if [[ -f $WATCHDOG_STATUS_FILE ]]; then + status=$(cat $WATCHDOG_STATUS_FILE) + fi + + local status_ago=$(dateutils.ddiff "$curr_time" "$last_time" -f '%S') + + if [ "$status_ago" -gt 900 ]; then + status="unknown" + fi + + local NS_STATUS=$(get_container_status_code 'ns-server') + local DB_STATUS=$(get_container_status_code 'ns-database') + local COMBINED_STATUS="$NS_STATUS $DB_STATUS" + + if [ "$COMBINED_STATUS" = "running running" ]; then + local domain=$(get_td_domain) + local html=$(curl -Lks "$domain") + + if [[ "$html" =~ github.com/nightscout/cgm-remote-monitor ]]; then + status="ok" + fi + + if [[ "$html" =~ 'MongoDB connection failed' ]]; then + status="crashed" + fi + + regex3='MIKR.US - coś poszło nie tak' + if [[ "$html" =~ $regex3 ]]; then + status="restarting" + fi + + else + if [ "$NS_STATUS" = "restarting" ] || [ "$DB_STATUS" = "restarting" ]; then + status="restarting" + else + status="not_running" + fi + fi + + echo "$status" +} + +get_watchdog_status() { + local status="$1" + case "$status" in + "ok") + echo "$2" + ;; + "restart") + printf "\U1F680 wymuszono restart NS" + ;; + "restarting") + printf "\U23F3 uruchamia się" + ;; + "unknown") + printf "\U1F4A4 brak statusu" + ;; + "not_running") + printf "\U1F534 serwer nie działa" + ;; + "detection_failed") + printf "\U2753 nieznany stan" + ;; + "crashed") + printf "\U1F4A5 awaria NS" + ;; + esac + +} + +show_watchdog_logs() { + local col=$((COLUMNS - 10)) + local rws=$((LINES - 3)) + if [ $col -gt 120 ]; then + col=160 + fi + if [ $col -lt 60 ]; then + col=60 + fi + if [ $rws -lt 12 ]; then + rws=12 + fi + + local tmpfile=$(mktemp) + { + echo "Ostatnie uruchomienie watchdoga:" + get_watchdog_age_string + echo "-------------------------------------------------------" + + echo "Statusy ostatnich przebiegów watchdoga:" + tail -5 "$WATCHDOG_LOG_FILE" + echo "-------------------------------------------------------" + + echo "Log ostatniego przebiegu watchdoga:" + cat "$WATCHDOG_CRON_LOG" + } >"$tmpfile" + + whiptail --title "Logi Watchdoga" --scrolltext --textbox "$tmpfile" $rws $col + rm "$tmpfile" +} + get_container_status() { local ID=$(docker ps -a --no-trunc --filter name="^$1$" --format '{{ .ID }}') if [[ "$ID" =~ [0-9a-fA-F]{12,} ]]; then @@ -1063,10 +1221,11 @@ show_logs() { status_menu() { while :; do - local CHOICE=$(whiptail --title "Status kontenerów" --menu "\nWybierz pozycję aby zobaczyć logi:\n" 15 60 5 \ + local CHOICE=$(whiptail --title "Status kontenerów" --menu "\n Aktualizacja: kontenery na żywo, watchdog co 5 minut\n\n Wybierz pozycję aby zobaczyć logi:\n" 17 60 5 \ "1)" " Nightscout: $(get_container_status 'ns-server')" \ "2)" " Baza danych: $(get_container_status 'ns-database')" \ "3)" " Backup: $(get_container_status 'ns-backup')" \ + "4)" " Watchdog: $(get_watchdog_status "$(get_watchdog_status_code)" "$uni_watchdog_ok")" \ "M)" "Powrót do menu" \ --ok-button="Zobacz logi" --cancel-button="$uni_back" \ 3>&2 2>&1 1>&3) @@ -1081,6 +1240,9 @@ status_menu() { "3)") show_logs 'ns-backup' 'usługi kopii zapasowych' ;; + "4)") + show_watchdog_logs + ;; "M)") break ;; @@ -1224,7 +1386,7 @@ uninstall_menu() { if ! [ $? -eq 1 ]; then docker_compose_down dialog --title " Odinstalowanie" --infobox "\n Usuwanie plików\n ... Proszę czekać ..." 6 32 - uninstall_cron + uninstall_cron rm -r "${MONGO_DB_DIR:?}/data" rm -r "${CONFIG_ROOT_DIR:?}" rm "$TOOL_LINK" @@ -1263,7 +1425,7 @@ get_domain_status() { main_menu() { while :; do local ns_tag=$(dotenv-tool -r get -f $ENV_FILE_DEP "NS_NIGHTSCOUT_TAG") - local quickStatus=$(center_text "Nightscout: $(get_container_status 'ns-server')" 55) + local quickStatus=$(center_text "Strona Nightscout: $(get_watchdog_status "$(get_watchdog_status_code_live)" "$uni_ns_ok")" 55) local quickVersion=$(center_text "Wersja: $ns_tag" 55) local quickDomain=$(center_text "Domena: $(get_domain_status 'ns-server')" 55) local CHOICE=$(whiptail --title "Zarządzanie Nightscoutem :: $SCRIPT_VERSION" --menu "\n$quickStatus\n$quickVersion\n$quickDomain\n" 20 60 9 \ @@ -1392,8 +1554,8 @@ watchdog_check() { if [ "$COMBINED_STATUS" = "running running" ]; then echo "Will check page contents" - local ns_external_port=$(dotenv-tool -r get -f $ENV_FILE_DEP "NS_PORT") - local html=$(curl -s "127.0.0.1:$ns_external_port") + local domain=$(get_td_domain) + local html=$(curl -Lks "$domain") WATCHDOG_STATUS="detection_failed" @@ -1405,13 +1567,13 @@ watchdog_check() { if [[ "$html" =~ 'MongoDB connection failed' ]]; then echo "Nightscout is crashed, restarting..." WATCHDOG_STATUS="restart" - if [ "$WATCHDOG_LAST_STATUS" != "restart" ]; then - docker restart 'ns-server' - echo "...done" - fi + if [ "$WATCHDOG_LAST_STATUS" != "restart" ]; then + docker restart 'ns-server' + echo "...done" + fi fi - regex3='MIKR.US - coś poszło nie tak' + regex3='MIKR.US - coś poszło nie tak' if [[ "$html" =~ $regex3 ]]; then echo "Nightscout is still restarting..." WATCHDOG_STATUS="restarting" @@ -1445,13 +1607,19 @@ watchdog_check() { load_update_channel() { if [[ -f $UPDATE_CHANNEL_FILE ]]; then UPDATE_CHANNEL=$(cat $UPDATE_CHANNEL_FILE) - msgok "Loaded update channel: $UPDATE_CHANNEL" + msgok "Loaded update channel: $UPDATE_CHANNEL" fi } +startup_version() { + msgnote "nightscout-tool version $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)" + msgnote "$uni_copyright 2023-2024 Dominik Dzienia" + msgnote "Licensed under CC BY-NC-ND 4.0" +} + parse_commandline_args() { - load_update_channel + load_update_channel CMDARGS=$(getopt --quiet -o wvdp --long watchdog,version,develop,production -n 'nightscout-tool' -- "$@") @@ -1476,16 +1644,16 @@ parse_commandline_args() { exit 0 ;; -d | --develop) - warn "Switching to DEVELOP update channel" - UPDATE_CHANNEL=develop - echo "$UPDATE_CHANNEL" > $UPDATE_CHANNEL_FILE - shift + warn "Switching to DEVELOP update channel" + UPDATE_CHANNEL=develop + echo "$UPDATE_CHANNEL" >$UPDATE_CHANNEL_FILE + shift ;; -p | --production) - warn "Switching to PRODUCTION update channel" - UPDATE_CHANNEL=master - echo "$UPDATE_CHANNEL" > $UPDATE_CHANNEL_FILE - shift + warn "Switching to PRODUCTION update channel" + UPDATE_CHANNEL=master + echo "$UPDATE_CHANNEL" >$UPDATE_CHANNEL_FILE + shift ;; --) shift diff --git a/src/setup.sh b/src/setup.sh index ba22697..26783a9 100755 --- a/src/setup.sh +++ b/src/setup.sh @@ -26,6 +26,7 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi # MAIN SCRIPT #======================================= +startup_version parse_commandline_args "$@" # check_interactive check_git diff --git a/updated b/updated index 12b7ee5..1a23781 100644 --- a/updated +++ b/updated @@ -1 +1 @@ -2024-01-06T21:57:56.813Z \ No newline at end of file +2024-01-07T13:33:40.615Z \ No newline at end of file