CS DONAT 1.2.1 — УСТАНОВКА И ОБНОВЛЕНИЕ

Совместимость: PHP 8.3+, MariaDB 5.5+ / MySQL 5.5.3+ (InnoDB, MyISAM, utf8mb4).
PHP: pdo, pdo_mysql, mbstring, openssl, fileinfo, json, curl, xml, bz2,
ctype, filter, hash, session. Функции random_bytes, password_hash,
password_verify, hash_equals и flock не должны быть отключены.
Apache: mod_rewrite. Движок устанавливается в корень отдельного домена.
Сайт и панель управления должны работать по HTTPS.
Для Nginx запретите HTTP-доступ к modules/, vendor/, bin/, scripts/, tests/,
backups/, database/, install/lib/ и install/schema.php. Не отключайте PHP-обработчик.

НОВАЯ УСТАНОВКА ЧЕРЕЗ БРАУЗЕР
1. Создайте домен с PHP 8.3 или новее и действующим SSL-сертификатом.
2. Создайте отдельную ПУСТУЮ БД utf8mb4 и пользователя с правами
   SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX и DROP на эту базу.
   Самостоятельно импортировать SQL не нужно. Рабочую БД не используйте.
3. Загрузите содержимое autodonat-cs16-v1.2.1/ в корень домена, включая .htaccess.
   Готового modules/Config/config.php в архиве нет: он создаётся установщиком.
   Разрешите PHP запись в modules/Config и удаление файлов install/.
   Обычно достаточно правильного владельца файлов и прав каталогов 755.
   Не назначайте 777 всему сайту.
4. Откройте https://ваш-домен/. Автоматически откроется /install/.
   Установщик проверит версию PHP, расширения, файлы и запись конфигурации.
   Если проверка не пройдена, появится причина и способ исправления.
5. Через FTP или файловый менеджер откройте modules/Config/install-key.php.
   Скопируйте 48 символов после installation_key: в поле «Код установки».
   Код подтверждает доступ к файлам и не даёт постороннему установить ваш сайт.
   Не передавайте код другим людям. В браузере этот файл недоступен.
6. Укажите хост, порт, имя БД, пользователя и пароль. Порт обычно 3306.
   Для нестандартного порта используйте отдельное поле «Порт».
   Поддерживается и хост:порт; два указанных порта должны совпадать.
   localhost с явным портом использует TCP 127.0.0.1.
   Версия MySQL/MariaDB определяется автоматически, включая CloudLinux/LVE.
   Установщик проверит связь, пустоту базы, права, InnoDB/MyISAM, транзакции
   и сохранение русского текста/эмодзи в utf8mb4.
   Для проверки прав временно создаётся и удаляется таблица csdonat_probe_*.
7. Укажите название проекта, полный HTTPS-адрес сайта, логин, email и пароль
   администратора. Общего стартового пароля и общего ключа шифрования нет.
8. Нажмите «Установить CS Donat». Таблицы импортируются автоматически,
   конфигурация сохранится, будет создан отдельный файл install.lock.php.
   Установщик удалит install/ и одноразовый install-key.php.
   Если хостинг запретил удаление, экран завершения перечислит точные пути:
   удалите их через FTP. Повторный запуск уже заблокирован конфигом и lock-файлом.
9. Сохраните защищённую резервную копию modules/Config/config.php с ключом
   шифрования и modules/Config/install.lock.php. Не удаляйте lock-файл.
   При потере config.php восстановите резервную копию: повторная установка
   не восстановит ключ и не расшифрует старые пароли/настройки.
10. Войдите в /admin/login.php. Добавьте игровой сервер, привилегии, тарифы,
    оплату и при необходимости SMTP. URL уведомлений берите из своей панели.
    После установки удалите публичный INSTALL.txt, если он вам больше не нужен.

ЕСЛИ УСТАНОВКА ПРЕРВАЛАСЬ
Проверьте сообщение установщика: неверный пароль, отсутствующая БД,
нехватка прав, недоступный хост/порт и занятая база различаются.
При ошибке импорта установщик пытается удалить только созданные им таблицы.
Если это не удалось или процесс аварийно оборвался, НЕ очищайте чужую БД.
Для новой попытки создайте другую пустую БД либо удалите только таблицы
неудачной установки после проверки их принадлежности и резервного копирования.
Не загружайте новый конфиг и не удаляйте lock-файл работающего магазина.
Сессия установки действует 30 минут; после истечения повторите проверку кода.

