From 6f4988daac2c855146fc47ada8c1f869d972bad2 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sat, 15 Oct 2022 22:31:28 +0200 Subject: [PATCH 01/38] refactor(moonraker): remove deprecated moonraker.conf options Signed-off-by: Dominik Willner --- resources/moonraker.conf | 8 -------- 1 file changed, 8 deletions(-) diff --git a/resources/moonraker.conf b/resources/moonraker.conf index f819c5a..bdca99a 100644 --- a/resources/moonraker.conf +++ b/resources/moonraker.conf @@ -1,7 +1,6 @@ [server] host: 0.0.0.0 port: %PORT% -enable_debug_logging: False klippy_uds_address: %UDS% [authorization] @@ -22,13 +21,6 @@ cors_domains: https://app.fluidd.xyz http://app.fluidd.xyz -[database] -database_path: %DB% - -[file_manager] -config_path: %CFG% -log_path: %LOG% - [octoprint_compat] [history] -- 2.39.5 From 4dd717127a3dc7be4f3daae23ccfdfd2b55da9ee Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sat, 15 Oct 2022 22:57:52 +0200 Subject: [PATCH 02/38] refactor(moonraker): update service file and add env file Signed-off-by: Dominik Willner --- resources/moonraker.env | 1 + resources/moonraker.service | 15 +++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 resources/moonraker.env diff --git a/resources/moonraker.env b/resources/moonraker.env new file mode 100644 index 0000000..065ca7e --- /dev/null +++ b/resources/moonraker.env @@ -0,0 +1 @@ +MOONRAKER_ARGS="/home/%USER%/moonraker/moonraker/moonraker.py -d %PRINTER_DATA%" \ No newline at end of file diff --git a/resources/moonraker.service b/resources/moonraker.service index 0ef771f..ac8000f 100644 --- a/resources/moonraker.service +++ b/resources/moonraker.service @@ -1,20 +1,19 @@ -#Systemd Moonraker Service - [Unit] -Description=Systemd Moonraker Service for instance moonraker-%INST% +Description=API Server for Klipper SV1 %INST% Documentation=https://moonraker.readthedocs.io/ -After=network.target +Requires=network-online.target +After=network-online.target [Install] WantedBy=multi-user.target [Service] -Environment=MOONRAKER_CONF=%CFG% -Environment=MOONRAKER_LOG=%LOG% Type=simple -SupplementaryGroups=moonraker-admin User=%USER% +SupplementaryGroups=moonraker-admin RemainAfterExit=yes -ExecStart=%ENV%/bin/python %DIR%/moonraker/moonraker.py -c ${MOONRAKER_CONF} -l ${MOONRAKER_LOG} +WorkingDirectory=/home/%USER%/moonraker +EnvironmentFile=%ENV_FILE% +ExecStart=%ENV%/bin/python $MOONRAKER_ARGS Restart=always RestartSec=10 \ No newline at end of file -- 2.39.5 From 70850ce6e17355dd050c760ca122d94571973c46 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 00:00:47 +0200 Subject: [PATCH 03/38] refactor(klipper): update service file and add env file Signed-off-by: Dominik Willner --- resources/klipper.env | 1 + resources/klipper.service | 12 ++++-------- 2 files changed, 5 insertions(+), 8 deletions(-) create mode 100644 resources/klipper.env diff --git a/resources/klipper.env b/resources/klipper.env new file mode 100644 index 0000000..1f16a6e --- /dev/null +++ b/resources/klipper.env @@ -0,0 +1 @@ +KLIPPER_ARGS="/home/%USER%/klipper/klippy/klippy.py %CFG% -I %PRINTER% -l %LOG% -a %UDS%" \ No newline at end of file diff --git a/resources/klipper.service b/resources/klipper.service index 5bf8f5a..bc6063d 100644 --- a/resources/klipper.service +++ b/resources/klipper.service @@ -1,7 +1,5 @@ -#Systemd Klipper Service - [Unit] -Description=Systemd Klipper Service for instance klipper-%INST% +Description=Klipper 3D Printer Firmware SV1 %INST% Documentation=https://www.klipper3d.org/ After=network.target Wants=udev.target @@ -10,13 +8,11 @@ Wants=udev.target WantedBy=multi-user.target [Service] -Environment=KLIPPER_CONFIG=%CFG% -Environment=KLIPPER_LOG=%LOG% -Environment=KLIPPER_SOCKET=%UDS% -Environment=KLIPPER_PRINTER=%PRINTER% Type=simple User=%USER% RemainAfterExit=yes -ExecStart=%ENV%/bin/python %DIR%/klippy/klippy.py ${KLIPPER_CONFIG} -I ${KLIPPER_PRINTER} -l ${KLIPPER_LOG} -a ${KLIPPER_SOCKET} +WorkingDirectory=/home/%USER%/klipper +EnvironmentFile=%ENV_FILE% +ExecStart=%ENV%/bin/python $KLIPPER_ARGS Restart=always RestartSec=10 \ No newline at end of file -- 2.39.5 From 50b92c88c2b514337b88f27c9ca3982cd2102016 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 00:03:57 +0200 Subject: [PATCH 04/38] refactor(klipper): update klipper install for single instance Signed-off-by: Dominik Willner --- scripts/klipper.sh | 41 ++++++++++++++++++++++++----------------- scripts/utilities.sh | 10 ++++++++++ 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 0ce70bc..550cbb6 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -255,9 +255,8 @@ function klipper_setup() { install_klipper_packages "${python_version}" create_klipper_virtualenv "${python_version}" - ### step 3: create gcode_files and logs folder - [[ ! -d "${HOME}/gcode_files" ]] && mkdir -p "${HOME}/gcode_files" - [[ ! -d ${KLIPPER_LOGS} ]] && mkdir -p "${KLIPPER_LOGS}" + ### step 3: create required folder structure + create_required_folders ### step 4: create klipper instances create_klipper_service "${instance_arr[@]}" @@ -301,17 +300,19 @@ function clone_klipper() { } function write_klipper_service() { - local i=${1} cfg=${2} log=${3} printer=${4} uds=${5} service=${6} + local i=${1} cfg=${2} log=${3} printer=${4} uds=${5} service=${6} env_file=${7} local service_template="${KIAUH_SRCDIR}/resources/klipper.service" + local env_template="${KIAUH_SRCDIR}/resources/klipper.env" ### replace all placeholders if [[ ! -f ${service} ]]; then status_msg "Creating Klipper Service ${i} ..." sudo cp "${service_template}" "${service}" - [[ -z ${i} ]] && sudo sed -i "s| for instance klipper-%INST%||" "${service}" + sudo cp "${env_template}" "${env_file}" + [[ -z ${i} ]] && sudo sed -i "s|%INST%||" "${service}" [[ -n ${i} ]] && sudo sed -i "s|%INST%|${i}|" "${service}" - sudo sed -i "s|%USER%|${USER}|; s|%ENV%|${KLIPPY_ENV}|; s|%DIR%|${KLIPPER_DIR}|" "${service}" - sudo sed -i "s|%LOG%|${log}|; s|%CFG%|${cfg}|; s|%PRINTER%|${printer}|; s|%UDS%|${uds}|" "${service}" + sudo sed -i "s|%USER%|${USER}|g; s|%ENV%|${KLIPPY_ENV}|; s|%ENV_FILE%|${env_file}|" "${service}" + sudo sed -i "s|%USER%|${USER}|; s|%LOG%|${log}|; s|%CFG%|${cfg}|; s|%PRINTER%|${printer}|; s|%UDS%|${uds}|" "${env_file}" fi } @@ -336,17 +337,20 @@ function create_klipper_service() { local input=("${@}") local klipper_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local cfg_dir cfg log printer uds service + local printer_data cfg_dir cfg log printer uds service env_file if (( klipper_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then - cfg_dir="${KLIPPER_CONFIG}" + printer_data="${HOME}/printer_data" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" - log="${KLIPPER_LOGS}/klippy.log" + log="${HOME}/printer_data/logs/klippy.log" printer="/tmp/printer" uds="/tmp/klippy_uds" service="${SYSTEMD}/klipper.service" + env_file="${HOME}/printer_data/systemd/klipper.env" + ### write single instance service - write_klipper_service "" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" + write_klipper_service "" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" write_example_printer_cfg "${cfg_dir}" "${cfg}" ok_msg "Klipper instance created!" @@ -356,18 +360,21 @@ function create_klipper_service() { for (( i=1; i <= klipper_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - cfg_dir="${KLIPPER_CONFIG}/printer_${names[${j}]}" + printer_data="${printer_data}/printer_${names[${j}]}" else - cfg_dir="${KLIPPER_CONFIG}/${names[${j}]}" + printer_data="${printer_data}/${names[${j}]}" fi + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" - log="${KLIPPER_LOGS}/klippy-${names[${j}]}.log" + log="${printer_data}/logs/klippy.log" printer="/tmp/printer-${names[${j}]}" uds="/tmp/klippy_uds-${names[${j}]}" service="${SYSTEMD}/klipper-${names[${j}]}.service" + env_file="${printer_data}/systemd/klipper.env" + ### write multi instance service - write_klipper_service "${names[${j}]}" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" + write_klipper_service "${names[${j}]}" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" write_example_printer_cfg "${cfg_dir}" "${cfg}" ok_msg "Klipper instance 'klipper-${names[${j}]}' created!" j=$(( j + 1 )) @@ -411,8 +418,8 @@ function remove_klipper_systemd() { } function remove_klipper_logs() { - local files regex="klippy(-[0-9a-zA-Z]+)?\.log(.*)?" - files=$(find "${KLIPPER_LOGS}" -maxdepth 1 -regextype posix-extended -regex "${KLIPPER_LOGS}/${regex}" 2> /dev/null | sort) + local files regex="klippy.log(.*)?" + files=$(find "${HOME}/printer_data" -maxdepth 2 -regextype posix-extended -regex "${HOME}/printer_data/.*/${regex}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do diff --git a/scripts/utilities.sh b/scripts/utilities.sh index 88d83e3..9a58c77 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -493,6 +493,16 @@ function fetch_webui_ports() { #=================== SYSTEM =====================# #================================================# +function create_required_folders() { + [[ ! -d "${HOME}/printer_data/backup" ]] && mkdir -p "${HOME}/printer_data/backup" + [[ ! -d "${HOME}/printer_data/certs" ]] && mkdir -p "${HOME}/printer_data/certs" + [[ ! -d "${HOME}/printer_data/config" ]] && mkdir -p "${HOME}/printer_data/config" + [[ ! -d "${HOME}/printer_data/database" ]] && mkdir -p "${HOME}/printer_data/database" + [[ ! -d "${HOME}/printer_data/gcodes" ]] && mkdir -p "${HOME}/printer_data/gcodes" + [[ ! -d "${HOME}/printer_data/logs" ]] && mkdir -p "${HOME}/printer_data/logs" + [[ ! -d "${HOME}/printer_data/systemd" ]] && mkdir -p "${HOME}/printer_data/systemd" +} + function check_system_updates() { local updates_avail info_msg updates_avail=$(apt list --upgradeable 2>/dev/null | sed "1d") -- 2.39.5 From e1cd8a9018f009f998150b1e3671365a1cc0bc89 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 00:13:01 +0200 Subject: [PATCH 05/38] chore(klipper): rename and restructure Signed-off-by: Dominik Willner --- scripts/klipper.sh | 296 +++++++++++++++++++++---------------------- scripts/moonraker.sh | 2 +- scripts/octoprint.sh | 2 +- scripts/utilities.sh | 18 ++- 4 files changed, 159 insertions(+), 159 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 550cbb6..d1421b5 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -15,19 +15,6 @@ set -e #================ INSTALL KLIPPER ================# #=================================================# -### check for existing klipper service installations -function klipper_initd() { - local services - services=$(find "${INITD}" -maxdepth 1 -regextype posix-extended -regex "${INITD}/klipper(-[^0])?[0-9]*" | sort) - echo "${services}" -} - -function klipper_systemd() { - local services - services=$(find "${SYSTEMD}" -maxdepth 1 -regextype posix-extended -regex "${SYSTEMD}/klipper(-[0-9a-zA-Z]+)?.service" | sort) - echo "${services}" -} - function klipper_setup_dialog() { status_msg "Initializing Klipper installation ..." @@ -36,8 +23,8 @@ function klipper_setup_dialog() { local python_version="${1}" user_input=() local error - klipper_initd_service=$(klipper_initd) - klipper_systemd_services=$(klipper_systemd) + klipper_initd_service=$(find_klipper_initd) + klipper_systemd_services=$(find_klipper_systemd) user_input+=("${python_version}") ### return early if klipper already exists @@ -150,6 +137,106 @@ function klipper_setup_dialog() { klipper_setup "${user_input[@]}" } +function klipper_setup() { + read_kiauh_ini "${FUNCNAME[0]}" + ### index 0: python version, index 1: instance count, index 2-n: instance names (optional) + local user_input=("${@}") + local python_version="${user_input[0]}" && unset "user_input[0]" + local instance_arr=("${user_input[@]}") && unset "user_input[@]" + local custom_repo="${custom_klipper_repo}" + local custom_branch="${custom_klipper_repo_branch}" + local dep=(git) + + ### checking dependencies + dependency_check "${dep[@]}" + + ### step 1: clone klipper + clone_klipper "${custom_repo}" "${custom_branch}" + + ### step 2: install klipper dependencies and create python virtualenv + install_klipper_packages "${python_version}" + create_klipper_virtualenv "${python_version}" + + ### step 3: create required folder structure + create_required_folders + + ### step 4: configure klipper instances + configure_klipper_service "${instance_arr[@]}" + + ### step 5: enable and start all instances + do_action_service "enable" "klipper" + do_action_service "start" "klipper" + + ### step 6: check for dialout group membership + check_usergroups + + ### confirm message + local confirm="" + (( instance_arr[0] == 1 )) && confirm="Klipper has been set up!" + (( instance_arr[0] > 1 )) && confirm="${instance_arr[0]} Klipper instances have been set up!" + + print_confirm "${confirm}" && return +} + +function clone_klipper() { + local repo=${1} branch=${2} + + [[ -z ${repo} ]] && repo="${KLIPPER_REPO}" + repo=$(echo "${repo}" | sed -r "s/^(http|https):\/\/github\.com\///i; s/\.git$//") + repo="https://github.com/${repo}" + + [[ -z ${branch} ]] && branch="master" + + ### force remove existing klipper dir and clone into fresh klipper dir + [[ -d ${KLIPPER_DIR} ]] && rm -rf "${KLIPPER_DIR}" + + status_msg "Cloning Klipper from ${repo} ..." + + cd "${HOME}" || exit 1 + if git clone "${repo}" "${KLIPPER_DIR}"; then + cd "${KLIPPER_DIR}" && git checkout "${branch}" + else + print_error "Cloning Klipper from\n ${repo}\n failed!" + exit 1 + fi +} + +function create_klipper_virtualenv() { + local python_version="${1}" + + [[ ${python_version} == "python2" ]] && \ + status_msg "Installing $(python2 -V) virtual environment..." + + [[ ${python_version} == "python3" ]] && \ + status_msg "Installing $(python3 -V) virtual environment..." + + ### remove klippy-env if it already exists + [[ -d ${KLIPPY_ENV} ]] && rm -rf "${KLIPPY_ENV}" + + if [[ ${python_version} == "python2" ]]; then + if virtualenv -p python2 "${KLIPPY_ENV}"; then + "${KLIPPY_ENV}"/bin/pip install -r "${KLIPPER_DIR}"/scripts/klippy-requirements.txt + else + log_error "failure while creating python2 klippy-env" + error_msg "Creation of Klipper virtualenv failed!" + exit 1 + fi + fi + + if [[ ${python_version} == "python3" ]]; then + if virtualenv -p python3 "${KLIPPY_ENV}"; then + "${KLIPPY_ENV}"/bin/pip install -U pip + "${KLIPPY_ENV}"/bin/pip install -r "${KLIPPER_DIR}"/scripts/klippy-requirements.txt + else + log_error "failure while creating python3 klippy-env" + error_msg "Creation of Klipper virtualenv failed!" + exit 1 + fi + fi + + return +} + ### # extracts the required packages from the # install-debian.sh script and installs them @@ -200,140 +287,7 @@ function install_klipper_packages() { fi } -function create_klipper_virtualenv() { - local python_version="${1}" - - [[ ${python_version} == "python2" ]] && \ - status_msg "Installing $(python2 -V) virtual environment..." - - [[ ${python_version} == "python3" ]] && \ - status_msg "Installing $(python3 -V) virtual environment..." - - ### remove klippy-env if it already exists - [[ -d ${KLIPPY_ENV} ]] && rm -rf "${KLIPPY_ENV}" - - if [[ ${python_version} == "python2" ]]; then - if virtualenv -p python2 "${KLIPPY_ENV}"; then - "${KLIPPY_ENV}"/bin/pip install -r "${KLIPPER_DIR}"/scripts/klippy-requirements.txt - else - log_error "failure while creating python2 klippy-env" - error_msg "Creation of Klipper virtualenv failed!" - exit 1 - fi - fi - - if [[ ${python_version} == "python3" ]]; then - if virtualenv -p python3 "${KLIPPY_ENV}"; then - "${KLIPPY_ENV}"/bin/pip install -U pip - "${KLIPPY_ENV}"/bin/pip install -r "${KLIPPER_DIR}"/scripts/klippy-requirements.txt - else - log_error "failure while creating python3 klippy-env" - error_msg "Creation of Klipper virtualenv failed!" - exit 1 - fi - fi - - return -} - -function klipper_setup() { - read_kiauh_ini "${FUNCNAME[0]}" - ### index 0: python version, index 1: instance count, index 2-n: instance names (optional) - local user_input=("${@}") - local python_version="${user_input[0]}" && unset "user_input[0]" - local instance_arr=("${user_input[@]}") && unset "user_input[@]" - local custom_repo="${custom_klipper_repo}" - local custom_branch="${custom_klipper_repo_branch}" - ### checking dependencies - local dep=(git) - dependency_check "${dep[@]}" - - ### step 1: clone klipper - clone_klipper "${custom_repo}" "${custom_branch}" - - ### step 2: install klipper dependencies and create python virtualenv - install_klipper_packages "${python_version}" - create_klipper_virtualenv "${python_version}" - - ### step 3: create required folder structure - create_required_folders - - ### step 4: create klipper instances - create_klipper_service "${instance_arr[@]}" - - ### step 5: enable and start all instances - do_action_service "enable" "klipper" - do_action_service "start" "klipper" - - ### step 6: check for dialout group membership - check_usergroups - - ### confirm message - local confirm="" - (( instance_arr[0] == 1 )) && confirm="Klipper has been set up!" - (( instance_arr[0] > 1 )) && confirm="${instance_arr[0]} Klipper instances have been set up!" - - print_confirm "${confirm}" && return -} - -function clone_klipper() { - local repo=${1} branch=${2} - - [[ -z ${repo} ]] && repo="${KLIPPER_REPO}" - repo=$(echo "${repo}" | sed -r "s/^(http|https):\/\/github\.com\///i; s/\.git$//") - repo="https://github.com/${repo}" - - [[ -z ${branch} ]] && branch="master" - - ### force remove existing klipper dir and clone into fresh klipper dir - [[ -d ${KLIPPER_DIR} ]] && rm -rf "${KLIPPER_DIR}" - - status_msg "Cloning Klipper from ${repo} ..." - - cd "${HOME}" || exit 1 - if git clone "${repo}" "${KLIPPER_DIR}"; then - cd "${KLIPPER_DIR}" && git checkout "${branch}" - else - print_error "Cloning Klipper from\n ${repo}\n failed!" - exit 1 - fi -} - -function write_klipper_service() { - local i=${1} cfg=${2} log=${3} printer=${4} uds=${5} service=${6} env_file=${7} - local service_template="${KIAUH_SRCDIR}/resources/klipper.service" - local env_template="${KIAUH_SRCDIR}/resources/klipper.env" - - ### replace all placeholders - if [[ ! -f ${service} ]]; then - status_msg "Creating Klipper Service ${i} ..." - sudo cp "${service_template}" "${service}" - sudo cp "${env_template}" "${env_file}" - [[ -z ${i} ]] && sudo sed -i "s|%INST%||" "${service}" - [[ -n ${i} ]] && sudo sed -i "s|%INST%|${i}|" "${service}" - sudo sed -i "s|%USER%|${USER}|g; s|%ENV%|${KLIPPY_ENV}|; s|%ENV_FILE%|${env_file}|" "${service}" - sudo sed -i "s|%USER%|${USER}|; s|%LOG%|${log}|; s|%CFG%|${cfg}|; s|%PRINTER%|${printer}|; s|%UDS%|${uds}|" "${env_file}" - fi -} - -function write_example_printer_cfg() { - local cfg_dir=${1} cfg=${2} - local cfg_template="${KIAUH_SRCDIR}/resources/printer.cfg" - - ### create a config directory if it doesn't exist - if [[ ! -d ${cfg_dir} ]]; then - status_msg "Creating '${cfg_dir}' ..." - mkdir -p "${cfg_dir}" - fi - - ### create a minimal config if there is no printer.cfg - if [[ ! -f ${cfg} ]]; then - status_msg "Creating minimal example printer.cfg ..." - cp "${cfg_template}" "${cfg}" - fi -} - -function create_klipper_service() { +function configure_klipper_service() { local input=("${@}") local klipper_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" @@ -385,6 +339,40 @@ function create_klipper_service() { fi } +function write_klipper_service() { + local i=${1} cfg=${2} log=${3} printer=${4} uds=${5} service=${6} env_file=${7} + local service_template="${KIAUH_SRCDIR}/resources/klipper.service" + local env_template="${KIAUH_SRCDIR}/resources/klipper.env" + + ### replace all placeholders + if [[ ! -f ${service} ]]; then + status_msg "Creating Klipper Service ${i} ..." + sudo cp "${service_template}" "${service}" + sudo cp "${env_template}" "${env_file}" + [[ -z ${i} ]] && sudo sed -i "s|%INST%||" "${service}" + [[ -n ${i} ]] && sudo sed -i "s|%INST%|${i}|" "${service}" + sudo sed -i "s|%USER%|${USER}|g; s|%ENV%|${KLIPPY_ENV}|; s|%ENV_FILE%|${env_file}|" "${service}" + sudo sed -i "s|%USER%|${USER}|; s|%LOG%|${log}|; s|%CFG%|${cfg}|; s|%PRINTER%|${printer}|; s|%UDS%|${uds}|" "${env_file}" + fi +} + +function write_example_printer_cfg() { + local cfg_dir=${1} cfg=${2} + local cfg_template="${KIAUH_SRCDIR}/resources/printer.cfg" + + ### create a config directory if it doesn't exist + if [[ ! -d ${cfg_dir} ]]; then + status_msg "Creating '${cfg_dir}' ..." + mkdir -p "${cfg_dir}" + fi + + ### create a minimal config if there is no printer.cfg + if [[ ! -f ${cfg} ]]; then + status_msg "Creating minimal example printer.cfg ..." + cp "${cfg_template}" "${cfg}" + fi +} + #================================================# #================ REMOVE KLIPPER ================# #================================================# @@ -400,10 +388,10 @@ function remove_klipper_sysvinit() { } function remove_klipper_systemd() { - [[ -z $(klipper_systemd) ]] && return + [[ -z $(find_klipper_systemd) ]] && return status_msg "Removing Klipper Systemd Services ..." - for service in $(klipper_systemd | cut -d"/" -f5); do + for service in $(find_klipper_systemd | cut -d"/" -f5); do status_msg "Removing ${service} ..." sudo systemctl stop "${service}" sudo systemctl disable "${service}" @@ -527,11 +515,11 @@ function update_klipper() { function get_klipper_status() { local sf_count status py_ver - sf_count="$(klipper_systemd | wc -w)" + sf_count="$(find_klipper_systemd | wc -w)" ### detect an existing "legacy" klipper init.d installation - if [[ $(klipper_systemd | wc -w) -eq 0 ]] \ - && [[ $(klipper_initd | wc -w) -ge 1 ]]; then + if [[ $(find_klipper_systemd | wc -w) -eq 0 ]] \ + && [[ $(find_klipper_initd | wc -w) -ge 1 ]]; then sf_count=1 fi diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index a345d28..64fe277 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -60,7 +60,7 @@ function moonraker_setup_dialog() { ### return early if klipper is not installed local klipper_services - klipper_services=$(klipper_systemd) + klipper_services=$(find_klipper_systemd) if [[ -z ${klipper_services} ]]; then local error="Klipper not installed! Please install Klipper first!" log_error "Moonraker setup started without Klipper being installed. Aborting setup." diff --git a/scripts/octoprint.sh b/scripts/octoprint.sh index db118fe..7f268f1 100644 --- a/scripts/octoprint.sh +++ b/scripts/octoprint.sh @@ -25,7 +25,7 @@ function octoprint_setup_dialog() { status_msg "Initializing OctoPrint installation ..." local klipper_services - klipper_services=$(klipper_systemd) + klipper_services=$(find_klipper_systemd) if [[ -z ${klipper_services} ]]; then local error="Klipper not installed! Please install Klipper first!" log_error "OctoPrint setup started without Klipper being installed. Aborting setup." diff --git a/scripts/utilities.sh b/scripts/utilities.sh index 9a58c77..f20042a 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -255,7 +255,7 @@ function set_klipper_cfg_path() { fi fi - klipper_services=$(klipper_systemd) + klipper_services=$(find_klipper_systemd) if [[ -n ${klipper_services} ]]; then status_msg "Re-writing Klipper services to use new config file location ..." @@ -493,6 +493,18 @@ function fetch_webui_ports() { #=================== SYSTEM =====================# #================================================# +function find_klipper_initd() { + local services + services=$(find "${INITD}" -maxdepth 1 -regextype posix-extended -regex "${INITD}/klipper(-[^0])?[0-9]*" | sort) + echo "${services}" +} + +function find_klipper_systemd() { + local services + services=$(find "${SYSTEMD}" -maxdepth 1 -regextype posix-extended -regex "${SYSTEMD}/klipper(-[0-9a-zA-Z]+)?.service" | sort) + echo "${services}" +} + function create_required_folders() { [[ ! -d "${HOME}/printer_data/backup" ]] && mkdir -p "${HOME}/printer_data/backup" [[ ! -d "${HOME}/printer_data/certs" ]] && mkdir -p "${HOME}/printer_data/certs" @@ -730,7 +742,7 @@ function set_multi_instance_names() { local name local names="" - local services=$(klipper_systemd) + local services=$(find_klipper_systemd) ### # if value of 'multi_instance_names' is not an empty @@ -795,7 +807,7 @@ function get_config_folders() { cfg_dirs+=("${KLIPPER_CONFIG}/${name}") fi done - elif [[ -z ${instance_names} && $(klipper_systemd | wc -w) -gt 0 ]]; then + elif [[ -z ${instance_names} && $(find_klipper_systemd | wc -w) -gt 0 ]]; then cfg_dirs+=("${KLIPPER_CONFIG}") else cfg_dirs=() -- 2.39.5 From da771783f57f80b51d0b8f2135f27c868b139398 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 10:43:14 +0200 Subject: [PATCH 06/38] refactor(klipper): use global const for printer_data path Signed-off-by: Dominik Willner --- scripts/globals.sh | 1 + scripts/klipper.sh | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/scripts/globals.sh b/scripts/globals.sh index 5eb327b..65fe42a 100644 --- a/scripts/globals.sh +++ b/scripts/globals.sh @@ -17,6 +17,7 @@ function set_globals() { SYSTEMD="/etc/systemd/system" INITD="/etc/init.d" ETCDEF="/etc/default" + PRINTER_DATA="${HOME}/printer_data" #=================== KIAUH ====================# green=$(echo -en "\e[92m") diff --git a/scripts/klipper.sh b/scripts/klipper.sh index d1421b5..2393a42 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -291,11 +291,10 @@ function configure_klipper_service() { local input=("${@}") local klipper_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local printer_data cfg_dir cfg log printer uds service env_file + local cfg_dir cfg log printer uds service env_file if (( klipper_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then - printer_data="${HOME}/printer_data" - cfg_dir="${printer_data}/config" + cfg_dir="${PRINTER_DATA}/config" cfg="${cfg_dir}/printer.cfg" log="${HOME}/printer_data/logs/klippy.log" printer="/tmp/printer" @@ -314,18 +313,19 @@ function configure_klipper_service() { for (( i=1; i <= klipper_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - printer_data="${printer_data}/printer_${names[${j}]}" + cfg_dir="${PRINTER_DATA}/printer_${names[${j}]}/config" + log="${PRINTER_DATA}/printer_${names[${j}]}/logs/klippy.log" + env_file="${PRINTER_DATA}/printer_${names[${j}]}/systemd/klipper.env" else - printer_data="${printer_data}/${names[${j}]}" + cfg_dir="${PRINTER_DATA}/${names[${j}]}/config" + log="${PRINTER_DATA}/${names[${j}]}/logs/klippy.log" + env_file="${PRINTER_DATA}/${names[${j}]}/systemd/klipper.env" fi - cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" - log="${printer_data}/logs/klippy.log" printer="/tmp/printer-${names[${j}]}" uds="/tmp/klippy_uds-${names[${j}]}" service="${SYSTEMD}/klipper-${names[${j}]}.service" - env_file="${printer_data}/systemd/klipper.env" ### write multi instance service write_klipper_service "${names[${j}]}" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" -- 2.39.5 From f703748120dd61aaec9e115adf851ebd148aef67 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 11:07:47 +0200 Subject: [PATCH 07/38] refactor(klipper): remove whitespace if removing placeholder Signed-off-by: Dominik Willner --- scripts/klipper.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 2393a42..1ac27b5 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -349,7 +349,7 @@ function write_klipper_service() { status_msg "Creating Klipper Service ${i} ..." sudo cp "${service_template}" "${service}" sudo cp "${env_template}" "${env_file}" - [[ -z ${i} ]] && sudo sed -i "s|%INST%||" "${service}" + [[ -z ${i} ]] && sudo sed -i "s| %INST%||" "${service}" [[ -n ${i} ]] && sudo sed -i "s|%INST%|${i}|" "${service}" sudo sed -i "s|%USER%|${USER}|g; s|%ENV%|${KLIPPY_ENV}|; s|%ENV_FILE%|${env_file}|" "${service}" sudo sed -i "s|%USER%|${USER}|; s|%LOG%|${log}|; s|%CFG%|${cfg}|; s|%PRINTER%|${printer}|; s|%UDS%|${uds}|" "${env_file}" -- 2.39.5 From 5204358e41e0f101cc2fdea26a0f256145e913be Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 11:25:36 +0200 Subject: [PATCH 08/38] refactor(klipper): use global const for printer_data path Signed-off-by: Dominik Willner --- scripts/klipper.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 1ac27b5..96764bd 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -300,7 +300,7 @@ function configure_klipper_service() { printer="/tmp/printer" uds="/tmp/klippy_uds" service="${SYSTEMD}/klipper.service" - env_file="${HOME}/printer_data/systemd/klipper.env" + env_file="${PRINTER_DATA}/systemd/klipper.env" ### write single instance service write_klipper_service "" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" -- 2.39.5 From 4cd58f0f5ce3731f4795a15ee5753a184e6797fe Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 12:29:04 +0200 Subject: [PATCH 09/38] refactor(moonraker): update moonraker install for single instance Signed-off-by: Dominik Willner --- scripts/moonraker.sh | 63 ++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index 64fe277..468cc42 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -205,7 +205,7 @@ function moonraker_setup() { create_moonraker_conf "${instance_arr[@]}" ### step 4: create moonraker instances - create_moonraker_service "${instance_arr[@]}" + configure_moonraker_service "${instance_arr[@]}" ### step 5: create polkit rules for moonraker install_moonraker_polkit || true @@ -240,16 +240,18 @@ function create_moonraker_conf() { local input=("${@}") local moonraker_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local log="${KLIPPER_LOGS}" - local lan + local port lan log cfg_dir cfg db uds + + port=7125 lan="$(hostname -I | cut -d" " -f1 | cut -d"." -f1-2).0.0/16" - local port=7125 cfg_dir cfg db uds if (( moonraker_count == 1 )); then - cfg_dir="${KLIPPER_CONFIG}" + cfg_dir="${PRINTER_DATA}/config" cfg="${cfg_dir}/moonraker.conf" - db="${HOME}/.moonraker_database" + log="${PRINTER_DATA}/logs/moonraker.log" + db="${PRINTER_DATA}/database" uds="/tmp/klippy_uds" + ### write single instance config write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${log}" "${db}" "${uds}" "${lan}" @@ -259,14 +261,18 @@ function create_moonraker_conf() { for (( i=1; i <= moonraker_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - cfg_dir="${KLIPPER_CONFIG}/printer_${names[${j}]}" + cfg_dir="${PRINTER_DATA}/printer_${names[${j}]}/config" + log="${PRINTER_DATA}/printer_${names[${j}]}/logs/moonraker.log" + db="${PRINTER_DATA}/printer_${names[${j}]}/database" else - cfg_dir="${KLIPPER_CONFIG}/${names[${j}]}" + cfg_dir="${PRINTER_DATA}/${names[${j}]}/config" + log="${PRINTER_DATA}/${names[${j}]}/logs/moonraker.log" + db="${PRINTER_DATA}/${names[${j}]}/database" fi cfg="${cfg_dir}/moonraker.conf" uds="/tmp/klippy_uds-${names[${j}]}" - db="${HOME}/.moonraker_database_${names[${j}]}" + ### write multi instance config write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${log}" "${db}" "${uds}" "${lan}" port=$(( port + 1 )) @@ -287,8 +293,7 @@ function write_moonraker_conf() { if [[ ! -f ${cfg} ]]; then status_msg "Creating moonraker.conf in ${cfg_dir} ..." cp "${conf_template}" "${cfg}" - sed -i "s|%USER%|${USER}|g" "${cfg}" - sed -i "s|%CFG%|${cfg_dir}|; s|%PORT%|${port}|; s|%LOG%|${log}|; s|%DB%|${db}|; s|%UDS%|${uds}|" "${cfg}" + sed -i "s|%USER%|${USER}|g; s|%PORT%|${port}|; s|%UDS%|${uds}|" "${cfg}" # if host ip is not in the default ip ranges replace placeholder, # otherwise remove placeholder from config if ! grep -q "${lan}" "${cfg}"; then @@ -302,20 +307,22 @@ function write_moonraker_conf() { fi } -function create_moonraker_service() { +function configure_moonraker_service() { local input=("${@}") local moonraker_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local cfg_dir cfg log service + local pdata_dir cfg_dir cfg service env_file if (( moonraker_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then i="" - cfg_dir="${KLIPPER_CONFIG}" + pdata_dir="${PRINTER_DATA}" + cfg_dir="${pdata_dir}/config" cfg="${cfg_dir}/moonraker.conf" - log="${KLIPPER_LOGS}/moonraker.log" service="${SYSTEMD}/moonraker.service" + env_file="${pdata_dir}/systemd/moonraker.env" + ### write single instance service - write_moonraker_service "" "${cfg}" "${log}" "${service}" + write_moonraker_service "" "${pdata_dir}" "${cfg}" "${service}" "${env_file}" ok_msg "Moonraker instance created!" elif (( moonraker_count > 1 )) && [[ ${#names[@]} -gt 0 ]]; then @@ -324,16 +331,18 @@ function create_moonraker_service() { for (( i=1; i <= moonraker_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - cfg_dir="${KLIPPER_CONFIG}/printer_${names[${j}]}" + pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" else - cfg_dir="${KLIPPER_CONFIG}/${names[${j}]}" + pdata_dir="${PRINTER_DATA}/${names[${j}]}" fi + cfg_dir="${pdata_dir}/config" cfg="${cfg_dir}/moonraker.conf" - log="${KLIPPER_LOGS}/moonraker-${names[${j}]}.log" service="${SYSTEMD}/moonraker-${names[${j}]}.service" + env_file="${pdata_dir}/systemd/moonraker.env" + ### write multi instance service - write_moonraker_service "${names[${j}]}" "${cfg}" "${log}" "${service}" + write_moonraker_service "${names[${j}]}" "${pdata_dir}" "${cfg}" "${service}" "${env_file}" ok_msg "Moonraker instance 'moonraker-${names[${j}]}' created!" j=$(( j + 1 )) done && unset i @@ -349,18 +358,20 @@ function create_moonraker_service() { } function write_moonraker_service() { - local i=${1} cfg=${2} log=${3} service=${4} + local i=${1} pdata_dir=${2} cfg=${3} service=${4} env_file=${5} local service_template="${KIAUH_SRCDIR}/resources/moonraker.service" + local env_template="${KIAUH_SRCDIR}/resources/moonraker.env" ### replace all placeholders if [[ ! -f ${service} ]]; then status_msg "Creating Moonraker Service ${i} ..." sudo cp "${service_template}" "${service}" + sudo cp "${env_template}" "${env_file}" - [[ -z ${i} ]] && sudo sed -i "s| for instance moonraker-%INST%||" "${service}" + [[ -z ${i} ]] && sudo sed -i "s| %INST%||" "${service}" [[ -n ${i} ]] && sudo sed -i "s|%INST%|${i}|" "${service}" - sudo sed -i "s|%USER%|${USER}|; s|%ENV%|${MOONRAKER_ENV}|; s|%DIR%|${MOONRAKER_DIR}|" "${service}" - sudo sed -i "s|%CFG%|${cfg}|; s|%LOG%|${log}|" "${service}" + sudo sed -i "s|%USER%|${USER}|g; s|%ENV%|${MOONRAKER_ENV}|; s|%ENV_FILE%|${env_file}|" "${service}" + sudo sed -i "s|%USER%|${USER}|; s|%PRINTER_DATA%|${pdata_dir}|" "${env_file}" fi } @@ -454,8 +465,8 @@ function remove_moonraker_systemd() { } function remove_moonraker_logs() { - local files regex="moonraker(-[0-9a-zA-Z]+)?\.log(.*)?" - files=$(find "${KLIPPER_LOGS}" -maxdepth 1 -regextype posix-extended -regex "${KLIPPER_LOGS}/${regex}" 2> /dev/null | sort) + local files regex="moonraker.log(.*)?" + files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do -- 2.39.5 From 2346391b5475a3e5fb92b3ff735d1988618e6a0a Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 13:14:04 +0200 Subject: [PATCH 10/38] refactor(moonraker): remove unused variables Signed-off-by: Dominik Willner --- scripts/moonraker.sh | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index 468cc42..b00fd4d 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -240,20 +240,19 @@ function create_moonraker_conf() { local input=("${@}") local moonraker_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local port lan log cfg_dir cfg db uds + local port lan pdata_dir cfg_dir cfg uds port=7125 lan="$(hostname -I | cut -d" " -f1 | cut -d"." -f1-2).0.0/16" if (( moonraker_count == 1 )); then - cfg_dir="${PRINTER_DATA}/config" + pdata_dir="${PRINTER_DATA}" + cfg_dir="${pdata_dir}/config" cfg="${cfg_dir}/moonraker.conf" - log="${PRINTER_DATA}/logs/moonraker.log" - db="${PRINTER_DATA}/database" uds="/tmp/klippy_uds" ### write single instance config - write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${log}" "${db}" "${uds}" "${lan}" + write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${uds}" "${lan}" elif (( moonraker_count > 1 )); then local j=0 re="^[1-9][0-9]*$" @@ -261,20 +260,17 @@ function create_moonraker_conf() { for (( i=1; i <= moonraker_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - cfg_dir="${PRINTER_DATA}/printer_${names[${j}]}/config" - log="${PRINTER_DATA}/printer_${names[${j}]}/logs/moonraker.log" - db="${PRINTER_DATA}/printer_${names[${j}]}/database" + pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" else - cfg_dir="${PRINTER_DATA}/${names[${j}]}/config" - log="${PRINTER_DATA}/${names[${j}]}/logs/moonraker.log" - db="${PRINTER_DATA}/${names[${j}]}/database" + pdata_dir="${PRINTER_DATA}/${names[${j}]}" fi + cfg_dir="${pdata_dir}/config" cfg="${cfg_dir}/moonraker.conf" uds="/tmp/klippy_uds-${names[${j}]}" ### write multi instance config - write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${log}" "${db}" "${uds}" "${lan}" + write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${uds}" "${lan}" port=$(( port + 1 )) j=$(( j + 1 )) done && unset j @@ -285,7 +281,7 @@ function create_moonraker_conf() { } function write_moonraker_conf() { - local cfg_dir=${1} cfg=${2} port=${3} log=${4} db=${5} uds=${6} lan=${7} + local cfg_dir=${1} cfg=${2} port=${3} uds=${4} lan=${5} local conf_template="${KIAUH_SRCDIR}/resources/moonraker.conf" [[ ! -d ${cfg_dir} ]] && mkdir -p "${cfg_dir}" @@ -311,18 +307,17 @@ function configure_moonraker_service() { local input=("${@}") local moonraker_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local pdata_dir cfg_dir cfg service env_file + local pdata_dir cfg_dir service env_file if (( moonraker_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then i="" pdata_dir="${PRINTER_DATA}" cfg_dir="${pdata_dir}/config" - cfg="${cfg_dir}/moonraker.conf" service="${SYSTEMD}/moonraker.service" env_file="${pdata_dir}/systemd/moonraker.env" ### write single instance service - write_moonraker_service "" "${pdata_dir}" "${cfg}" "${service}" "${env_file}" + write_moonraker_service "" "${pdata_dir}" "${service}" "${env_file}" ok_msg "Moonraker instance created!" elif (( moonraker_count > 1 )) && [[ ${#names[@]} -gt 0 ]]; then @@ -337,12 +332,11 @@ function configure_moonraker_service() { fi cfg_dir="${pdata_dir}/config" - cfg="${cfg_dir}/moonraker.conf" service="${SYSTEMD}/moonraker-${names[${j}]}.service" env_file="${pdata_dir}/systemd/moonraker.env" ### write multi instance service - write_moonraker_service "${names[${j}]}" "${pdata_dir}" "${cfg}" "${service}" "${env_file}" + write_moonraker_service "${names[${j}]}" "${pdata_dir}" "${service}" "${env_file}" ok_msg "Moonraker instance 'moonraker-${names[${j}]}' created!" j=$(( j + 1 )) done && unset i @@ -358,7 +352,7 @@ function configure_moonraker_service() { } function write_moonraker_service() { - local i=${1} pdata_dir=${2} cfg=${3} service=${4} env_file=${5} + local i=${1} pdata_dir=${2} service=${3} env_file=${4} local service_template="${KIAUH_SRCDIR}/resources/moonraker.service" local env_template="${KIAUH_SRCDIR}/resources/moonraker.env" -- 2.39.5 From 2c9e61eeef15fd7243133e5dc2dc33c2a6492249 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 13:18:35 +0200 Subject: [PATCH 11/38] refactor(moonraker): remove env file during uninstall Signed-off-by: Dominik Willner --- scripts/moonraker.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index b00fd4d..cf3668a 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -458,6 +458,19 @@ function remove_moonraker_systemd() { ok_msg "Moonraker Services removed!" } +function remove_moonraker_env_file() { + local files regex="moonraker.env" + files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) + + if [[ -n ${files} ]]; then + for file in ${files}; do + status_msg "Removing ${file} ..." + rm -f "${file}" + ok_msg "${file} removed!" + done + fi +} + function remove_moonraker_logs() { local files regex="moonraker.log(.*)?" files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) @@ -514,6 +527,7 @@ function remove_moonraker_polkit() { function remove_moonraker() { remove_moonraker_sysvinit remove_moonraker_systemd + remove_moonraker_env_file remove_moonraker_logs remove_moonraker_api_key remove_moonraker_polkit -- 2.39.5 From 0def0eeb82ac226d29741ea06d6ff61dbae62a0f Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 13:20:57 +0200 Subject: [PATCH 12/38] refactor(klipper): remove env file during uninstall Signed-off-by: Dominik Willner --- scripts/klipper.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 96764bd..2766bcc 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -405,9 +405,22 @@ function remove_klipper_systemd() { ok_msg "Klipper Service removed!" } +function remove_klipper_env_file() { + local files regex="klipper.env" + files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) + + if [[ -n ${files} ]]; then + for file in ${files}; do + status_msg "Removing ${file} ..." + rm -f "${file}" + ok_msg "${file} removed!" + done + fi +} + function remove_klipper_logs() { local files regex="klippy.log(.*)?" - files=$(find "${HOME}/printer_data" -maxdepth 2 -regextype posix-extended -regex "${HOME}/printer_data/.*/${regex}" 2> /dev/null | sort) + files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -463,6 +476,7 @@ function remove_klipper_env() { function remove_klipper() { remove_klipper_sysvinit remove_klipper_systemd + remove_klipper_env_file remove_klipper_logs remove_klipper_uds remove_klipper_printer -- 2.39.5 From 1e2684b8c3149ce9cc41f926c154d18b49af5016 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 14:06:01 +0200 Subject: [PATCH 13/38] refactor(klipper): update klipper install for multi instance Signed-off-by: Dominik Willner --- scripts/klipper.sh | 33 ++++++++++++++++++--------------- scripts/utilities.sh | 16 +++++++++------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 2766bcc..7951e0c 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -157,17 +157,14 @@ function klipper_setup() { install_klipper_packages "${python_version}" create_klipper_virtualenv "${python_version}" - ### step 3: create required folder structure - create_required_folders - - ### step 4: configure klipper instances + ### step 3: configure and create klipper instances configure_klipper_service "${instance_arr[@]}" - ### step 5: enable and start all instances + ### step 4: enable and start all instances do_action_service "enable" "klipper" do_action_service "start" "klipper" - ### step 6: check for dialout group membership + ### step 5: check for dialout group membership check_usergroups ### confirm message @@ -291,16 +288,20 @@ function configure_klipper_service() { local input=("${@}") local klipper_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local cfg_dir cfg log printer uds service env_file + local pdata_dir cfg_dir cfg log printer uds service env_file if (( klipper_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then - cfg_dir="${PRINTER_DATA}/config" + pdata_dir="${PRINTER_DATA}" + cfg_dir="${pdata_dir}/config" cfg="${cfg_dir}/printer.cfg" log="${HOME}/printer_data/logs/klippy.log" printer="/tmp/printer" uds="/tmp/klippy_uds" service="${SYSTEMD}/klipper.service" - env_file="${PRINTER_DATA}/systemd/klipper.env" + env_file="${pdata_dir}/systemd/klipper.env" + + ### create required folder structure + create_required_folders "${pdata_dir}" ### write single instance service write_klipper_service "" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" @@ -313,19 +314,21 @@ function configure_klipper_service() { for (( i=1; i <= klipper_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - cfg_dir="${PRINTER_DATA}/printer_${names[${j}]}/config" - log="${PRINTER_DATA}/printer_${names[${j}]}/logs/klippy.log" - env_file="${PRINTER_DATA}/printer_${names[${j}]}/systemd/klipper.env" + pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" else - cfg_dir="${PRINTER_DATA}/${names[${j}]}/config" - log="${PRINTER_DATA}/${names[${j}]}/logs/klippy.log" - env_file="${PRINTER_DATA}/${names[${j}]}/systemd/klipper.env" + pdata_dir="${PRINTER_DATA}/${names[${j}]}" fi + cfg_dir="${pdata_dir}/config" cfg="${cfg_dir}/printer.cfg" + log="${pdata_dir}/logs/klippy.log" printer="/tmp/printer-${names[${j}]}" uds="/tmp/klippy_uds-${names[${j}]}" service="${SYSTEMD}/klipper-${names[${j}]}.service" + env_file="${pdata_dir}/systemd/klipper.env" + + ### create required folder structure + create_required_folders "${pdata_dir}" ### write multi instance service write_klipper_service "${names[${j}]}" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" diff --git a/scripts/utilities.sh b/scripts/utilities.sh index f20042a..c533f5e 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -506,13 +506,15 @@ function find_klipper_systemd() { } function create_required_folders() { - [[ ! -d "${HOME}/printer_data/backup" ]] && mkdir -p "${HOME}/printer_data/backup" - [[ ! -d "${HOME}/printer_data/certs" ]] && mkdir -p "${HOME}/printer_data/certs" - [[ ! -d "${HOME}/printer_data/config" ]] && mkdir -p "${HOME}/printer_data/config" - [[ ! -d "${HOME}/printer_data/database" ]] && mkdir -p "${HOME}/printer_data/database" - [[ ! -d "${HOME}/printer_data/gcodes" ]] && mkdir -p "${HOME}/printer_data/gcodes" - [[ ! -d "${HOME}/printer_data/logs" ]] && mkdir -p "${HOME}/printer_data/logs" - [[ ! -d "${HOME}/printer_data/systemd" ]] && mkdir -p "${HOME}/printer_data/systemd" + local pdata_dir=${1} + + [[ ! -d "${pdata_dir}/backup" ]] && mkdir -p "${pdata_dir}/backup" + [[ ! -d "${pdata_dir}/certs" ]] && mkdir -p "${pdata_dir}/certs" + [[ ! -d "${pdata_dir}/config" ]] && mkdir -p "${pdata_dir}/config" + [[ ! -d "${pdata_dir}/database" ]] && mkdir -p "${pdata_dir}/database" + [[ ! -d "${pdata_dir}/gcodes" ]] && mkdir -p "${pdata_dir}/gcodes" + [[ ! -d "${pdata_dir}/logs" ]] && mkdir -p "${pdata_dir}/logs" + [[ ! -d "${pdata_dir}/systemd" ]] && mkdir -p "${pdata_dir}/systemd" } function check_system_updates() { -- 2.39.5 From 423bdd4654c29bc72f09770a9167ca119919cd8e Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 14:07:06 +0200 Subject: [PATCH 14/38] refactor(moonraker): update moonraker install for multi instance Signed-off-by: Dominik Willner --- scripts/moonraker.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index cf3668a..1760a77 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -316,6 +316,9 @@ function configure_moonraker_service() { service="${SYSTEMD}/moonraker.service" env_file="${pdata_dir}/systemd/moonraker.env" + ### create required folder structure + create_required_folders "${pdata_dir}" + ### write single instance service write_moonraker_service "" "${pdata_dir}" "${service}" "${env_file}" ok_msg "Moonraker instance created!" @@ -335,6 +338,9 @@ function configure_moonraker_service() { service="${SYSTEMD}/moonraker-${names[${j}]}.service" env_file="${pdata_dir}/systemd/moonraker.env" + ### create required folder structure + create_required_folders "${pdata_dir}" + ### write multi instance service write_moonraker_service "${names[${j}]}" "${pdata_dir}" "${service}" "${env_file}" ok_msg "Moonraker instance 'moonraker-${names[${j}]}' created!" -- 2.39.5 From cf05354c7b9a8e8e27e679be0a36fef38912aaa7 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 14:24:15 +0200 Subject: [PATCH 15/38] fix: fix method to remove all env and log files Signed-off-by: Dominik Willner --- scripts/klipper.sh | 8 ++++---- scripts/moonraker.sh | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 7951e0c..3c56c12 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -409,8 +409,8 @@ function remove_klipper_systemd() { } function remove_klipper_env_file() { - local files regex="klipper.env" - files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) + local files name="klipper.env" + files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -422,8 +422,8 @@ function remove_klipper_env_file() { } function remove_klipper_logs() { - local files regex="klippy.log(.*)?" - files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) + local files name="klippy.log*" + files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index 1760a77..ee72675 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -465,8 +465,8 @@ function remove_moonraker_systemd() { } function remove_moonraker_env_file() { - local files regex="moonraker.env" - files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) + local files name="moonraker.env" + files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -478,8 +478,8 @@ function remove_moonraker_env_file() { } function remove_moonraker_logs() { - local files regex="moonraker.log(.*)?" - files=$(find "${PRINTER_DATA}" -maxdepth 2 -regextype posix-extended -regex "${PRINTER_DATA}/.*/${regex}" 2> /dev/null | sort) + local files name="moonraker.log*" + files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do -- 2.39.5 From 57432efc4559d60c3e4f0447c10bc7d8f1e8e18d Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 18:47:21 +0200 Subject: [PATCH 16/38] refactor: rework folder structure for multi instance setups Signed-off-by: Dominik Willner --- scripts/globals.sh | 3 --- scripts/klipper.sh | 30 +++++++++++++-------------- scripts/moonraker.sh | 48 ++++++++++++++++++++++---------------------- scripts/utilities.sh | 16 +++++++-------- 4 files changed, 47 insertions(+), 50 deletions(-) diff --git a/scripts/globals.sh b/scripts/globals.sh index 65fe42a..56b3cd5 100644 --- a/scripts/globals.sh +++ b/scripts/globals.sh @@ -17,7 +17,6 @@ function set_globals() { SYSTEMD="/etc/systemd/system" INITD="/etc/init.d" ETCDEF="/etc/default" - PRINTER_DATA="${HOME}/printer_data" #=================== KIAUH ====================# green=$(echo -en "\e[92m") @@ -35,8 +34,6 @@ function set_globals() { KLIPPY_ENV="${HOME}/klippy-env" KLIPPER_DIR="${HOME}/klipper" KLIPPER_REPO="https://github.com/Klipper3d/klipper.git" - KLIPPER_LOGS="${HOME}/klipper_logs" - KLIPPER_CONFIG="$(get_klipper_cfg_dir)" # default: ${HOME}/klipper_config #================= MOONRAKER ==================# MOONRAKER_ENV="${HOME}/moonraker-env" diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 3c56c12..64fe777 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -288,20 +288,20 @@ function configure_klipper_service() { local input=("${@}") local klipper_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local pdata_dir cfg_dir cfg log printer uds service env_file + local printer_data cfg_dir cfg log printer uds service env_file if (( klipper_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then - pdata_dir="${PRINTER_DATA}" - cfg_dir="${pdata_dir}/config" + printer_data="${HOME}/printer_data" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" log="${HOME}/printer_data/logs/klippy.log" printer="/tmp/printer" uds="/tmp/klippy_uds" service="${SYSTEMD}/klipper.service" - env_file="${pdata_dir}/systemd/klipper.env" + env_file="${printer_data}/systemd/klipper.env" ### create required folder structure - create_required_folders "${pdata_dir}" + create_required_folders "${printer_data}" ### write single instance service write_klipper_service "" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" @@ -314,21 +314,21 @@ function configure_klipper_service() { for (( i=1; i <= klipper_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" + printer_data="${HOME}/printer_${names[${j}]}_data" else - pdata_dir="${PRINTER_DATA}/${names[${j}]}" + printer_data="${HOME}/${names[${j}]}_data" fi - cfg_dir="${pdata_dir}/config" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" - log="${pdata_dir}/logs/klippy.log" + log="${printer_data}/logs/klippy.log" printer="/tmp/printer-${names[${j}]}" uds="/tmp/klippy_uds-${names[${j}]}" service="${SYSTEMD}/klipper-${names[${j}]}.service" - env_file="${pdata_dir}/systemd/klipper.env" + env_file="${printer_data}/systemd/klipper.env" ### create required folder structure - create_required_folders "${pdata_dir}" + create_required_folders "${printer_data}" ### write multi instance service write_klipper_service "${names[${j}]}" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" @@ -409,8 +409,8 @@ function remove_klipper_systemd() { } function remove_klipper_env_file() { - local files name="klipper.env" - files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/systemd\/klipper\.env" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -422,8 +422,8 @@ function remove_klipper_env_file() { } function remove_klipper_logs() { - local files name="klippy.log*" - files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/klippy\.log*" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index ee72675..a745b5c 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -240,14 +240,14 @@ function create_moonraker_conf() { local input=("${@}") local moonraker_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local port lan pdata_dir cfg_dir cfg uds + local port lan printer_data cfg_dir cfg uds port=7125 lan="$(hostname -I | cut -d" " -f1 | cut -d"." -f1-2).0.0/16" if (( moonraker_count == 1 )); then - pdata_dir="${PRINTER_DATA}" - cfg_dir="${pdata_dir}/config" + printer_data="${HOME}/printer_data" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" uds="/tmp/klippy_uds" @@ -260,12 +260,12 @@ function create_moonraker_conf() { for (( i=1; i <= moonraker_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" + printer_data="${HOME}/printer_${names[${j}]}_data" else - pdata_dir="${PRINTER_DATA}/${names[${j}]}" + printer_data="${HOME}/${names[${j}]}_data" fi - cfg_dir="${pdata_dir}/config" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" uds="/tmp/klippy_uds-${names[${j}]}" @@ -307,20 +307,20 @@ function configure_moonraker_service() { local input=("${@}") local moonraker_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local pdata_dir cfg_dir service env_file + local printer_data cfg_dir service env_file if (( moonraker_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then i="" - pdata_dir="${PRINTER_DATA}" - cfg_dir="${pdata_dir}/config" + printer_data="${HOME}/printer_data" + cfg_dir="${printer_data}/config" service="${SYSTEMD}/moonraker.service" - env_file="${pdata_dir}/systemd/moonraker.env" + env_file="${printer_data}/systemd/moonraker.env" ### create required folder structure - create_required_folders "${pdata_dir}" + create_required_folders "${printer_data}" ### write single instance service - write_moonraker_service "" "${pdata_dir}" "${service}" "${env_file}" + write_moonraker_service "" "${printer_data}" "${service}" "${env_file}" ok_msg "Moonraker instance created!" elif (( moonraker_count > 1 )) && [[ ${#names[@]} -gt 0 ]]; then @@ -329,20 +329,20 @@ function configure_moonraker_service() { for (( i=1; i <= moonraker_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" + printer_data="${HOME}/printer_${names[${j}]}_data" else - pdata_dir="${PRINTER_DATA}/${names[${j}]}" + printer_data="${HOME}/${names[${j}]}_data" fi - cfg_dir="${pdata_dir}/config" + cfg_dir="${printer_data}/config" service="${SYSTEMD}/moonraker-${names[${j}]}.service" - env_file="${pdata_dir}/systemd/moonraker.env" + env_file="${printer_data}/systemd/moonraker.env" ### create required folder structure - create_required_folders "${pdata_dir}" + create_required_folders "${printer_data}" ### write multi instance service - write_moonraker_service "${names[${j}]}" "${pdata_dir}" "${service}" "${env_file}" + write_moonraker_service "${names[${j}]}" "${printer_data}" "${service}" "${env_file}" ok_msg "Moonraker instance 'moonraker-${names[${j}]}' created!" j=$(( j + 1 )) done && unset i @@ -358,7 +358,7 @@ function configure_moonraker_service() { } function write_moonraker_service() { - local i=${1} pdata_dir=${2} service=${3} env_file=${4} + local i=${1} printer_data=${2} service=${3} env_file=${4} local service_template="${KIAUH_SRCDIR}/resources/moonraker.service" local env_template="${KIAUH_SRCDIR}/resources/moonraker.env" @@ -371,7 +371,7 @@ function write_moonraker_service() { [[ -z ${i} ]] && sudo sed -i "s| %INST%||" "${service}" [[ -n ${i} ]] && sudo sed -i "s|%INST%|${i}|" "${service}" sudo sed -i "s|%USER%|${USER}|g; s|%ENV%|${MOONRAKER_ENV}|; s|%ENV_FILE%|${env_file}|" "${service}" - sudo sed -i "s|%USER%|${USER}|; s|%PRINTER_DATA%|${pdata_dir}|" "${env_file}" + sudo sed -i "s|%USER%|${USER}|; s|%PRINTER_DATA%|${printer_data}|" "${env_file}" fi } @@ -465,8 +465,8 @@ function remove_moonraker_systemd() { } function remove_moonraker_env_file() { - local files name="moonraker.env" - files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/systemd\/moonraker\.env" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -478,8 +478,8 @@ function remove_moonraker_env_file() { } function remove_moonraker_logs() { - local files name="moonraker.log*" - files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/moonraker\.log*" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do diff --git a/scripts/utilities.sh b/scripts/utilities.sh index c533f5e..cec0210 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -506,15 +506,15 @@ function find_klipper_systemd() { } function create_required_folders() { - local pdata_dir=${1} + local printer_data=${1} - [[ ! -d "${pdata_dir}/backup" ]] && mkdir -p "${pdata_dir}/backup" - [[ ! -d "${pdata_dir}/certs" ]] && mkdir -p "${pdata_dir}/certs" - [[ ! -d "${pdata_dir}/config" ]] && mkdir -p "${pdata_dir}/config" - [[ ! -d "${pdata_dir}/database" ]] && mkdir -p "${pdata_dir}/database" - [[ ! -d "${pdata_dir}/gcodes" ]] && mkdir -p "${pdata_dir}/gcodes" - [[ ! -d "${pdata_dir}/logs" ]] && mkdir -p "${pdata_dir}/logs" - [[ ! -d "${pdata_dir}/systemd" ]] && mkdir -p "${pdata_dir}/systemd" + [[ ! -d "${printer_data}/backup" ]] && mkdir -p "${printer_data}/backup" + [[ ! -d "${printer_data}/certs" ]] && mkdir -p "${printer_data}/certs" + [[ ! -d "${printer_data}/config" ]] && mkdir -p "${printer_data}/config" + [[ ! -d "${printer_data}/database" ]] && mkdir -p "${printer_data}/database" + [[ ! -d "${printer_data}/gcodes" ]] && mkdir -p "${printer_data}/gcodes" + [[ ! -d "${printer_data}/logs" ]] && mkdir -p "${printer_data}/logs" + [[ ! -d "${printer_data}/systemd" ]] && mkdir -p "${printer_data}/systemd" } function check_system_updates() { -- 2.39.5 From 81d8144c306cf702b6a4d53855e1e114784a1c1a Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 18:57:50 +0200 Subject: [PATCH 17/38] refactor(kiauh): remove feature for changing the klipper config path Signed-off-by: Dominik Willner --- scripts/gcode_shell_command.sh | 1 + scripts/klipper.sh | 13 --- scripts/ui/settings_menu.sh | 45 +++------- scripts/utilities.sh | 155 --------------------------------- 4 files changed, 11 insertions(+), 203 deletions(-) diff --git a/scripts/gcode_shell_command.sh b/scripts/gcode_shell_command.sh index d546839..5402659 100644 --- a/scripts/gcode_shell_command.sh +++ b/scripts/gcode_shell_command.sh @@ -106,6 +106,7 @@ function create_example_shell_command() { backup_klipper_config_dir local printer_cfgs path + # TODO: fix cfg path printer_cfgs=$(find "$(get_klipper_cfg_dir)" -type f -name "printer.cfg" | sort) for cfg in ${printer_cfgs}; do diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 64fe777..579d2b0 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -607,19 +607,6 @@ function compare_klipper_versions() { #=================== HELPERS ====================# #================================================# -function get_klipper_cfg_dir() { - local cfg_dir - read_kiauh_ini "${FUNCNAME[0]}" - - if [[ -z ${custom_klipper_cfg_loc} ]]; then - cfg_dir="${HOME}/klipper_config" - else - cfg_dir="${custom_klipper_cfg_loc}" - fi - - echo "${cfg_dir}" -} - ### # reads the python version from the klipper virtual environment # diff --git a/scripts/ui/settings_menu.sh b/scripts/ui/settings_menu.sh index bb10bb6..3146102 100755 --- a/scripts/ui/settings_menu.sh +++ b/scripts/ui/settings_menu.sh @@ -14,20 +14,12 @@ set -e function settings_ui() { read_kiauh_ini "${FUNCNAME[0]}" - local custom_cfg_loc="${custom_klipper_cfg_loc}" local custom_repo="${custom_klipper_repo}" local custom_branch="${custom_klipper_repo_branch}" local ms_pre_rls="${mainsail_install_unstable}" local fl_pre_rls="${fluidd_install_unstable}" local bbu="${backup_before_update}" - ### config location - if [[ -z ${custom_cfg_loc} ]]; then - custom_cfg_loc="${cyan}${KLIPPER_CONFIG}${white}" - else - custom_cfg_loc="${cyan}${custom_cfg_loc}${white}" - fi - ### custom repository custom_repo=$(echo "${custom_repo}" | sed "s/https:\/\/github\.com\///" | sed "s/\.git$//" ) if [[ -z ${custom_repo} ]]; then @@ -67,8 +59,6 @@ function settings_ui() { echo -e "| $(title_msg "~~~~~~~~~~~~ [ KIAUH Settings ] ~~~~~~~~~~~~~") |" hr echo -e "| Klipper: |" - echo -e "| ● Config folder: |" - printf "| %-60s|\n" "${custom_cfg_loc}" echo -e "| ● Repository: |" printf "| %-70s|\n" "${custom_repo} (${custom_branch})" hr @@ -77,24 +67,23 @@ function settings_ui() { hr printf "| Backup before updating: %-42s|\n" "${bbu}" hr - echo -e "| 1) Change Klipper config folder location |" - echo -e "| 2) Set custom Klipper repository |" + echo -e "| 1) Set custom Klipper repository |" blank_line if [[ ${mainsail_install_unstable} == "false" ]]; then - echo -e "| 3) ${green}Allow${white} unstable Mainsail releases |" + echo -e "| 2) ${green}Allow${white} unstable Mainsail releases |" else - echo -e "| 3) ${red}Disallow${white} unstable Mainsail releases |" + echo -e "| 2) ${red}Disallow${white} unstable Mainsail releases |" fi if [[ ${fluidd_install_unstable} == "false" ]]; then - echo -e "| 4) ${green}Allow${white} unstable Fluidd releases |" + echo -e "| 3) ${green}Allow${white} unstable Fluidd releases |" else - echo -e "| 4) ${red}Disallow${white} unstable Fluidd releases |" + echo -e "| 3) ${red}Disallow${white} unstable Fluidd releases |" fi blank_line if [[ ${backup_before_update} == "false" ]]; then - echo -e "| 5) ${green}Enable${white} automatic backups before updates |" + echo -e "| 4) ${green}Enable${white} automatic backups before updates |" else - echo -e "| 5) ${red}Disable${white} automatic backups before updates |" + echo -e "| 4) ${red}Disable${white} automatic backups before updates |" fi back_help_footer } @@ -105,16 +94,6 @@ function show_settings_help() { top_border echo -e "| ~~~~~~ < ? > Help: KIAUH Settings < ? > ~~~~~~ |" hr - echo -e "| ${cyan}Klipper config folder:${white} |" - echo -e "| The location of your printer.cfg and all other config |" - echo -e "| files that gets used during installation of Klipper |" - echo -e "| and all other components which need that location. |" - echo -e "| It is not recommended to change this location. |" - echo -e "| Be advised, that negative side effects could occur. |" - blank_line - printf "| Default: %-55s|\n" "${default_cfg}" - blank_line - hr echo -e "| ${cyan}Install unstable releases:${white} |" echo -e "| If set to ${green}true${white}, KIAUH installs/updates the software |" echo -e "| with the latest, currently available release. |" @@ -160,20 +139,16 @@ function settings_menu() { read -p "${cyan}####### Perform action:${white} " action case "${action}" in 1) - clear && print_header - change_klipper_cfg_folder - settings_ui;; - 2) clear && print_header change_klipper_repo_menu settings_ui;; - 3) + 2) switch_mainsail_releasetype settings_menu;; - 4) + 3) switch_fluidd_releasetype settings_menu;; - 5) + 4) toggle_backup_before_update settings_menu;; B|b) diff --git a/scripts/utilities.sh b/scripts/utilities.sh index cec0210..afad9e5 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -156,10 +156,6 @@ function init_ini() { echo -e "\nlogupload_accepted=false\c" >> "${INI_FILE}" fi - if ! grep -Eq "^custom_klipper_cfg_loc=" "${INI_FILE}"; then - echo -e "\ncustom_klipper_cfg_loc=\c" >> "${INI_FILE}" - fi - if ! grep -Eq "^custom_klipper_repo=" "${INI_FILE}"; then echo -e "\ncustom_klipper_repo=\c" >> "${INI_FILE}" fi @@ -184,157 +180,6 @@ function init_ini() { sed -i "/^[[:blank:]]*$/ d" "${INI_FILE}" } -function change_klipper_cfg_folder() { - local current_cfg_loc example_loc recommended_loc new_cfg_loc - current_cfg_loc="$(get_klipper_cfg_dir)" - example_loc=$(printf "%s/" "${HOME}") - recommended_loc=$(printf "%s/klipper_config" "${HOME}") - - local yn - while true; do - top_border - echo -e "| ${yellow}IMPORTANT:${white} |" - echo -e "| Please enter the new path in the following format: |" - printf "| ${cyan}%-51s${white} |\n" "${example_loc}" - blank_line - echo -e "| ${red}WARNING: ${white} |" - echo -e "| ${red}There will be no validation checks! Make sure to set${white} |" - echo -e "| ${red}a valid directory to prevent possible problems!${white} |" - blank_line - printf "| Recommended: ${cyan}%-38s${white} |\n" "${recommended_loc}" - bottom_border - echo - echo -e "${cyan}###### Please set the new Klipper config directory:${white} " - read -e -i "${current_cfg_loc}" -e new_cfg_loc - echo - read -p "${cyan}###### Set config directory to '${yellow}${new_cfg_loc}${cyan}' ? (Y/n):${white} " yn - case "${yn}" in - Y|y|Yes|yes|"") - select_msg "Yes" - set_klipper_cfg_path "${current_cfg_loc}" "${new_cfg_loc}" - print_confirm "New config directory set!" - break;; - N|n|No|no) - select_msg "No" - break;; - *) - print_error "Invalid command!";; - esac - done -} - -function set_klipper_cfg_path() { - local current_cfg_loc="${1}" new_cfg_loc="${2}" - local instance klipper_services moonraker_services moonraker_configs - - log_info "Function set_klipper_cfg_path invoked\nCurrent location: ${1}\nNew location: ${2}" - ### backup the old config dir - backup_klipper_config_dir - ### write new location to .kiauh.ini - sed -i "/^custom_klipper_cfg_loc=/d" "${INI_FILE}" - sed -i '$a'"custom_klipper_cfg_loc=${new_cfg_loc}" "${INI_FILE}" - status_msg "New directory was set to '${new_cfg_loc}'!" - - ### stop services - do_action_service "stop" "klipper" - do_action_service "stop" "moonraker" - - ### copy config files to new klipper config folder - if [[ -n ${current_cfg_loc} && -d ${current_cfg_loc} ]]; then - status_msg "Copy config files to '${new_cfg_loc}' ..." - - if [[ ! -d ${new_cfg_loc} ]]; then - log_info "Copy process started" - mkdir -p "${new_cfg_loc}" - cd "${current_cfg_loc}" - cp -r -v ./* "${new_cfg_loc}" - ok_msg "Done!" - else - log_warning "Copy process skipped, new config directory already exists and may not be empty!" - warn_msg "New config directory already exists! Copy process skipped!" - fi - fi - - klipper_services=$(find_klipper_systemd) - - if [[ -n ${klipper_services} ]]; then - status_msg "Re-writing Klipper services to use new config file location ..." - - for service in ${klipper_services}; do - if [[ ${service} = "/etc/systemd/system/klipper.service" ]]; then - - if grep -q "Environment=KLIPPER_CONFIG=" "${service}"; then - ### single instance klipper service installed by kiauh v4 / MainsailOS > 0.5.0 - sudo sed -i -r "/KLIPPER_CONFIG=/ s|CONFIG=(.+)\/printer\.cfg|CONFIG=${new_cfg_loc}/printer\.cfg|" "${service}" - else - ### single instance klipper service installed by kiauh v3 - sudo sed -i -r "/ExecStart=/ s|klippy\.py (.+)\/printer\.cfg|klippy\.py ${new_cfg_loc}\/printer\.cfg|" "${service}" - fi - - else - instance=$(echo "${service}" | cut -d"-" -f2 | cut -d"." -f1) - - if grep -q "Environment=KLIPPER_CONFIG=" "${service}"; then - ### multi instance klipper service installed by kiauh v4 / MainsailOS > 0.5.0 - sudo sed -i -r "/KLIPPER_CONFIG=/ s|CONFIG=(.+)\/printer_${instance}\/printer\.cfg|CONFIG=${new_cfg_loc}\/printer_${instance}\/printer\.cfg|" "${service}" - else - ### multi instance klipper service installed by kiauh v3 - sudo sed -i -r "/ExecStart=/ s|klippy\.py (.+)\/printer_${instance}\/printer\.cfg|klippy\.py ${new_cfg_loc}\/printer_${instance}\/printer\.cfg|" "${service}" - fi - fi - done - ok_msg "OK!" - fi - - moonraker_services=$(moonraker_systemd) - - if [[ -n ${moonraker_services} ]]; then - ### handle multi moonraker instance service file - status_msg "Re-writing Moonraker services to use new config file location ..." - - for service in ${moonraker_services}; do - if [[ ${service} = "/etc/systemd/system/moonraker.service" ]]; then - - if grep -q "Environment=MOONRAKER_CONF=" "${service}"; then - ### single instance moonraker service installed by kiauh v4 / MainsailOS > 0.5.0 - sudo sed -i -r "/MOONRAKER_CONF=/ s|_CONF=(.+)\/moonraker\.conf|_CONF=${new_cfg_loc}\/moonraker\.conf|" "${service}" - else - ### single instance moonraker service installed by kiauh v3 - sudo sed -i -r "/ExecStart=/ s| -c (.+)\/moonraker\.conf| -c ${new_cfg_loc}\/moonraker\.conf|" "${service}" - fi - - else - instance=$(echo "${service}" | cut -d"-" -f2 | cut -d"." -f1) - - if grep -q "Environment=MOONRAKER_CONF=" "${service}"; then - ### multi instance moonraker service installed by kiauh v4 / MainsailOS > 0.5.0 - sudo sed -i -r "/MOONRAKER_CONF=/ s|_CONF=(.+)\/printer_${instance}\/moonraker\.conf|_CONF=${new_cfg_loc}\/printer_${instance}\/moonraker\.conf|" "${service}" - else - ### multi instance moonraker service installed by kiauh v3 - sudo sed -i -r "/ExecStart=/ s| -c (.+)\/printer_${instance}\/moonraker\.conf| -c ${new_cfg_loc}\/printer_${instance}\/moonraker\.conf|" "${service}" - fi - fi - done - - moonraker_configs=$(find "${new_cfg_loc}" -type f -name "moonraker.conf" | sort) - - ### replace old file path with new one in moonraker.conf - local loc - for conf in ${moonraker_configs}; do - loc=$(echo "${conf}" | rev | cut -d"/" -f2- | rev) - sed -i -r "/config_path:/ s|config_path:.*|config_path: ${loc}|" "${conf}" - done - ok_msg "OK!" - fi - - ### reloading units - sudo systemctl daemon-reload - - ### restart services - do_action_service "restart" "klipper" - do_action_service "restart" "moonraker" -} - function switch_mainsail_releasetype() { read_kiauh_ini "${FUNCNAME[0]}" local state="${mainsail_install_unstable}" -- 2.39.5 From 548ed2dd023d083f73552a3c1a6de9688de9a09a Mon Sep 17 00:00:00 2001 From: th33xitus Date: Mon, 17 Oct 2022 15:03:45 +0200 Subject: [PATCH 18/38] refactor(klipper): introduce ipc directory Signed-off-by: Dominik Willner --- scripts/klipper.sh | 10 +++++----- scripts/utilities.sh | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 579d2b0..86ddba0 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -294,9 +294,9 @@ function configure_klipper_service() { printer_data="${HOME}/printer_data" cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" - log="${HOME}/printer_data/logs/klippy.log" - printer="/tmp/printer" - uds="/tmp/klippy_uds" + log="${printer_data}/logs/klippy.log" + printer="${printer_data}/ipc/printer" + uds="${printer_data}/ipc/klippy_uds" service="${SYSTEMD}/klipper.service" env_file="${printer_data}/systemd/klipper.env" @@ -322,8 +322,8 @@ function configure_klipper_service() { cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" log="${printer_data}/logs/klippy.log" - printer="/tmp/printer-${names[${j}]}" - uds="/tmp/klippy_uds-${names[${j}]}" + printer="${printer_data}/ipc/printer" + uds="${printer_data}/ipc/klippy_uds" service="${SYSTEMD}/klipper-${names[${j}]}.service" env_file="${printer_data}/systemd/klipper.env" diff --git a/scripts/utilities.sh b/scripts/utilities.sh index afad9e5..789c82d 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -358,6 +358,7 @@ function create_required_folders() { [[ ! -d "${printer_data}/config" ]] && mkdir -p "${printer_data}/config" [[ ! -d "${printer_data}/database" ]] && mkdir -p "${printer_data}/database" [[ ! -d "${printer_data}/gcodes" ]] && mkdir -p "${printer_data}/gcodes" + [[ ! -d "${printer_data}/ipc" ]] && mkdir -p "${printer_data}/ipc" [[ ! -d "${printer_data}/logs" ]] && mkdir -p "${printer_data}/logs" [[ ! -d "${printer_data}/systemd" ]] && mkdir -p "${printer_data}/systemd" } -- 2.39.5 From 57efd413dcf19147b8b1bebb4fbe7899f74f151d Mon Sep 17 00:00:00 2001 From: th33xitus Date: Mon, 17 Oct 2022 15:09:47 +0200 Subject: [PATCH 19/38] refactor(kiauh): rename example printer.cfg Signed-off-by: Dominik Willner --- resources/{printer.cfg => example.printer.cfg} | 0 scripts/klipper.sh | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename resources/{printer.cfg => example.printer.cfg} (100%) diff --git a/resources/printer.cfg b/resources/example.printer.cfg similarity index 100% rename from resources/printer.cfg rename to resources/example.printer.cfg diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 86ddba0..109540b 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -361,7 +361,7 @@ function write_klipper_service() { function write_example_printer_cfg() { local cfg_dir=${1} cfg=${2} - local cfg_template="${KIAUH_SRCDIR}/resources/printer.cfg" + local cfg_template="${KIAUH_SRCDIR}/resources/example.printer.cfg" ### create a config directory if it doesn't exist if [[ ! -d ${cfg_dir} ]]; then -- 2.39.5 From 43c2efefe86db6cca31b41a253050d02abdc24b7 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Mon, 17 Oct 2022 16:19:24 +0200 Subject: [PATCH 20/38] refactor(nginx): apply necessary changes for moonraker PR 491 Signed-off-by: Dominik Willner --- scripts/nginx.sh | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/scripts/nginx.sh b/scripts/nginx.sh index dfff521..3a9215f 100644 --- a/scripts/nginx.sh +++ b/scripts/nginx.sh @@ -74,23 +74,29 @@ function set_upstream_nginx_cfg() { } function symlink_webui_nginx_log() { - local interface=${1} path="${KLIPPER_LOGS}" - local access_log="/var/log/nginx/${interface}-access.log" - local error_log="/var/log/nginx/${interface}-error.log" + local interface path access_log error_log regex logpaths - [[ ! -d ${path} ]] && mkdir -p "${path}" + interface=${1} + access_log="/var/log/nginx/${interface}-access.log" + error_log="/var/log/nginx/${interface}-error.log" + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs" + logpaths=$(find "${HOME}" -maxdepth 2 -type d -regextype posix-extended -regex "${regex}" | sort) - if [[ -f ${access_log} && ! -L "${path}/${interface}-access.log" ]]; then - status_msg "Creating symlink for ${access_log} ..." - ln -s "${access_log}" "${path}" - ok_msg "Done!" - fi + for path in ${logpaths}; do + [[ ! -d ${path} ]] && mkdir -p "${path}" - if [[ -f ${error_log} && ! -L "${path}/${interface}-error.log" ]]; then - status_msg "Creating symlink for ${error_log} ..." - ln -s "${error_log}" "${path}" - ok_msg "Done!" - fi + if [[ -f ${access_log} && ! -L "${path}/${interface}-access.log" ]]; then + status_msg "Creating symlink for ${access_log} ..." + ln -s "${access_log}" "${path}" + ok_msg "Symlink created: ${path}/${interface}-access.log" + fi + + if [[ -f ${error_log} && ! -L "${path}/${interface}-error.log" ]]; then + status_msg "Creating symlink for ${error_log} ..." + ln -s "${error_log}" "${path}" + ok_msg "Symlink created: ${path}/${interface}-error.log" + fi + done } function match_nginx_configs() { -- 2.39.5 From 6e6b56fe13804fa5fcbd13950587e3234cbf81c9 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Mon, 17 Oct 2022 16:19:45 +0200 Subject: [PATCH 21/38] refactor(mainsail): apply necessary changes for moonraker PR 491 Signed-off-by: Dominik Willner --- scripts/mainsail.sh | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/scripts/mainsail.sh b/scripts/mainsail.sh index bb4c282..6e87c14 100644 --- a/scripts/mainsail.sh +++ b/scripts/mainsail.sh @@ -124,9 +124,11 @@ function install_mainsail_macros() { } function download_mainsail_macros() { - local ms_cfg="https://raw.githubusercontent.com/mainsail-crew/MainsailOS/master/src/modules/mainsail/filesystem/home/pi/klipper_config/mainsail.cfg" - local configs path - configs=$(find "${KLIPPER_CONFIG}" -type f -name "printer.cfg" | sort) + local ms_cfg path configs regex + + ms_cfg="https://raw.githubusercontent.com/mainsail-crew/MainsailOS/master/src/modules/mainsail/filesystem/home/pi/klipper_config/mainsail.cfg" + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/config\/printer\.cfg" + configs=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${configs} ]]; then for config in ${configs}; do @@ -219,8 +221,10 @@ function remove_mainsail_logs() { } function remove_mainsail_log_symlinks() { - local files - files=$(find "${KLIPPER_LOGS}" -name "mainsail*" 2> /dev/null | sort) + local files regex + + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/mainsail-.*" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -570,10 +574,11 @@ function enable_mainsail_remotemode() { } function patch_mainsail_update_manager() { - local patched="false" - local moonraker_configs - moonraker_configs=$(find "${KLIPPER_CONFIG}" -type f -name "moonraker.conf" | sort) + local patched moonraker_configs regex + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/config\/moonraker\.conf" + moonraker_configs=$(find "${HOME}" -maxdepth 3 -type f -regextype posix-extended -regex "${regex}" | sort) + patched="false" for conf in ${moonraker_configs}; do if ! grep -Eq "^\[update_manager mainsail\]$" "${conf}"; then ### add new line to conf if it doesn't end with one -- 2.39.5 From 63ffd7b80a3288033b6665493a1e70fe4f238130 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Mon, 17 Oct 2022 16:25:42 +0200 Subject: [PATCH 22/38] refactor(fluidd): apply necessary changes for moonraker PR 491 Signed-off-by: Dominik Willner --- scripts/fluidd.sh | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/scripts/fluidd.sh b/scripts/fluidd.sh index 41e7838..2aa7a62 100644 --- a/scripts/fluidd.sh +++ b/scripts/fluidd.sh @@ -124,9 +124,11 @@ function install_fluidd_macros() { } function download_fluidd_macros() { - local fluidd_cfg="https://raw.githubusercontent.com/fluidd-core/FluiddPI/master/src/modules/fluidd/filesystem/home/pi/klipper_config/fluidd.cfg" - local configs path - configs=$(find "${KLIPPER_CONFIG}" -type f -name "printer.cfg" | sort) + local fluidd_cfg path configs regex + + fluidd_cfg="https://raw.githubusercontent.com/fluidd-core/FluiddPI/master/src/modules/fluidd/filesystem/home/pi/klipper_config/fluidd.cfg" + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/config\/printer\.cfg" + configs=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${configs} ]]; then for config in ${configs}; do @@ -214,8 +216,10 @@ function remove_fluidd_logs() { } function remove_fluidd_log_symlinks() { - local files - files=$(find "${KLIPPER_LOGS}" -name "fluidd*" 2> /dev/null | sort) + local files regex + + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/fluidd-.*" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" 2> /dev/null | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -395,10 +399,11 @@ function select_fluidd_port() { } function patch_fluidd_update_manager() { - local patched="false" - local moonraker_configs - moonraker_configs=$(find "${KLIPPER_CONFIG}" -type f -name "moonraker.conf" | sort) + local patched moonraker_configs regex + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/config\/moonraker\.conf" + moonraker_configs=$(find "${HOME}" -maxdepth 3 -type f -regextype posix-extended -regex "${regex}" | sort) + patched="false" for conf in ${moonraker_configs}; do if ! grep -Eq "^\[update_manager fluidd\]$" "${conf}"; then ### add new line to conf if it doesn't end with one -- 2.39.5 From 006f4757598b17862b6158b2c0f9c38bcd9cc724 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Mon, 17 Oct 2022 17:02:36 +0200 Subject: [PATCH 23/38] refactor(gcode_shell_command): apply necessary changes for moonraker PR 491 Signed-off-by: Dominik Willner --- scripts/gcode_shell_command.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/gcode_shell_command.sh b/scripts/gcode_shell_command.sh index 5402659..3ddb3f3 100644 --- a/scripts/gcode_shell_command.sh +++ b/scripts/gcode_shell_command.sh @@ -105,11 +105,11 @@ function create_example_shell_command() { ### create a backup of the config folder backup_klipper_config_dir - local printer_cfgs path - # TODO: fix cfg path - printer_cfgs=$(find "$(get_klipper_cfg_dir)" -type f -name "printer.cfg" | sort) + local configs regex path + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/config\/printer\.cfg" + configs=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) - for cfg in ${printer_cfgs}; do + for cfg in ${configs}; do path=$(echo "${cfg}" | rev | cut -d"/" -f2- | rev) if [[ ! -f "${path}/shell_command.cfg" ]]; then -- 2.39.5 From b45217a728515a41e9c1d6c5828cb29a19796119 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Mon, 17 Oct 2022 17:27:06 +0200 Subject: [PATCH 24/38] refactor(mainsail): apply necessary changes for moonraker PR 491 to theme installer Signed-off-by: Dominik Willner --- scripts/mainsail.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/scripts/mainsail.sh b/scripts/mainsail.sh index 6e87c14..88208b6 100644 --- a/scripts/mainsail.sh +++ b/scripts/mainsail.sh @@ -401,13 +401,13 @@ function ms_theme_install() { for folder in "${folder_arr[@]}"; do ### instance names/identifier of only numbers need to be prefixed with 'printer_' if [[ ${folder} =~ ^[0-9]+$ ]]; then - target_folders+=("${KLIPPER_CONFIG}/printer_${folder}") + target_folders+=("${HOME}/printer_${folder}_data/config") else - target_folders+=("${KLIPPER_CONFIG}/${folder}") + target_folders+=("${HOME}/${folder}_data/config") fi done else - target_folders+=("${KLIPPER_CONFIG}") + target_folders+=("${HOME}/printer_data/config") fi if (( ${#target_folders[@]} > 1 )); then @@ -415,7 +415,7 @@ function ms_theme_install() { echo -e "| Please select the printer you want to apply the theme |" echo -e "| installation to: |" for (( i=0; i < ${#target_folders[@]}; i++ )); do - folder=$(echo "${target_folders[${i}]}" | rev | cut -d "/" -f1 | rev) + folder=$(echo "${target_folders[${i}]}" | rev | cut -d "/" -f2 | cut -d"_" -f2- | rev) printf "|${cyan}%-55s${white}|\n" " ${i}) ${folder}" done bottom_border @@ -444,8 +444,11 @@ function ms_theme_install() { } function ms_theme_delete() { - local theme_folders target_folders=() - theme_folders=$(find "${KLIPPER_CONFIG}" -mindepth 1 -type d -name ".theme" | sort) + local regex theme_folders target_folders=() + + regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/config\/\.theme" + theme_folders=$(find "${HOME}" -maxdepth 3 -type d -regextype posix-extended -regex "${regex}" | sort) +# theme_folders=$(find "${KLIPPER_CONFIG}" -mindepth 1 -type d -name ".theme" | sort) ### build target folder array for folder in ${theme_folders}; do -- 2.39.5 From 9b57f71862d3e02d484671d5a10ba3c557bfcf85 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 19 Oct 2022 23:09:24 +0200 Subject: [PATCH 25/38] refactor: disable installers for components that currently can't be updated in a timely manner Signed-off-by: Dominik Willner --- kiauh.sh | 7 ++++++ scripts/fluidd.sh | 48 +++++++++++++++++++------------------- scripts/mainsail.sh | 48 +++++++++++++++++++------------------- scripts/ui/install_menu.sh | 30 +++++++++++++++++++----- scripts/ui/main_menu.sh | 9 +++++++ 5 files changed, 88 insertions(+), 54 deletions(-) diff --git a/kiauh.sh b/kiauh.sh index b01b5d9..0e069af 100755 --- a/kiauh.sh +++ b/kiauh.sh @@ -9,6 +9,13 @@ # This file may be distributed under the terms of the GNU GPLv3 license # #=======================================================================# +# TODO: mjpg-streamer +# TODO: moonraker-telegram-bot +# TODO: obico +# TODO: pretty_gcode +# TODO: upload_log +# TODO: doublecheck that nothing got missed! + set -e clear diff --git a/scripts/fluidd.sh b/scripts/fluidd.sh index 2aa7a62..661c2ce 100644 --- a/scripts/fluidd.sh +++ b/scripts/fluidd.sh @@ -39,29 +39,29 @@ function install_fluidd() { ### check if another site already listens to port 80 fluidd_port_check - ### ask user to install mjpg-streamer - local install_mjpg_streamer - if [[ ! -f "${SYSTEMD}/webcamd.service" ]]; then - while true; do - echo - top_border - echo -e "| Install MJPG-Streamer for webcam support? |" - bottom_border - read -p "${cyan}###### Please select (y/N):${white} " yn - case "${yn}" in - Y|y|Yes|yes) - select_msg "Yes" - install_mjpg_streamer="true" - break;; - N|n|No|no|"") - select_msg "No" - install_mjpg_streamer="false" - break;; - *) - error_msg "Invalid command!";; - esac - done - fi +# ### ask user to install mjpg-streamer +# local install_mjpg_streamer +# if [[ ! -f "${SYSTEMD}/webcamd.service" ]]; then +# while true; do +# echo +# top_border +# echo -e "| Install MJPG-Streamer for webcam support? |" +# bottom_border +# read -p "${cyan}###### Please select (y/N):${white} " yn +# case "${yn}" in +# Y|y|Yes|yes) +# select_msg "Yes" +# install_mjpg_streamer="true" +# break;; +# N|n|No|no|"") +# select_msg "No" +# install_mjpg_streamer="false" +# break;; +# *) +# error_msg "Invalid command!";; +# esac +# done +# fi ### download fluidd download_fluidd @@ -83,7 +83,7 @@ function install_fluidd() { patch_fluidd_update_manager ### install mjpg-streamer - [[ ${install_mjpg_streamer} == "true" ]] && install_mjpg-streamer +# [[ ${install_mjpg_streamer} == "true" ]] && install_mjpg-streamer fetch_webui_ports #WIP diff --git a/scripts/mainsail.sh b/scripts/mainsail.sh index 88208b6..4e8bc9f 100644 --- a/scripts/mainsail.sh +++ b/scripts/mainsail.sh @@ -39,29 +39,29 @@ function install_mainsail() { ### check if another site already listens to port 80 mainsail_port_check - ### ask user to install mjpg-streamer - local install_mjpg_streamer - if [[ ! -f "${SYSTEMD}/webcamd.service" ]]; then - while true; do - echo - top_border - echo -e "| Install MJPG-Streamer for webcam support? |" - bottom_border - read -p "${cyan}###### Please select (y/N):${white} " yn - case "${yn}" in - Y|y|Yes|yes) - select_msg "Yes" - install_mjpg_streamer="true" - break;; - N|n|No|no|"") - select_msg "No" - install_mjpg_streamer="false" - break;; - *) - error_msg "Invalid command!";; - esac - done - fi +# ### ask user to install mjpg-streamer +# local install_mjpg_streamer +# if [[ ! -f "${SYSTEMD}/webcamd.service" ]]; then +# while true; do +# echo +# top_border +# echo -e "| Install MJPG-Streamer for webcam support? |" +# bottom_border +# read -p "${cyan}###### Please select (y/N):${white} " yn +# case "${yn}" in +# Y|y|Yes|yes) +# select_msg "Yes" +# install_mjpg_streamer="true" +# break;; +# N|n|No|no|"") +# select_msg "No" +# install_mjpg_streamer="false" +# break;; +# *) +# error_msg "Invalid command!";; +# esac +# done +# fi ### download mainsail download_mainsail @@ -83,7 +83,7 @@ function install_mainsail() { patch_mainsail_update_manager ### install mjpg-streamer - [[ ${install_mjpg_streamer} == "true" ]] && install_mjpg-streamer +# [[ ${install_mjpg_streamer} == "true" ]] && install_mjpg-streamer fetch_webui_ports #WIP diff --git a/scripts/ui/install_menu.sh b/scripts/ui/install_menu.sh index 9f60e7f..e3ef00b 100755 --- a/scripts/ui/install_menu.sh +++ b/scripts/ui/install_menu.sh @@ -55,17 +55,35 @@ function install_menu() { 4) do_action "install_fluidd" "install_ui";; 5) - do_action "install_klipperscreen" "install_ui";; + #do_action "install_klipperscreen" "install_ui";; + clear && print_header + print_error "Function currently disabled! Sorry!" + install_ui;; 6) - do_action "octoprint_setup_dialog" "install_ui";; + #do_action "octoprint_setup_dialog" "install_ui";; + clear && print_header + print_error "Function currently disabled! Sorry!" + install_ui;; 7) - do_action "install_pgc_for_klipper" "install_ui";; + #do_action "install_pgc_for_klipper" "install_ui";; + clear && print_header + print_error "Function currently disabled! Sorry!" + install_ui;; 8) - do_action "telegram_bot_setup_dialog" "install_ui";; + #do_action "telegram_bot_setup_dialog" "install_ui";; + clear && print_header + print_error "Function currently disabled! Sorry!" + install_ui;; 9) - do_action "moonraker_obico_setup_dialog" "install_ui";; + #do_action "moonraker_obico_setup_dialog" "install_ui";; + clear && print_header + print_error "Function currently disabled! Sorry!" + install_ui;; 10) - do_action "install_mjpg-streamer" "install_ui";; + #do_action "install_mjpg-streamer" "install_ui";; + clear && print_header + print_error "Function currently disabled! Sorry!" + install_ui;; B|b) clear; main_menu; break;; *) diff --git a/scripts/ui/main_menu.sh b/scripts/ui/main_menu.sh index 925fca6..e19fb70 100755 --- a/scripts/ui/main_menu.sh +++ b/scripts/ui/main_menu.sh @@ -12,6 +12,15 @@ set -e function main_ui() { + echo -e "${yellow}/=======================================================\\" + echo -e "| Note: |" + echo -e "| Temporarily, installation of the following software |" + echo -e "| is disabled: KlipperScreen, OctoPrint, Obico, |" + echo -e "| PrettyGCode, Telegram Bot, MJPG-Streamer. |" + blank_line + echo -e "| They will be available again hopefully soon. |" + echo -e "| Sorry for the inconvenience! |" + echo -e "\=======================================================/${white}" top_border echo -e "| $(title_msg "~~~~~~~~~~~~~~~ [ Main Menu ] ~~~~~~~~~~~~~~~") |" hr -- 2.39.5 From 3b0983b4b92d9d22b0a1a80688d1cc0a6ecea45f Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 19 Oct 2022 23:13:12 +0200 Subject: [PATCH 26/38] fix: regex for deleting all logs Signed-off-by: Dominik Willner --- scripts/klipper.sh | 2 +- scripts/moonraker.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 109540b..c7f867f 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -422,7 +422,7 @@ function remove_klipper_env_file() { } function remove_klipper_logs() { - local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/klippy\.log*" + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/klippy\.log.*" files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index a745b5c..001ba53 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -478,7 +478,7 @@ function remove_moonraker_env_file() { } function remove_moonraker_logs() { - local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/moonraker\.log*" + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/moonraker\.log.*" files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then -- 2.39.5 From a6eab46f4c856311d0b6b64bd752f08127a50663 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 19 Oct 2022 23:16:38 +0200 Subject: [PATCH 27/38] refactor(klipper): rename klippy_uds to klippy.sock, and folder ipc to comms Signed-off-by: Dominik Willner --- scripts/klipper.sh | 10 +++++----- scripts/moonraker.sh | 4 ++-- scripts/utilities.sh | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index c7f867f..5edb442 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -295,8 +295,8 @@ function configure_klipper_service() { cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" log="${printer_data}/logs/klippy.log" - printer="${printer_data}/ipc/printer" - uds="${printer_data}/ipc/klippy_uds" + printer="${printer_data}/comms/printer" + uds="${printer_data}/comms/klippy.sock" service="${SYSTEMD}/klipper.service" env_file="${printer_data}/systemd/klipper.env" @@ -322,8 +322,8 @@ function configure_klipper_service() { cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" log="${printer_data}/logs/klippy.log" - printer="${printer_data}/ipc/printer" - uds="${printer_data}/ipc/klippy_uds" + printer="${printer_data}/comms/printer" + uds="${printer_data}/comms/klippy.sock" service="${SYSTEMD}/klipper-${names[${j}]}.service" env_file="${printer_data}/systemd/klipper.env" @@ -436,7 +436,7 @@ function remove_klipper_logs() { function remove_klipper_uds() { local files - files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/klippy_uds(-[0-9a-zA-Z]+)?" | sort) + files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/klippy.sock(-[0-9a-zA-Z]+)?" | sort) if [[ -n ${files} ]]; then for file in ${files}; do diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index 001ba53..7e16141 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -249,7 +249,7 @@ function create_moonraker_conf() { printer_data="${HOME}/printer_data" cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" - uds="/tmp/klippy_uds" + uds="/tmp/klippy.sock" ### write single instance config write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${uds}" "${lan}" @@ -267,7 +267,7 @@ function create_moonraker_conf() { cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" - uds="/tmp/klippy_uds-${names[${j}]}" + uds="/tmp/klippy.sock-${names[${j}]}" ### write multi instance config write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${uds}" "${lan}" diff --git a/scripts/utilities.sh b/scripts/utilities.sh index 789c82d..b793425 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -358,7 +358,7 @@ function create_required_folders() { [[ ! -d "${printer_data}/config" ]] && mkdir -p "${printer_data}/config" [[ ! -d "${printer_data}/database" ]] && mkdir -p "${printer_data}/database" [[ ! -d "${printer_data}/gcodes" ]] && mkdir -p "${printer_data}/gcodes" - [[ ! -d "${printer_data}/ipc" ]] && mkdir -p "${printer_data}/ipc" + [[ ! -d "${printer_data}/comms" ]] && mkdir -p "${printer_data}/comms" [[ ! -d "${printer_data}/logs" ]] && mkdir -p "${printer_data}/logs" [[ ! -d "${printer_data}/systemd" ]] && mkdir -p "${printer_data}/systemd" } -- 2.39.5 From 7574ec76c5c22f7151b5d8fcbd0624b97e2f52ba Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 19 Oct 2022 23:18:30 +0200 Subject: [PATCH 28/38] refactor(klipper): rename printer to klippy.serial Signed-off-by: Dominik Willner --- scripts/klipper.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 5edb442..95a757c 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -295,7 +295,7 @@ function configure_klipper_service() { cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" log="${printer_data}/logs/klippy.log" - printer="${printer_data}/comms/printer" + printer="${printer_data}/comms/klippy.serial" uds="${printer_data}/comms/klippy.sock" service="${SYSTEMD}/klipper.service" env_file="${printer_data}/systemd/klipper.env" @@ -322,7 +322,7 @@ function configure_klipper_service() { cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" log="${printer_data}/logs/klippy.log" - printer="${printer_data}/comms/printer" + printer="${printer_data}/comms/klippy.serial" uds="${printer_data}/comms/klippy.sock" service="${SYSTEMD}/klipper-${names[${j}]}.service" env_file="${printer_data}/systemd/klipper.env" @@ -450,7 +450,7 @@ function remove_klipper_uds() { function remove_klipper_printer() { local files - files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/printer(-[0-9a-zA-Z]+)?" | sort) + files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/klippy.serial(-[0-9a-zA-Z]+)?" | sort) if [[ -n ${files} ]]; then for file in ${files}; do status_msg "Removing ${file} ..." -- 2.39.5 From 6e0943e2e8f196097c5db1e472206385020ee683 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 19 Oct 2022 23:21:23 +0200 Subject: [PATCH 29/38] fix(klipper): fix remove functions for klippy.sock and klippy.serial Signed-off-by: Dominik Willner --- scripts/klipper.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 95a757c..b67f40a 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -435,8 +435,8 @@ function remove_klipper_logs() { } function remove_klipper_uds() { - local files - files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/klippy.sock(-[0-9a-zA-Z]+)?" | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/comms\/klippy\.sock" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -448,9 +448,9 @@ function remove_klipper_uds() { } function remove_klipper_printer() { - local files + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/comms\/klippy\.serial" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) - files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/klippy.serial(-[0-9a-zA-Z]+)?" | sort) if [[ -n ${files} ]]; then for file in ${files}; do status_msg "Removing ${file} ..." -- 2.39.5 From 23c3a4e9a5ce0931a2dd12f4c59bf04f146712a9 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 19 Oct 2022 23:56:09 +0200 Subject: [PATCH 30/38] refactor(utilities): create folders with loop Signed-off-by: Dominik Willner --- scripts/utilities.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/utilities.sh b/scripts/utilities.sh index b793425..0aa85d0 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -351,16 +351,16 @@ function find_klipper_systemd() { } function create_required_folders() { - local printer_data=${1} + local printer_data=${1} folders + folders=("backup" "certs" "config" "database" "gcodes" "comms" "logs" "systemd") - [[ ! -d "${printer_data}/backup" ]] && mkdir -p "${printer_data}/backup" - [[ ! -d "${printer_data}/certs" ]] && mkdir -p "${printer_data}/certs" - [[ ! -d "${printer_data}/config" ]] && mkdir -p "${printer_data}/config" - [[ ! -d "${printer_data}/database" ]] && mkdir -p "${printer_data}/database" - [[ ! -d "${printer_data}/gcodes" ]] && mkdir -p "${printer_data}/gcodes" - [[ ! -d "${printer_data}/comms" ]] && mkdir -p "${printer_data}/comms" - [[ ! -d "${printer_data}/logs" ]] && mkdir -p "${printer_data}/logs" - [[ ! -d "${printer_data}/systemd" ]] && mkdir -p "${printer_data}/systemd" + for dir in "${folders[@]}"; do + if [[ ! -d "${printer_data}/${dir}" ]]; then + status_msg "Creating folder '${printer_data}/${dir}' ..." + mkdir -p "${printer_data}/${dir}" + ok_msg "Folder '${printer_data}/${dir}' created!" + fi +done } function check_system_updates() { -- 2.39.5 From ccd8ea1b72b46f24f246091f1c10a910ff457b3d Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 19 Oct 2022 23:59:29 +0200 Subject: [PATCH 31/38] fix(moonraker): fix uds path for moonraker.conf Signed-off-by: Dominik Willner --- scripts/moonraker.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index 7e16141..4ea3df3 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -249,7 +249,7 @@ function create_moonraker_conf() { printer_data="${HOME}/printer_data" cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" - uds="/tmp/klippy.sock" + uds="${printer_data}/comms/klippy.sock" ### write single instance config write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${uds}" "${lan}" @@ -267,7 +267,7 @@ function create_moonraker_conf() { cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" - uds="/tmp/klippy.sock-${names[${j}]}" + uds="${printer_data}/comms/klippy.sock-${names[${j}]}" ### write multi instance config write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${uds}" "${lan}" -- 2.39.5 From cf2c8a1cfdcc73b6585528e2f41c986a0654f3d7 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Thu, 20 Oct 2022 00:17:27 +0200 Subject: [PATCH 32/38] refactor(kiauh): disable log upload and backups Signed-off-by: Dominik Willner --- scripts/ui/main_menu.sh | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/scripts/ui/main_menu.sh b/scripts/ui/main_menu.sh index e19fb70..b13e06a 100755 --- a/scripts/ui/main_menu.sh +++ b/scripts/ui/main_menu.sh @@ -14,9 +14,10 @@ set -e function main_ui() { echo -e "${yellow}/=======================================================\\" echo -e "| Note: |" - echo -e "| Temporarily, installation of the following software |" - echo -e "| is disabled: KlipperScreen, OctoPrint, Obico, |" - echo -e "| PrettyGCode, Telegram Bot, MJPG-Streamer. |" + echo -e "| The following functions are currently unavailable: |" + echo -e "| - Installation of KlipperScreen, OctoPrint, Obico, |" + echo -e "| PrettyGCode, Telegram Bot, MJPG-Streamer. |" + echo -e "| - Log-Upload and Backups |" blank_line echo -e "| They will be available again hopefully soon. |" echo -e "| Sorry for the inconvenience! |" @@ -92,7 +93,8 @@ function print_klipper_repo() { function main_menu() { - print_header && main_ui + clear && print_header + main_ui ### initialize kiauh.ini init_ini @@ -112,8 +114,9 @@ function main_menu() { "restart octoprint") do_action_service "restart" "octoprint"; main_ui;; update) do_action "update_kiauh" "main_ui";; 0)clear && print_header - upload_selection - break;; + #upload_selection + print_error "Function currently disabled! Sorry!" + main_ui;; 1)clear && print_header install_menu break;; @@ -127,8 +130,9 @@ function main_menu() { advanced_menu break;; 5)clear && print_header - backup_menu - break;; + #backup_menu + print_error "Function currently disabled! Sorry!" + main_ui;; 6)clear && print_header settings_menu break;; @@ -139,5 +143,5 @@ function main_menu() { deny_action "main_ui";; esac done - clear; main_menu + main_menu } -- 2.39.5 From 81af97b5084d363607a32de4149dcc9d8a633114 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Thu, 20 Oct 2022 00:18:07 +0200 Subject: [PATCH 33/38] refactor(kiauh): reword notification Signed-off-by: Dominik Willner --- scripts/ui/main_menu.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/ui/main_menu.sh b/scripts/ui/main_menu.sh index b13e06a..72bcc33 100755 --- a/scripts/ui/main_menu.sh +++ b/scripts/ui/main_menu.sh @@ -13,7 +13,6 @@ set -e function main_ui() { echo -e "${yellow}/=======================================================\\" - echo -e "| Note: |" echo -e "| The following functions are currently unavailable: |" echo -e "| - Installation of KlipperScreen, OctoPrint, Obico, |" echo -e "| PrettyGCode, Telegram Bot, MJPG-Streamer. |" -- 2.39.5 From 7ba3b76537fe834dba9bf933c27059daa88001b9 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Thu, 20 Oct 2022 00:23:41 +0200 Subject: [PATCH 34/38] fix(moonraker): remove unused uds suffix Signed-off-by: Dominik Willner --- scripts/moonraker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index 4ea3df3..2249068 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -267,7 +267,7 @@ function create_moonraker_conf() { cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" - uds="${printer_data}/comms/klippy.sock-${names[${j}]}" + uds="${printer_data}/comms/klippy.sock" ### write multi instance config write_moonraker_conf "${cfg_dir}" "${cfg}" "${port}" "${uds}" "${lan}" -- 2.39.5 From 9b44fd9b34f713bf22227e523751d825375e1ed0 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Thu, 20 Oct 2022 00:54:53 +0200 Subject: [PATCH 35/38] readme: update readme Signed-off-by: Dominik Willner --- docs/changelog.md | 21 +++++++++++++++++++++ kiauh.sh | 2 ++ 2 files changed, 23 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index f449f3a..ecb9753 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,27 @@ This document covers possible important changes to KIAUH. +### 2022-10-20 +KIAUH has now reached major version 5 ! + +Recently Moonraker introduced some changes which makes it necessary to change the folder structure of printer setups. +If you are interested in the details, check out this PR: https://github.com/Arksine/moonraker/pull/491 \ +Although Moonraker has some mechanics available to migrate existing setups to the new file structure with the help of symlinks, fresh and clean installs +should be considered. + +The version jump of KIAUH to v5 is a breaking change due to those major changes! That means v4 and v5 are not compatible with each other! +This is also the reason why you will currently be greeted by a yellow notification in the main menu of KIAUH. I decided to disable a few functions of the script and focus on releasing the required +changes to the core components of this script. I will work on updating the other parts of the script piece by piece during the next days/weeks. +So I am already sorry in advance if one of your desired components you wanted to install will temporarily not work and might require a manual setup. + +**So what is working?**\ +Installation of Klipper, Moonraker, Mainsail and Fluidd. Both, single and multi-instance setups work!\ +As already said, the rest will follow in the near future. Updating and Removing of already installed components should continue to work. + +**What was removed?**\ +The option to change Klippers configuration directory got removed. From now on it will not be possible anymore to change +the configuration directory from within KIAUH and the new filestructure is enforced. + ### 2022-08-15 Support for "Obico for Klipper" was added! Huge thanks to [kennethjiang](https://github.com/kennethjiang) for helping me with the implementation! diff --git a/kiauh.sh b/kiauh.sh index 0e069af..8d40d98 100755 --- a/kiauh.sh +++ b/kiauh.sh @@ -14,6 +14,8 @@ # TODO: obico # TODO: pretty_gcode # TODO: upload_log +# TODO: all backup functions +# TODO: octoprint # TODO: doublecheck that nothing got missed! set -e -- 2.39.5 From edbe8e784039ee00f60d14ba9df3b4be31839642 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Thu, 20 Oct 2022 10:01:06 +0200 Subject: [PATCH 36/38] feat: add functions to remove legacy files Signed-off-by: Dominik Willner --- scripts/fluidd.sh | 14 ++++++++++++++ scripts/klipper.sh | 28 ++++++++++++++++++++++++++++ scripts/mainsail.sh | 14 ++++++++++++++ scripts/moonraker.sh | 14 ++++++++++++++ 4 files changed, 70 insertions(+) diff --git a/scripts/fluidd.sh b/scripts/fluidd.sh index 661c2ce..1277989 100644 --- a/scripts/fluidd.sh +++ b/scripts/fluidd.sh @@ -230,11 +230,25 @@ function remove_fluidd_log_symlinks() { fi } +function remove_legacy_fluidd_log_symlinks() { + local files + files=$(find "${HOME}/klipper_logs" -name "fluidd*" 2> /dev/null | sort) + + if [[ -n ${files} ]]; then + for file in ${files}; do + status_msg "Removing ${file} ..." + rm -f "${file}" + ok_msg "${file} removed!" + done + fi +} + function remove_fluidd() { remove_fluidd_dir remove_fluidd_config remove_fluidd_logs remove_fluidd_log_symlinks + remove_legacy_fluidd_log_symlinks ### remove fluidd_port from ~/.kiauh.ini sed -i "/^fluidd_port=/d" "${INI_FILE}" diff --git a/scripts/klipper.sh b/scripts/klipper.sh index b67f40a..2fdaa50 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -434,6 +434,19 @@ function remove_klipper_logs() { fi } +function remove_legacy_klipper_logs() { + local files regex="klippy(-[0-9a-zA-Z]+)?\.log(.*)?" + files=$(find "${HOME}/klipper_logs" -maxdepth 1 -regextype posix-extended -regex "${HOME}/klipper_logs/${regex}" 2> /dev/null | sort) + + if [[ -n ${files} ]]; then + for file in ${files}; do + status_msg "Removing ${file} ..." + rm -f "${file}" + ok_msg "${file} removed!" + done + fi +} + function remove_klipper_uds() { local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/comms\/klippy\.sock" files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) @@ -460,6 +473,19 @@ function remove_klipper_printer() { fi } +function remove_legacy_klipper_printer() { + local files + files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/printer(-[0-9a-zA-Z]+)?" | sort) + + if [[ -n ${files} ]]; then + for file in ${files}; do + status_msg "Removing ${file} ..." + rm -f "${file}" + ok_msg "${file} removed!" + done + fi +} + function remove_klipper_dir() { [[ ! -d ${KLIPPER_DIR} ]] && return @@ -481,8 +507,10 @@ function remove_klipper() { remove_klipper_systemd remove_klipper_env_file remove_klipper_logs + remove_legacy_klipper_logs remove_klipper_uds remove_klipper_printer + remove_legacy_klipper_printer remove_klipper_dir remove_klipper_env diff --git a/scripts/mainsail.sh b/scripts/mainsail.sh index 4e8bc9f..b3310ed 100644 --- a/scripts/mainsail.sh +++ b/scripts/mainsail.sh @@ -235,11 +235,25 @@ function remove_mainsail_log_symlinks() { fi } +function remove_legacy_mainsail_log_symlinks() { + local files + files=$(find "${HOME}/klipper_logs" -name "mainsail*" 2> /dev/null | sort) + + if [[ -n ${files} ]]; then + for file in ${files}; do + status_msg "Removing ${file} ..." + rm -f "${file}" + ok_msg "${file} removed!" + done + fi +} + function remove_mainsail() { remove_mainsail_dir remove_mainsail_config remove_mainsail_logs remove_mainsail_log_symlinks + remove_legacy_mainsail_log_symlinks ### remove mainsail_port from ~/.kiauh.ini sed -i "/^mainsail_port=/d" "${INI_FILE}" diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index 2249068..707b27d 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -490,6 +490,19 @@ function remove_moonraker_logs() { fi } +function remove_legacy_moonraker_logs() { + local files regex="moonraker(-[0-9a-zA-Z]+)?\.log(.*)?" + files=$(find "${HOME}/klipper_logs" -maxdepth 1 -regextype posix-extended -regex "${HOME}/klipper_logs/${regex}" 2> /dev/null | sort) + + if [[ -n ${files} ]]; then + for file in ${files}; do + status_msg "Removing ${file} ..." + rm -f "${file}" + ok_msg "${file} removed!" + done + fi +} + function remove_moonraker_api_key() { ### remove legacy api key if [[ -e "${HOME}/.klippy_api_key" ]]; then @@ -535,6 +548,7 @@ function remove_moonraker() { remove_moonraker_systemd remove_moonraker_env_file remove_moonraker_logs + remove_legacy_moonraker_logs remove_moonraker_api_key remove_moonraker_polkit remove_moonraker_dir -- 2.39.5 From f83edaf9cc22598faee080d86b5b27f4e0d5d6b0 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Thu, 20 Oct 2022 10:25:55 +0200 Subject: [PATCH 37/38] refactor: delete symlink to legacy folders Signed-off-by: Dominik Willner --- scripts/utilities.sh | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/scripts/utilities.sh b/scripts/utilities.sh index 0aa85d0..bf5ae73 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -354,13 +354,20 @@ function create_required_folders() { local printer_data=${1} folders folders=("backup" "certs" "config" "database" "gcodes" "comms" "logs" "systemd") - for dir in "${folders[@]}"; do - if [[ ! -d "${printer_data}/${dir}" ]]; then - status_msg "Creating folder '${printer_data}/${dir}' ..." - mkdir -p "${printer_data}/${dir}" - ok_msg "Folder '${printer_data}/${dir}' created!" - fi -done + for folder in "${folders[@]}"; do + local dir="${printer_data}/${folder}" + + ### remove possible symlink created by moonraker + if [[ -L "${dir}" && -d "${dir}" ]]; then + rm "${dir}" + fi + + if [[ ! -d "${dir}" ]]; then + status_msg "Creating folder '${dir}' ..." + mkdir -p "${dir}" + ok_msg "Folder '${dir}' created!" + fi + done } function check_system_updates() { -- 2.39.5 From 8edb30602583859bb4b82d36a50e2252bb8b7d45 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Thu, 20 Oct 2022 11:14:54 +0200 Subject: [PATCH 38/38] readme: update readme Signed-off-by: Dominik Willner --- docs/changelog.md | 40 +++++++++++++++++++++++++++++++++++----- scripts/ui/main_menu.sh | 9 ++------- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index ecb9753..b255c40 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -7,22 +7,52 @@ KIAUH has now reached major version 5 ! Recently Moonraker introduced some changes which makes it necessary to change the folder structure of printer setups. If you are interested in the details, check out this PR: https://github.com/Arksine/moonraker/pull/491 \ -Although Moonraker has some mechanics available to migrate existing setups to the new file structure with the help of symlinks, fresh and clean installs +Although Moonraker has some mechanics available to migrate existing setups to the new file structure with the use of symlinks, fresh and clean installs should be considered. The version jump of KIAUH to v5 is a breaking change due to those major changes! That means v4 and v5 are not compatible with each other! -This is also the reason why you will currently be greeted by a yellow notification in the main menu of KIAUH. I decided to disable a few functions of the script and focus on releasing the required -changes to the core components of this script. I will work on updating the other parts of the script piece by piece during the next days/weeks. -So I am already sorry in advance if one of your desired components you wanted to install will temporarily not work and might require a manual setup. +This is also the reason why you will currently be greeted by a yellow notification in the main menu of KIAUH leading to this changelog. +I decided to disable a few functions of the script and focus on releasing the required changes to the core components of this script. +I will work on updating the other parts of the script piece by piece during the next days/weeks. +So I am already sorry in advance if one of your desired components you wanted to install or use temporarily cannot be installed or used right now. + +The following functions are currently unavailable: +- Installation of: KlipperScreen, Obico, Octoprint, MJPG-Streamer, Telegram Bot and PrettyGCode +- All backup functions and the Log-Upload **So what is working?**\ Installation of Klipper, Moonraker, Mainsail and Fluidd. Both, single and multi-instance setups work!\ -As already said, the rest will follow in the near future. Updating and Removing of already installed components should continue to work. +As already said, the rest will follow in the near future. Updating and removal of already installed components should continue to work. **What was removed?**\ The option to change Klippers configuration directory got removed. From now on it will not be possible anymore to change the configuration directory from within KIAUH and the new filestructure is enforced. +**What if I don't have an existing Klipper/Moonraker install right now?**\ +Nothing important to think about, install Klipper and Moonraker. KIAUH will install both of them with the new filestructure. + +**What if I have an existing Klipper/Moonraker install?**\ +First of all: Backups! Please copy all of your config files and the Moonraker database (it is a hidden folder, usually `~/.moonraker_database`) to a safe location. +After that, uninstall Klipper and Moonraker with KIAUH. You can then proceed and re-install both of them with KIAUH again. It is important that you are on KIAUH v5 for that! +Once everything is installed again, you need to manually copy your configuration files from the old `~/klipper_config` folder to the new `~/printer_data/config` folder. +Previous, by Moonraker created symlinks to folder of the old filestructure will not work anymore, you need to move the files to their new location now! +Do the same with the two files inside of `~/.moonraker_database`. Move/copy them into `~/printer_data/database`. If `~/printer_data/database` is already populated with a `data.mdb` and `lock.mdb` +delete them or simply overwrite them. Nothing should be lost as those should be empty database files. Anyway, you made backups, right? +You can now proceed and restart Moonraker. Either from within Mainsail or Fluidd, or use SSH and execute `sudo systemctl restart moonraker`. +If everything went smooth, you should be good to go again. If you see some Moonraker warnings about deprecated options in the `moonraker.conf`, go ahead and resolve them. +I will not cover them in detail here. A good source is the Moonraker documentation: https://moonraker.readthedocs.io/en/latest/configuration/ + +**What if I have an existing Klipper/Moonraker multi-instance install?**\ +Pretty much the same steps that are required for single instance installs apply to multi-instance setups. So please go ahead and read the previous paragraph if you didn't already. +Make backups of everything first. Then remove and install the desired amount of Klipper and Moonraker instances again. +Now you need to move all config and database files to their new locations.\ +Example with an instance called `printer_1`:\ +The config files go from `~/klipper_config/printer_1` to `~/printer_1_data/config`. +The database files go from `~/.moonraker_database_1` to `~/printer_1_data/database`. +Now restart all Moonraker services. You can restart all of them at once if you launch KIAUH, and in the main menu type `restart moonraker` and hit Enter. + +I hope I have covered the most important things. In case you need further support, the official Klipper Discord is a good place to ask for help. + ### 2022-08-15 Support for "Obico for Klipper" was added! Huge thanks to [kennethjiang](https://github.com/kennethjiang) for helping me with the implementation! diff --git a/scripts/ui/main_menu.sh b/scripts/ui/main_menu.sh index 72bcc33..00e3989 100755 --- a/scripts/ui/main_menu.sh +++ b/scripts/ui/main_menu.sh @@ -13,13 +13,8 @@ set -e function main_ui() { echo -e "${yellow}/=======================================================\\" - echo -e "| The following functions are currently unavailable: |" - echo -e "| - Installation of KlipperScreen, OctoPrint, Obico, |" - echo -e "| PrettyGCode, Telegram Bot, MJPG-Streamer. |" - echo -e "| - Log-Upload and Backups |" - blank_line - echo -e "| They will be available again hopefully soon. |" - echo -e "| Sorry for the inconvenience! |" + echo -e "| Please read the newest changelog carefully: |" + echo -e "| https://git.io/JnmlX |" echo -e "\=======================================================/${white}" top_border echo -e "| $(title_msg "~~~~~~~~~~~~~~~ [ Main Menu ] ~~~~~~~~~~~~~~~") |" -- 2.39.5