From e2407b3a920ba7ae9c6a0907c6a001a7b018f542 Mon Sep 17 00:00:00 2001 From: Evgenii Date: Sat, 11 Sep 2021 00:50:41 +0300 Subject: [PATCH] Add moonraker-telegram-bot to kiauh --- kiauh.sh | 4 ++ scripts/backup.sh | 14 +++++ scripts/functions.sh | 15 +++++ scripts/install_moonraker-telegram-bot.sh | 67 +++++++++++++++++++++++ scripts/remove.sh | 43 +++++++++++++++ scripts/status.sh | 59 ++++++++++++++++++++ scripts/ui/backup_menu.sh | 3 + scripts/ui/install_menu.sh | 8 +-- scripts/ui/main_menu.sh | 3 +- scripts/ui/remove_menu.sh | 32 ++++++----- scripts/ui/update_menu.sh | 1 + scripts/update.sh | 12 ++++ 12 files changed, 241 insertions(+), 20 deletions(-) create mode 100644 scripts/install_moonraker-telegram-bot.sh diff --git a/kiauh.sh b/kiauh.sh index 157e83a..c56cf03 100755 --- a/kiauh.sh +++ b/kiauh.sh @@ -38,6 +38,9 @@ OCTOPRINT_DIR=${HOME}/OctoPrint #KlipperScreen KLIPPERSCREEN_DIR=${HOME}/KlipperScreen KLIPPERSCREEN_ENV_DIR=${HOME}/.KlipperScreen-env +#moonraker-telegram-bot +MOONRAKERTELEGRAMBOT_DIR=${HOME}/moonraker-telegram-bot +MOONRAKERTELEGRAMBOT_ENV_DIR=${HOME}/moonraker-telegram-bot-env #misc INI_FILE=${HOME}/.kiauh.ini BACKUP_DIR=${HOME}/kiauh-backups @@ -48,6 +51,7 @@ ARKSINE_REPO=https://github.com/Arksine/klipper.git DMBUTYUGIN_REPO=https://github.com/dmbutyugin/klipper.git DWC2FK_REPO=https://github.com/Stephan3/dwc2-for-klipper-socket.git KLIPPERSCREEN_REPO=https://github.com/jordanruthe/KlipperScreen.git +NLEF_REPO=https://github.com/nlef/moonraker-telegram-bot.git #branches BRANCH_SCURVE_SMOOTHING=dmbutyugin/scurve-smoothing BRANCH_SCURVE_SHAPING=dmbutyugin/scurve-shaping diff --git a/scripts/backup.sh b/scripts/backup.sh index 305d429..afd3ac5 100755 --- a/scripts/backup.sh +++ b/scripts/backup.sh @@ -179,3 +179,17 @@ backup_klipperscreen(){ ERROR_MSG=" Can't backup KlipperScreen directory!\n Not found!" fi } + +backup_klipperscreen(){ + if [ -d $MOONRAKERTELEGRAMBOT_DIR ] ; then + status_msg "Creating moonraker-telegram-bot backup ..." + check_for_backup_dir + get_date + status_msg "Timestamp: $current_date" + mkdir -p $BACKUP_DIR/moonraker-telegram-bot-backups/"$current_date" + cp -r $MOONRAKERTELEGRAMBOT_DIR $_ + ok_msg "Backup complete!" + else + ERROR_MSG=" Can't backup KlipperScreen directory!\n Not found!" + fi +} diff --git a/scripts/functions.sh b/scripts/functions.sh index 455ebe5..8b31b75 100755 --- a/scripts/functions.sh +++ b/scripts/functions.sh @@ -270,6 +270,21 @@ restart_klipperscreen(){ sudo systemctl restart KlipperScreen && ok_msg "KlipperScreen Service restarted!" } +start_moonraker-telegram-bot(){ + status_msg "Starting moonraker-telegram-bot Service ..." + sudo systemctl start moonraker-telegram-bot && ok_msg "moonraker-telegram-bot Service started!" +} + +stop_moonraker-telegram-bot(){ + status_msg "Stopping moonraker-telegram-bot Service ..." + sudo systemctl stop moonraker-telegram-bot && ok_msg "moonraker-telegram-bot Service stopped!" +} + +restart_moonraker-telegram-bot(){ + status_msg "Restarting moonraker-telegram-bot Service ..." + sudo systemctl restart moonraker-telegram-bot && ok_msg "moonraker-telegram-bot Service restarted!" +} + restart_nginx(){ if [ "$(systemctl list-units --full -all -t service --no-legend | grep -F "nginx.service")" ]; then status_msg "Restarting NGINX Service ..." diff --git a/scripts/install_moonraker-telegram-bot.sh b/scripts/install_moonraker-telegram-bot.sh new file mode 100644 index 0000000..b8437ad --- /dev/null +++ b/scripts/install_moonraker-telegram-bot.sh @@ -0,0 +1,67 @@ +install_moonraker-telegram-bot(){ + source_kiauh_ini + system_check_moonraker-telegram-bot + #ask user for customization + get_user_selections_moonraker-telegram-bot + #moonraker-telegram-bot main installation + moonraker-telegram-bot_setup + #execute customizations + symlinks_moonraker-telegram-bot + #after install actions + restart_moonraker-telegram-bot +} + +system_check_moonraker-telegram-bot(){ + source_kiauh_ini + if [ ! -e $klipper_cfg_loc/telegram.log ]; then + MOONRAKERTELEGRAMBOT_SL_FOUND="false" + else + MOONRAKERTELEGRAMBOT_SL_FOUND="true" + fi +} + +get_user_selections_moonraker-telegram-bot(){ + #user selection for telegram.log symlink + if [ "$KMOONRAKERTELEGRAMBOT_SL_FOUND" = "false" ]; then + while true; do + echo + read -p "${cyan}###### Create telegram.log symlink? (y/N):${default} " yn + case "$yn" in + Y|y|Yes|yes) + echo -e "###### > Yes" + SEL_MTBLOG_SL="true" + break;; + N|n|No|no|"") + echo -e "###### > No" + SEL_MTBLOG_SL="false" + break;; + *) + print_unkown_cmd + print_msg && clear_msg;; + esac + done + fi +} + +moonraker-telegram-bot_setup(){ + dep=(wget curl unzip dfu-util) + dependency_check + status_msg "Downloading moonraker-telegram-bot ..." + #force remove existing moonraker-telegram-bot dir + [ -d $MOONRAKERTELEGRAMBOT_DIR ] && rm -rf $MOONRAKERTELEGRAMBOT_DIR + #clone into fresh moonraker-telegram-bot dir + cd ${HOME} && git clone $MOONRAKERTELEGRAMBOT_REPO + ok_msg "Download complete!" + status_msg "Installing moonraker-telegram-bot ..." + $MOONRAKERTELEGRAMBOT_DIR/install.sh + echo; ok_msg "moonraker-telegram-bot successfully installed!" +} + +symlinks_moonraker-telegram-bot(){ + #create a telegram.log symlink in klipper_config-dir + if [ "$SEL_MTBLOG_SL" = "true" ] && [ ! -e $klipper_cfg_loc/telegram.log ]; then + status_msg "Creating telegram.log symlink ..." + ln -s /tmp/telegram.log $klipper_cfg_loc + ok_msg "Symlink created!" + fi +} diff --git a/scripts/remove.sh b/scripts/remove.sh index 604fe42..ed4f4d9 100755 --- a/scripts/remove.sh +++ b/scripts/remove.sh @@ -387,6 +387,49 @@ remove_klipperscreen(){ CONFIRM_MSG="KlipperScreen successfully removed!" } +remove_moonraker-telegram-bot(){ + source_kiauh_ini + + ### remove moonraker-telegram-bot dir + if [ -d $MOONRAKERTELEGRAMBOT_DIR ]; then + status_msg "Removing moonraker-telegram-bot directory ..." + rm -rf $MOONRAKERTELEGRAMBOT_DIR && ok_msg "Directory removed!" + fi + + ### remove moonraker-telegram-bot VENV dir + if [ -d $MOONRAKERTELEGRAMBOT_ENV_DIR ]; then + status_msg "Removing moonraker-telegram-bot VENV directory ..." + rm -rf $MOONRAKERTELEGRAMBOT_ENV_DIR && ok_msg "Directory removed!" + fi + + ### remove moonraker-telegram-bot service + if [ -e /etc/systemd/system/moonraker-telegram-bot.service ]; then + status_msg "Removing moonraker-telegram-bot service ..." + sudo systemctl stop moonraker-telegram-bot + sudo systemctl disable moonraker + sudo rm -f $SYSTEMDDIR/moonraker-telegram-bot.service + ###reloading units + sudo systemctl daemon-reload + sudo systemctl reset-failed + ok_msg "moonraker-telegram-bot Service removed!" + fi + + ### remove moonraker-telegram-bot log + if [ -e /tmp/telegram.log ]; then + status_msg "Removing moonraker-telegram-bot log file ..." + rm -f /tmp/telegram.log && ok_msg "File removed!" + fi + + ### remove moonraker-telegram-bot log symlink in config dir + + if [ -e $klipper_cfg_loc/telegram.log ]; then + status_msg "Removing moonraker-telegram-bot log symlink ..." + rm -f $klipper_cfg_loc/telegram.log && ok_msg "File removed!" + fi + + CONFIRM_MSG="moonraker-telegram-bot successfully removed!" +} + remove_mjpg-streamer(){ ### remove MJPG-Streamer service if [ -e $SYSTEMDDIR/webcamd.service ]; then diff --git a/scripts/status.sh b/scripts/status.sh index cee1b04..390b94b 100755 --- a/scripts/status.sh +++ b/scripts/status.sh @@ -228,6 +228,36 @@ klipperscreen_status(){ fi } +moonraker-telegram-bot_status(){ + mtbcount=0 + moonraker-telegram-bot_data=( + SERVICE + $MOONRAKERTELEGRAMBOT_DIR + $MOONRAKERTELEGRAMBOT_ENV_DIR + ) + + ### count amount of moonraker-telegram-bot_data service files in /etc/systemd/system + SERVICE_FILE_COUNT=$(ls /etc/systemd/system | grep -E "moonraker-telegram-bot" | wc -l) + + ### remove the "SERVICE" entry from the moonraker-telegram-bot_data array if a moonraker-telegram-bot service is installed + [ $SERVICE_FILE_COUNT -gt 0 ] && unset moonraker-telegram-bot_data[0] + + #count+1 for each found data-item from array + for mtbd in "${moonraker-telegram-bot_data[@]}" + do + if [ -e $mtbd ]; then + mtbcount=$(expr $mtbcount + 1) + fi + done + if [ "$mtbccount" == "${#moonraker-telegram-bot_data[*]}" ]; then + MOONRAKERTELEGRAMBOT_STATUS="${green}Installed!${default} " + elif [ "$klsccount" == 0 ]; then + MOONRAKERTELEGRAMBOT_STATUS="${red}Not installed!${default} " + else + MOONRAKERTELEGRAMBOT_STATUS="${yellow}Incomplete!${default} " + fi +} + ############################################################# ############################################################# @@ -517,6 +547,34 @@ compare_klipperscreen_versions(){ fi } +read_moonraker-telegram-bot_versions(){ + if [ -d $MOONRAKERTELEGRAMBOT_DIR ] && [ -d $MOONRAKERTELEGRAMBOT_DIR/.git ]; then + cd $MOONRAKERTELEGRAMBOT_DIR + git fetch origin master -q + LOCAL_MOONRAKERTELEGRAMBOT_COMMIT=$(git describe HEAD --always --tags | cut -d "-" -f 1,2) + REMOTE_MOONRAKERTELEGRAMBOT_COMMIT=$(git describe origin/master --always --tags | cut -d "-" -f 1,2) + else + LOCAL_MOONRAKERTELEGRAMBOT_COMMIT=$NONE + REMOTE_MOONRAKERTELEGRAMBOT_COMMIT=$NONE + fi +} + +compare_moonraker-telegram-bot_versions(){ + unset MOONRAKERTELEGRAMBOT_UPDATE_AVAIL + read_moonraker-telegram-bot_versions + if [ "$LOCAL_MOONRAKERTELEGRAMBOT_COMMIT" != "$REMOTE_MOONRAKERTELEGRAMBOT_COMMIT" ]; then + LOCAL_MOONRAKERTELEGRAMBOT_COMMIT="${yellow}$(printf "%-12s" "$LOCAL_MOONRAKERTELEGRAMBOT_COMMIT")${default}" + REMOTE_MOONRAKERTELEGRAMBOT_COMMIT="${green}$(printf "%-12s" "$REMOTE_MOONRAKERTELEGRAMBOT_COMMIT")${default}" + MOONRAKERTELEGRAMBOT_UPDATE_AVAIL="true" + update_arr+=(update_moonraker-telegram-bot) + else + LOCAL_MOONRAKERTELEGRAMBOT_COMMIT="${green}$(printf "%-12s" "$LOCAL_MOONRAKERTELEGRAMBOT_COMMIT")${default}" + REMOTE_MOONRAKERTELEGRAMBOT_COMMIT="${green}$(printf "%-12s" "$REMOTE_MOONRAKERTELEGRAMBOT_COMMIT")${default}" + MOONRAKERTELEGRAMBOT_UPDATE_AVAIL="false" + fi +} + + ############################################################# ############################################################# @@ -533,4 +591,5 @@ ui_print_versions(){ compare_mainsail_versions compare_fluidd_versions compare_klipperscreen_versions + compare_moonraker-telegram-bot } diff --git a/scripts/ui/backup_menu.sh b/scripts/ui/backup_menu.sh index 16755a1..82f9e87 100755 --- a/scripts/ui/backup_menu.sh +++ b/scripts/ui/backup_menu.sh @@ -14,6 +14,7 @@ backup_ui(){ echo -e "| 2) [Moonraker] | Other: | " echo -e "| 3) [Moonraker DB] | 7) [Duet Web Control] | " echo -e "| | 8) [OctoPrint] | " + echo -e "| | 9) [MoonrakerTelegramBot] | " quit_footer } @@ -40,6 +41,8 @@ backup_menu(){ do_action "backup_dwc2" "backup_ui";; 8) do_action "backup_octoprint" "backup_ui";; + 9) + do_action "backup_moonraker-telegram-bot" "backup_ui";; Q|q) clear; main_menu; break;; *) diff --git a/scripts/ui/install_menu.sh b/scripts/ui/install_menu.sh index e5a03f7..94e6f44 100755 --- a/scripts/ui/install_menu.sh +++ b/scripts/ui/install_menu.sh @@ -12,10 +12,10 @@ install_ui(){ echo -e "| Klipper API: | Other: | " echo -e "| 2) [Moonraker] | 6) [Duet Web Control] | " echo -e "| | 7) [OctoPrint] | " - echo -e "| Klipper Webinterface: | | " - echo -e "| 3) [Mainsail] | Webcam: | " - echo -e "| 4) [Fluidd] | 8) [MJPG-Streamer] | " - echo -e "| | | " + echo -e "| Klipper Webinterface: | 9) [MoonrakerTelegramBot]| " + echo -e "| 3) [Mainsail] | | " + echo -e "| 4) [Fluidd] | Webcam: | " + echo -e "| | 8) [MJPG-Streamer] | " quit_footer } diff --git a/scripts/ui/main_menu.sh b/scripts/ui/main_menu.sh index cd26827..624c6d7 100755 --- a/scripts/ui/main_menu.sh +++ b/scripts/ui/main_menu.sh @@ -11,7 +11,8 @@ main_ui(){ echo -e "| 4) [Advanced] | Mainsail: $MAINSAIL_STATUS|" echo -e "| 5) [Backup] | Fluidd: $FLUIDD_STATUS|" echo -e "| | KlipperScreen: $KLIPPERSCREEN_STATUS|" - echo -e "| 6) [Settings] | |" + echo -e "| 6) [Settings] | MTelegramBot: $MOONRAKERTELEGRAMBOT_STATUS|" + echo -e "| | |" echo -e "| | DWC2: $DWC2_STATUS|" echo -e "| ${cyan}$KIAUH_VER${default}| Octoprint: $OCTOPRINT_STATUS|" quit_footer diff --git a/scripts/ui/remove_menu.sh b/scripts/ui/remove_menu.sh index 48eb07d..a4d8c77 100755 --- a/scripts/ui/remove_menu.sh +++ b/scripts/ui/remove_menu.sh @@ -1,22 +1,22 @@ remove_ui(){ top_border - echo -e "| ${red}~~~~~~~~~~~~~~ [ Remove Menu ] ~~~~~~~~~~~~~~${default} | " + echo -e "| ${red}~~~~~~~~~~~~~~ [ Remove Menu ] ~~~~~~~~~~~~~~${default} | " hr - echo -e "| Directories which remain untouched: | " - echo -e "| --> Your printer configuration directory | " - echo -e "| --> ~/kiauh-backups | " - echo -e "| You need remove them manually if you wish so. | " + echo -e "| Directories which remain untouched: | " + echo -e "| --> Your printer configuration directory | " + echo -e "| --> ~/kiauh-backups | " + echo -e "| You need remove them manually if you wish so. | " hr - echo -e "| Firmware: | Touchscreen GUI: | " - echo -e "| 1) [Klipper] | 5) [KlipperScreen] | " - echo -e "| | | " - echo -e "| Klipper API: | Other: | " - echo -e "| 2) [Moonraker] | 6) [Duet Web Control] | " - echo -e "| | 7) [OctoPrint] | " - echo -e "| Klipper Webinterface: | 8) [NGINX] | " - echo -e "| 3) [Mainsail] | 9) [MJPG-Streamer] | " - echo -e "| 4) [Fluidd] | | " - echo -e "| | | " + echo -e "| Firmware: | Touchscreen GUI: | " + echo -e "| 1) [Klipper] | 5) [KlipperScreen] | " + echo -e "| | | " + echo -e "| Klipper API: | Other: | " + echo -e "| 2) [Moonraker] | 6) [Duet Web Control] | " + echo -e "| | 7) [OctoPrint] | " + echo -e "| Klipper Webinterface: | 8) [NGINX] | " + echo -e "| 3) [Mainsail] | 9) [MJPG-Streamer] | " + echo -e "| 4) [Fluidd] | 10) [MoonrakerTelegramBot] | " + echo -e "| | | " quit_footer } @@ -43,6 +43,8 @@ remove_menu(){ do_action "remove_nginx" "remove_ui";; 9) do_action "remove_mjpg-streamer" "remove_ui";; + 10) + do_action "remove_moonraker-telegram-bot" "remove_ui";; Q|q) clear; main_menu; break;; *) diff --git a/scripts/ui/update_menu.sh b/scripts/ui/update_menu.sh index 5306836..289900f 100755 --- a/scripts/ui/update_menu.sh +++ b/scripts/ui/update_menu.sh @@ -21,6 +21,7 @@ update_ui(){ echo -e "| Other: |---------------|--------------| " echo -e "| 6) [DWC2-for-Klipper] | $LOCAL_DWC2FK_COMMIT | $REMOTE_DWC2FK_COMMIT | " echo -e "| 7) [DWC2 Web UI] | $DWC2_LOCAL_VER | $DWC2_REMOTE_VER | " + echo -e "| 5) [MTelegramBot] | $LOCAL_MOONRAKERTELEGRAMBOT_COMMIT | $REMOTE_MOONRAKERTELEGRAMBOT_COMMIT | " echo -e "| |------------------------------| " echo -e "| 8) [System] | $DISPLAY_SYS_UPDATE | " quit_footer diff --git a/scripts/update.sh b/scripts/update.sh index 616a541..5372a58 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -39,6 +39,9 @@ update_all(){ if [ "$KLIPPERSCREEN_UPDATE_AVAIL" = "true" ]; then echo -e "| ${cyan}● KlipperScreen${default} |" fi + if [ "$MOONRAKERTELEGRAMBOT_UPDATE_AVAIL" = "true" ]; then + echo -e "| ${cyan}● moonraker-telegram-bot${default} |" + fi if [ "$SYS_UPDATE_AVAIL" = "true" ]; then echo -e "| ${cyan}● System${default} |" fi @@ -170,6 +173,15 @@ update_klipperscreen(){ start_klipperscreen } +update_moonraker-telegram-bot(){ + stop_moonraker-telegram-bot + cd $MOONRAKERTELEGRAMBOT_DIR + git pull + ./install.sh + ok_msg "Update complete!" + start_moonraker-telegram-bot +} + update_system(){ status_msg "Updating System ..." sudo apt-get update && sudo apt-get upgrade -y