#!/bin/sh

set -e

function remove_creality_web_interface_message(){
  top_line
  title 'Remove Creality Web Interface' "${yellow}"
  inner_line
  hr
  echo -e " │ ${cyan}This allows to remove Creality Web Interface and replace     ${white}│"
  echo -e " │ ${cyan}it with Fluidd or Mainsail on port 80.                       ${white}│"
  hr
  bottom_line
}

function restore_creality_web_interface_message(){
  top_line
  title 'Restore Creality Web Interface' "${yellow}"
  inner_line
  hr
  echo -e " │ ${cyan}This allows to restore Creality Web Interface on port 80.    ${white}│"
  hr
  bottom_line
}

function remove_creality_web_interface(){
  remove_creality_web_interface_message
  local yn
  while true; do
    remove_msg "Creality Web Interface" yn
    case "${yn}" in
      Y|y)
        echo -e "${white}"
        if [ -d "$FLUIDD_FOLDER" ] && [ ! -d "$MAINSAIL_FOLDER" ]; then
          echo -e "Info: Applying changes..."
          if [ "$model" = "3V3" ]; then
            sed -i '/listen 4408 default_server;/a \        listen 80;' /etc/nginx/nginx.conf
          else
            sed -i '/listen 4408 default_server;/a \        listen 80;' /usr/data/nginx/nginx/nginx.conf
          fi
          echo -e "Info: Disabling files..."
          if [ -f /usr/bin/web-server ]; then
            mv /usr/bin/web-server /usr/bin/web-server.disabled
          fi
          if [ -f /usr/bin/Monitor ]; then
            mv /usr/bin/Monitor /usr/bin/Monitor.disabled
          fi
          echo -e "Info: Stopping services..."
          set +e
          killall -q Monitor
          killall -q web-server
          set -e
          echo -e "Info: Restarting Nginx service..."
          restart_nginx
          ok_msg "Creality Web Interface has been removed successfully!"
          echo -e " ${white}You can now connect to Fluidd Web Interface with ${yellow}http://$(check_ipaddress)${white}"
        elif [ ! -d "$FLUIDD_FOLDER" ] && [ -d "$MAINSAIL_FOLDER" ]; then
          echo -e "Info: Applying changes..."
          if [ "$model" = "3V3" ]; then
            sed -i '/listen 4409 default_server;/a \        listen 80;' /etc/nginx/nginx.conf
          else
            sed -i '/listen 4409 default_server;/a \        listen 80;' /usr/data/nginx/nginx/nginx.conf
          fi
          echo -e "Info: Disabling files..."
          if [ -f /usr/bin/web-server ]; then
            mv /usr/bin/web-server /usr/bin/web-server.disabled
          fi
          if [ -f /usr/bin/Monitor ]; then
            mv /usr/bin/Monitor /usr/bin/Monitor.disabled
          fi
          echo -e "Info: Stopping services..."
          set +e
          killall -q Monitor
          killall -q web-server
          set -e
          echo -e "Info: Restarting Nginx service..."
          restart_nginx
          ok_msg "Creality Web Interface has been removed successfully!"
          echo -e " ${white}You can now connect to Mainsail Web Interface with ${yellow}http://$(check_ipaddress)${white}"
        elif [ -d "$FLUIDD_FOLDER" ] && [ -d "$MAINSAIL_FOLDER" ]; then
          local interface_choice
          while true; do
            read -p " ${white}Which Web Interface do you want to set as default (on port 80)? (${yellow}fluidd${white}/${yellow}mainsail${white}): ${yellow}" interface_choice
            case "${interface_choice}" in
              FLUIDD|fluidd)
                echo -e "${white}"
                echo -e "Info: Applying changes..."
                if [ "$model" = "3V3" ]; then
                  sed -i '/listen 4408 default_server;/a \        listen 80;' /etc/nginx/nginx.conf
                else
                  sed -i '/listen 4408 default_server;/a \        listen 80;' /usr/data/nginx/nginx/nginx.conf
                fi
                echo -e "Info: Disabling files..."
                if [ -f /usr/bin/web-server ]; then
                  mv /usr/bin/web-server /usr/bin/web-server.disabled
                fi
                if [ -f /usr/bin/Monitor ]; then
                  mv /usr/bin/Monitor /usr/bin/Monitor.disabled
                fi
                echo -e "Info: Stopping services..."
                set +e
                killall -q Monitor
                killall -q web-server
                set -e
                echo -e "Info: Restarting Nginx service..."
                restart_nginx
                ok_msg "Creality Web Interface has been removed successfully!"
                echo -e "   You can now connect to Fluidd Web Interface with ${yellow}http://$(check_ipaddress) ${white}or ${yellow}http://$(check_ipaddress):4408${white}"
                break;;
              MAINSAIL|mainsail)
                echo -e "${white}"
                echo -e "Info: Applying changes..."
                if [ "$model" = "3V3" ]; then
                  sed -i '/listen 4409 default_server;/a \        listen 80;' /etc/nginx/nginx.conf
                else
                  sed -i '/listen 4409 default_server;/a \        listen 80;' /usr/data/nginx/nginx/nginx.conf
                fi
                echo -e "Info: Disabling files..."
                if [ -f /usr/bin/web-server ]; then
                  mv /usr/bin/web-server /usr/bin/web-server.disabled
                fi
                if [ -f /usr/bin/Monitor ]; then
                  mv /usr/bin/Monitor /usr/bin/Monitor.disabled
                fi
                echo -e "Info: Stopping services..."
                set +e
                killall -q Monitor
                killall -q web-server
                set -e
                echo -e "Info: Restarting Nginx service..."
                restart_nginx
                ok_msg "Creality Web Interface has been removed successfully!"
                echo -e "   You can now connect to Mainsail Web Interface with ${yellow}http://$(check_ipaddress) ${white}or ${yellow}http://$(check_ipaddress):4409${white}"
                break;;
              *)
                error_msg "Please select a correct choice!";;
            esac
          done
        fi
        return;;
      N|n)
        error_msg "Deletion canceled!"
        return;;
      *)
        error_msg "Please select a correct choice!";;
    esac
  done
}

