mirror of
https://github.com/dw-0/kiauh.git
synced 2025-12-16 12:04:29 +05:00
feat: auto mainsailOS / fluiddPi migration
script: make use of moonrakers new log_path configuration option script: create webui nginx log symlinks upon installation/update
This commit is contained in:
@@ -3,6 +3,7 @@ host: 0.0.0.0
|
|||||||
port: %PORT%
|
port: %PORT%
|
||||||
enable_debug_logging: False
|
enable_debug_logging: False
|
||||||
config_path: %CFG%
|
config_path: %CFG%
|
||||||
|
log_path: %LOG%
|
||||||
database_path: %MR_DB%
|
database_path: %MR_DB%
|
||||||
klippy_uds_address: %UDS%
|
klippy_uds_address: %UDS%
|
||||||
|
|
||||||
|
|||||||
@@ -89,8 +89,9 @@ klipper_setup(){
|
|||||||
install_klipper_packages
|
install_klipper_packages
|
||||||
create_klipper_virtualenv
|
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}/gcode_files ] && mkdir -p ${HOME}/gcode_files
|
||||||
|
[ ! -d ${HOME}/klipper_logs ] && mkdir -p ${HOME}/klipper_logs
|
||||||
|
|
||||||
### step 4: create klipper instances
|
### step 4: create klipper instances
|
||||||
create_klipper_service
|
create_klipper_service
|
||||||
@@ -110,7 +111,7 @@ create_klipper_service(){
|
|||||||
CFG_PATH="$klipper_cfg_loc"
|
CFG_PATH="$klipper_cfg_loc"
|
||||||
KL_ENV=$KLIPPY_ENV
|
KL_ENV=$KLIPPY_ENV
|
||||||
KL_DIR=$KLIPPER_DIR
|
KL_DIR=$KLIPPER_DIR
|
||||||
KL_LOG="/tmp/klippy.log"
|
KL_LOG="${HOME}/klipper_logs/klippy.log"
|
||||||
KL_UDS="/tmp/klippy_uds"
|
KL_UDS="/tmp/klippy_uds"
|
||||||
P_TMP="/tmp/printer"
|
P_TMP="/tmp/printer"
|
||||||
P_CFG="$CFG_PATH/printer.cfg"
|
P_CFG="$CFG_PATH/printer.cfg"
|
||||||
@@ -154,7 +155,7 @@ create_klipper_service(){
|
|||||||
KL_SERV_TARGET="$SYSTEMDDIR/klipper-$i.service"
|
KL_SERV_TARGET="$SYSTEMDDIR/klipper-$i.service"
|
||||||
P_TMP="/tmp/printer-$i"
|
P_TMP="/tmp/printer-$i"
|
||||||
P_CFG="$CFG_PATH/printer.cfg"
|
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"
|
KL_UDS="/tmp/klippy_uds-$i"
|
||||||
### write multi instance service
|
### write multi instance service
|
||||||
write_kl_service
|
write_kl_service
|
||||||
|
|||||||
@@ -100,6 +100,9 @@ install_webui(){
|
|||||||
### creating the mainsail/fluidd nginx cfg
|
### creating the mainsail/fluidd nginx cfg
|
||||||
set_nginx_cfg "$1"
|
set_nginx_cfg "$1"
|
||||||
|
|
||||||
|
### symlink nginx log
|
||||||
|
symlink_webui_nginx_log "$1"
|
||||||
|
|
||||||
### copy the kiauh_macros.cfg to the config location
|
### copy the kiauh_macros.cfg to the config location
|
||||||
install_kiauh_macros
|
install_kiauh_macros
|
||||||
|
|
||||||
@@ -114,6 +117,23 @@ install_webui(){
|
|||||||
print_msg && clear_msg
|
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(){
|
install_kiauh_macros(){
|
||||||
source_kiauh_ini
|
source_kiauh_ini
|
||||||
### copy kiauh_macros.cfg
|
### copy kiauh_macros.cfg
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ EOT
|
|||||||
status_msg "Creating MJPG-Streamer service ..."
|
status_msg "Creating MJPG-Streamer service ..."
|
||||||
sudo cp $MJPG_SERV_SRC $MJPG_SERV_TARGET
|
sudo cp $MJPG_SERV_SRC $MJPG_SERV_TARGET
|
||||||
sudo sed -i "s|%USER%|${USER}|" $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
|
### step 6: enabling and starting mjpg-streamer service
|
||||||
status_msg "Starting MJPG-Streamer service ..."
|
status_msg "Starting MJPG-Streamer service ..."
|
||||||
@@ -72,6 +73,12 @@ EOT
|
|||||||
sudo systemctl start webcamd.service
|
sudo systemctl start webcamd.service
|
||||||
ok_msg "MJPG-Streamer service started!"
|
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 message
|
||||||
CONFIRM_MSG="MJPG-Streamer has been set up!"
|
CONFIRM_MSG="MJPG-Streamer has been set up!"
|
||||||
print_msg && clear_msg
|
print_msg && clear_msg
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ create_moonraker_service(){
|
|||||||
CFG_PATH="$klipper_cfg_loc"
|
CFG_PATH="$klipper_cfg_loc"
|
||||||
MR_ENV=$MOONRAKER_ENV
|
MR_ENV=$MOONRAKER_ENV
|
||||||
MR_DIR=$MOONRAKER_DIR
|
MR_DIR=$MOONRAKER_DIR
|
||||||
MR_LOG="/tmp/moonraker.log"
|
MR_LOG="${HOME}/klipper_logs/moonraker.log"
|
||||||
MR_CONF="$CFG_PATH/moonraker.conf"
|
MR_CONF="$CFG_PATH/moonraker.conf"
|
||||||
MR_SERV_SRC="${SRCDIR}/kiauh/resources/moonraker.service"
|
MR_SERV_SRC="${SRCDIR}/kiauh/resources/moonraker.service"
|
||||||
MR_SERV_TARGET="$SYSTEMDDIR/moonraker.service"
|
MR_SERV_TARGET="$SYSTEMDDIR/moonraker.service"
|
||||||
@@ -225,7 +225,7 @@ create_moonraker_service(){
|
|||||||
CFG_PATH="$klipper_cfg_loc/printer_$i"
|
CFG_PATH="$klipper_cfg_loc/printer_$i"
|
||||||
MR_SERV_TARGET="$SYSTEMDDIR/moonraker-$i.service"
|
MR_SERV_TARGET="$SYSTEMDDIR/moonraker-$i.service"
|
||||||
MR_CONF="$CFG_PATH/moonraker.conf"
|
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 multi instance service
|
||||||
write_mr_service
|
write_mr_service
|
||||||
### enable instance
|
### enable instance
|
||||||
@@ -258,6 +258,7 @@ create_moonraker_conf(){
|
|||||||
SINGLE_INST=1
|
SINGLE_INST=1
|
||||||
PORT=7125
|
PORT=7125
|
||||||
CFG_PATH="$klipper_cfg_loc"
|
CFG_PATH="$klipper_cfg_loc"
|
||||||
|
LOG_PATH="${HOME}/klipper_logs"
|
||||||
MR_CONF="$CFG_PATH/moonraker.conf"
|
MR_CONF="$CFG_PATH/moonraker.conf"
|
||||||
MR_DB="~/.moonraker_database"
|
MR_DB="~/.moonraker_database"
|
||||||
KLIPPY_UDS="/tmp/klippy_uds"
|
KLIPPY_UDS="/tmp/klippy_uds"
|
||||||
@@ -273,6 +274,7 @@ create_moonraker_conf(){
|
|||||||
cp $MR_CONF_SRC $MR_CONF
|
cp $MR_CONF_SRC $MR_CONF
|
||||||
sed -i "s|%PORT%|$PORT|" $MR_CONF
|
sed -i "s|%PORT%|$PORT|" $MR_CONF
|
||||||
sed -i "s|%CFG%|$CFG_PATH|" $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|%MR_DB%|$MR_DB|" $MR_CONF
|
||||||
sed -i "s|%UDS%|$KLIPPY_UDS|" $MR_CONF
|
sed -i "s|%UDS%|$KLIPPY_UDS|" $MR_CONF
|
||||||
sed -i "s|%LAN%|$LAN|" $MR_CONF
|
sed -i "s|%LAN%|$LAN|" $MR_CONF
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ remove_klipper(){
|
|||||||
shopt -s extglob # enable extended globbing
|
shopt -s extglob # enable extended globbing
|
||||||
### ask the user if he wants to uninstall moonraker too.
|
### ask the user if he wants to uninstall moonraker too.
|
||||||
###? currently usefull if the user wants to switch from single-instance to multi-instance
|
###? 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
|
while true; do
|
||||||
unset REM_MR
|
unset REM_MR
|
||||||
top_border
|
top_border
|
||||||
@@ -64,7 +65,7 @@ remove_klipper(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
### remove all logfiles
|
### 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
|
if ls $FILE 2>/dev/null 1>&2; then
|
||||||
for log in $(ls $FILE); do
|
for log in $(ls $FILE); do
|
||||||
status_msg "Removing $log ..."
|
status_msg "Removing $log ..."
|
||||||
@@ -145,7 +146,7 @@ remove_moonraker(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
### remove all logfiles
|
### 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
|
if ls $FILE 2>/dev/null 1>&2; then
|
||||||
for log in $(ls $FILE); do
|
for log in $(ls $FILE); do
|
||||||
status_msg "Removing $log ..."
|
status_msg "Removing $log ..."
|
||||||
@@ -264,6 +265,14 @@ remove_mainsail(){
|
|||||||
sudo rm /etc/nginx/sites-enabled/mainsail && ok_msg "File removed!"
|
sudo rm /etc/nginx/sites-enabled/mainsail && ok_msg "File removed!"
|
||||||
fi
|
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!"
|
CONFIRM_MSG="Mainsail successfully removed!"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,6 +295,14 @@ remove_fluidd(){
|
|||||||
sudo rm /etc/nginx/sites-enabled/fluidd && ok_msg "File removed!"
|
sudo rm /etc/nginx/sites-enabled/fluidd && ok_msg "File removed!"
|
||||||
fi
|
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!"
|
CONFIRM_MSG="Fluidd successfully removed!"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,5 +434,9 @@ remove_mjpg-streamer(){
|
|||||||
ok_msg "MJPG-Streamer directory removed!"
|
ok_msg "MJPG-Streamer directory removed!"
|
||||||
fi
|
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!"
|
CONFIRM_MSG="MJPG-Streamer successfully removed!"
|
||||||
}
|
}
|
||||||
@@ -62,6 +62,79 @@ update_all(){
|
|||||||
done
|
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(){
|
update_klipper(){
|
||||||
klipper_service "stop"
|
klipper_service "stop"
|
||||||
if [ ! -d $KLIPPER_DIR ]; then
|
if [ ! -d $KLIPPER_DIR ]; then
|
||||||
@@ -98,9 +171,11 @@ update_klipper(){
|
|||||||
$PYTHONDIR/bin/pip install -r $KLIPPER_DIR/scripts/klippy-requirements.txt
|
$PYTHONDIR/bin/pip install -r $KLIPPER_DIR/scripts/klippy-requirements.txt
|
||||||
ok_msg "Dependencies have been installed!"
|
ok_msg "Dependencies have been installed!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ok_msg "Update complete!"
|
|
||||||
fi
|
fi
|
||||||
|
migrate_custompios "mainsail"
|
||||||
|
migrate_custompios "fluiddpi"
|
||||||
|
update_log_paths "klipper"
|
||||||
|
ok_msg "Update complete!"
|
||||||
klipper_service "restart"
|
klipper_service "restart"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,12 +199,14 @@ update_mainsail(){
|
|||||||
bb4u "mainsail"
|
bb4u "mainsail"
|
||||||
status_msg "Updating Mainsail ..."
|
status_msg "Updating Mainsail ..."
|
||||||
mainsail_setup
|
mainsail_setup
|
||||||
|
symlink_webui_nginx_log "mainsail"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_fluidd(){
|
update_fluidd(){
|
||||||
bb4u "fluidd"
|
bb4u "fluidd"
|
||||||
status_msg "Updating Fluidd ..."
|
status_msg "Updating Fluidd ..."
|
||||||
fluidd_setup
|
fluidd_setup
|
||||||
|
symlink_webui_nginx_log "fluidd"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_moonraker(){
|
update_moonraker(){
|
||||||
@@ -158,7 +235,7 @@ update_moonraker(){
|
|||||||
${PYTHONDIR}/bin/pip install -r $MOONRAKER_DIR/scripts/moonraker-requirements.txt
|
${PYTHONDIR}/bin/pip install -r $MOONRAKER_DIR/scripts/moonraker-requirements.txt
|
||||||
ok_msg "Dependencies have been installed!"
|
ok_msg "Dependencies have been installed!"
|
||||||
fi
|
fi
|
||||||
|
update_log_paths "moonraker"
|
||||||
ok_msg "Update complete!"
|
ok_msg "Update complete!"
|
||||||
moonraker_service "restart"
|
moonraker_service "restart"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user