diff --git a/resources/moonraker.conf b/resources/moonraker.conf index 189bccc..c77ac32 100644 --- a/resources/moonraker.conf +++ b/resources/moonraker.conf @@ -3,6 +3,7 @@ host: 0.0.0.0 port: %PORT% enable_debug_logging: False config_path: %CFG% +log_path: %LOG% database_path: %MR_DB% klippy_uds_address: %UDS% diff --git a/scripts/install_klipper.sh b/scripts/install_klipper.sh index 5f82b4a..ce63d43 100755 --- a/scripts/install_klipper.sh +++ b/scripts/install_klipper.sh @@ -89,8 +89,9 @@ klipper_setup(){ install_klipper_packages create_klipper_virtualenv - ### step 3: create shared gcode_files folder + ### step 3: create shared gcode_files and logs folder [ ! -d ${HOME}/gcode_files ] && mkdir -p ${HOME}/gcode_files + [ ! -d ${HOME}/klipper_logs ] && mkdir -p ${HOME}/klipper_logs ### step 4: create klipper instances create_klipper_service @@ -110,7 +111,7 @@ create_klipper_service(){ CFG_PATH="$klipper_cfg_loc" KL_ENV=$KLIPPY_ENV KL_DIR=$KLIPPER_DIR - KL_LOG="/tmp/klippy.log" + KL_LOG="${HOME}/klipper_logs/klippy.log" KL_UDS="/tmp/klippy_uds" P_TMP="/tmp/printer" P_CFG="$CFG_PATH/printer.cfg" @@ -154,7 +155,7 @@ create_klipper_service(){ KL_SERV_TARGET="$SYSTEMDDIR/klipper-$i.service" P_TMP="/tmp/printer-$i" P_CFG="$CFG_PATH/printer.cfg" - KL_LOG="/tmp/klippy-$i.log" + KL_LOG="${HOME}/klipper_logs/klippy-$i.log" KL_UDS="/tmp/klippy_uds-$i" ### write multi instance service write_kl_service diff --git a/scripts/install_klipper_webui.sh b/scripts/install_klipper_webui.sh index ac9ed51..e949cf9 100755 --- a/scripts/install_klipper_webui.sh +++ b/scripts/install_klipper_webui.sh @@ -100,6 +100,9 @@ install_webui(){ ### creating the mainsail/fluidd nginx cfg set_nginx_cfg "$1" + ### symlink nginx log + symlink_webui_nginx_log "$1" + ### copy the kiauh_macros.cfg to the config location install_kiauh_macros @@ -114,6 +117,23 @@ install_webui(){ print_msg && clear_msg } +symlink_webui_nginx_log(){ + LPATH="${HOME}/klipper_logs" + UI_ACCESS_LOG="/var/log/nginx/$1-access.log" + UI_ERROR_LOG="/var/log/nginx/$1-error.log" + [ ! -d "$LPATH" ] && mkdir -p "$LPATH" + if [ -f "$UI_ACCESS_LOG" ] && [ ! -L "$LPATH/$1-access.log" ]; then + status_msg "Creating symlink for $UI_ACCESS_LOG ..." + ln -s $UI_ACCESS_LOG "$LPATH" + ok_msg "OK!" + fi + if [ -f "$UI_ERROR_LOG" ] && [ ! -L "$LPATH/$1-error.log" ]; then + status_msg "Creating symlink for $UI_ERROR_LOG ..." + ln -s $UI_ERROR_LOG "$LPATH" + ok_msg "OK!" + fi +} + install_kiauh_macros(){ source_kiauh_ini ### copy kiauh_macros.cfg diff --git a/scripts/install_mjpg-streamer.sh b/scripts/install_mjpg-streamer.sh index fc59f15..f58e0c8 100755 --- a/scripts/install_mjpg-streamer.sh +++ b/scripts/install_mjpg-streamer.sh @@ -65,6 +65,7 @@ EOT status_msg "Creating MJPG-Streamer service ..." sudo cp $MJPG_SERV_SRC $MJPG_SERV_TARGET sudo sed -i "s|%USER%|${USER}|" $MJPG_SERV_TARGET + ok_msg "MJPG-Streamer service created!" ### step 6: enabling and starting mjpg-streamer service status_msg "Starting MJPG-Streamer service ..." @@ -72,6 +73,12 @@ EOT sudo systemctl start webcamd.service ok_msg "MJPG-Streamer service started!" + ### step 6.1: create webcamd.log symlink + [ ! -d ${HOME}/klipper_logs ] && mkdir -p "${HOME}/klipper_logs" + if [ -f "/var/log/webcamd.log" ] && [ ! -L "${HOME}/klipper_logs/webcamd.log" ]; then + ln -s "/var/log/webcamd.log" "${HOME}/klipper_logs/webcamd.log" + fi + ### confirm message CONFIRM_MSG="MJPG-Streamer has been set up!" print_msg && clear_msg diff --git a/scripts/install_moonraker.sh b/scripts/install_moonraker.sh index bf79dbc..6abe1fd 100755 --- a/scripts/install_moonraker.sh +++ b/scripts/install_moonraker.sh @@ -191,7 +191,7 @@ create_moonraker_service(){ CFG_PATH="$klipper_cfg_loc" MR_ENV=$MOONRAKER_ENV MR_DIR=$MOONRAKER_DIR - MR_LOG="/tmp/moonraker.log" + MR_LOG="${HOME}/klipper_logs/moonraker.log" MR_CONF="$CFG_PATH/moonraker.conf" MR_SERV_SRC="${SRCDIR}/kiauh/resources/moonraker.service" MR_SERV_TARGET="$SYSTEMDDIR/moonraker.service" @@ -225,7 +225,7 @@ create_moonraker_service(){ CFG_PATH="$klipper_cfg_loc/printer_$i" MR_SERV_TARGET="$SYSTEMDDIR/moonraker-$i.service" MR_CONF="$CFG_PATH/moonraker.conf" - MR_LOG="/tmp/moonraker-$i.log" + MR_LOG="${HOME}/klipper_logs/moonraker-$i.log" ### write multi instance service write_mr_service ### enable instance @@ -258,6 +258,7 @@ create_moonraker_conf(){ SINGLE_INST=1 PORT=7125 CFG_PATH="$klipper_cfg_loc" + LOG_PATH="${HOME}/klipper_logs" MR_CONF="$CFG_PATH/moonraker.conf" MR_DB="~/.moonraker_database" KLIPPY_UDS="/tmp/klippy_uds" @@ -273,6 +274,7 @@ create_moonraker_conf(){ cp $MR_CONF_SRC $MR_CONF sed -i "s|%PORT%|$PORT|" $MR_CONF sed -i "s|%CFG%|$CFG_PATH|" $MR_CONF + sed -i "s|%LOG%|$LOG_PATH|" $MR_CONF sed -i "s|%MR_DB%|$MR_DB|" $MR_CONF sed -i "s|%UDS%|$KLIPPY_UDS|" $MR_CONF sed -i "s|%LAN%|$LAN|" $MR_CONF diff --git a/scripts/remove.sh b/scripts/remove.sh index 6af4f65..77c47bd 100755 --- a/scripts/remove.sh +++ b/scripts/remove.sh @@ -5,7 +5,8 @@ remove_klipper(){ shopt -s extglob # enable extended globbing ### ask the user if he wants to uninstall moonraker too. ###? currently usefull if the user wants to switch from single-instance to multi-instance - if ls /etc/systemd/system/moonraker*.service 2>/dev/null 1>&2; then + FILE="$SYSTEMDDIR/moonraker?(-*([0-9])).service" + if ls $FILE 2>/dev/null 1>&2; then while true; do unset REM_MR top_border @@ -64,7 +65,7 @@ remove_klipper(){ fi ### remove all logfiles - FILE="/tmp/klippy?(-*([0-9])).log" + FILE="${HOME}/klipper_logs/klippy?(-*([0-9])).log" if ls $FILE 2>/dev/null 1>&2; then for log in $(ls $FILE); do status_msg "Removing $log ..." @@ -145,7 +146,7 @@ remove_moonraker(){ fi ### remove all logfiles - FILE="/tmp/moonraker?(-*([0-9])).log" + FILE="${HOME}/klipper_logs/moonraker?(-*([0-9])).log" if ls $FILE 2>/dev/null 1>&2; then for log in $(ls $FILE); do status_msg "Removing $log ..." @@ -264,6 +265,14 @@ remove_mainsail(){ sudo rm /etc/nginx/sites-enabled/mainsail && ok_msg "File removed!" fi + ### remove mainsail nginx logs and log symlinks + for log in $(find /var/log/nginx -name "mainsail*"); do + sudo rm -f $log + done + for log in $(find ${HOME}/klipper_logs -name "mainsail*"); do + rm -f $log + done + CONFIRM_MSG="Mainsail successfully removed!" } @@ -286,6 +295,14 @@ remove_fluidd(){ sudo rm /etc/nginx/sites-enabled/fluidd && ok_msg "File removed!" fi + ### remove mainsail nginx logs and log symlinks + for log in $(find /var/log/nginx -name "fluidd*"); do + sudo rm -f $log + done + for log in $(find ${HOME}/klipper_logs -name "fluidd*"); do + rm -f $log + done + CONFIRM_MSG="Fluidd successfully removed!" } @@ -417,5 +434,9 @@ remove_mjpg-streamer(){ ok_msg "MJPG-Streamer directory removed!" fi + ### remove webcamd log and symlink + [ -f "/var/log/webcamd.log" ] && sudo rm -f "/var/log/webcamd.log" + [ -L "${HOME}/klipper_logs/webcamd.log" ] && rm -f "${HOME}/klipper_logs/webcamd.log" + CONFIRM_MSG="MJPG-Streamer successfully removed!" } \ No newline at end of file diff --git a/scripts/update.sh b/scripts/update.sh index 3c6ff12..f7f49ae 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -62,6 +62,79 @@ update_all(){ done } +update_log_paths(){ + ### update services to make use of moonrakers new log_path option + ### https://github.com/Arksine/moonraker/commit/829b3a4ee80579af35dd64a37ccc092a1f67682a + shopt -s extglob # enable extended globbing + LPATH="${HOME}/klipper_logs" + [ ! -d "$LPATH" ] && mkdir -p "$LPATH" + FILE="$SYSTEMDDIR/$1?(-*([0-9])).service" + for file in $(ls $FILE); do + [ "$1" == "klipper" ] && LOG="klippy" + [ "$1" == "moonraker" ] && LOG="moonraker" + if [ ! "$(grep "\-l" $file)" ]; then + status_msg "Updating $file ..." + sudo sed -i -r "/ExecStart=/ s|$| -l $LPATH/$LOG.log|" $file + ok_msg "$file updated!" + elif [ "$(grep "\-l \/tmp\/$LOG" $file)" ]; then + status_msg "Updating $file ..." + sudo sed -i -r "/ExecStart=/ s|-l \/tmp\/$LOG|-l $LPATH/$LOG|" $file + ok_msg "$file updated!" + fi + done + sudo systemctl daemon-reload + + # create symlink for mainsail and fluidd nginx logs + symlink_webui_nginx_log "mainsail" + symlink_webui_nginx_log "fluidd" + + # create symlink for webcamd log + if [ -f "/var/log/webcamd.log" ] && [ ! -L "$LPATH/webcamd.log" ]; then + status_msg "Creating symlink for '/var/log/webcamd.log' ..." + ln -s "/var/log/webcamd.log" "$LPATH" + ok_msg "OK!" + fi + + shopt -u extglob # disable extended globbing +} + +migrate_custompios(){ + ### migrate vanilla mainsailOS 0.4.0 and fluiddPI v1.13.0 + ### and older to be in sync with their newer releases + if [ -f "/boot/$1.txt" ]; then + status_msg "Starting migration... Please wait..." + ### migrate webcam related stuff + WEBCAMD_SRC="https://raw.githubusercontent.com/raymondh2/MainsailOS/master/src/modules/mjpgstreamer/filesystem/root/usr/local/bin/webcamd" + MJPG_SERV_SRC="${SRCDIR}/kiauh/resources/webcamd.service" + MJPG_SERV_TARGET="$SYSTEMDDIR/webcamd.service" + KL_SERV_SRC="https://raw.githubusercontent.com/raymondh2/MainsailOS/dev-klipper-serviced/src/modules/klipper/filesystem/root/etc/systemd/system/klipper.service" + # stop webcam service + sudo systemctl stop webcamd.service + # replace old webcamd.service + sudo rm -f "$SYSTEMDDIR/webcamd.service" + # replace old webcamd + sudo rm -f "/root/bin/webcamd" + sudo cp $MJPG_SERV_SRC $MJPG_SERV_TARGET + sudo sed -i "s|%USER%|pi|" $MJPG_SERV_TARGET + sudo wget $WEBCAMD_SRC -O "/usr/local/bin/webcamd" + sudo chmod +x /usr/local/bin/webcamd + # copy mainsail.txt or fluidd.txt to klipper_config and rename it + sudo mv "/boot/$1.txt" "${HOME}/klipper_config/webcam.txt" + sudo chown pi:pi "${HOME}/klipper_config/webcam.txt" + ### migrate klipper related stuff + sudo service klipper stop + # stop and remove init.d klipper service + sudo update-rc.d -f klipper remove + sudo rm -f /etc/init.d/klipper + sudo rm -f /etc/default/klipper + # create new systemd service + sudo wget $KL_SERV_SRC -O "/etc/systemd/system/klipper.service" + sudo systemctl enable klipper.service + sudo systemctl daemon-reload + ok_msg "Migration complete!" + fi +} + update_klipper(){ klipper_service "stop" if [ ! -d $KLIPPER_DIR ]; then @@ -98,9 +171,11 @@ update_klipper(){ $PYTHONDIR/bin/pip install -r $KLIPPER_DIR/scripts/klippy-requirements.txt ok_msg "Dependencies have been installed!" fi - - ok_msg "Update complete!" fi + migrate_custompios "mainsail" + migrate_custompios "fluiddpi" + update_log_paths "klipper" + ok_msg "Update complete!" klipper_service "restart" } @@ -124,12 +199,14 @@ update_mainsail(){ bb4u "mainsail" status_msg "Updating Mainsail ..." mainsail_setup + symlink_webui_nginx_log "mainsail" } update_fluidd(){ bb4u "fluidd" status_msg "Updating Fluidd ..." fluidd_setup + symlink_webui_nginx_log "fluidd" } update_moonraker(){ @@ -158,7 +235,7 @@ update_moonraker(){ ${PYTHONDIR}/bin/pip install -r $MOONRAKER_DIR/scripts/moonraker-requirements.txt ok_msg "Dependencies have been installed!" fi - + update_log_paths "moonraker" ok_msg "Update complete!" moonraker_service "restart" }