#!/bin/bash

# Получаем имя текущего пользователя
USER_NAME=$(whoami)
DEB_FILE="x11vnc_0.9.16-8_amd64.deb"
LOCAL_ARCHIVE="vnc_packages.tar.gz"

# Определение режима установки: local, web или dpkg (по умолчанию)
INSTALL_MODE="dpkg"
if [[ "$1" == "--local" ]]; then
  INSTALL_MODE="local"
elif [[ "$1" == "--web" ]]; then
  INSTALL_MODE="web"
fi

# Список .deb зависимостей для локального или dpkg-режима
DEPENDENCIES=(
  "libavahi-client3_0.8-5ubuntu5.2_amd64.deb"
  "libavahi-common3_0.8-5ubuntu5.2_amd64.deb"
  "libc6_2.35-0ubuntu3.8_amd64.deb"
  "libcrypt1_4.4.27-1_amd64.deb"
  "libssl3_3.0.2-0ubuntu1.18_amd64.deb"
  "libvncclient1_0.9.13+dfsg-3build2_amd64.deb"
  "libvncserver1_0.9.13+dfsg-3build2_amd64.deb"
  "libx11-6_1.7.5-1ubuntu0.3_amd64.deb"
  "libxdamage1_1.1.5-2build2_amd64.deb"
  "libxext6_1.3.4-1build1_amd64.deb"
  "libxfixes3_6.0.0-1_amd64.deb"
  "libxi6_1.8-1build1_amd64.deb"
  "libxinerama1_1.1.4-3_amd64.deb"
  "libxrandr2_1.5.2-1build1_amd64.deb"
  "libxtst6_1.2.3-1build4_amd64.deb"
  "openssl_3.0.2-0ubuntu1.18_amd64.deb"
  "tk_8.6.11+1build2_amd64.deb"
  "x11-utils_7.7+5build2_amd64.deb"
)

# Запрашиваем пароль для VNC
echo "Введите пароль для VNC:"
read -s VNC_PASSWORD

# Распаковка архива, если выбран локальный режим
if [[ "$INSTALL_MODE" == "local" ]]; then
  if [ ! -f "$LOCAL_ARCHIVE" ]; then
    echo "Ошибка: архив $LOCAL_ARCHIVE не найден в текущей директории."
    exit 1
  fi
  echo "Распаковка архива $LOCAL_ARCHIVE..."
  tar -xzf "$LOCAL_ARCHIVE"
fi

# Установка по режимам
if [[ "$INSTALL_MODE" == "web" ]]; then
  echo "Установка через APT из репозиториев..."
  sudo apt-get update
  sudo apt-get install -y x11vnc x11-utils tk openssl libvncserver1
else
  # Цикл установки зависимостей
  for FILE_NAME in "${DEPENDENCIES[@]}"; do
    if [[ "$INSTALL_MODE" == "local" ]]; then
      if [ ! -f "$FILE_NAME" ]; then
        echo "Ошибка: файл $FILE_NAME не найден после распаковки."
        exit 1
      fi
    else
      echo "Скачивание $FILE_NAME..."
      wget -O "$FILE_NAME" "https://store.neuro-city.ru/vncserver/$FILE_NAME"
    fi
    echo "Установка $FILE_NAME..."
    sudo dpkg -i "$FILE_NAME"
  done

  # Установка x11vnc
  if [[ "$INSTALL_MODE" == "local" ]]; then
    if [ ! -f "$DEB_FILE" ]; then
      echo "Ошибка: файл $DEB_FILE не найден после распаковки."
      exit 1
    fi
  else
    echo "Скачивание $DEB_FILE..."
    wget -O "$DEB_FILE" "https://store.neuro-city.ru/vncserver/$DEB_FILE"
  fi

  echo "Установка x11vnc..."
  sudo dpkg -i "$DEB_FILE"

  # Установка недостающих зависимостей
  echo "Автоматическая установка недостающих зависимостей..."
  sudo apt-get install -f -y
fi

# Сохраняем пароль для VNC
mkdir -p /home/$USER_NAME/.vnc
x11vnc -storepasswd "$VNC_PASSWORD" /home/$USER_NAME/.vnc/passwd
sudo chown $USER_NAME:$USER_NAME /home/$USER_NAME/.vnc/passwd
sudo chmod 600 /home/$USER_NAME/.vnc/passwd

# Создание systemd-сервиса для автозапуска
sudo tee /etc/systemd/system/x11vnc.service > /dev/null <<EOL
[Unit]
Description=Xvnc server
After=display-manager.service
Requires=display-manager.service

[Service]
ExecStartPre=/bin/sleep 30
ExecStart=/usr/bin/x11vnc -display :0 -auth /var/run/lightdm/root/:0 -forever -usepw
Restart=always
User=$USER_NAME

[Install]
WantedBy=multi-user.target
EOL

# Активация systemd-сервиса
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service

echo "✅ x11vnc установлен и настроен для автозапуска (режим: $INSTALL_MODE)"
