optimized installer

This commit is contained in:
2026-09-17 14:25:22 +05:00
parent 100336e3c7
commit 09bd167536
+222 -8
View File
@@ -2,43 +2,223 @@
set -e set -e
# ============================================================
# Linux Parental Control - Installer
# ============================================================
if [ "$EUID" -ne 0 ]; then if [ "$EUID" -ne 0 ]; then
echo "Please run with sudo" echo "Please run with sudo:"
echo " sudo ./install.sh"
exit 1 exit 1
fi fi
INSTALL_DIR="$(cd "$(dirname "$0")" && pwd)" INSTALL_DIR="$(cd "$(dirname "$0")" && pwd)"
echo
echo "=================================="
echo "Linux Parental Control Installer"
echo "=================================="
echo
echo "Installing from:" echo "Installing from:"
echo "$INSTALL_DIR" 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" 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" echo "[2/5] Creating virtual environment"
if [ ! -d "$INSTALL_DIR/.venv" ]; then 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 fi
# ============================================================
# Install Python packages
# ============================================================
echo
echo "[3/5] Installing Python packages" 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" echo "[4/5] Installing systemd service"
SERVICE_FILE="/etc/systemd/system/parental-control.service"
sed \ sed \
"s|%INSTALL_DIR%|$INSTALL_DIR|g" \ "s|%INSTALL_DIR%|$INSTALL_DIR|g" \
"$INSTALL_DIR/parental-control.service" \ "$INSTALL_DIR/parental-control.service" \
> /etc/systemd/system/parental-control.service > "$SERVICE_FILE"
# ============================================================
# Enable and start service
# ============================================================
systemctl daemon-reload systemctl daemon-reload
systemctl enable parental-control.service systemctl enable parental-control.service
@@ -46,13 +226,47 @@ systemctl enable parental-control.service
systemctl restart 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 "==================================" echo "=================================="
echo "Parental Control installed" 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
echo "Admin panel:" echo "Admin panel:"
echo " http://127.0.0.1:8765/admin" echo " http://127.0.0.1:8765/admin"
echo echo
echo "Service status:" echo "Service commands:"
echo "systemctl status parental-control" echo " sudo systemctl status parental-control"
echo " sudo systemctl restart parental-control"
echo " sudo journalctl -u parental-control -f"
echo
echo "==================================" echo "=================================="