From 09bd167536fb6ab3f2716a6955f55f91a20f0076 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 17 Sep 2026 14:25:22 +0500 Subject: [PATCH] optimized installer --- install.sh | 238 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 226 insertions(+), 12 deletions(-) diff --git a/install.sh b/install.sh index 9194c89..738932a 100755 --- a/install.sh +++ b/install.sh @@ -2,42 +2,222 @@ set -e +# ============================================================ +# Linux Parental Control - Installer +# ============================================================ + if [ "$EUID" -ne 0 ]; then - echo "Please run with sudo" + echo "Please run with sudo:" + echo " sudo ./install.sh" exit 1 fi - INSTALL_DIR="$(cd "$(dirname "$0")" && pwd)" +echo +echo "==================================" +echo "Linux Parental Control Installer" +echo "==================================" +echo echo "Installing from:" echo "$INSTALL_DIR" +echo +# ============================================================ +# Detect Linux distribution +# ============================================================ + +if [ -f /etc/os-release ]; then + . /etc/os-release +else + echo "ERROR: Cannot determine Linux distribution." + exit 1 +fi + +echo "Detected:" +echo " Distribution: ${PRETTY_NAME:-Unknown}" +echo + + +# ============================================================ +# Detect package manager +# ============================================================ + +PACKAGE_MANAGER="" + +if command -v pacman >/dev/null 2>&1; then + PACKAGE_MANAGER="pacman" + +elif command -v apt-get >/dev/null 2>&1; then + PACKAGE_MANAGER="apt" + +elif command -v dnf >/dev/null 2>&1; then + PACKAGE_MANAGER="dnf" + +elif command -v zypper >/dev/null 2>&1; then + PACKAGE_MANAGER="zypper" + +elif command -v apk >/dev/null 2>&1; then + PACKAGE_MANAGER="apk" + +elif command -v xbps-install >/dev/null 2>&1; then + PACKAGE_MANAGER="xbps" + +else + echo "ERROR: Unsupported Linux distribution." + echo + echo "Supported package managers:" + echo " pacman" + echo " apt" + echo " dnf" + echo " zypper" + echo " apk" + echo " xbps" + exit 1 +fi + +echo "Package manager:" +echo " $PACKAGE_MANAGER" +echo + + +# ============================================================ +# Check systemd +# ============================================================ + +if ! command -v systemctl >/dev/null 2>&1; then + echo "ERROR: systemd is required." + echo + echo "This installer installs a systemd service." + exit 1 +fi + +if [ ! -d /run/systemd/system ]; then + echo "ERROR: systemd is not currently running." + echo + echo "This installer requires a running systemd system." + exit 1 +fi + +echo "systemd detected." +echo + + +# ============================================================ +# Install system dependencies +# ============================================================ + echo "[1/5] Installing dependencies" -pacman -S --needed --noconfirm python python-pip +case "$PACKAGE_MANAGER" in + pacman) + pacman -Syu --needed --noconfirm \ + python \ + python-pip + ;; + + apt) + apt-get update + + DEBIAN_FRONTEND=noninteractive \ + apt-get install -y \ + python3 \ + python3-pip \ + python3-venv + ;; + + dnf) + dnf install -y \ + python3 \ + python3-pip + ;; + + zypper) + zypper --non-interactive install \ + python3 \ + python3-pip + ;; + + apk) + apk add \ + python3 \ + py3-pip \ + py3-virtualenv + ;; + + xbps) + xbps-install -Sy \ + python3 \ + python3-pip + ;; + +esac + + +# ============================================================ +# Verify Python +# ============================================================ + +if ! command -v python3 >/dev/null 2>&1; then + echo "ERROR: python3 was not installed." + exit 1 +fi + +PYTHON="$(command -v python3)" + +echo +echo "Python:" +"$PYTHON" --version +echo + + +# ============================================================ +# Create virtual environment +# ============================================================ echo "[2/5] Creating virtual environment" if [ ! -d "$INSTALL_DIR/.venv" ]; then - python -m venv "$INSTALL_DIR/.venv" + "$PYTHON" -m venv "$INSTALL_DIR/.venv" +else + echo "Virtual environment already exists." fi +# ============================================================ +# Install Python packages +# ============================================================ + +echo echo "[3/5] Installing Python packages" -"$INSTALL_DIR/.venv/bin/pip" install -r "$INSTALL_DIR/requirements.txt" +"$INSTALL_DIR/.venv/bin/python" -m pip install \ + --upgrade pip + +"$INSTALL_DIR/.venv/bin/python" -m pip install \ + -r "$INSTALL_DIR/requirements.txt" +# ============================================================ +# Install systemd service +# ============================================================ + +echo echo "[4/5] Installing systemd service" -sed \ -"s|%INSTALL_DIR%|$INSTALL_DIR|g" \ -"$INSTALL_DIR/parental-control.service" \ -> /etc/systemd/system/parental-control.service +SERVICE_FILE="/etc/systemd/system/parental-control.service" +sed \ + "s|%INSTALL_DIR%|$INSTALL_DIR|g" \ + "$INSTALL_DIR/parental-control.service" \ + > "$SERVICE_FILE" + + +# ============================================================ +# Enable and start service +# ============================================================ systemctl daemon-reload @@ -46,13 +226,47 @@ systemctl enable parental-control.service systemctl restart parental-control.service +# ============================================================ +# Verify service +# ============================================================ + +echo +echo "[5/5] Verifying installation" + +if systemctl is-active --quiet parental-control.service; then + SERVICE_STATUS="running" +else + SERVICE_STATUS="FAILED" +fi + + +# ============================================================ +# Result +# ============================================================ + echo echo "==================================" echo "Parental Control installed" +echo "==================================" +echo +echo "Distribution:" +echo " ${PRETTY_NAME:-Unknown}" +echo +echo "Python:" +"$INSTALL_DIR/.venv/bin/python" --version +echo +echo "Installation directory:" +echo " $INSTALL_DIR" +echo +echo "Service:" +echo " $SERVICE_STATUS" echo echo "Admin panel:" -echo "http://127.0.0.1:8765/admin" +echo " http://127.0.0.1:8765/admin" +echo +echo "Service commands:" +echo " sudo systemctl status parental-control" +echo " sudo systemctl restart parental-control" +echo " sudo journalctl -u parental-control -f" echo -echo "Service status:" -echo "systemctl status parental-control" echo "=================================="