#!/usr/bin/env bash
set -e

# Шаг 1 — Обновление системы
apt update

# Шаг 2 — Установка пакетов
apt install -y curl wget jq bash sudo ufw nginx certbot python3-certbot-nginx sqlite3 perl

# Шаг 3 — Создание каталогов nginx
mkdir -p /etc/nginx/sites-available
mkdir -p /etc/nginx/sites-enabled
mkdir -p /etc/nginx/snippets
mkdir -p /etc/nginx/stream-enabled

# Шаг 4 — Удаление стандартного default-конфига
rm -f /etc/nginx/sites-enabled/default
rm -f /etc/nginx/sites-available/default

# Шаг 5 — Замена nginx.conf
cat >/etc/nginx/nginx.conf << 'EOF'
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 4096;
}

http {
    sendfile on;
    tcp_nopush on;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    access_log /var/log/nginx/access.log;

    gzip on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server_names_hash_bucket_size 64;
}

worker_rlimit_nofile 16384;
EOF

# Шаг 6 — Открытие портов
ufw allow 80
ufw allow 443
ufw reload

# Шаг 7 — Скачивание и правка установочного скрипта
wget -O x-ui-pro.sh https://raw.githubusercontent.com/mozaroc/x-ui-pro/refs/heads/master/x-ui-pro.sh

# Удаление проблемных строк HTTP/3
perl -0pi -e 's/http3 on;//g' x-ui-pro.sh
perl -0pi -e 's/quic reuseport;/ssl reuseport;/g' x-ui-pro.sh

# Добавление map_hash_bucket_size 128; внутрь stream блока, который создаёт сам скрипт
perl -0pi -e 's#stream \{ include /etc/nginx/stream-enabled/\*\.conf; \}#stream { map_hash_bucket_size 128; include /etc/nginx/stream-enabled/*.conf; }#g' x-ui-pro.sh

# Сделать скрипт исполняемым
chmod +x x-ui-pro.sh

# Шаг 8 — Запуск установки
sudo bash x-ui-pro.sh -install yes