#!/bin/bash ## # EngineGP (https://enginegp.ru or https://enginegp.com) # # @copyright Copyright (c) 2023-present Solovev Sergei # # @link https://github.com/EngineGPDev/Autoinstall for the canonical source repository # # @license https://github.com/EngineGPDev/Autoinstall/blob/main/LICENSE MIT License ## # Обновление таблиц и системы sysUpdate (){ echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Обновление системы..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null apt-get -y dist-upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null } # Очистка экрана перед установкой clear # Создаём переменную для логов logsInst="$(dirname "$0")/enginegp_install.log" # Директория сохранения данных saveDir="/root/enginegp.cfg" # Обновление системы sysUpdate # Установка начальных пакетов. pkgsReq=("sudo" "curl" "lsb-release" "wget" "gnupg" "pwgen" "zip" "unzip" "bc" "tar" "software-properties-common" "git" "jq") # Цикл установки пакетов for package in "${pkgsReq[@]}"; do if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "$package не установлен. Выполняется установка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null apt-get install -y "$package" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi done # Массив с поддерживаемыми версиями операционной системы suppOs=("Debian 11" "Debian 12" "Ubuntu 22.04" "Ubuntu 24.04") # Получаем текущую версию операционной системы disOs=$(lsb_release -si) relOs=$(lsb_release -sr) currOs="$disOs $relOs" # Проверка, есть ли currOs в массиве suppOs foundOs=false for os in "${suppOs[@]}"; do if [[ "$os" == "$currOs" ]]; then foundOs=true break fi done # Проверка аргументов командной строки if [ $# -gt 0 ]; then # Переменные для хранения verPhp="" sysIp="" gitEgp="" # Перебор всех аргументов while [[ $# -gt 0 ]]; do key="$1" case $key in --php) # Если передан аргумент --php, сохранить указанную версию PHP verPhp="$2" shift # Пропустить значение версии shift # Пропустить аргумент --php ;; --ip) # Если передан аргумент --ip, сохранить указанный IP-адрес sysIp="$2" shift # Пропустить значение IP-адреса shift # Пропустить аргумент --ip ;; --branch) # Если передан аргумент --ip, сохранить указанный IP-адрес gitEgp="$2" shift # Пропустить значение ветки shift # Пропустить аргумент --branch ;; *) # Неизвестный аргумент, вывести справку и выйти clear echo "Использование: ./install.sh --php 8.2 --ip 192.168.1.1 --branch main" echo " --php версия: установить указанную версию PHP. Формат должен быть: 8.2" echo " --ip IP-адрес: использовать указанный IP-адрес. Формат должен быть: 192.168.1.1" echo " --branch ветка: использовать указаную ветку GIT. Формат должен быть: main" exit 1 ;; esac done # Если версия PHP не выбрана, использовать PHP 7.4 по умолчанию if [ -z "$verPhp" ]; then verPhp="8.2" fi # Если IP-адрес не указан, получить внешний IP-адрес с помощью сервиса ipinfo.io if [ -z "$sysIp" ]; then sysIp=$(curl -s ipinfo.io/ip) fi # Если ветка не указана, использовать main if [ -z "$gitEgp" ]; then gitEgp="main" fi else # Если нет аргументов, задаём по умолчанию verPhp="8.2" sysIp=$(curl -s ipinfo.io/ip) gitEgp="main" fi # Проверяем, является ли полученный IP-адрес действительным IPv4 адресом if [[ ! $sysIp =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then clear echo "Не удалось получить внешний IP-адрес" echo "Используй: ./install.sh [--ip IP-адрес]" exit fi while true; do clear echo "Меню установки EngineGP:" echo "1. Установка панели управления" echo "2. Настройка сервера под игры" echo "3. Установка игровых серверов" echo "4. Системная информация" echo "0. Выход" read -rp "Выберите пункт меню: " choice case $choice in 1) clear # Проверяем, содержится ли текущая версия в массиве поддерживаемых версий if $foundOs; then # Проверяем наличие репозитория php if [[ " ${disOs} " =~ " Debian " ]]; then if [ ! -f "/etc/apt/sources.list.d/php.list" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Репозиторий php не обнаружен. Добавляем..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Скачиваем ключа зеркала репозитория Sury curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем ключа зеркала репозитория Sury sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий php sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://mirror.enginegp.com/sury/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get -y dist-upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null # Определяем версию php по умолчанию defPhp=$(apt-cache policy php | awk -F ': ' '/Candidate:/ {split($2, a, "[:+~]"); print a[2]}') fi else if [ ! -f "/etc/apt/sources.list.d/ondrej-ubuntu-php-*.list" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Репозиторий php не обнаружен. Добавляем..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий php sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php -y 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get -y dist-upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null # Определяем версию php по умолчанию defPhp=$(apt-cache policy php | awk -F ': ' '/Candidate:/ {split($2, a, "[:+~]"); print a[2]}') fi fi # Проверяем наличие репозитория nginx if [[ " ${disOs} " =~ " Debian " ]]; then if [ ! -f "/etc/apt/sources.list.d/nginx.list" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Скачиваем ключа зеркала репозитория Sury curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем ключа зеркала репозитория Sury sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий nginx sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-nginx.gpg] https://mirror.enginegp.com/sury/nginx/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/nginx.list' 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get -y dist-upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null fi else if [ ! -f "/etc/apt/sources.list.d/ondrej-ubuntu-nginx-*.list" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий nginx sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/nginx -y 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get -y dist-upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null fi fi # Список пакетов для установки pkgsList=("php$verPhp-fpm" "php$verPhp-common" "php$verPhp-cli" "php$verPhp-memcache" "php$verPhp-mysql" "php$verPhp-xml" "php$verPhp-mbstring" "php$verPhp-gd" "php$verPhp-imagick" "php$verPhp-zip" "php$verPhp-curl" "php$verPhp-gmp" "nginx" "mariadb-server" "ufw" "memcached" "screen" "cron") pkgsPma=("php$defPhp-fpm" "php$defPhp-mbstring" "php$defPhp-zip" "php$defPhp-gd" "php$defPhp-json" "php$defPhp-curl") # Генерирование паролей и имён passPma=$(pwgen -cns -1 16) cronKey=$(pwgen -cns -1 12) userEgpSql="enginegp_$(pwgen -cns -1 8)" dbEgpSql="enginegp_$(pwgen -1 8)" passEgpSql=$(pwgen -cns -1 16) usrEgpPass=$(pwgen -cns -1 16) # Конфигурация nginx для EngineGP nginx_enginegp="server { listen 80; server_name $sysIp; root /var/www/enginegp; index index.php; charset utf-8; location / { try_files \$uri \$uri/ /index.php?\$args; } location /acp/ { try_files \$uri \$uri/ /acp/index.php?\$args; } location ~* /\.(gif|jpeg|jpg|txt|png|tif|tiff|ico|jng|bmp|doc|pdf|rtf|xls|ppt|rar|rpm|swf|zip|bin|exe|dll|deb|cur)$ { access_log off; expires 3d; } location ~* /\.(css|js)$ { access_log off; expires 180m; } location ~ /\.ht { deny all; } location ~ /\.en { deny all; } error_page 403 /403.html; location = /403.html { internal; } error_page 404 /404.html; location = /404.html { internal; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php$verPhp-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } }" # Конфигурация nginx для phpMyAdmin nginx_phpmyadmin="server { listen 9090; server_name $sysIp; root /usr/share/phpmyadmin; index index.php; location / { try_files \$uri \$uri/ /index.php; } location ~* ^/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/phpmyadmin; } location ~ /\.ht { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php$defPhp-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } }" # Задачи CRON cronTasks="# # Default Crontab by EngineGP * * * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey threads scan_servers_admins' * * * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey threads scan_servers_down' */2 * * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey threads scan_servers' */15 * * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey threads scan_servers_stop' */15 * * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey threads scan_servers_copy' 0 */1 * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey threads graph_servers_hour' 0 0 */1 * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey threads graph_servers_day' */10 * * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey notice_help' */30 * * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey notice_server_overdue' */30 * * * * bash -c 'cd /var/www/enginegp/ && php cron.php $cronKey preparing_web_delete' # Default Crontab by EngineGP #" # Цикл установки пакетов for package in "${pkgsList[@]}"; do # Проверка на наличие и установка пакетов if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "$package не установлен. Выполняется установка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get install -y "$package" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi done # Цикл установки пакетов for package in "${pkgsPma[@]}"; do # Проверка на наличие и установка пакетов if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "$package не установлен. Выполняется установка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get install -y "$package" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi done # Установка phpMyAdmin if ! dpkg-query -W -f='${Status}' "phpmyadmin" 2>/dev/null | grep -q "install ok installed"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "phpmyadmin не установлен. Выполняется установка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo debconf-set-selections <&1 | sudo tee -a "$logsInst" > /dev/null echo -e "$nginx_phpmyadmin" | sudo tee /etc/nginx/sites-available/00-phpmyadmin.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo ln -s /etc/nginx/sites-available/00-phpmyadmin.conf /etc/nginx/sites-enabled/ 2>&1 | sudo tee -a "$logsInst" > /dev/null # Проводим тестирование и запускаем конфиг NGINX sudo nginx -t 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo systemctl restart nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "phpmyadmin уже установлен в системе. Продолжение установки невозможно." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." continue fi # Установка версии php по умолчанию if [[ "$(php -v | grep -oP '(?<=PHP )(\d+\.\d+)')" != "$verPhp" ]]; then sudo update-alternatives --set php /usr/bin/php"$verPhp" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo update-alternatives --set php-config /usr/bin/php-config"$verPhp" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo update-alternatives --set phpdbg /usr/bin/phpdbg"$verPhp" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo update-alternatives --set phpize /usr/bin/phpize"$verPhp" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Проверяем установку php-fpm по умолчанию if dpkg-query -W -f='${Status}' "php$defPhp-fpm" 2>/dev/null | grep -q "install ok installed"; then if ! systemctl is-active --quiet php"$defPhp"-fpm; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "php$defPhp-fpm не запущен. Выполняется запуск..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo systemctl start php"$defPhp"-fpm 2>&1 | sudo tee -a "$logsInst" > /dev/null fi fi # Проверяем установку php-fpm для EngineGP if dpkg-query -W -f='${Status}' "php$verPhp-fpm" 2>/dev/null | grep -q "install ok installed"; then if ! systemctl is-active --quiet php"$verPhp"-fpm; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "php$verPhp-fpm не запущен. Выполняется запуск..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo systemctl start php"$verPhp"-fpm 2>&1 | sudo tee -a "$logsInst" > /dev/null fi fi # Установка и настрока composer if [ ! -f "/usr/local/bin/composer" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "composer не установлен. Выполняется установка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null curl -sSL https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Установка EngineGP if [ ! -d "/var/www/enginegp" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "enginegp не установлен. Выполняется установка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создание временного каталога sudo mkdir -p /tmp/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null # Загрузка EngineGP if [ "$gitEgp" == "develop" ]; then sudo git clone --branch "$gitEgp" https://github.com/EngineGPDev/EngineGP.git /var/www/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null elif [ "$gitEgp" == "beta" ]; then curl -s https://api.github.com/repos/EngineGPDev/EngineGP/releases | jq -r 'map(select(.prerelease == true)) | .[0].zipball_url' | xargs -n 1 curl -L -o /tmp/enginegp/enginegp.zip 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo unzip -o /tmp/enginegp/enginegp.zip -d /tmp/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mv /tmp/enginegp/EngineGPDev-EngineGP-* /var/www/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null else curl -s https://api.github.com/repos/EngineGPDev/EngineGP/releases | jq -r 'map(select(.prerelease == false)) | .[0].zipball_url' | xargs -n 1 curl -L -o /tmp/enginegp/enginegp.zip 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo unzip -o /tmp/enginegp/enginegp.zip -d /tmp/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mv /tmp/enginegp/EngineGPDev-EngineGP-* /var/www/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Очищаем временную папку sudo rm -rf /tmp/enginegp/* 2>&1 | sudo tee -a "$logsInst" > /dev/null # Установка зависимостей composer sudo COMPOSER_ALLOW_SUPERUSER=1 composer install --working-dir=/var/www/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null # Хэширование пароля пользователя перед записью в базу данных usrEgpHASH=$(php"$verPhp" -r "echo password_hash('$usrEgpPass', PASSWORD_DEFAULT);") # Настраиваем конфигурацию панели sudo mv /var/www/enginegp/.env.example /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null sed -i "s/example.com/$sysIp/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null sed -i "s/enginegp_ck/$cronKey/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null sed -i "s/enginegp_db/$dbEgpSql/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null sed -i "s/enginegp_usr/$userEgpSql/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null sed -i "s/enginegp_pwd/$passEgpSql/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null sed -i "s/ENGINEGPHASH/$(echo "$usrEgpHASH" | sed 's/[\/&]/\\&/g')/g" /var/www/enginegp/enginegp.sql 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создание пользователя sudo mysql -e "CREATE USER '$userEgpSql'@'localhost' IDENTIFIED BY '$passEgpSql';" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создание базы данных sudo mysql -e "CREATE DATABASE $dbEgpSql CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Предоставление привилегий пользователю на базу данных sudo mysql -e "GRANT ALL PRIVILEGES ON $dbEgpSql.* TO '$userEgpSql'@'localhost';" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Применение изменений привилегий sudo mysql -e "FLUSH PRIVILEGES;" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Экспорт базы данных { sudo cat /var/www/enginegp/enginegp.sql | sudo mysql -u "$userEgpSql" -p"$passEgpSql" "$dbEgpSql"; } 2>&1 | sudo tee -a "$logsInst" > /dev/null rm /var/www/enginegp/enginegp.sql 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем задачи CRON { (sudo crontab -l; echo "$cronTasks") | sudo crontab -; } 2>&1 | sudo tee -a "$logsInst" > /dev/null else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "enginegp уже установлен в системе. Продолжение установки невозможно." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." continue fi # Выставляем права на каталог и файлы sudo chown -R www-data:www-data /var/www/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo find /var/www/enginegp -type f -exec chmod 644 {} \; 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo find /var/www/enginegp -type d -exec chmod 755 {} \; 2>&1 | sudo tee -a "$logsInst" > /dev/null # Настраиваем nginx if dpkg-query -W -f='${Status}' "nginx" 2>/dev/null | grep -q "install ok installed"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "nginx не настроен. Выполняется настройка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Удаляем дефолтный и создаём конфиг EngineGP sudo rm /etc/nginx/sites-enabled/default 2>&1 | sudo tee -a "$logsInst" > /dev/null echo -e "$nginx_enginegp" | sudo tee /etc/nginx/sites-available/01-enginegp.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo ln -s /etc/nginx/sites-available/01-enginegp.conf /etc/nginx/sites-enabled/ 2>&1 | sudo tee -a "$logsInst" > /dev/null # Проводим тестирование и запускаем конфиг NGINX sudo nginx -t 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo systemctl restart nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "NGINX не установлен. Продолжение установки невозможно." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." continue fi # Сообщение о завершении установки echo "===================================" | tee -a $saveDir echo "Установка завершена!" | tee -a $saveDir echo "Ссылка на EngineGP: http://$sysIp/" | tee -a $saveDir echo "Пользователь: admin" | tee -a $saveDir echo "Пароль: $usrEgpPass" | tee -a $saveDir echo "===================================" | tee -a $saveDir echo "MySQL данные для EngineGP" | tee -a $saveDir echo "Ссылка на phpMyAdmin: http://$sysIp:9090/" | tee -a $saveDir echo "База данных: $dbEgpSql" | tee -a $saveDir echo "Пользователь: $userEgpSql" | tee -a $saveDir echo "Пароль: $passEgpSql" | tee -a $saveDir echo "===================================" | tee -a $saveDir echo "Системные данные MySQL" | tee -a $saveDir echo "Пароль пользователя phpmyadmin: $passPma" | tee -a $saveDir echo "===================================" | tee -a $saveDir read -rp "Нажмите Enter для завершения..." continue else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Вы используете неподдерживаемую версию Linux" | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." fi ;; 2) clear dbProFTPD="ftp_$(pwgen -cns -1 8)" userProFTPD="ftp_$(pwgen -cns -1 8)" passProFTPD=$(pwgen -cns -1 16) # Проверяем, содержится ли текущая версия в массиве поддерживаемых версий if $foundOs; then # Проверяем наличие репозитория nginx if [[ " ${disOs} " =~ " Debian " ]]; then if [ ! -f "/etc/apt/sources.list.d/nginx.list" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Скачиваем ключа зеркала репозитория Sury curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем ключа зеркала репозитория Sury sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий nginx sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-nginx.gpg] https://mirror.enginegp.com/sury/nginx/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/nginx.list' 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get -y dist-upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null fi else if [ ! -f "/etc/apt/sources.list.d/ondrej-ubuntu-nginx-*.list" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий nginx sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/nginx -y 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get -y dist-upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null fi fi # Конфигурация nginx для FastDL nginx_fastdl="server { listen 8080; location / { root /var/nginx/; index index.html index.htm; set \$limit_rate 20m; } location ~ /(.*)/.*\.cfg { deny all; } location ~ /(.*)/.*\.vpk { deny all; } location ~ /(.*)/cfg/ { deny all; } location ~ /(.*)/addons/ { deny all; } location ~ /(.*)/logs/ { deny all; } }" pkgsLOC=("glibc-source" "lib32z1" "libbabeltrace1" "libc6-dbg" "libdw1" "lib32stdc++6" "libreadline8" "lib32gcc-s1" "libtinfo5:i386" "screen" "tcpdump" "lsof" "qstat" "gdb-minimal" "ntpdate" "gcc-multilib" "iptables" "default-jdk" "nginx" "mariadb-server") if ! dpkg --print-foreign-architectures | grep -q "i386"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Архитектура i386 не добавлена. Выполняется добавление..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo dpkg --add-architecture i386 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Цикл установки пакетов for package in "${pkgsLOC[@]}"; do # Проверка на наличие и установка пакетов if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "$package не установлен. Выполняется установка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo apt-get install -y "$package" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi done # Настраиваем FastDL if [ ! -f /etc/nginx/sites-available/02-fastdl.conf ]; then # Создаём каталог и выдаём ему права sudo mkdir -p /var/nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chmod -R 755 /var/nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "fastdl не настроен. Выполняется настройка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Удаляем дефолтный конфиг и создаём для FastDL sudo rm /etc/nginx/sites-enabled/default 2>&1 | sudo tee -a "$logsInst" > /dev/null echo -e "$nginx_fastdl" | sudo tee /etc/nginx/sites-available/02-fastdl.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo ln -s /etc/nginx/sites-available/02-fastdl.conf /etc/nginx/sites-enabled/ 2>&1 | sudo tee -a "$logsInst" > /dev/null # Проводим тестирование и запускаем конфиг NGINX sudo nginx -t 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo systemctl restart nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "fastdl не установлен. Продолжение установки невозможно." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." continue fi # Устанавливаем ProFTPD if ! dpkg-query -W -f='${Status}' "proftpd" 2>/dev/null | grep -q "install ok installed"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "proftpd не установлен. Выполняется установка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем ProFTPD и необходимые модули echo "proftpd shared/proftpd/inetd_or_standalone select standalone" | debconf-set-selections sudo apt-get install -y proftpd-basic proftpd-mod-mysql 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создание временного каталога sudo mkdir -p /tmp/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null # Скачиваем конфигурационные файлы ProFTPD curl -s https://api.github.com/repos/EngineGPDev/ProFTPD/releases | jq -r 'map(select(.prerelease == false)) | .[0].zipball_url' | xargs -n 1 curl -L -o /tmp/enginegp/proftpd.zip 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo unzip -o /tmp/enginegp/proftpd.zip -d /tmp/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mv /tmp/enginegp/EngineGPDev-ProFTPD-*/proftpd.conf /etc/proftpd/proftpd.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mv /tmp/enginegp/EngineGPDev-ProFTPD-*/modules.conf /etc/proftpd/modules.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mv /tmp/enginegp/EngineGPDev-ProFTPD-*/sql.conf /etc/proftpd/sql.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создаем базу данных для ProFTPD sudo mysql -e "CREATE DATABASE $dbProFTPD CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создаем пользователя для ProFTPD и предоставляем ему все права на базу данных sudo mysql -e "CREATE USER '$userProFTPD'@'localhost' IDENTIFIED BY '$passProFTPD';" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mysql -e "GRANT ALL PRIVILEGES ON $dbProFTPD . * TO '$userProFTPD'@'localhost';" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Импортируем дамп базы данных для ProFTPD { sudo cat /tmp/enginegp/EngineGPDev-ProFTPD-*/proftpd.sql | sudo mysql -u "$userProFTPD" -p"$passProFTPD" "$dbProFTPD"; } 2>&1 | sudo tee -a "$logsInst" > /dev/null # Очищаем временную папку sudo rm -rf /tmp/enginegp/* 2>&1 | sudo tee -a "$logsInst" > /dev/null # Вносим даннык в конфигурационный файл sed -i 's/__FTP_DATABASE__/'"$dbProFTPD"'/g' /etc/proftpd/sql.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null sed -i 's/__FTP_USER__/'"$userProFTPD"'/g' /etc/proftpd/sql.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null sed -i 's/__FTP_PASSWORD__/'"$passProFTPD"'/g' /etc/proftpd/sql.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем права доступа на конфигурационные файлы chmod -R 750 /etc/proftpd 2>&1 | sudo tee -a "$logsInst" > /dev/null # Перезапускаем ProFTPD для применения изменений systemctl restart proftpd 2>&1 | sudo tee -a "$logsInst" > /dev/null else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "proftpd уже установлен. Продолжение установки невозможно." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." continue fi # Настраиваем rclocal if [ ! -f /etc/rc.local ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "rc.local не настроен. Выполняется настройка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo touch /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null echo '#!/bin/bash' | sudo tee -a /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "/root/iptables_block" | sudo tee -a /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "exit 0" | sudo tee -a /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chmod +x /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Настраиваем iptables if dpkg-query -W -f='${Status}' "iptables" 2>/dev/null | grep -q "install ok installed"; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "iptables не настроен. Выполняется настройка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Проверка на наличие файла if [ ! -f /root/iptables_block ]; then sudo touch /root/iptables_block 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chmod 500 /root/iptables_block 2>&1 | sudo tee -a "$logsInst" > /dev/null else sudo chmod 500 /root/iptables_block 2>&1 | sudo tee -a "$logsInst" > /dev/null fi else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "iptables уже установлен. Продолжение установки невозможно." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." continue fi # Установка SteamCMD if [ ! -d "/path/cmd" ]; then echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "steamcmd не настроен. Выполняется настройка..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo groupadd -f servers 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mkdir -p /path /path/cmd /path/update /path/maps 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chmod -R 755 /path 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chown root:servers /path 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mkdir -p /servers 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chmod -R 711 /servers 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chown root:servers /servers 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo mkdir -p /copy 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chmod -R 750 /copy 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chown root:root /copy 2>&1 | sudo tee -a "$logsInst" > /dev/null curl -SL -o steamcmd_linux.tar.gz http://media.steampowered.com/client/steamcmd_linux.tar.gz 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo tar -xzf steamcmd_linux.tar.gz -C /path/cmd 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo rm steamcmd_linux.tar.gz 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo chmod +x /path/cmd/steamcmd.sh 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo /path/cmd/steamcmd.sh +quit 2>&1 | sudo tee -a "$logsInst" > /dev/null else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "steamcmd уже установлен. Продолжение установки невозможно...." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." continue fi echo "===================================" | tee -a $saveDir echo "Данные локации" | tee -a $saveDir echo "Пользователь ProFTPD: $userProFTPD" | tee -a $saveDir echo "Пароль ProFTPD: $passProFTPD" | tee -a $saveDir echo "База данных ProFTPD: $dbProFTPD" | tee -a $saveDir echo "Порт базы данных: 3306" | tee -a $saveDir echo "===================================" | tee -a $saveDir read -rp "Нажмите Enter для завершения..." continue else echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Вы используете неподдерживаемую версию Linux" | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для завершения..." fi ;; 3) game_menu() { clear # Игровой репозиторий gamesURL="http://gs.enginegp.ru" echo "Меню установки игровых серверов:" echo "1. Counter-Strike: 1.6" echo "2. Counter-Strike: Source v34 (old)" echo "3. Counter-Strike: Source (new)" echo "4. Counter-Strike: Global Offensive" echo "5. Counter-Strike: 2" echo "6. Grand Theft Auto: San Andreas MultiPlayer" echo "7. Grand Theft Auto: Criminal Russia MultiPlayer" echo "8. Grand Theft Auto: Multi Theft Auto" echo "9. Minecraft Java Edition" echo "10. RUST" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " game_choice case $game_choice in 1) cs16_menu() { while true; do clear mkdir -p /path/cs /path/update/cs /path/maps/cs /servers/cs 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: 1.6" echo "1. Steam" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " cs16_choice case $cs16_choice in 1) mkdir -p /path/cs/steam 2>&1 | tee -a "${logsInst}" sudo /path/cmd/steamcmd.sh +force_install_dir /path/cs/steam +login anonymous +app_update 90 -beta beta validate +quit 2>&1 | tee -a "${logsInst}" ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } cs16_menu ;; 2) cssold_menu() { while true; do clear mkdir -p /path/cssold /path/update/cssold /path/maps/cssold /servers/cssold 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: Source v34" echo "1. Steam" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " css34_choice case $css34_choice in 1) mkdir -p /path/cssold/steam 2>&1 | tee -a "${logsInst}" curl -SL -o /path/cssold/steam/steam.zip $gamesURL/cssold/steam.zip 2>&1 | tee -a "${logsInst}" sudo unzip -o /path/cssold/steam/steam.zip -d /path/cssold/steam/ 2>&1 | tee -a "${logsInst}" sudo rm /path/cssold/steam/steam.zip | tee -a "$logsInst" 2>&1 | tee -a "${logsInst}" ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } cssold_menu ;; 3) css_menu() { while true; do clear mkdir -p /path/css /path/update/css /path/maps/css /servers/css 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: Source" echo "1. Steam" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " css_choice case $css_choice in 1) mkdir -p /path/css/steam 2>&1 | tee -a "${logsInst}" /path/cmd/steamcmd.sh +force_install_dir /path/css/steam +login anonymous +app_update 232330 validate +quit 2>&1 | tee -a "${logsInst}" ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } css_menu ;; 4) csgo_menu() { while true; do clear mkdir -p /path/csgo /path/update/csgo /path/maps/csgo /servers/csgo 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: GO" echo "1. Steam" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " csgo_choice case $csgo_choice in 1) mkdir -p /path/csgo/steam 2>&1 | tee -a "${logsInst}" /path/cmd/steamcmd.sh +force_install_dir /path/csgo/steam +login anonymous +app_update 740 validate +quit 2>&1 | tee -a "${logsInst}" ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } csgo_menu ;; 5) cs2_menu() { while true; do clear mkdir -p /path/cs2 /path/update/cs2 /path/maps/cs2 /servers/cs2 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: 2" echo "1. Steam" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " cs2_choice case $cs2_choice in 1) mkdir -p /path/cs2/steam 2>&1 | tee -a "${logsInst}" /path/cmd/steamcmd.sh +force_install_dir /path/cs2/steam +login anonymous +app_update 730 validate +quit 2>&1 | tee -a "${logsInst}" ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } cs2_menu ;; 6) samp_menu() { while true; do clear mkdir -p /path/samp /path/update/samp /path/maps/samp /servers/samp /tmp/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки GTA: SAMP" echo "1. 0.3.7-R2" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " samp_choice case $samp_choice in 1) curl -SL -o /tmp/enginegp/samp037svr_R2-2-1.tar.gz https://gta-multiplayer.cz/downloads/samp037svr_R2-2-1.tar.gz 2>&1 | tee -a "${logsInst}" sudo tar -xzf /tmp/enginegp/samp037svr_R2-2-1.tar.gz -C /tmp/enginegp 2>&1 | tee -a "$logsInst" sudo mv /tmp/enginegp/samp03 /path/samp/037R2 2>&1 | tee -a "$logsInst" sudo rm -rf /tmp/enginegp/* 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } samp_menu ;; 7) crmp_menu() { while true; do clear mkdir -p /path/crmp /path/update/crmp /path/maps/crmp /servers/crmp /tmp/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки GTA: CRMP" echo "1. 0.3e Rev C3" echo "2. 0.3.7 Rev C5" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " crmp_choice case $crmp_choice in 1) curl -SL -o /tmp/enginegp/srv-cr-mp-c3-linux.tar.gz https://cr-mp.ru/download/srv-cr-mp-c3-linux.tar.gz 2>&1 | tee -a "${logsInst}" sudo tar -xzf /tmp/enginegp/srv-cr-mp-c3-linux.tar.gz -C /tmp/enginegp 2>&1 | tee -a "$logsInst" sudo mv /tmp/enginegp/srv-cr-mp-c3-linux /path/crmp/03eC3 2>&1 | tee -a "$logsInst" sudo rm -rf /tmp/enginegp/* 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; 2) curl -SL -o /tmp/enginegp/srv-cr-mp-c5-linux.tar.gz https://cr-mp.ru/download/srv-cr-mp-c5-linux.tar.gz 2>&1 | tee -a "${logsInst}" sudo tar -xzf /tmp/enginegp/srv-cr-mp-c5-linux.tar.gz -C /tmp/enginegp 2>&1 | tee -a "$logsInst" sudo mv /tmp/enginegp/samp03 /path/crmp/037C5 2>&1 | tee -a "$logsInst" sudo rm -rf /tmp/enginegp/* 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } crmp_menu ;; 8) mta_menu() { while true; do clear mkdir -p /path/mta /path/update/mta /path/maps/mta /servers/mta /tmp/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки GTA: MTA" echo "1. 1.6.0" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " mta_choice case $mta_choice in 1) curl -SL -o /tmp/enginegp/multitheftauto_linux_x64.tar.gz https://linux.multitheftauto.com/dl/multitheftauto_linux_x64.tar.gz 2>&1 | tee -a "${logsInst}" sudo tar -xzf /tmp/enginegp/multitheftauto_linux_x64.tar.gz -C /tmp/enginegp 2>&1 | tee -a "$logsInst" sudo mv /tmp/enginegp/multitheftauto_linux_x64 /path/mta/160 2>&1 | tee -a "$logsInst" sudo mv /path/mta/160/mta-server64 /path/mta/160/mta-server 2>&1 | tee -a "$logsInst" sudo rm -rf /tmp/enginegp/* 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } mta_menu ;; 9) mc_menu() { while true; do clear mkdir -p /path/mc /path/update/mc /path/maps/mc /servers/mc 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Minecraft" echo "1. PaperSpigot 1.20.4 [Java 17]" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " mc_choice case $mc_choice in 1) mkdir -p /path/mc/paper1204 2>&1 | tee -a "${logsInst}" curl -SL -o /path/mc/paper1204/start.jar https://api.papermc.io/v2/projects/paper/versions/1.20.4/builds/497/downloads/paper-1.20.4-497.jar 2>&1 | tee -a "${logsInst}" ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } mc_menu ;; 10) rust_menu() { while true; do clear mkdir -p /path/rust /path/update/rust /servers/rust echo "Меню установки RUST" echo "1. Steam" echo "0. Вернуться в предыдущее меню" read -rp "Выберите пункт меню: " rust_choice case $rust_choice in 1) clear mkdir -p /path/rust/steam 2>&1 | tee -a "${logsInst}" sudo /path/cmd/steamcmd.sh +force_install_dir /path/rust/steam +login anonymous +app_update 258550 validate +quit 2>&1 | tee -a "${logsInst}" ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac done } rust_menu ;; 0) break ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac } game_menu ;; 4) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Текущая версия Linux: $currOs" | tee -a "$logsInst" echo "Внешний IP-адрес: $sysIp" | tee -a "$logsInst" echo "Версия php: $verPhp" | tee -a "$logsInst" echo "Ветка GIT: $gitEgp" | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null read -rp "Нажмите Enter для выхода в главное меню..." continue ;; 0) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "До свидания!" | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null exit 0 ;; *) clear echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Нажмите Enter, чтобы продолжить..." | tee -a "$logsInst" echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null done