ОБНОВЛЕНИЕ РАБОЧЕГО САЙТА С 1.1.0 / 1.1.1 / 1.2.0 ДО 1.2.1
1. Сохраните резервную копию файлов и БД, свой config.php и ключ шифрования.
2. Используйте отдельный autodonat-cs16-update-to-1.2.1.zip с сайта.
   Замените файлы по его INSTALL.txt. Если меняли код, объедините изменения.
3. install/ работающему магазину не нужен. SQL импортировать не требуется.
   Свои config.php и install.lock.php не удаляйте и не заменяйте.
4. Проверьте главную, вход в панель, покупку, продление, серверы и банлист.
   Игровые плагины по сравнению с 1.1.1 не менялись.

ЕСЛИ ВЕРСИЯ 1.2.0 ОТКЛОНИЛА СТАРУЮ MYSQL/MARIADB
Используйте autodonat-cs16-installer-fix-1.2.0-to-1.2.1.zip.
Он предназначен только для НЕЗАВЕРШЁННОЙ установки; следуйте его INSTALL.txt.
Повторно укажите пустую БД. Готовый конфиг и ключ шифрования архив не содержит.
Распознаётся в том числе 5.5.68-MariaDB-cll-lve и префикс 5.5.5-10.x-MariaDB.
Для новых установок предпочтительна версия БД с поддержкой обновлений хостинга.

ОБНОВЛЕНИЕ С 1.0.5 И БОЛЕЕ СТАРЫХ ВЕРСИЙ
1. Сохраните файлы, БД магазина и БД Admin Loader, конфиг и ключ шифрования.
2. Замените index.php, .htaccess, admin/, modules/ (КРОМЕ Config/config.php),
   assets/, templates/, bin/, composer.json/lock. Каталог vendor замените целиком.
   Изменённый дизайн объедините с исправлениями вручную. install/ не загружайте.
3. Не импортируйте чистую SQL-схему поверх рабочей БД.
4. Автоматически и однократно обновится ac_torg: email до 254 символов,
   кодировка utf8mb4. Необходимо право ALTER; для большой БД выберите техническое окно.
5. Для 1.0.3 и старше дополнительно выполните php bin/migrate-server-privileges.php.
6. Проверьте вход, тарифы, привязку привилегий к серверам, callback оплаты,
   RCON amx_reloadadmins, тестовый заказ и обновление прав в игре.

ПОДКЛЮЧЕНИЕ ИГРОВОГО СЕРВЕРА
FreshBans/Admin Loader подключаются отдельно. Добавьте сервер в панели магазина.
ID магазина и ID Admin Loader могут отличаться. Для отдельной БД укажите внешнее
подключение. Поле «Хост БД» принимает хост:порт и [IPv6]:порт.
RCON нужен для немедленного amx_reloadadmins после изменения прав.
Цена тарифа задаётся целыми рублями; 0 дней — бессрочная привилегия.

ОПЛАТА И ДИАГНОСТИКА
YooMoney: используется sign/HMAC-SHA256; повторное уведомление не продлевает срок
повторно. Тестовое уведомление не является оплатой. Возврат покупателя из кошелька
сам по себе не подтверждает выдачу; дождитесь серверного уведомления.
Без SMTP покупка и выдача продолжают работать. Для порта 465 используется SMTPS,
для порта 587 — STARTTLS. При недоступном сервере проверьте RCON и наличие Admin Loader.
Системные секреты маскируются в журнале аудита.

В addons/ включён необязательный патч Admin Loader с исходником и готовым .amxx
для AMXX 1.9. Установка на игровой сервер описана в addons/INSTALL-ADMIN-LOADER.txt;
сайт не загружает и не активирует дополнение автоматически. Используйте один Loader.
FreshBans, ReHLDS и AMXX в архив не входят и устанавливаются отдельно.
Серверный прогон выполнен на отдельном стенде с AMXX 1.9 и двумя клиентами CS Tester.
Реальное списание денег и отправка письма через рабочий SMTP не выполнялись.
