From 0f72aeb99bd5e242eef5bfd07b77d99e26c6fb56 Mon Sep 17 00:00:00 2001 From: Dominik Dzienia Date: Mon, 17 Jul 2023 12:41:56 +0000 Subject: [PATCH] Querying for API key --- lib.sh | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- setup.sh | 24 ++++++++---- 2 files changed, 121 insertions(+), 12 deletions(-) diff --git a/lib.sh b/lib.sh index 2300403..a4c8e91 100644 --- a/lib.sh +++ b/lib.sh @@ -2,7 +2,7 @@ # CONFIG #======================================= -REQUIRED_NODE_VERSION=20.0.0 +REQUIRED_NODE_VERSION=18.0.0 LOGTO=/dev/null #======================================= @@ -17,10 +17,29 @@ abort() { } export NEWT_COLORS=' -window=,red -border=white,red -textbox=white,red -button=black,white + root=white,black + border=black,lightgray + window=lightgray,lightgray + shadow=black,gray + title=black,lightgray + button=black,cyan + actbutton=white,cyan + compactbutton=black,lightgray + checkbox=black,lightgray + actcheckbox=lightgray,cyan + entry=black,lightgray + disentry=gray,lightgray + label=black,lightgray + listbox=black,lightgray + actlistbox=black,cyan + sellistbox=lightgray,black + actsellistbox=lightgray,black + textbox=black,lightgray + acttextbox=black,cyan + emptyscale=,gray + fullscale=,cyan + helpline=white,black + roottext=lightgrey,black ' #======================================= @@ -75,6 +94,14 @@ emoji_unicorn="\U1F984" emoji_check="\U2705" emoji_ok="\U1F197" +uni_bullet=" $(printf '\u2022') " +uni_bullet_pad=" " + +uni_exit=" $(printf '\U274C') Wyjdź " +uni_start=" $(printf '\U2705') Zaczynamy " +uni_reenter=" $(printf '\U21AA') Podaj " +uni_excl="$(printf '\U203C')" + #======================================= # UTILS #======================================= @@ -170,6 +197,16 @@ add_if_not_ok() { fi } +add_if_not_ok_cmd() { + RESULT=$? + if [ $RESULT -eq 0 ]; then + msgcheck "$1 installed!" + else + ohai "Installing $1..." + eval $2 >/dev/null 2>&1 && msgcheck "Installing $1 successfull" + fi +} + check_tig() { tig -v >/dev/null 2>&1 add_if_not_ok "Tig" "tig" @@ -195,6 +232,11 @@ check_jq() { add_if_not_ok "JSON parser" "jq" } +check_dotenv() { + dotenv-tool -v >/dev/null 2>&1 + add_if_not_ok_cmd "dotenv-tool" "npm install -g dotenv-tool --registry https://npm.dzienia.pl" +} + setup_packages() { if:IsSet packages && ohai "Installing packages: ${packages[@]}" && apt-get -yq install ${packages[@]} >/dev/null 2>&1 && msgcheck "Install successfull" || msgok "All required packages already installed" } @@ -212,3 +254,60 @@ setup_node() { apt-get install -y nodejs >/dev/null 2>&1 fi } + +exit_on_no_cancel() { + if [ $? -eq 1 ]; then + exit 0 + fi +} + +MIKRUS_APIKEY='' +MIKRUS_HOST='' + +prompt_mikrus_host() { + if ! [[ "$MIKRUS_HOST" =~ [a-z][0-9]{3} ]]; then + MIKRUS_HOST=`hostname` + while : ; do + if [[ "$MIKRUS_HOST" =~ [a-z][0-9]{3} ]]; then + break; + else + MIKRUS_NEW_HOST=$(whiptail --title "Podaj identyfikator serwera" --inputbox "\nNie udało się wykryć identyfikatora serwera,\npodaj go poniżej ręcznie.\n\nIdentyfikator składa się z jednej litery i trzech cyfr\n" 13 65 3>&1 1>&2 2>&3) + exit_on_no_cancel + if [[ "$MIKRUS_NEW_HOST" =~ [a-z][0-9]{3} ]]; then + MIKRUS_HOST=$MIKRUS_NEW_HOST + break; + else + whiptail --title "$uni_excl Nieprawidłowy identyfikator serwera $uni_excl" --yesno "Podany identyfikator serwera ma nieprawidłowy format.\n\nChcesz podać go ponownie?" --yes-button "$uni_reenter" --no-button "$uni_exit" 12 70 + exit_on_no_cancel + fi + fi + done + fi +} + +prompt_mikrus_apikey() { + if ! [[ "$MIKRUS_APIKEY" =~ [0-9a-fA-F]{40} ]]; then + whiptail --title "Przygotuj klucz API" --msgbox "Do zarządzania mikrusem [$MIKRUS_HOST] potrzebujemy klucz API.\n\n${uni_bullet}otwórz nową zakładkę w przeglądarce,\n${uni_bullet}wejdź do panelu administracyjnego swojego Mikr.us-a,\n${uni_bullet}otwórz sekcję API, pod adresem:\n\n${uni_bullet_pad}https://mikr.us/panel/?a=api\n\n${uni_bullet}skopiuj do schowka wartość klucza API" --ok-button "Mam!" 16 70 + exit_on_no_cancel + + while : ; do + MIKRUS_APIKEY=$(whiptail --title "Podaj klucz API" --inputbox "\nWpisz klucz API. Jeśli masz go skopiowanego w schowku,\nkliknij prawym przyciskiem i wybierz z menu:" 11 65 3>&1 1>&2 2>&3) + exit_on_no_cancel + if [[ "$MIKRUS_APIKEY" =~ [0-9a-fA-F]{40} ]]; then + MIKRUS_INFO_HOST=$(curl -s -d "srv=$MIKRUS_HOST&key=$MIKRUS_APIKEY" -X POST https://api.mikr.us/info | jq -r .server_id) + + if [[ "$MIKRUS_INFO_HOST" == "$MIKRUS_HOST" ]]; then + msgcheck "Mikrus OK" + break + else + whiptail --title "$uni_excl Nieprawidłowy API key $uni_excl" --yesno "Podany API key wydaje się mieć dobry format, ale NIE DZIAŁA!\nMoże to literówka lub podano API KEY z innego Mikr.us-a?.\n\nPotrzebujesz API KEY serwera [$MIKRUS_HOST]\n\nChcesz podać go ponownie?" --yes-button "$uni_reenter" --no-button "$uni_exit" 12 70 + exit_on_no_cancel + fi + else + whiptail --title "$uni_excl Nieprawidłowy API key $uni_excl" --yesno "Podany API key ma nieprawidłowy format.\n\nChcesz podać go ponownie?" --yes-button "$uni_reenter" --no-button "$uni_exit" 12 70 + exit_on_no_cancel + fi + done + fi +} + diff --git a/setup.sh b/setup.sh index 1f924a8..dc602ff 100755 --- a/setup.sh +++ b/setup.sh @@ -12,10 +12,20 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi # MAIN SCRIPT #======================================= -setup_update_repo -check_git -check_docker -check_docker_compose -check_jq -setup_packages -setup_node + +#setup_update_repo +#check_git +#check_docker +#check_docker_compose +#check_jq +#check_dotenv +#setup_packages +#setup_node + +whiptail --title "Witamy" --yesno "Ten skrypt zainstaluje Nightscout na bieżącym serwerze mikr.us\n\nJeśli na tym serwerze istnieje już instalacja Nightscout - ten skrypt spróbuje ją przekonfigurować" --yes-button "$uni_start" --no-button "$uni_exit" 12 70 +exit_on_no_cancel + +prompt_mikrus_host +prompt_mikrus_apikey + +whiptail --msgbox "Gotowe!" 5 12