function restore_creality_web_interface(){
  restore_creality_web_interface_message
  local yn
  while true; do
    restore_msg "Creality Web Interface" yn
    case "${yn}" in
      Y|y)
        echo -e "${white}"
        echo -e "Info: Restoring changes..."
        if [ "$model" = "3V3" ]; then
          sed -i '/listen 80;/d' /etc/nginx/nginx.conf
        else
          sed -i '/listen 80;/d' /usr/data/nginx/nginx/nginx.conf
        fi
        echo -e "Info: Restoring files..."
        if [ -f /usr/bin/web-server.disabled ] && [ -f "$INITD_FOLDER"/S99start_app ]; then
          mv /usr/bin/web-server.disabled /usr/bin/web-server
        fi
        if [ -f /usr/bin/Monitor.disabled ] && [ ! -d "$GUPPY_SCREEN_FOLDER" ]; then
          mv /usr/bin/Monitor.disabled /usr/bin/Monitor
        fi
        echo -e "Info: Restarting services..."
        restart_nginx
        set +e
        killall -q Monitor
        killall -q web-server
        set -e
        if [ -f /usr/bin/web-server ] && [ -f "$INITD_FOLDER"/S99start_app ]; then
          /usr/bin/web-server > /dev/null 2>&1 &
        fi
        if [ -f /usr/bin/Monitor ] && [ ! -d "$GUPPY_SCREEN_FOLDER" ]; then
          /usr/bin/Monitor > /dev/null 2>&1 &
        fi
        ok_msg "Creality Web Interface has been restored successfully!"
        echo -e "   You can now connect to Creality Web Interface with ${yellow}http://$(check_ipaddress) ${white}and with ${yellow}Creality Print${white}."
        return;;
      N|n)
        error_msg "Restoration canceled!"
        return;;
      *)
        error_msg "Please select a correct choice!";;
    esac
  done
}