mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-09-14 18:56:52 +00:00
- safely migrate historical Bashrc and Log2RAM installations - align post-install function versions across both flows - bundle gevent runtimes for CPython 3.11 and 3.13 - select the correct Python ABI at runtime - validate both supported Proxmox VE Python versions in AppImage workflows - fix #327, #328 and #331
64 lines
2.7 KiB
Bash
64 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
# ProxMenux Monitor AppImage Entry Point
|
|
# This script is executed when the AppImage is run
|
|
|
|
# Get the directory where this AppImage is mounted
|
|
APPDIR="$(dirname "$(readlink -f "${0}")")"
|
|
|
|
export PATH="${APPDIR}/usr/bin:${PATH}"
|
|
export LD_LIBRARY_PATH="${APPDIR}/usr/lib/x86_64-linux-gnu:${APPDIR}/usr/lib:${APPDIR}/lib/x86_64-linux-gnu:${APPDIR}/lib:${LD_LIBRARY_PATH}"
|
|
|
|
# Select the native dependency tree matching the host interpreter. PVE 8
|
|
# uses CPython 3.11 and PVE 9 uses CPython 3.13; both runtimes are bundled in
|
|
# the same AppImage so its gevent HTTPS/WSS server is independent of the
|
|
# Python version used by the GitHub Actions build runner.
|
|
PYTHON_ABI="$(python3 -c 'import sys; print(f"cp{sys.version_info.major}{sys.version_info.minor}")' 2>/dev/null || true)"
|
|
PYTHON_ABI_DIR="${APPDIR}/usr/lib/python3/vendor/${PYTHON_ABI}"
|
|
PYTHON_COMMON_DIRS="${APPDIR}/usr/lib/python3/dist-packages:${APPDIR}/usr/lib/python3/site-packages"
|
|
|
|
case "$PYTHON_ABI" in
|
|
cp311|cp313)
|
|
if [ -d "$PYTHON_ABI_DIR" ]; then
|
|
export PYTHONPATH="${PYTHON_ABI_DIR}:${PYTHON_COMMON_DIRS}${PYTHONPATH:+:${PYTHONPATH}}"
|
|
else
|
|
echo "⚠️ Bundled Python runtime ${PYTHON_ABI} is missing; HTTPS/WSS may be unavailable" >&2
|
|
export PYTHONPATH="${PYTHON_COMMON_DIRS}${PYTHONPATH:+:${PYTHONPATH}}"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "⚠️ Unsupported host Python ABI '${PYTHON_ABI:-unknown}'; expected cp311 (PVE 8) or cp313 (PVE 9)" >&2
|
|
export PYTHONPATH="${PYTHON_COMMON_DIRS}${PYTHONPATH:+:${PYTHONPATH}}"
|
|
;;
|
|
esac
|
|
|
|
# Change to the AppImage directory
|
|
cd "${APPDIR}"
|
|
|
|
# Check for translation argument
|
|
if [[ "$1" == "--translate" ]]; then
|
|
echo "🌐 Starting ProxMenux Translation Service..."
|
|
exec python3 "${APPDIR}/usr/bin/translate_cli.py" "${@:2}"
|
|
else
|
|
echo "🚀 Starting ProxMenux Monitor Dashboard..."
|
|
echo ""
|
|
|
|
echo "🔧 Hardware monitoring tools:"
|
|
[ -x "${APPDIR}/usr/bin/ipmitool" ] && echo " ✅ ipmitool available" || echo " ⚠️ ipmitool not available"
|
|
[ -x "${APPDIR}/usr/bin/sensors" ] && echo " ✅ sensors available" || echo " ⚠️ sensors not available"
|
|
[ -x "${APPDIR}/usr/bin/upsc" ] && echo " ✅ upsc available" || echo " ⚠️ upsc not available"
|
|
|
|
if [ -x "${APPDIR}/usr/bin/ipmitool" ]; then
|
|
if ldd "${APPDIR}/usr/bin/ipmitool" 2>/dev/null | grep -q "libfreeipmi.so.17 => not found"; then
|
|
echo " ⚠️ libfreeipmi.so.17 not found - ipmitool may not work"
|
|
elif ldd "${APPDIR}/usr/bin/ipmitool" 2>/dev/null | grep -q "libfreeipmi.so.17"; then
|
|
echo " ✅ libfreeipmi.so.17 loaded successfully"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Start the Flask server
|
|
exec python3 "${APPDIR}/usr/bin/flask_server.py"
|
|
fi
|