Important update

Added location setting
Added game builds CS 1.6
And so on...
This commit is contained in:
Sergei Solovev 2023-11-20 03:26:14 +03:00
parent a8c1e47574
commit 1f71e1b952

View File

@ -14,12 +14,14 @@ clear
# Создаём переменную для логов # Создаём переменную для логов
logsINST="$(dirname "$0")/enginegp_install.log" logsINST="$(dirname "$0")/enginegp_install.log"
# Директория сохранения данных
saveDIR="/root/enginegp.cfg"
# Обновление системы # Обновление системы
sysUpdate sysUpdate
# Установка начальных пакетов. # Установка начальных пакетов.
# lsb-release wget gnupg - Требуются для MySQL. В остальном зависимость не проверялась. pkgsREQ=(sudo curl lsb-release wget gnupg rsync pwgen zip unzip bc tar)
pkgsREQ=(sudo curl lsb-release wget gnupg rsync)
# Цикл установки пакетов # Цикл установки пакетов
for package in "${pkgsREQ[@]}"; do for package in "${pkgsREQ[@]}"; do
@ -156,7 +158,7 @@ while true; do
if [[ " ${suppOS[@]} " =~ " ${currOS} " ]]; then if [[ " ${suppOS[@]} " =~ " ${currOS} " ]]; then
# Список пакетов для установки # Список пакетов для установки
pkgsLNAMP=(apache2 php php-fpm php-ctype php-json php-mbstring php-zip php-gd php-xml php-curl libapache2-mod-php libapache2-mod-fcgid nginx) pkgsLNAMP=(apache2 php php-fpm php-ctype php-json php-mbstring php-zip php-gd php-xml php-curl libapache2-mod-php libapache2-mod-fcgid nginx)
pkgsEGP=(ufw memcached unzip bc cron php$verPHP php$verPHP-fpm php$verPHP-common php$verPHP-cli php$verPHP-memcache php$verPHP-memcached php$verPHP-mysql php$verPHP-xml php$verPHP-mbstring php$verPHP-gd php$verPHP-imagick php$verPHP-zip php$verPHP-curl php$verPHP-ssh2 php$verPHP-xml libapache2-mod-php$verPHP) pkgsEGP=(ufw memcached cron php$verPHP php$verPHP-fpm php$verPHP-common php$verPHP-cli php$verPHP-memcache php$verPHP-memcached php$verPHP-mysql php$verPHP-xml php$verPHP-mbstring php$verPHP-gd php$verPHP-imagick php$verPHP-zip php$verPHP-curl php$verPHP-ssh2 php$verPHP-xml libapache2-mod-php$verPHP)
# Установка стека LNAMP + phpMyAdmin # Установка стека LNAMP + phpMyAdmin
# Проверяем наличие репозитория php sury # Проверяем наличие репозитория php sury
@ -425,6 +427,12 @@ EOF
sudo rsync -av /tmp/enginegp/EngineGP-*/. /var/www/enginegp/ >> $logsINST 2>&1 sudo rsync -av /tmp/enginegp/EngineGP-*/. /var/www/enginegp/ >> $logsINST 2>&1
sudo rm /tmp/enginegp/enginegp.zip >> $logsINST 2>&1 sudo rm /tmp/enginegp/enginegp.zip >> $logsINST 2>&1
sudo rm -r /tmp/enginegp/EngineGP-* >> $logsINST 2>&1 sudo rm -r /tmp/enginegp/EngineGP-* >> $logsINST 2>&1
# Генерация и хэширование пароля
#saltEGP=$(pwgen -cnys -1 16) # Необходимо записывать в system.php и acpsystem.php
#passEGP=$(pwgen -cnys -1 16)
#hashedPassEGP=$(echo -n "$saltEGP$passEGP" | sha512sum)
#hashedPassEGP=${hashedPassEGP%% *}
else else
echo "===================================" >> $logsINST 2>&1 echo "===================================" >> $logsINST 2>&1
echo "enginegp уже установлен в системе. Продолжение установки невозможно." | tee -a $logsINST echo "enginegp уже установлен в системе. Продолжение установки невозможно." | tee -a $logsINST
@ -469,21 +477,317 @@ EOF
;; ;;
2) 2)
clear clear
# Проверяем, содержится ли текущая версия в массиве поддерживаемых версий
if [[ " ${suppOS[@]} " =~ " ${currOS} " ]]; then
pkgsLOC=(lib32z1 libbabeltrace1 libc6-dbg libdw1 lib32stdc++6 libreadline5 lib32gcc1 screen tcpdump lsof qstat gdb-minimal ntpdate gcc-multilib iptables default-jdk nginx)
passMySQL=$(pwgen -cnys -1 16)
safePassMySQL=$(printf '%s\n' "$passMySQL" | sed -e 's/[\&/]/\\&/g')
passProFTPD=$(pwgen -cnys -1 16)
if ! dpkg --print-foreign-architectures | grep -q "i386"; then
echo "===================================" >> $logsINST 2>&1 echo "===================================" >> $logsINST 2>&1
echo "Вы выбрали: Настройка сервера под игры" | tee -a $logsINST echo "Архитектура i386 не добавлена. Выполняется добавление..." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
sudo dpkg --add-architecture i386 >> $logsINST 2>&1
# Обновление таблиц
apt-get -y update >> $logsINST 2>&1
else
echo "===================================" >> $logsINST 2>&1
echo "Архитектура i386 уже добавлена." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
fi
# Устанавливаем базу данных
if ! dpkg-query -W -f='${Status}' "mysql-server" 2>/dev/null | grep -q "install ok installed"; then
echo "===================================" >> $logsINST 2>&1
echo "mysql-server не установлен. Выполняется установка..." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
sudo debconf-set-selections <<EOF
mysql-apt-config mysql-apt-config/select-server select mysql-8.0
mysql-apt-config mysql-apt-config/select-tools select Enabled
mysql-apt-config mysql-apt-config/select-preview select Disabled
EOF
sudo curl -SLO https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb >> $logsINST 2>&1
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config_0.8.26-1_all.deb >> $logsINST 2>&1
sudo apt-get update >> $logsINST 2>&1
sudo rm mysql-apt-config_0.8.26-1_all.deb >> $logsINST 2>&1
sudo debconf-set-selections <<EOF
mysql-community-server mysql-community-server/root-pass password $safePassMySQL
mysql-community-server mysql-community-server/re-root-pass password $safePassMySQL
mysql-community-server mysql-server/default-auth-override select Use Strong Password Encryption (RECOMMENDED)
EOF
sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-server >> $logsINST 2>&1
else
echo "===================================" >> $logsINST 2>&1
echo "mysql-server уже установлен в системе. Продолжение установки невозможно." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1 echo "===================================" >> $logsINST 2>&1
# Здесь добавить код для настройки сервера под игры
read -p "Нажмите Enter для завершения..." read -p "Нажмите Enter для завершения..."
continue continue
fi
# Цикл установки пакетов
for package in "${pkgsLOC[@]}"; do
# Проверка на наличие и установка пакетов
if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then
echo "===================================" >> $logsINST 2>&1
echo "$package не установлен. Выполняется установка..." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
apt-get install -y "$package" >> $logsINST 2>&1
else
echo "===================================" >> $logsINST 2>&1
echo "$package уже установлен в системе." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
fi
done
# Устанавливаем ProFTPD
if ! dpkg-query -W -f='${Status}' "proftpd" 2>/dev/null | grep -q "install ok installed"; then
echo "===================================" >> $logsINST 2>&1
echo "proftpd не установлен. Выполняется установка..." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
echo "proftpd shared/proftpd/inetd_or_standalone select standalone" | debconf-set-selections
sudo apt-get install -y proftpd proftpd-mod-mysql >> $logsINST 2>&1
curl -o /etc/proftpd/proftpd.conf $resURL/Components/ProFTPD/proftpd >> $logsINST 2>&1
curl -o /etc/proftpd/proftpd_modules.conf $resURL/Components/ProFTPD/proftpd_modules >> $logsINST 2>&1
curl -o /etc/proftpd/sql.conf $resURL/Components/ProFTPD/proftpd_sql >> $logsINST 2>&1
mysql -uroot -p$safePassMySQL -e "CREATE DATABASE ftp;" >> $logsINST 2>&1
mysql -uroot -p$safePassMySQL -e "CREATE USER 'ftp'@'localhost' IDENTIFIED BY '$passProFTPD';" >> $logsINST 2>&1
mysql -uroot -p$safePassMySQL -e "GRANT ALL PRIVILEGES ON ftp . * TO 'ftp'@'localhost';" >> $logsINST 2>&1
mysql -uroot -p$safePassMySQL ftp < EngineGP-requirements/proftpd/sqldump.sql >> $logsINST 2>&1
sed -i 's/passwdfor/'$passProFTPD'/g' /etc/proftpd/sql.conf >> $logsINST 2>&1
chmod -R 750 /etc/proftpd >> $logsINST 2>&1
systemctl restart proftpd >> $logsINST 2>&1
else
echo "===================================" >> $logsINST 2>&1
echo "proftpd уже установлен. Продолжение установки невозможно." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
read -p "Нажмите Enter для завершения..."
continue
fi
# Настраиваем rclocal
if [ ! -f /etc/rc.local ]; then
echo "===================================" >> $logsINST 2>&1
echo "rc.local не настроен. Выполняется настройка..." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
sudo touch /etc/rc.local >> $logsINST 2>&1
echo '#!/bin/bash' | sudo tee -a /etc/rc.local >> $logsINST 2>&1
echo "/root/iptables_block" | sudo tee -a /etc/rc.local >> $logsINST 2>&1
echo "exit 0" | sudo tee -a /etc/rc.local >> $logsINST 2>&1
sudo chmod +x /etc/rc.local >> $logsINST 2>&1
else
echo "===================================" >> $logsINST 2>&1
echo "rc.local не настроен. Выполняется настройка..." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
sed -i '14d' /etc/rc.local >> $logsINST 2>&1
echo "/root/iptables_block" | sudo tee -a /etc/rc.local >> $logsINST 2>&1
echo "exit 0" | sudo tee -a /etc/rc.local >> $logsINST 2>&1
sudo chmod +x /etc/rc.local >> $logsINST 2>&1
fi
# Настраиваем iptables
if dpkg-query -W -f='${Status}' "iptables" 2>/dev/null | grep -q "install ok installed"; then
echo "===================================" >> $logsINST 2>&1
echo "iptables не настроен. Выполняется настройка..." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
# Проверка на наличие файла
if [ ! -f /root/iptables_block ]; then
sudo touch /root/iptables_block >> $logsINST 2>&1
sudo chmod 500 /root/iptables_block >> $logsINST 2>&1
else
sudo chmod 500 /root/iptables_block >> $logsINST 2>&1
fi
else
echo "===================================" >> $logsINST 2>&1
echo "iptables уже установлен. Продолжение установки невозможно." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
read -p "Нажмите Enter для завершения..."
continue
fi
# Установка SteamCMD
if [ ! -d "/path/cmd" ]; then
echo "===================================" >> $logsINST 2>&1
echo "SteamCMD не настроен. Выполняется настройка..." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
groupmod -g 998 `cat /etc/group | grep :1000 | awk -F":" '{print $1}'` >> $logsINST 2>&1
groupadd -g 1000 servers >> $logsINST 2>&1
mkdir -p /path /path/cmd /path/update /path/maps >> $logsINST 2>&1
chmod -R 755 /path >> $logsINST 2>&1
chown root:servers /path >> $logsINST 2>&1
mkdir -p /servers >> $logsINST 2>&1
chmod -R 711 /servers >> $logsINST 2>&1
chown root:servers /servers >> $logsINST 2>&1
mkdir -p /copy >> $logsINST 2>&1
chmod -R 750 /copy >> $logsINST 2>&1
chown root:root /copy >> $logsINST 2>&1
sudo curl -SL -o steamcmd_linux.tar.gz http://media.steampowered.com/client/steamcmd_linux.tar.gz >> $logsINST 2>&1
tar -xzf steamcmd_linux.tar.gz -C /path/cmd >> $logsINST 2>&1
rm steamcmd_linux.tar.gz >> $logsINST 2>&1
else
echo "===================================" >> $logsINST 2>&1
echo "SteamCMD уже установлен. Продолжение установки невозможно...." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
read -p "Нажмите Enter для завершения..."
continue
fi
echo "">>$SAVE
echo "Location data:">>$saveDIR
echo "SQL_Username: root">>$saveDIR
echo "SQL_Password: $safePassMySQL">>$saveDIR
echo "SQL_FileTP: ftp">>$saveDIR
echo "SQL_Port: 3306">>$saveDIR
echo "Password for FTP database: $passProFTPD">>$saveDIR
else
echo "===================================" >> $logsINST 2>&1
echo "Вы используете неподдерживаемую версию Linux" | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
read -p "Нажмите Enter для завершения..."
fi
;; ;;
3) 3)
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 -p "Выберите пункт меню: " game_choice
case $game_choice in
1)
clear
mkdir -p /path/cs /path/update/cs /path/maps/cs /servers/cs >> $logsINST 2>&1
echo "Меню установки Counter-Strike: 1.6"
echo "1. Steam [Clean server]"
echo "2. Build ReHLDS"
echo "3. Build 8308"
echo "4. Build 8196"
echo "5. Build 7882"
echo "6. Build 7559"
echo "7. Build 6153"
echo "8. Build 5787"
echo "0. Вернуться в предыдущее меню"
read -p "Выберите пункт меню: " cs16_choice
case $cs16_choice in
1)
mkdir -p /path/cs/steam 2>&1 | tee -a ${logsINST}
sudo curl -SL -o /path/cs/steam/steam.zip $gamesURL/cs/steam.zip 2>&1 | tee -a ${logsINST}
sudo unzip /path/cs/steam/steam.zip -d /path/cs/steam/ 2>&1 | tee -a ${logsINST}
sudo rm /path/cs/steam/steam.zip | tee -a $logsINST 2>&1 | tee -a ${logsINST}
cs16_choice
;;
2)
mkdir -p /path/cs/rehlds 2>&1 | tee -a ${logsINST}
sudo curl -SL -o /path/cs/rehlds/rehlds.zip $gamesURL/cs/rehlds.zip 2>&1 | tee -a ${logsINST}
sudo unzip /path/cs/rehlds/rehlds.zip -d /path/cs/rehlds/ 2>&1 | tee -a ${logsINST}
sudo rm /path/cs/rehlds/rehlds.zip 2>&1 | tee -a ${logsINST}
cs16_choice
;;
3)
mkdir -p /path/cs/8308 2>&1 | tee -a ${logsINST}
sudo curl -SL -o /path/cs/8308/8308.zip $gamesURL/cs/8308.zip 2>&1 | tee -a ${logsINST}
sudo unzip /path/cs/8308/8308.zip -d /path/cs/8308/ 2>&1 | tee -a ${logsINST}
sudo rm /path/cs/8308/8308.zip 2>&1 | tee -a ${logsINST}
cs16_choice
;;
4)
mkdir -p /path/cs/8196 2>&1 | tee -a ${logsINST}
sudo curl -SL -o /path/cs/8196/8196.zip $gamesURL/cs/8196.zip 2>&1 | tee -a ${logsINST}
unzip /path/cs/8196/8196.zip -d /path/cs/8196/ 2>&1 | tee -a ${logsINST}
rm /path/cs/8308/8308.zip 2>&1 | tee -a ${logsINST}
cs16_choice
;;
5)
mkdir -p /path/cs/7882 2>&1 | tee -a ${logsINST}
sudo curl -SL -o /path/cs/7882/7882.zip $gamesURL/cs/7882.zip 2>&1 | tee -a ${logsINST}
unzip /path/cs/7882/7882.zip -d /path/cs/7882/ 2>&1 | tee -a ${logsINST}
rm /path/cs/7882/7882.zip 2>&1 | tee -a ${logsINST}
cs16_choice
;;
6)
mkdir -p /path/cs/7559 2>&1 | tee -a ${logsINST}
sudo curl -SL -o /path/cs/7559/7559.zip $gamesURL/cs/7559.zip 2>&1 | tee -a ${logsINST}
unzip /path/cs/7559/7559.zip -d /path/cs/7559/ 2>&1 | tee -a ${logsINST}
rm /path/cs/7559/7559.zip 2>&1 | tee -a ${logsINST}
cs16_choice
;;
7)
mkdir -p /path/cs/6153 2>&1 | tee -a ${logsINST}
sudo curl -SL -o /path/cs/6153/6153.zip $gamesURL/cs/6153.zip 2>&1 | tee -a ${logsINST}
unzip /path/cs/6153/6153.zip -d /path/cs/6153/ 2>&1 | tee -a ${logsINST}
rm /path/cs/6153/6153.zip 2>&1 | tee -a ${logsINST}
cs16_choice
;;
8)
mkdir -p /path/cs/5787 2>&1 | tee -a ${logsINST}
sudo curl -SL -o /path/cs/5787/5787.zip $gamesURL/cs/5787.zip 2>&1 | tee -a ${logsINST}
unzip /path/cs/5787/5787.zip -d /path/cs/5787/ 2>&1 | tee -a ${logsINST}
rm /path/cs/5787/5787.zip 2>&1 | tee -a ${logsINST}
cs16_choice
;;
0)
game_choice
;;
*)
clear clear
echo "===================================" >> $logsINST 2>&1 echo "===================================" >> $logsINST 2>&1
echo "Вы выбрали: Установка игровых сборок" | tee -a $logsINST echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1 echo "===================================" >> $logsINST 2>&1
# Здесь добавить код для установки игровых сборок ;;
read -p "Нажмите Enter для завершения..." esac
continue ;;
2)
# Add code for installing SAMP game here
;;
3)
# Add code for installing MTA game here
;;
4)
# Add code for installing MTA game here
;;
5)
# Add code for installing MTA game here
;;
6)
# Add code for installing MTA game here
;;
7)
# Add code for installing MTA game here
;;
8)
# Add code for installing MTA game here
;;
9)
# Add code for installing MTA game here
;;
10)
# Add code for installing MTA game here
;;
0)
choice
;;
*)
clear
echo "===================================" >> $logsINST 2>&1
echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST
echo "===================================" >> $logsINST 2>&1
;;
esac
;; ;;
4) 4)
clear clear