Перевод панели доведён до конца, скриншоты всех разделов, английское описание главным

Перевод
* Полный обход исходников скриптом, повторяющим логику подстановки: было
  видно 681 строку, которая осталась бы русской. Переведены все — словарь
  вырос с 640 до 1304 записей.
* Покрыты разделы, которых раньше не было в проверке: консоль сервера с
  описанием всех RCON-команд, планировщик задач, файрвол, базы MySQL, FTP,
  автоустановка модов, совладельцы, статистика сервера, страница аккаунта,
  сообщения планировщика и все письма.
* Убран ключ-предлог 'в' => 'at': он подменялся ВНУТРИ ещё не переведённых
  предложений и давал «at поле имя пользователя». Служебные слова переводятся
  только вместе с фразой.
* Формат даты 'd.m.Y в H:i' содержал русское «в» между датой и временем —
  теперь проходит через t() (31 вызов date() в 20 файлах), в английском
  режиме получается 30.07.2026 14:22.
* Абзацы FAQ разбиты по строкам вёрстки, атрибуты placeholder и tooltip
  добавлены отдельными ключами — раньше они не попадали в разбор.
* Живой обход 45 страниц в английском режиме: русскими остались 4 места, и
  все намеренно — подпись «Русский» у переключателя, коды языков игрового
  сервера в FAQ и регулярное выражение проверки имени.

Скриншоты
* docs/screenshots/{ru,en} — по 38 кадров: вход, регистрация, восстановление
  пароля, кабинет, заказ сервера, новости, статус, тикеты, FAQ, веб-хостинг и
  вся админка вместе со скрытыми вкладками настроек и переключателем капчи.
* docs/screenshots/README.md и README.ru.md — галереи, где каждый раздел
  показан на двух языках рядом.

Документация
* README.md теперь английский (главное описание), русский переехал в
  README.ru.md; в начале каждого — кнопка на другой язык.
* Добавлен раздел о доступных играх: 11 игр каталога с кодами,
  query-протоколами, диапазонами слотов и портов, плюс список ядер, которые
  клиент переключает в один клик.
* Добавлен раздел планов: больше игр по просьбам людей и современные
  платёжные системы — PayPal, Stripe, Lava.

Поддерживается и развивается с помощью REDL.IO.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 03:48:33 +00:00
co-authored by Claude Fable 5
parent e0b96d3501
commit 2e0eacbcea
106 changed files with 1876 additions and 878 deletions
+29 -1
View File
@@ -170,7 +170,35 @@ translation layer:
* Anything not yet translated falls back to the original Russian text, so nothing can disappear * Anything not yet translated falls back to the original Russian text, so nothing can disappear
from the interface from the interface
Details and current coverage: see [GUIDE.en.md](GUIDE.en.md), the "Interface language" section. Translation is applied to the finished response via `ob_start()`, so none of the 200 template files
had to be rewritten and the coverage extends to the admin area and the e-mails at once. Replacement
only happens on word boundaries — without that a short key corrupts longer words ("Мод" turned
"Модуль" into "Modуль").
### Translation coverage
The dictionary holds **1304 phrases** — everything the panel shows a human: the client area,
ordering a server, server management (the console with every RCON command described, FTP, MySQL
databases, the firewall, the task scheduler, mod auto-install), tickets, the whole FAQ, the entire
admin area, the e-mails and the scheduler's status messages.
Coverage is not eyeballed: a script replays the replacement logic against the sources and lists
what would stay Russian. By that measure **four** items are uncovered, and all four should be:
* "Русский" — the label of the language switcher itself;
* `rus => Pyccĸий` and `ukr => Українська` in the FAQ — these are game server language codes, not UI;
* the name validation regular expression `/^([А-ЯЁ])([а-яё]{1,15})$/u` — code, not text.
Two traps that produced mixed-language output were fixed separately:
* the preposition "в" was its own dictionary entry and got substituted inside sentences that were not
translated yet, producing "at поле имя пользователя". Function words like that are only translated
together with the phrase they belong to;
* the date format `d.m.Y в H:i` contains the Russian "в" between the date and the time. It now goes
through `t()` (31 `date()` calls across 20 files), so English mode renders `30.07.2026 14:22`.
Verified by a live crawl of 45 pages in English mode, including the creation forms and the hidden
settings tabs. Details: see [GUIDE.en.md](GUIDE.en.md), the "Interface language" section.
--- ---
+18 -3
View File
@@ -255,9 +255,24 @@ cp panel/application/lang/en.php panel/application/lang/de.php
# in panel/engine/main/lang.php # in panel/engine/main/lang.php
``` ```
Dictionary coverage is verified by crawling the pages: all 20 sections we walk through render with **Coverage.** The dictionary holds 1304 phrases and covers everything a person sees: the client area,
no Russian left over. If you spot an untranslated phrase, add it to `application/lang/en.php` ordering, server management (console with all RCON commands, FTP, MySQL, firewall, scheduler,
the key is the Russian text exactly as it appears. mod auto-install), tickets, the whole FAQ, the entire admin area, and the e-mail templates. Coverage
is measured, not assumed — a script replays the replacement logic against the sources and reports
what would stay Russian; a live crawl of 45 pages in English mode confirms it. Four items remain
Russian on purpose: the "Русский" label of the switcher itself, the two game-server language codes
in the FAQ (`rus => Pyccĸий`, `ukr => Українська`), and a name-validation regular expression.
If you do spot an untranslated phrase, add it to `application/lang/en.php` — the key is the Russian
text exactly as it appears in the output. Two rules worth knowing:
* **never add a standalone function word** (a preposition or conjunction such as `в`). It gets
substituted inside sentences that are not translated yet and produces mixed-language nonsense
like "at поле имя пользователя". Translate such words as part of the whole phrase.
* if the phrase contains a PHP variable, use the static fragments around it as separate keys — the
rendered text has real values in place of the variable and the full string would never match.
See the [screenshot gallery](docs/screenshots/README.md) for every section in both languages.
Translation only runs when the language is not Russian; in Russian mode the dictionary is not even Translation only runs when the language is not Russian; in Russian mode the dictionary is not even
loaded, so there is no overhead. loaded, so there is no overhead.
-161
View File
@@ -1,161 +0,0 @@
[Русский](README.md) · **English**
# Game Hosting Control Panel · REDL build
A control panel for selling and managing game servers: SA-MP, CRMP, MTA, Minecraft, CS 1.6, CS:S, RAGE:MP.
Client area, ticket system, payment gateways, automated game server deployment onto game nodes.
**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.**
This build is a modernisation of the HostinPL 5.6 panel. The original was written for Debian 9 and PHP 7.0
(both end-of-life since 2022) and simply would not start on a current server. Here it runs on an up-to-date
stack, the vulnerabilities we found are fixed, and one-click installers are included.
---
## ⚠️ Legal status — read this before installing
The original **HostinPL 5.6 is a commercial, proprietary product**. Its authors are Samir Shelenko and
Alexander Zemlyanoy. The file `panel/LICENSE` is their licence, and it grants no permission to
redistribute or modify the software.
The sources this build is based on were circulated as "nulled" — a cracked copy of a paid product,
published without the authors' consent. We are not hiding that or rewriting history: the authors'
copyright headers are preserved throughout the code and were deliberately not removed.
What this means in practice:
* using it for commercial hosting infringes copyright, with all the risks that follow;
* the legal route is to buy a licence from the authors, or use an open-source alternative
(Pterodactyl, Pelican);
* this repository is only useful for studying the code, auditing it, and internal experiments.
Responsibility for use rests with whoever installs it.
---
## What is in this repository
| Path | What it is |
|------|------------|
| `install-panel.sh` | One-click panel install (nginx + PHP 8 + MariaDB + scheduler + admin user) |
| `install-node.sh` | One-click game node install (Docker + image + directories + SSH/FTP + SteamCMD) |
| `panel/` | Panel source code with all of our changes |
| `docker/Dockerfile` | Modern game server image (Debian 12; the original stretch-based one no longer builds) |
| `docker/Dockerfile.original-stretch` | The original Dockerfile, kept for comparison |
| [`CHANGES.en.md`](CHANGES.en.md) | Full list of differences from the original |
| [`SECURITY.en.md`](SECURITY.en.md) | Audit results: vulnerabilities, backdoors, what was fixed |
| [`GUIDE.en.md`](GUIDE.en.md) | Complete guide: install, connecting a node, configuration, maintenance |
---
## Requirements
**For the panel** (the website and database — Docker is not needed):
* Ubuntu 24.04 / 22.04 or Debian 12 / 13
* 1 core, 1 GB RAM, 10 GB disk
* Any VPS will do, including container-based ones (LXC/OpenVZ)
**For a game node** (this is where the game servers actually run):
* Ubuntu 24.04 / 22.04 or Debian 12 / 13
* 2 cores, 2 GB RAM, 100 GB disk (budget 12 GB per game server)
* **Full kernel access is mandatory: a dedicated server or KVM.**
The panel creates a separate Docker container for every game server, and Docker does not start
inside a container-based VPS (LXC/OpenVZ) — the kernel forbids nested namespaces. The installer
checks for this and tells you plainly if the machine is unsuitable.
The panel and a node can share one machine, but separating them is better: keep the website on a
cheap VPS and put the games on real hardware.
---
## One-click install
### Panel
```bash
apt-get update && apt-get install -y git
git clone https://github.com/RedlHosting/redl-gamepanel.git
cd redl-gamepanel
sudo bash install-panel.sh
```
The script asks only for the panel address, the administrator e-mail and password — everything else
is automatic: it installs nginx, PHP 8 and MariaDB, creates a database with a random password, loads
the schema, writes the configuration and the scheduler, sets up an autostart watchdog, creates the
administrator, and verifies that the login page actually opens.
To run the panel on a non-standard port, set it via an environment variable:
```bash
sudo PORT=8095 bash install-panel.sh
```
### Game node
```bash
git clone https://github.com/RedlHosting/redl-gamepanel.git
cd redl-gamepanel
sudo bash install-node.sh
```
At the end the script prints the IP, SSH login and password — enter those in the panel under
**Admin → Locations → Add location**. See [GUIDE.en.md](GUIDE.en.md) for details.
---
## What already works
* Login, registration, password recovery — **without a captcha** (it is enabled from the admin area, see below)
* Client area: balance, invoices, transfers, bonuses, promo codes, referral system
* Ticket system with categories and attachments
* Admin area: users, servers, locations, games, news, statistics, promo codes, settings
* System check (Admin → System check) — every item green
* Payment gateways: Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, YooKassa, QIWI
(credentials are entered in the admin area; we did not test any gateway with a real payment)
* Web hosting (the WEB section) — via ISPmanager on a separate machine
* Scheduler: statistics, tasks, automatic suspension of expired servers
* **Two interface languages: Russian and English**, with automatic detection from the browser
and a switcher in the header (see [GUIDE.en.md](GUIDE.en.md))
### The captcha is off and is enabled with a single switch
By default there is no captcha anywhere — not on login, registration or tickets; the field simply
does not exist. When you need it:
1. Get reCAPTCHA v2 ("I'm not a robot") keys at [google.com/recaptcha](https://www.google.com/recaptcha/admin)
2. Go to **Admin → Settings → Other settings → "Bot protection (reCAPTCHA v2)"**
3. Paste the Site key and the Secret key, switch it to "Enabled", save
The order matters: keys first, switch second — otherwise the form shows
"ERROR for site owner: Invalid site key" and nobody can log in.
## What does not work
* **Creating game servers on a container-based VPS.** You need a node with real Docker
(dedicated or KVM) — see Requirements for why.
* **Game server files are not included.** The original installer downloaded them from third-party
sites over plain HTTP with no signature checking, so we removed that (see [SECURITY.en.md](SECURITY.en.md)).
You need to place the files into `/home/cp/gameservers/files/<game_code>/` yourself.
* **Payments and VK login** require your own keys and merchant accounts.
---
## Differences from the original, in brief
* Runs on **PHP 8.4** instead of PHP 7.0 — a walk through all 21 sections of the panel produces
zero errors in the log
* **The installer was rewritten from scratch**: the original overwrote `/etc/apt/sources.list` with
Debian 9 repositories and broke apt on any current system
* **Two pre-authentication SQL injections were fixed**, and plaintext password storage was removed
* The captcha became manageable from the admin area
* Russian and English interface with automatic language detection
* The scheduler and autostart work even where systemd is absent
The full list is in [CHANGES.en.md](CHANGES.en.md) and [SECURITY.en.md](SECURITY.en.md).
---
**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.**
+161 -94
View File
@@ -1,78 +1,129 @@
**Русский** · [English](README.en.md) <p align="right">
<a href="README.ru.md"><img alt="Читать по-русски" src="https://img.shields.io/badge/%F0%9F%87%B7%F0%9F%87%BA%20%D0%A7%D0%B8%D1%82%D0%B0%D1%82%D1%8C%20%D0%BF%D0%BE--%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8-2867c4?style=for-the-badge"></a>
</p>
# Панель управления игровым хостингом · сборка REDL # Game Hosting Control Panel · REDL build
Панель для продажи и управления игровыми серверами: SA-MP, CRMP, MTA, Minecraft, CS 1.6, CS:S, RAGE:MP. > 🇷🇺 **[Русская версия этого описания → README.ru.md](README.ru.md)**
Личный кабинет клиента, тикеты, платёжные системы, автоматическое создание серверов на игровых нодах.
**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.** A control panel for selling and managing game servers: SA-MP, CRMP, MTA, Minecraft, CS 1.6, CS:S, RAGE:MP.
Client area, ticket system, payment gateways, automated game server deployment onto game nodes.
Эта сборка — модернизация панели HostinPL 5.6: оригинал написан под Debian 9 и PHP 7.0 (сняты с поддержки в 2022 году) **Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.**
и на современном сервере просто не запускался. Здесь он приведён в рабочее состояние на актуальном стеке,
закрыты найденные уязвимости и добавлены установщики в один клик. This build is a modernisation of the HostinPL 5.6 panel. The original was written for Debian 9 and PHP 7.0
(both end-of-life since 2022) and simply would not start on a current server. Here it runs on an up-to-date
stack, the vulnerabilities we found are fixed, and one-click installers are included.
--- ---
## ⚠️ Правовой статус — прочитайте до установки ## ⚠️ Legal status — read this before installing
Оригинальная панель **HostinPL 5.6 — коммерческий проприетарный продукт**. Авторы: Samir Shelenko и The original **HostinPL 5.6 is a commercial, proprietary product**. Its authors are Samir Shelenko and
Alexander Zemlyanoy. Файл `panel/LICENSE` — их лицензия, и разрешения на распространение или изменение Alexander Zemlyanoy. The file `panel/LICENSE` is their licence, and it grants no permission to
она не даёт. redistribute or modify the software.
Исходники, лежащие в основе этой сборки, распространялись как «nulled»то есть это взломанная копия The sources this build is based on were circulated as "nulled"a cracked copy of a paid product,
платного продукта, выложенная без согласия авторов. Мы этого не скрываем и не переписываем историю: published without the authors' consent. We are not hiding that or rewriting history: the authors'
авторские копирайт-заголовки в коде сохранены как есть, они специально не удалялись. copyright headers are preserved throughout the code and were deliberately not removed.
Что это значит на практике: What this means in practice:
* использование в коммерческом хостинге — нарушение авторских прав со всеми вытекающими рисками; * using it for commercial hosting infringes copyright, with all the risks that follow;
* легальный путь — купить лицензию у авторов либо взять открытую альтернативу (Pterodactyl, Pelican); * the legal route is to buy a licence from the authors, or use an open-source alternative
* этот репозиторий имеет смысл только для изучения кода, аудита и внутренних экспериментов. (Pterodactyl, Pelican);
* this repository is only useful for studying the code, auditing it, and internal experiments.
Ответственность за использование лежит на том, кто устанавливает. Responsibility for use rests with whoever installs it.
--- ---
## Что в репозитории ## What is in this repository
| Путь | Что это | | Path | What it is |
|------|---------| |------|------------|
| `install-panel.sh` | Установка панели в один клик (nginx + PHP 8 + MariaDB + планировщик + админ) | | `install-panel.sh` | One-click panel install (nginx + PHP 8 + MariaDB + scheduler + admin user) |
| `install-node.sh` | Установка игровой ноды в один клик (Docker + образ + каталоги + SSH/FTP + SteamCMD) | | `install-node.sh` | One-click game node install (Docker + image + directories + SSH/FTP + SteamCMD) |
| `panel/` | Код панели со всеми нашими правками | | `panel/` | Panel source code with all of our changes |
| `docker/Dockerfile` | Современный образ игровых серверов (Debian 12; оригинальный на stretch больше не собирается) | | `docker/Dockerfile` | Modern game server image (Debian 12; the original stretch-based one no longer builds) |
| `docker/Dockerfile.original-stretch` | Оригинальный Dockerfile — оставлен для сравнения | | `docker/Dockerfile.original-stretch` | The original Dockerfile, kept for comparison |
| [`ИЗМЕНЕНИЯ.md`](ИЗМЕНЕНИЯ.md) | Полный список отличий от оригинала | | [`CHANGES.en.md`](CHANGES.en.md) | Full list of differences from the original |
| [`БЕЗОПАСНОСТЬ.md`](БЕЗОПАСНОСТЬ.md) | Что нашли при аудите: уязвимости, закладки, что исправлено | | [`SECURITY.en.md`](SECURITY.en.md) | Audit results: vulnerabilities, backdoors, what was fixed |
| [`ИНСТРУКЦИЯ.md`](ИНСТРУКЦИЯ.md) | Полная инструкция: установка, подключение ноды, настройка, обслуживание | | [`GUIDE.en.md`](GUIDE.en.md) | Complete guide: install, connecting a node, configuration, maintenance |
--- ---
## Требования ## Screenshots
**Для панели** (сам сайт и база — Docker не нужен): Every section of the panel, captured in both languages — 38 screenshots per language:
* Ubuntu 24.04 / 22.04 или Debian 12 / 13 | | |
* 1 ядро, 1 ГБ ОЗУ, 10 ГБ диска |---|---|
* Подойдёт любой VPS, включая контейнерный (LXC/OpenVZ) | [![Login](docs/screenshots/en/00-login.png)](docs/screenshots/en/00-login.png)<br>Login page | [![Client area](docs/screenshots/en/01-cabinet.png)](docs/screenshots/en/01-cabinet.png)<br>Client area |
| [![Order a server](docs/screenshots/en/03-server-order.png)](docs/screenshots/en/03-server-order.png)<br>Ordering a game server | [![Admin dashboard](docs/screenshots/en/11-admin-dashboard.png)](docs/screenshots/en/11-admin-dashboard.png)<br>Admin dashboard |
| [![Statistics](docs/screenshots/en/24-admin-statistics.png)](docs/screenshots/en/24-admin-statistics.png)<br>Statistics | [![Captcha switch](docs/screenshots/en/28-admin-settings-other-captcha.png)](docs/screenshots/en/28-admin-settings-other-captcha.png)<br>The captcha switch in the admin area |
**Для игровой ноды** (там крутятся сами игровые сервера): **Full galleries:** [🇬🇧 English](docs/screenshots/README.md) · [🇷🇺 Russian](docs/screenshots/README.ru.md)
* Ubuntu 24.04 / 22.04 или Debian 12 / 13
* 2 ядра, 2 ГБ ОЗУ, 100 ГБ диска (считайте 1–2 ГБ на игровой сервер)
* **Обязательно полный доступ к ядру: выделенный сервер или KVM.**
Панель создаёт на каждый игровой сервер отдельный Docker-контейнер, а в контейнерном VPS
(LXC/OpenVZ) Docker не запускается — ядро запрещает вложенные namespace. Установщик это проверяет
и честно предупредит.
Панель и нода могут быть одной машиной, но лучше разными: сайт можно держать на дешёвом VPS,
а под игры взять железо.
--- ---
## Установка в один клик ## Supported games
### Панель Eleven games ship in the panel's catalogue. Each one has its own query driver (so the panel can read
online player counts and the map), its own port and slot ranges, and its own default resource limits.
| Game | Code | Query protocol | Slots | Port range |
|------|------|----------------|-------|------------|
| San Andreas: Multiplayer 0.3.7 | `samp` | samp | 501000 | 77779999 |
| Criminal Russia: Multiplayer 0.3e | `crmp` | samp | 50500 | 33357000 |
| Criminal Russia: Multiplayer 0.3.7 | `crmp037` | samp | 50500 | 33357000 |
| United Multiplayer | `unit` | samp | 50500 | 77779999 |
| Multi Theft Auto | `mta` | mtasa | 501000 | 2502080520 |
| Minecraft (Java) | `mine` | mine | 10100 | 1241055641 |
| Minecraft: Pocket Edition | `mcpe` | mine | 10100 | 1241055641 |
| Counter-Strike 1.6 | `cs` | valve | 632 | 2701630550 |
| Counter-Strike: Source | `css` | valve | 632 | 2701630550 |
| Counter-Strike: Global Offensive | `csgo` | valve | 632 | 2701630550 |
| GTA V: RAGE MP | `ragemp` | ragemp | 50500 | 2200025000 |
The client can switch the server core in one click, without ordering a new server:
* **Minecraft (Java)** — CraftBukkit 1.7.10 / 1.8 / 1.13.2, Spigot 1.7.10 / 1.9.4 / 1.16.1, Vanilla 1.7.10 / 1.15.1
* **Minecraft: PE** — Genisys and Nukkit builds
* **Counter-Strike** — a clean build from SteamCMD, plus the VAC anti-cheat toggle and FastDL
* **RAGE:MP** — NodeJS modules are installed from the server management page
Every game is **disabled** in a fresh install (`Admin → Games → status`) — switch on the ones you
have a node and server files for. The game files themselves are not shipped, see
"What does not work" below.
---
## Requirements
**For the panel** (the website and database — Docker is not needed):
* Ubuntu 24.04 / 22.04 or Debian 12 / 13
* 1 core, 1 GB RAM, 10 GB disk
* Any VPS will do, including container-based ones (LXC/OpenVZ)
**For a game node** (this is where the game servers actually run):
* Ubuntu 24.04 / 22.04 or Debian 12 / 13
* 2 cores, 2 GB RAM, 100 GB disk (budget 12 GB per game server)
* **Full kernel access is mandatory: a dedicated server or KVM.**
The panel creates a separate Docker container for every game server, and Docker does not start
inside a container-based VPS (LXC/OpenVZ) — the kernel forbids nested namespaces. The installer
checks for this and tells you plainly if the machine is unsuitable.
The panel and a node can share one machine, but separating them is better: keep the website on a
cheap VPS and put the games on real hardware.
---
## One-click install
### Panel
```bash ```bash
apt-get update && apt-get install -y git apt-get update && apt-get install -y git
@@ -81,18 +132,18 @@ cd redl-gamepanel
sudo bash install-panel.sh sudo bash install-panel.sh
``` ```
Скрипт спросит только адрес панели, e-mail и пароль администратора — дальше всё сам: The script asks only for the panel address, the administrator e-mail and password — everything else
поставит nginx, PHP 8 и MariaDB, создаст базу со случайным паролем, загрузит схему, настроит is automatic: it installs nginx, PHP 8 and MariaDB, creates a database with a random password, loads
конфиг и планировщик, поднимет сторож автозапуска, создаст администратора и проверит, the schema, writes the configuration and the scheduler, sets up an autostart watchdog, creates the
что страница входа реально открывается. administrator, and verifies that the login page actually opens.
Панель работает на нестандартном порту, если задать его переменной: To run the panel on a non-standard port, set it via an environment variable:
```bash ```bash
sudo PORT=8095 bash install-panel.sh sudo PORT=8095 bash install-panel.sh
``` ```
### Игровая нода ### Game node
```bash ```bash
git clone https://github.com/RedlHosting/redl-gamepanel.git git clone https://github.com/RedlHosting/redl-gamepanel.git
@@ -100,60 +151,76 @@ cd redl-gamepanel
sudo bash install-node.sh sudo bash install-node.sh
``` ```
В конце скрипт напечатает IP, логин и пароль SSH — их нужно вбить в панели: At the end the script prints the IP, SSH login and password — enter those in the panel under
**Админка → Локации → Добавить локацию**. Подробнее — в [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md). **Admin → Locations → Add location**. See [GUIDE.en.md](GUIDE.en.md) for details.
--- ---
## Что уже работает ## What already works
* Вход, регистрация, восстановление пароля — **без капчи** (включается из админки, см. ниже) * Login, registration, password recovery — **without a captcha** (it is enabled from the admin area, see below)
* Личный кабинет: баланс, счета, переводы, бонусы, промокоды, реферальная система * Client area: balance, invoices, transfers, bonuses, promo codes, referral system
* Тикет-система с категориями и вложениями * Ticket system with categories and attachments
* Админка: пользователи, сервера, локации, игры, новости, статистика, промокоды, настройки * Admin area: users, servers, locations, games, news, statistics, promo codes, settings
* Проверка системы (Админка → Проверка системы) — все пункты зелёные * System check (Admin → System check) — every item green
* Платёжные системы: Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, Юkassa, QIWI * Payment gateways: Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, YooKassa, QIWI
(реквизиты вписываются в админке; ни один шлюз мы не тестировали живыми платежами) (credentials are entered in the admin area; we did not test any gateway with a real payment)
* Веб-хостинг (раздел WEB) — через ISPmanager на отдельной машине * Web hosting (the WEB section) — via ISPmanager on a separate machine
* Планировщик: статистика, задачи, автоотключение просроченных серверов * Scheduler: statistics, tasks, automatic suspension of expired servers
* **Два языка интерфейса: русский и английский**, с автоопределением по браузеру * **Two interface languages: Russian and English**, with automatic detection from the browser
и переключателем в шапке (см. [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md)) and a switcher in the header (see [GUIDE.en.md](GUIDE.en.md))
### Капча — выключена, включается одним переключателем ### The captcha is off and is enabled with a single switch
По умолчанию капчи нет нигде: ни при входе, ни при регистрации, ни в тикетах — поля просто By default there is no captcha anywhere — not on login, registration or tickets; the field simply
не существует. Когда понадобится: does not exist. When you need it:
1. Получите ключи reCAPTCHA v2 («Я не робот») на [google.com/recaptcha](https://www.google.com/recaptcha/admin) 1. Get reCAPTCHA v2 ("I'm not a robot") keys at [google.com/recaptcha](https://www.google.com/recaptcha/admin)
2. **Админка → Настройки → Прочие настройки → «Защита от ботов (reCAPTCHA v2)»** 2. Go to **Admin → Settings → Other settings → "Bot protection (reCAPTCHA v2)"**
3. Вставьте Site key и Secret key, переключите на «Включена», сохраните 3. Paste the Site key and the Secret key, switch it to "Enabled", save
Порядок важен: сначала ключи, потом переключатель — иначе на форме появится The order matters: keys first, switch second — otherwise the form shows
«ERROR for site owner: Invalid site key» и войти будет нельзя. "ERROR for site owner: Invalid site key" and nobody can log in.
## Что не работает ## What does not work
* **Создание игровых серверов на контейнерном VPS.** Нужна нода с настоящим Docker * **Creating game servers on a container-based VPS.** You need a node with real Docker
(дедик или KVM) — причина описана в требованиях. (dedicated or KVM) — see Requirements for why.
* **Сборки игр в комплект не входят.** В оригинальном установщике они качались с посторонних * **Game server files are not included.** The original installer downloaded them from third-party
сайтов по обычному HTTP без проверки подписи — мы этот способ убрали (см. [БЕЗОПАСНОСТЬ.md](БЕЗОПАСНОСТЬ.md)). sites over plain HTTP with no signature checking, so we removed that (see [SECURITY.en.md](SECURITY.en.md)).
Сборки нужно положить в `/home/cp/gameservers/files/<код_игры>/` самостоятельно. You need to place the files into `/home/cp/gameservers/files/<game_code>/` yourself.
* **Платежи и VK-авторизация** требуют ваших собственных ключей и мерчант-аккаунтов. * **Payments and VK login** require your own keys and merchant accounts.
--- ---
## Коротко об отличиях от оригинала ## Planned next
* Работает на **PHP 8.4** вместо PHP 7.0 — обход всех 21 раздела панели даёт ноль ошибок в логе 1. **More games — by request.** The eleven games above are the ones the panel came with. Adding a
* **Установщик переписан с нуля**: оригинальный затирал `/etc/apt/sources.list` репозиториями game means one row in the catalogue plus a query driver and server files, so the list is meant to
Debian 9 и ломал apt на любой современной системе grow: tell us which game you want and it goes into the queue. Rust, ARK, Terraria, Valheim,
* **Закрыты две SQL-инъекции, доступные без авторизации**, и убрано хранение паролей в открытом виде Garry's Mod, Team Fortress 2, FiveM and Minecraft: Bedrock are the obvious candidates.
* Капча стала управляемой из админки 2. **Modern payment gateways: PayPal, Stripe and Lava.** Right now the panel only has the Russian
* Русский и английский интерфейс с автоопределением языка gateways of its original author (Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, YooKassa,
* Планировщик и автозапуск работают и там, где нет systemd QIWI). PayPal and Stripe open up card payments worldwide, Lava covers Russia and the CIS —
together they let the panel take money outside a single region.
Полностью — в [ИЗМЕНЕНИЯ.md](ИЗМЕНЕНИЯ.md) и [БЕЗОПАСНОСТЬ.md](БЕЗОПАСНОСТЬ.md). Have a different priority? Open an issue in the repository.
--- ---
**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.** ## Differences from the original, in brief
* Runs on **PHP 8.4** instead of PHP 7.0 — a walk through all 21 sections of the panel produces
zero errors in the log
* **The installer was rewritten from scratch**: the original overwrote `/etc/apt/sources.list` with
Debian 9 repositories and broke apt on any current system
* **Two pre-authentication SQL injections were fixed**, and plaintext password storage was removed
* The captcha became manageable from the admin area
* Russian and English interface with automatic language detection
* The scheduler and autostart work even where systemd is absent
The full list is in [CHANGES.en.md](CHANGES.en.md) and [SECURITY.en.md](SECURITY.en.md).
---
**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.**
+223
View File
@@ -0,0 +1,223 @@
<p align="right">
<a href="README.md"><img alt="Read in English" src="https://img.shields.io/badge/%F0%9F%87%AC%F0%9F%87%A7%20Read%20in%20English-2867c4?style=for-the-badge"></a>
</p>
# Панель управления игровым хостингом · сборка REDL
> 🇬🇧 **[English version of this page → README.md](README.md)**
Панель для продажи и управления игровыми серверами: SA-MP, CRMP, MTA, Minecraft, CS 1.6, CS:S, RAGE:MP.
Личный кабинет клиента, тикеты, платёжные системы, автоматическое создание серверов на игровых нодах.
**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.**
Эта сборка — модернизация панели HostinPL 5.6: оригинал написан под Debian 9 и PHP 7.0 (сняты с поддержки в 2022 году)
и на современном сервере просто не запускался. Здесь он приведён в рабочее состояние на актуальном стеке,
закрыты найденные уязвимости и добавлены установщики в один клик.
---
## ⚠️ Правовой статус — прочитайте до установки
Оригинальная панель **HostinPL 5.6 — коммерческий проприетарный продукт**. Авторы: Samir Shelenko и
Alexander Zemlyanoy. Файл `panel/LICENSE` — их лицензия, и разрешения на распространение или изменение
она не даёт.
Исходники, лежащие в основе этой сборки, распространялись как «nulled» — то есть это взломанная копия
платного продукта, выложенная без согласия авторов. Мы этого не скрываем и не переписываем историю:
авторские копирайт-заголовки в коде сохранены как есть, они специально не удалялись.
Что это значит на практике:
* использование в коммерческом хостинге — нарушение авторских прав со всеми вытекающими рисками;
* легальный путь — купить лицензию у авторов либо взять открытую альтернативу (Pterodactyl, Pelican);
* этот репозиторий имеет смысл только для изучения кода, аудита и внутренних экспериментов.
Ответственность за использование лежит на том, кто устанавливает.
---
## Что в репозитории
| Путь | Что это |
|------|---------|
| `install-panel.sh` | Установка панели в один клик (nginx + PHP 8 + MariaDB + планировщик + админ) |
| `install-node.sh` | Установка игровой ноды в один клик (Docker + образ + каталоги + SSH/FTP + SteamCMD) |
| `panel/` | Код панели со всеми нашими правками |
| `docker/Dockerfile` | Современный образ игровых серверов (Debian 12; оригинальный на stretch больше не собирается) |
| `docker/Dockerfile.original-stretch` | Оригинальный Dockerfile — оставлен для сравнения |
| [`ИЗМЕНЕНИЯ.md`](ИЗМЕНЕНИЯ.md) | Полный список отличий от оригинала |
| [`БЕЗОПАСНОСТЬ.md`](БЕЗОПАСНОСТЬ.md) | Что нашли при аудите: уязвимости, закладки, что исправлено |
| [`ИНСТРУКЦИЯ.md`](ИНСТРУКЦИЯ.md) | Полная инструкция: установка, подключение ноды, настройка, обслуживание |
---
## Скриншоты
Каждый раздел панели снят на двух языках — по 38 кадров на язык:
| | |
|---|---|
| [![Вход](docs/screenshots/ru/00-login.png)](docs/screenshots/ru/00-login.png)<br>Страница входа | [![Кабинет](docs/screenshots/ru/01-cabinet.png)](docs/screenshots/ru/01-cabinet.png)<br>Личный кабинет |
| [![Заказ сервера](docs/screenshots/ru/03-server-order.png)](docs/screenshots/ru/03-server-order.png)<br>Заказ игрового сервера | [![Админка](docs/screenshots/ru/11-admin-dashboard.png)](docs/screenshots/ru/11-admin-dashboard.png)<br>Главная админки |
| [![Статистика](docs/screenshots/ru/24-admin-statistics.png)](docs/screenshots/ru/24-admin-statistics.png)<br>Статистика | [![Переключатель капчи](docs/screenshots/ru/28-admin-settings-other-captcha.png)](docs/screenshots/ru/28-admin-settings-other-captcha.png)<br>Переключатель капчи в админке |
**Полные галереи:** [🇷🇺 русская](docs/screenshots/README.ru.md) · [🇬🇧 английская](docs/screenshots/README.md)
---
## Какие игры доступны
В каталоге панели одиннадцать игр. У каждой свой query-драйвер (панель сама читает онлайн игроков
и карту), свои диапазоны портов и слотов и свои лимиты ресурсов по умолчанию.
| Игра | Код | Query-протокол | Слоты | Порты |
|------|-----|----------------|-------|-------|
| San Andreas: Multiplayer 0.3.7 | `samp` | samp | 501000 | 77779999 |
| Criminal Russia: Multiplayer 0.3e | `crmp` | samp | 50500 | 33357000 |
| Criminal Russia: Multiplayer 0.3.7 | `crmp037` | samp | 50500 | 33357000 |
| United Multiplayer | `unit` | samp | 50500 | 77779999 |
| Multi Theft Auto | `mta` | mtasa | 501000 | 2502080520 |
| Minecraft (Java) | `mine` | mine | 10100 | 1241055641 |
| Minecraft: Pocket Edition | `mcpe` | mine | 10100 | 1241055641 |
| Counter-Strike 1.6 | `cs` | valve | 632 | 2701630550 |
| Counter-Strike: Source | `css` | valve | 632 | 2701630550 |
| Counter-Strike: Global Offensive | `csgo` | valve | 632 | 2701630550 |
| GTA V: RAGE MP | `ragemp` | ragemp | 50500 | 2200025000 |
Ядро сервера клиент меняет в один клик, не заказывая новый сервер:
* **Minecraft (Java)** — CraftBukkit 1.7.10 / 1.8 / 1.13.2, Spigot 1.7.10 / 1.9.4 / 1.16.1, Vanilla 1.7.10 / 1.15.1
* **Minecraft: PE** — сборки Genisys и Nukkit
* **Counter-Strike** — чистая сборка из SteamCMD, плюс переключатель античита VAC и FastDL
* **RAGE:MP** — NodeJS-модули ставятся со страницы управления сервером
В свежей установке все игры **выключены** (`Админка → Игры → статус`) — включайте те, под которые
у вас есть нода и сборки. Сами сборки игр в комплект не входят, см. «Что не работает» ниже.
---
## Требования
**Для панели** (сам сайт и база — Docker не нужен):
* Ubuntu 24.04 / 22.04 или Debian 12 / 13
* 1 ядро, 1 ГБ ОЗУ, 10 ГБ диска
* Подойдёт любой VPS, включая контейнерный (LXC/OpenVZ)
**Для игровой ноды** (там крутятся сами игровые сервера):
* Ubuntu 24.04 / 22.04 или Debian 12 / 13
* 2 ядра, 2 ГБ ОЗУ, 100 ГБ диска (считайте 1–2 ГБ на игровой сервер)
* **Обязательно полный доступ к ядру: выделенный сервер или KVM.**
Панель создаёт на каждый игровой сервер отдельный Docker-контейнер, а в контейнерном VPS
(LXC/OpenVZ) Docker не запускается — ядро запрещает вложенные namespace. Установщик это проверяет
и честно предупредит.
Панель и нода могут быть одной машиной, но лучше разными: сайт можно держать на дешёвом VPS,
а под игры взять железо.
---
## Установка в один клик
### Панель
```bash
apt-get update && apt-get install -y git
git clone https://github.com/RedlHosting/redl-gamepanel.git
cd redl-gamepanel
sudo bash install-panel.sh
```
Скрипт спросит только адрес панели, e-mail и пароль администратора — дальше всё сам:
поставит nginx, PHP 8 и MariaDB, создаст базу со случайным паролем, загрузит схему, настроит
конфиг и планировщик, поднимет сторож автозапуска, создаст администратора и проверит,
что страница входа реально открывается.
Панель работает на нестандартном порту, если задать его переменной:
```bash
sudo PORT=8095 bash install-panel.sh
```
### Игровая нода
```bash
git clone https://github.com/RedlHosting/redl-gamepanel.git
cd redl-gamepanel
sudo bash install-node.sh
```
В конце скрипт напечатает IP, логин и пароль SSH — их нужно вбить в панели:
**Админка → Локации → Добавить локацию**. Подробнее — в [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md).
---
## Что уже работает
* Вход, регистрация, восстановление пароля — **без капчи** (включается из админки, см. ниже)
* Личный кабинет: баланс, счета, переводы, бонусы, промокоды, реферальная система
* Тикет-система с категориями и вложениями
* Админка: пользователи, сервера, локации, игры, новости, статистика, промокоды, настройки
* Проверка системы (Админка → Проверка системы) — все пункты зелёные
* Платёжные системы: Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, Юkassa, QIWI
(реквизиты вписываются в админке; ни один шлюз мы не тестировали живыми платежами)
* Веб-хостинг (раздел WEB) — через ISPmanager на отдельной машине
* Планировщик: статистика, задачи, автоотключение просроченных серверов
* **Два языка интерфейса: русский и английский**, с автоопределением по браузеру
и переключателем в шапке (см. [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md))
### Капча — выключена, включается одним переключателем
По умолчанию капчи нет нигде: ни при входе, ни при регистрации, ни в тикетах — поля просто
не существует. Когда понадобится:
1. Получите ключи reCAPTCHA v2 («Я не робот») на [google.com/recaptcha](https://www.google.com/recaptcha/admin)
2. **Админка → Настройки → Прочие настройки → «Защита от ботов (reCAPTCHA v2)»**
3. Вставьте Site key и Secret key, переключите на «Включена», сохраните
Порядок важен: сначала ключи, потом переключатель — иначе на форме появится
«ERROR for site owner: Invalid site key» и войти будет нельзя.
## Что не работает
* **Создание игровых серверов на контейнерном VPS.** Нужна нода с настоящим Docker
(дедик или KVM) — причина описана в требованиях.
* **Сборки игр в комплект не входят.** В оригинальном установщике они качались с посторонних
сайтов по обычному HTTP без проверки подписи — мы этот способ убрали (см. [БЕЗОПАСНОСТЬ.md](БЕЗОПАСНОСТЬ.md)).
Сборки нужно положить в `/home/cp/gameservers/files/<код_игры>/` самостоятельно.
* **Платежи и VK-авторизация** требуют ваших собственных ключей и мерчант-аккаунтов.
---
## Что планируем дальше
1. **Больше игр — по просьбам людей.** Одиннадцать игр выше — это то, с чем панель пришла.
Добавить игру = строка в каталоге плюс query-драйвер и сборки, так что список задуман
расширяемым: скажите, какую игру хотите, и она встанет в очередь. Очевидные кандидаты —
Rust, ARK, Terraria, Valheim, Garry's Mod, Team Fortress 2, FiveM и Minecraft: Bedrock.
2. **Современные платёжные системы: PayPal, Stripe и Lava.** Сейчас в панели только российские
шлюзы её первоначального автора (Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa,
YooKassa, QIWI). PayPal и Stripe открывают приём карт по всему миру, Lava закрывает Россию
и СНГ — вместе они позволяют принимать деньги не только в одном регионе.
Приоритеты другие? Откройте issue в репозитории.
---
## Коротко об отличиях от оригинала
* Работает на **PHP 8.4** вместо PHP 7.0 — обход всех 21 раздела панели даёт ноль ошибок в логе
* **Установщик переписан с нуля**: оригинальный затирал `/etc/apt/sources.list` репозиториями
Debian 9 и ломал apt на любой современной системе
* **Закрыты две SQL-инъекции, доступные без авторизации**, и убрано хранение паролей в открытом виде
* Капча стала управляемой из админки
* Русский и английский интерфейс с автоопределением языка
* Планировщик и автозапуск работают и там, где нет systemd
Полностью — в [ИЗМЕНЕНИЯ.md](ИЗМЕНЕНИЯ.md) и [БЕЗОПАСНОСТЬ.md](БЕЗОПАСНОСТЬ.md).
---
**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.**
+58
View File
@@ -0,0 +1,58 @@
<p align="right">
<a href="README.ru.md"><img alt="Читать по-русски" src="https://img.shields.io/badge/%F0%9F%87%B7%F0%9F%87%BA%20%D0%A7%D0%B8%D1%82%D0%B0%D1%82%D1%8C%20%D0%BF%D0%BE--%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8-2867c4?style=for-the-badge"></a>
</p>
# Panel screenshots
Every section of the panel, captured on a live install — one shot per section, in both languages.
The English interface is on the left and the same screen in Russian on the right: the language is
switched with a button in the header and detected from the browser automatically.
Shots are 1600 pixels wide; click an image to open it full size.
[← back to the README](../../README.md)
| English | Russian |
|---|---|
| **Panel login**<br>[<img src="en/00-login.png" width="470">](en/00-login.png) | **Panel login**<br>[<img src="ru/00-login.png" width="470">](ru/00-login.png) |
| **Registration — no captcha**<br>[<img src="en/00b-register.png" width="470">](en/00b-register.png) | **Registration — no captcha**<br>[<img src="ru/00b-register.png" width="470">](ru/00b-register.png) |
| **Password recovery**<br>[<img src="en/00c-password-reset.png" width="470">](en/00c-password-reset.png) | **Password recovery**<br>[<img src="ru/00c-password-reset.png" width="470">](ru/00c-password-reset.png) |
| **Client area**<br>[<img src="en/01-cabinet.png" width="470">](en/01-cabinet.png) | **Client area**<br>[<img src="ru/01-cabinet.png" width="470">](ru/01-cabinet.png) |
| **My game servers**<br>[<img src="en/02-servers.png" width="470">](en/02-servers.png) | **My game servers**<br>[<img src="ru/02-servers.png" width="470">](ru/02-servers.png) |
| **Ordering a game server**<br>[<img src="en/03-server-order.png" width="470">](en/03-server-order.png) | **Ordering a game server**<br>[<img src="ru/03-server-order.png" width="470">](ru/03-server-order.png) |
| **Hosting news**<br>[<img src="en/04-news.png" width="470">](en/04-news.png) | **Hosting news**<br>[<img src="ru/04-news.png" width="470">](ru/04-news.png) |
| **Server status**<br>[<img src="en/05-status.png" width="470">](en/05-status.png) | **Server status**<br>[<img src="ru/05-status.png" width="470">](ru/05-status.png) |
| **Support tickets**<br>[<img src="en/06-tickets.png" width="470">](en/06-tickets.png) | **Support tickets**<br>[<img src="ru/06-tickets.png" width="470">](ru/06-tickets.png) |
| **Creating a ticket**<br>[<img src="en/07-ticket-create.png" width="470">](en/07-ticket-create.png) | **Creating a ticket**<br>[<img src="ru/07-ticket-create.png" width="470">](ru/07-ticket-create.png) |
| **FAQ — client help**<br>[<img src="en/08-faq.png" width="470">](en/08-faq.png) | **FAQ — client help**<br>[<img src="ru/08-faq.png" width="470">](ru/08-faq.png) |
| **Web hosting**<br>[<img src="en/09-webhosting.png" width="470">](en/09-webhosting.png) | **Web hosting**<br>[<img src="ru/09-webhosting.png" width="470">](ru/09-webhosting.png) |
| **Ordering web hosting**<br>[<img src="en/10-webhosting-order.png" width="470">](en/10-webhosting-order.png) | **Ordering web hosting**<br>[<img src="ru/10-webhosting-order.png" width="470">](ru/10-webhosting-order.png) |
| **Admin — dashboard**<br>[<img src="en/11-admin-dashboard.png" width="470">](en/11-admin-dashboard.png) | **Admin — dashboard**<br>[<img src="ru/11-admin-dashboard.png" width="470">](ru/11-admin-dashboard.png) |
| **Admin — users**<br>[<img src="en/12-admin-users.png" width="470">](en/12-admin-users.png) | **Admin — users**<br>[<img src="ru/12-admin-users.png" width="470">](ru/12-admin-users.png) |
| **Admin — game servers**<br>[<img src="en/13-admin-servers.png" width="470">](en/13-admin-servers.png) | **Admin — game servers**<br>[<img src="ru/13-admin-servers.png" width="470">](ru/13-admin-servers.png) |
| **Admin — game catalogue**<br>[<img src="en/14-admin-games.png" width="470">](en/14-admin-games.png) | **Admin — game catalogue**<br>[<img src="ru/14-admin-games.png" width="470">](ru/14-admin-games.png) |
| **Admin — game locations (nodes)**<br>[<img src="en/15-admin-locations.png" width="470">](en/15-admin-locations.png) | **Admin — game locations (nodes)**<br>[<img src="ru/15-admin-locations.png" width="470">](ru/15-admin-locations.png) |
| **Admin — mods**<br>[<img src="en/16-admin-mods.png" width="470">](en/16-admin-mods.png) | **Admin — mods**<br>[<img src="ru/16-admin-mods.png" width="470">](ru/16-admin-mods.png) |
| **Admin — file repository**<br>[<img src="en/17-admin-repo.png" width="470">](en/17-admin-repo.png) | **Admin — file repository**<br>[<img src="ru/17-admin-repo.png" width="470">](ru/17-admin-repo.png) |
| **Admin — tickets**<br>[<img src="en/18-admin-tickets.png" width="470">](en/18-admin-tickets.png) | **Admin — tickets**<br>[<img src="ru/18-admin-tickets.png" width="470">](ru/18-admin-tickets.png) |
| **Admin — ticket categories**<br>[<img src="en/19-admin-ticket-categories.png" width="470">](en/19-admin-ticket-categories.png) | **Admin — ticket categories**<br>[<img src="ru/19-admin-ticket-categories.png" width="470">](ru/19-admin-ticket-categories.png) |
| **Admin — payments**<br>[<img src="en/20-admin-invoices.png" width="470">](en/20-admin-invoices.png) | **Admin — payments**<br>[<img src="ru/20-admin-invoices.png" width="470">](ru/20-admin-invoices.png) |
| **Admin — promo codes**<br>[<img src="en/21-admin-promo.png" width="470">](en/21-admin-promo.png) | **Admin — promo codes**<br>[<img src="ru/21-admin-promo.png" width="470">](ru/21-admin-promo.png) |
| **Admin — news**<br>[<img src="en/22-admin-news.png" width="470">](en/22-admin-news.png) | **Admin — news**<br>[<img src="ru/22-admin-news.png" width="470">](ru/22-admin-news.png) |
| **Admin — site enquiries**<br>[<img src="en/23-admin-infobox.png" width="470">](en/23-admin-infobox.png) | **Admin — site enquiries**<br>[<img src="ru/23-admin-infobox.png" width="470">](ru/23-admin-infobox.png) |
| **Admin — statistics and charts**<br>[<img src="en/24-admin-statistics.png" width="470">](en/24-admin-statistics.png) | **Admin — statistics and charts**<br>[<img src="ru/24-admin-statistics.png" width="470">](ru/24-admin-statistics.png) |
| **Admin — system check**<br>[<img src="en/25-admin-checksys.png" width="470">](en/25-admin-checksys.png) | **Admin — system check**<br>[<img src="ru/25-admin-checksys.png" width="470">](ru/25-admin-checksys.png) |
| **Settings — general**<br>[<img src="en/26-admin-settings.png" width="470">](en/26-admin-settings.png) | **Settings — general**<br>[<img src="ru/26-admin-settings.png" width="470">](ru/26-admin-settings.png) |
| **Settings — payment gateways**<br>[<img src="en/27-admin-settings-payments.png" width="470">](en/27-admin-settings-payments.png) | **Settings — payment gateways**<br>[<img src="ru/27-admin-settings-payments.png" width="470">](ru/27-admin-settings-payments.png) |
| **Settings — the captcha switch**<br>[<img src="en/28-admin-settings-other-captcha.png" width="470">](en/28-admin-settings-other-captcha.png) | **Settings — the captcha switch**<br>[<img src="ru/28-admin-settings-other-captcha.png" width="470">](ru/28-admin-settings-other-captcha.png) |
| **Settings — information and bonuses**<br>[<img src="en/29-admin-settings-info.png" width="470">](en/29-admin-settings-info.png) | **Settings — information and bonuses**<br>[<img src="ru/29-admin-settings-info.png" width="470">](ru/29-admin-settings-info.png) |
| **The language switcher in the header**<br>[<img src="en/30-language-switcher.png" width="470">](en/30-language-switcher.png) | **The language switcher in the header**<br>[<img src="ru/30-language-switcher.png" width="470">](ru/30-language-switcher.png) |
| **Admin — balance transactions**<br>[<img src="en/31-admin-waste.png" width="470">](en/31-admin-waste.png) | **Admin — balance transactions**<br>[<img src="ru/31-admin-waste.png" width="470">](ru/31-admin-waste.png) |
| **Admin — web hosting accounts**<br>[<img src="en/32-admin-webhosting.png" width="470">](en/32-admin-webhosting.png) | **Admin — web hosting accounts**<br>[<img src="ru/32-admin-webhosting.png" width="470">](ru/32-admin-webhosting.png) |
| **Admin — web locations**<br>[<img src="en/33-admin-web-locations.png" width="470">](en/33-admin-web-locations.png) | **Admin — web locations**<br>[<img src="ru/33-admin-web-locations.png" width="470">](ru/33-admin-web-locations.png) |
| **Admin — web hosting plans**<br>[<img src="en/34-admin-web-plans.png" width="470">](en/34-admin-web-plans.png) | **Admin — web hosting plans**<br>[<img src="ru/34-admin-web-plans.png" width="470">](ru/34-admin-web-plans.png) |
| **Admin — e-mail templates**<br>[<img src="en/35-admin-mail-templates.png" width="470">](en/35-admin-mail-templates.png) | **Admin — e-mail templates**<br>[<img src="ru/35-admin-mail-templates.png" width="470">](ru/35-admin-mail-templates.png) |
---
**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.**
+58
View File
@@ -0,0 +1,58 @@
<p align="right">
<a href="README.md"><img alt="Read in English" src="https://img.shields.io/badge/%F0%9F%87%AC%F0%9F%87%A7%20Read%20in%20English-2867c4?style=for-the-badge"></a>
</p>
# Скриншоты панели
Все разделы панели, снятые на живой установке — по одному кадру на раздел, на двух языках.
Слева русский интерфейс, справа тот же экран на английском: язык переключается кнопкой в шапке
и определяется по браузеру автоматически.
Кадры сняты в разрешении 1600 пикселей по ширине; нажмите на картинку, чтобы открыть её целиком.
[← вернуться к описанию](../../README.ru.md)
| Русский | English |
|---|---|
| **Вход в панель**<br>[<img src="ru/00-login.png" width="470">](ru/00-login.png) | **Вход в панель**<br>[<img src="en/00-login.png" width="470">](en/00-login.png) |
| **Регистрация — без капчи**<br>[<img src="ru/00b-register.png" width="470">](ru/00b-register.png) | **Регистрация — без капчи**<br>[<img src="en/00b-register.png" width="470">](en/00b-register.png) |
| **Восстановление пароля**<br>[<img src="ru/00c-password-reset.png" width="470">](ru/00c-password-reset.png) | **Восстановление пароля**<br>[<img src="en/00c-password-reset.png" width="470">](en/00c-password-reset.png) |
| **Личный кабинет**<br>[<img src="ru/01-cabinet.png" width="470">](ru/01-cabinet.png) | **Личный кабинет**<br>[<img src="en/01-cabinet.png" width="470">](en/01-cabinet.png) |
| **Мои игровые серверы**<br>[<img src="ru/02-servers.png" width="470">](ru/02-servers.png) | **Мои игровые серверы**<br>[<img src="en/02-servers.png" width="470">](en/02-servers.png) |
| **Заказ игрового сервера**<br>[<img src="ru/03-server-order.png" width="470">](ru/03-server-order.png) | **Заказ игрового сервера**<br>[<img src="en/03-server-order.png" width="470">](en/03-server-order.png) |
| **Новости хостинга**<br>[<img src="ru/04-news.png" width="470">](ru/04-news.png) | **Новости хостинга**<br>[<img src="en/04-news.png" width="470">](en/04-news.png) |
| **Статус серверов**<br>[<img src="ru/05-status.png" width="470">](ru/05-status.png) | **Статус серверов**<br>[<img src="en/05-status.png" width="470">](en/05-status.png) |
| **Тикеты поддержки**<br>[<img src="ru/06-tickets.png" width="470">](ru/06-tickets.png) | **Тикеты поддержки**<br>[<img src="en/06-tickets.png" width="470">](en/06-tickets.png) |
| **Создание тикета**<br>[<img src="ru/07-ticket-create.png" width="470">](ru/07-ticket-create.png) | **Создание тикета**<br>[<img src="en/07-ticket-create.png" width="470">](en/07-ticket-create.png) |
| **FAQ — справка для клиентов**<br>[<img src="ru/08-faq.png" width="470">](ru/08-faq.png) | **FAQ — справка для клиентов**<br>[<img src="en/08-faq.png" width="470">](en/08-faq.png) |
| **Веб-хостинг**<br>[<img src="ru/09-webhosting.png" width="470">](ru/09-webhosting.png) | **Веб-хостинг**<br>[<img src="en/09-webhosting.png" width="470">](en/09-webhosting.png) |
| **Заказ веб-хостинга**<br>[<img src="ru/10-webhosting-order.png" width="470">](ru/10-webhosting-order.png) | **Заказ веб-хостинга**<br>[<img src="en/10-webhosting-order.png" width="470">](en/10-webhosting-order.png) |
| **Админка — главная**<br>[<img src="ru/11-admin-dashboard.png" width="470">](ru/11-admin-dashboard.png) | **Админка — главная**<br>[<img src="en/11-admin-dashboard.png" width="470">](en/11-admin-dashboard.png) |
| **Админка — пользователи**<br>[<img src="ru/12-admin-users.png" width="470">](ru/12-admin-users.png) | **Админка — пользователи**<br>[<img src="en/12-admin-users.png" width="470">](en/12-admin-users.png) |
| **Админка — игровые серверы**<br>[<img src="ru/13-admin-servers.png" width="470">](ru/13-admin-servers.png) | **Админка — игровые серверы**<br>[<img src="en/13-admin-servers.png" width="470">](en/13-admin-servers.png) |
| **Админка — каталог игр**<br>[<img src="ru/14-admin-games.png" width="470">](ru/14-admin-games.png) | **Админка — каталог игр**<br>[<img src="en/14-admin-games.png" width="470">](en/14-admin-games.png) |
| **Админка — игровые локации (ноды)**<br>[<img src="ru/15-admin-locations.png" width="470">](ru/15-admin-locations.png) | **Админка — игровые локации (ноды)**<br>[<img src="en/15-admin-locations.png" width="470">](en/15-admin-locations.png) |
| **Админка — моды**<br>[<img src="ru/16-admin-mods.png" width="470">](ru/16-admin-mods.png) | **Админка — моды**<br>[<img src="en/16-admin-mods.png" width="470">](en/16-admin-mods.png) |
| **Админка — репозиторий файлов**<br>[<img src="ru/17-admin-repo.png" width="470">](ru/17-admin-repo.png) | **Админка — репозиторий файлов**<br>[<img src="en/17-admin-repo.png" width="470">](en/17-admin-repo.png) |
| **Админка — тикеты**<br>[<img src="ru/18-admin-tickets.png" width="470">](ru/18-admin-tickets.png) | **Админка — тикеты**<br>[<img src="en/18-admin-tickets.png" width="470">](en/18-admin-tickets.png) |
| **Админка — категории тикетов**<br>[<img src="ru/19-admin-ticket-categories.png" width="470">](ru/19-admin-ticket-categories.png) | **Админка — категории тикетов**<br>[<img src="en/19-admin-ticket-categories.png" width="470">](en/19-admin-ticket-categories.png) |
| **Админка — платежи**<br>[<img src="ru/20-admin-invoices.png" width="470">](ru/20-admin-invoices.png) | **Админка — платежи**<br>[<img src="en/20-admin-invoices.png" width="470">](en/20-admin-invoices.png) |
| **Админка — промокоды**<br>[<img src="ru/21-admin-promo.png" width="470">](ru/21-admin-promo.png) | **Админка — промокоды**<br>[<img src="en/21-admin-promo.png" width="470">](en/21-admin-promo.png) |
| **Админка — новости**<br>[<img src="ru/22-admin-news.png" width="470">](ru/22-admin-news.png) | **Админка — новости**<br>[<img src="en/22-admin-news.png" width="470">](en/22-admin-news.png) |
| **Админка — обращения с сайта**<br>[<img src="ru/23-admin-infobox.png" width="470">](ru/23-admin-infobox.png) | **Админка — обращения с сайта**<br>[<img src="en/23-admin-infobox.png" width="470">](en/23-admin-infobox.png) |
| **Админка — статистика и графики**<br>[<img src="ru/24-admin-statistics.png" width="470">](ru/24-admin-statistics.png) | **Админка — статистика и графики**<br>[<img src="en/24-admin-statistics.png" width="470">](en/24-admin-statistics.png) |
| **Админка — проверка системы**<br>[<img src="ru/25-admin-checksys.png" width="470">](ru/25-admin-checksys.png) | **Админка — проверка системы**<br>[<img src="en/25-admin-checksys.png" width="470">](en/25-admin-checksys.png) |
| **Настройки — общие**<br>[<img src="ru/26-admin-settings.png" width="470">](ru/26-admin-settings.png) | **Настройки — общие**<br>[<img src="en/26-admin-settings.png" width="470">](en/26-admin-settings.png) |
| **Настройки — платёжные системы**<br>[<img src="ru/27-admin-settings-payments.png" width="470">](ru/27-admin-settings-payments.png) | **Настройки — платёжные системы**<br>[<img src="en/27-admin-settings-payments.png" width="470">](en/27-admin-settings-payments.png) |
| **Настройки — переключатель капчи**<br>[<img src="ru/28-admin-settings-other-captcha.png" width="470">](ru/28-admin-settings-other-captcha.png) | **Настройки — переключатель капчи**<br>[<img src="en/28-admin-settings-other-captcha.png" width="470">](en/28-admin-settings-other-captcha.png) |
| **Настройки — информация и бонусы**<br>[<img src="ru/29-admin-settings-info.png" width="470">](ru/29-admin-settings-info.png) | **Настройки — информация и бонусы**<br>[<img src="en/29-admin-settings-info.png" width="470">](en/29-admin-settings-info.png) |
| **Переключатель языка в шапке**<br>[<img src="ru/30-language-switcher.png" width="470">](ru/30-language-switcher.png) | **Переключатель языка в шапке**<br>[<img src="en/30-language-switcher.png" width="470">](en/30-language-switcher.png) |
| **Админка — операции по балансу**<br>[<img src="ru/31-admin-waste.png" width="470">](ru/31-admin-waste.png) | **Админка — операции по балансу**<br>[<img src="en/31-admin-waste.png" width="470">](en/31-admin-waste.png) |
| **Админка — веб-хостинги**<br>[<img src="ru/32-admin-webhosting.png" width="470">](ru/32-admin-webhosting.png) | **Админка — веб-хостинги**<br>[<img src="en/32-admin-webhosting.png" width="470">](en/32-admin-webhosting.png) |
| **Админка — веб-локации**<br>[<img src="ru/33-admin-web-locations.png" width="470">](ru/33-admin-web-locations.png) | **Админка — веб-локации**<br>[<img src="en/33-admin-web-locations.png" width="470">](en/33-admin-web-locations.png) |
| **Админка — тарифы веб-хостинга**<br>[<img src="ru/34-admin-web-plans.png" width="470">](ru/34-admin-web-plans.png) | **Админка — тарифы веб-хостинга**<br>[<img src="en/34-admin-web-plans.png" width="470">](en/34-admin-web-plans.png) |
| **Админка — шаблоны писем**<br>[<img src="ru/35-admin-mail-templates.png" width="470">](ru/35-admin-mail-templates.png) | **Админка — шаблоны писем**<br>[<img src="en/35-admin-mail-templates.png" width="470">](en/35-admin-mail-templates.png) |
---
**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.**
Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

@@ -200,7 +200,7 @@ class viewController extends Controller {
</div> </div>
<div> <div>
<a href="/admin/users/edit/index/'.$item['user_id'] .'" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">'. $item['user_firstname'] .' '. $item['user_lastname'] .'</a> <a href="/admin/users/edit/index/'.$item['user_id'] .'" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">'. $item['user_firstname'] .' '. $item['user_lastname'] .'</a>
<span class="text-muted font-size-sm">'. date("d.m.Y в H:i", strtotime($item['ticket_message_date_add'])) .'</span> <span class="text-muted font-size-sm">'. date(t("d.m.Y в H:i"), strtotime($item['ticket_message_date_add'])) .'</span>
</div> </div>
</div> </div>
<div class="mt-2 rounded p-5 bg-light-success text-dark-50 font-weight-bold font-size-lg text-left max-w-400px">'. nl2br($item['ticket_message']) .' <div class="mt-2 rounded p-5 bg-light-success text-dark-50 font-weight-bold font-size-lg text-left max-w-400px">'. nl2br($item['ticket_message']) .'
@@ -215,7 +215,7 @@ class viewController extends Controller {
</div> </div>
<div> <div>
<a href="/admin/users/edit/index/'.$item['user_id'] .'" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">'. $item['user_firstname'] .' '. $item['user_lastname'] .'</a> <a href="/admin/users/edit/index/'.$item['user_id'] .'" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">'. $item['user_firstname'] .' '. $item['user_lastname'] .'</a>
<span class="text-muted font-size-sm">'. date("d.m.Y в H:i", strtotime($item['ticket_message_date_add'])) .'</span> <span class="text-muted font-size-sm">'. date(t("d.m.Y в H:i"), strtotime($item['ticket_message_date_add'])) .'</span>
</div> </div>
</div> </div>
<div class="mt-2 rounded p-5 bg-light-primary text-dark-50 font-weight-bold font-size-lg text-left max-w-400px">'. nl2br($item['ticket_message']) .'<br> <div class="mt-2 rounded p-5 bg-light-primary text-dark-50 font-weight-bold font-size-lg text-left max-w-400px">'. nl2br($item['ticket_message']) .'<br>
@@ -124,7 +124,7 @@ class tasksController extends Controller {
} }
$task = $this->serversModel->getTaskById($this->serversModel->createTask(array("server_id" => $serverid, "task_name" => $task, "task_type" => $type, "task_time" => $time, "task_lead_time" => $lead_time))); $task = $this->serversModel->getTaskById($this->serversModel->createTask(array("server_id" => $serverid, "task_name" => $task, "task_type" => $type, "task_time" => $time, "task_lead_time" => $lead_time)));
$this->data['task'] = array("task_id" => $task['task_id'], "task_name" => $task['task_name'], "task_type" => $task['task_type'], "task_time" => $task['task_time'], "task_lead_time" => date("d.m.Y в H:i", strtotime($task['task_lead_time']))); $this->data['task'] = array("task_id" => $task['task_id'], "task_name" => $task['task_name'], "task_type" => $task['task_type'], "task_time" => $task['task_time'], "task_lead_time" => date(t("d.m.Y в H:i"), strtotime($task['task_lead_time'])));
$this->data["status"] = "success"; $this->data["status"] = "success";
$this->data["success"] = "Задача успешно создана!"; $this->data["success"] = "Задача успешно создана!";
@@ -243,7 +243,7 @@ class viewController extends Controller {
</div> </div>
<div> <div>
<a href="javascript:;" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">'. $item['user_firstname'] .' '. $item['user_lastname'] .'</a> <a href="javascript:;" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">'. $item['user_firstname'] .' '. $item['user_lastname'] .'</a>
<span class="text-muted font-size-sm">'. date("d.m.Y в H:i", strtotime($item['ticket_message_date_add'])) .'</span> <span class="text-muted font-size-sm">'. date(t("d.m.Y в H:i"), strtotime($item['ticket_message_date_add'])) .'</span>
</div> </div>
</div> </div>
<div class="mt-2 rounded p-5 bg-light-success text-dark-50 font-weight-bold font-size-lg text-left max-w-400px">'. nl2br($item['ticket_message']) .' <div class="mt-2 rounded p-5 bg-light-success text-dark-50 font-weight-bold font-size-lg text-left max-w-400px">'. nl2br($item['ticket_message']) .'
@@ -258,7 +258,7 @@ class viewController extends Controller {
</div> </div>
<div> <div>
<a href="javascript:;" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">'. $item['user_firstname'] .' '. $item['user_lastname'] .'</a> <a href="javascript:;" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">'. $item['user_firstname'] .' '. $item['user_lastname'] .'</a>
<span class="text-muted font-size-sm">'. date("d.m.Y в H:i", strtotime($item['ticket_message_date_add'])) .'</span> <span class="text-muted font-size-sm">'. date(t("d.m.Y в H:i"), strtotime($item['ticket_message_date_add'])) .'</span>
</div> </div>
</div> </div>
<div class="mt-2 rounded p-5 bg-light-primary text-dark-50 font-weight-bold font-size-lg text-left max-w-400px">'. nl2br($item['ticket_message']) .'<br> <div class="mt-2 rounded p-5 bg-light-primary text-dark-50 font-weight-bold font-size-lg text-left max-w-400px">'. nl2br($item['ticket_message']) .'<br>
+674 -1
View File
@@ -722,6 +722,679 @@ return array(
'Панель' => 'Panel', 'Панель' => 'Panel',
'Вход в аккаунт' => 'Account login', 'Вход в аккаунт' => 'Account login',
'Попытка входа в аккаунт' => 'Account login attempt', 'Попытка входа в аккаунт' => 'Account login attempt',
'в' => 'at', // предлог 'в' сюда добавлять НЕЛЬЗЯ: он подменяется внутри ещё не переведённых
// предложений и получается «at поле имя пользователя» вместо русского текста.
// Предлоги переводятся только вместе с фразой, в которой стоят.
// ── полный обход панели: разделы управления сервером, планировщик,
// консоль, файрвол, MySQL, письма, FAQ и служебные сообщения ──────────────
'Обменял $sum бонусов на $upsum рублей' => 'Exchanged $sum bonuses for $upsum RUB',
'Данный аккаунт не активирован!' => 'This account is not activated!',
'Обратите внимание!' => 'Please note!',
'Рассылка успешно завершенна.' => 'Mailing completed successfully.',
'Вы успешно создали игру!' => 'Game created successfully!',
'Вы успешно отредактировали информацию об игре!' => 'Game information updated successfully!',
'Вы успешно удалили игру!' => 'Game deleted successfully!',
'Запрашиваемая игра не существует!' => 'The requested game does not exist!',
'Укажите допустимый интервал портов.' => 'Specify a valid port range.',
'Укажите допустимый интервал слотов.' => 'Specify a valid slot range.',
'Введите текст ответа!' => 'Enter the reply text!',
'Ответ на ваше сообщение' => 'Reply to your message',
'Сообщение отправлено!' => 'Message sent!',
'Сообщение отправлено, и удалено!' => 'Message sent and deleted!',
'Вы успешно создали локацию!' => 'Location created successfully!',
'Вы успешно отредактировали локацию!' => 'Location updated successfully!',
'Вы успешно удалили локацию!' => 'Location deleted successfully!',
'Запрашиваемая локация не существует!' => 'The requested location does not exist!',
'Вы успешно создали мод!' => 'Mod created successfully!',
'Название мода должно содержать от 2 до 32 символов!' => 'The mod name must be between 2 and 32 characters!',
'Размер файла не должен превышать 90МБ' => 'The file size must not exceed 90 MB',
'Вы успешно отредактировали мод!' => 'Mod updated successfully!',
'Вы успешно удалили мод!' => 'Mod deleted successfully!',
'Вы успешно создали новость!' => 'News item created successfully!',
'Название новости должно содержать от 2 до 100 символов!' => 'The news title must be between 2 and 100 characters!',
'Текст новости должен содержать от 2 до 1000 символов!' => 'The news text must be between 2 and 1000 characters!',
'Вы успешно отредактировали новость!' => 'News item updated successfully!',
'Вы успешно удалили новость!' => 'News item deleted successfully!',
'Текст должен содержать от 2 до 100 символов!' => 'The text must be between 2 and 100 characters!',
'Текст должен содержать от 2 до 1000 символов!' => 'The text must be between 2 and 1000 characters!',
'Введите количество использований от 1 до 10000!' => 'Enter a number of uses between 1 and 10000!',
'Вы успешно создали промо-Код!' => 'Promo code created successfully!',
'Код должен содержать от 2 до 32 символов!' => 'The code must be between 2 and 32 characters!',
'Вы успешно отредактировали промо-код!' => 'Promo code updated successfully!',
'Вы успешно удалили промо-код!' => 'Promo code deleted successfully!',
'Запрашиваемый код не существует!' => 'The requested code does not exist!',
'Вы успешно добавили файл в репозиторий!' => 'File added to the repository successfully!',
'Название файла должно содержать от 2 до 32 символов!' => 'The file name must be between 2 and 32 characters!',
'Вы успешно отредактировали файл в репозитории!' => 'File in the repository updated successfully!',
'Вы успешно удалили файл с репозитория!' => 'File deleted from the repository successfully!',
'Вы успешно заблокировали сервер!' => 'Server blocked successfully!',
'Вы успешно разблокировали сервер!' => 'Server unblocked successfully!',
'Вы успешно удалили сервер!' => 'Server deleted successfully!',
'МБ, запуск сервера невозможен!' => 'MB, the server cannot be started!',
'МБ, перезагрузка сервера невозможна!' => 'MB, the server cannot be restarted!',
'МБ, создание бекапа сервера невозможено!' => 'MB, the server backup cannot be created!',
'Не для данной игры!' => 'Not available for this game!',
'Сервер должен быть заблокирован!' => 'The server must be blocked!',
'Статус FastDL указан неверно!' => 'The FastDL status is invalid!',
'Статус античита VAC указан неверно!' => 'The VAC anti-cheat status is invalid!',
'У сервера нет BackUP!' => 'The server has no backup!',
'Удаление сервера администратором #$serverid' => 'Server deleted by administrator #$serverid',
'Успешное начало восстановление BackUP сервера.' => 'Server backup restore started successfully.',
'Запрашиваемый сервер не существует или у ват нету доступа!' => 'The requested server does not exist or you have no access to it!',
'Настройки сохранены!' => 'Settings saved!',
'Вы успешно создали категорию!' => 'Category created successfully!',
'Вы успешно отредактировали категорию!' => 'Category updated successfully!',
'Вы успешно удалили дополнение!' => 'Add-on deleted successfully!',
'Запрашиваемая категория не существует!' => 'The requested category does not exist!',
'ID клиента должен быть от 1 до 10 символов!' => 'The client ID must be between 1 and 10 characters!',
'Вы успешно отправили сообщение пользователю!' => 'Message sent to the user successfully!',
'Текст тикета должен содержать от 1 до 350 символов!' => 'The ticket text must be between 1 and 350 characters!',
'Запрашиваемый тикет не существует!' => 'The requested ticket does not exist!',
'Изображение загружено!' => 'Image uploaded!',
'Вы успешно удалили пользователя!' => 'User deleted successfully!',
'Укажите допустимый баланс!' => 'Specify a valid balance!',
'Укажите допустимый уровень доступа!' => 'Specify a valid access level!',
' администрацией была проведена раздача бонусных монет, их получили все активированные пользователи! ' => ' the administration handed out bonus coins, and every activated user received them! ',
' администрацией была проведена раздача реальных денег, их получили все активированные пользователи! ' => ' the administration handed out real money, and every activated user received it! ',
'Бонусные монеты выданы!' => 'Bonus coins issued!',
'Выдача бонусных монет всем' => 'Issue bonus coins to everyone',
'Реальные деньги выданы!' => 'Real money issued!',
'Сегодня ' => 'Today ',
'Укажите сумму в допустимом формате!' => 'Specify the amount in a valid format!',
'Укажите сумму от 1 до 5000' => 'Specify an amount between 1 and 5000',
'Вы успешно заблокировали веб-хостинг!' => 'Web hosting blocked successfully!',
'Вы успешно разблокировали веб-хостинг!' => 'Web hosting unblocked successfully!',
'Вы успешно удалили веб-хостинг!' => 'Web hosting deleted successfully!',
'NS Сервера локации должны содержать от 2 до 78 символов!' => 'The location NS servers must be between 2 and 78 characters!',
'Домен должен содержать от 2 до 32 символов!' => 'The domain must be between 2 and 32 characters!',
'Вы успешно создали тариф!' => 'Plan created successfully!',
'Название пакета должно содержать от 2 до 32 символов!' => 'The package name must be between 2 and 32 characters!',
'Название тарифа должно содержать от 2 до 32 символов!' => 'The plan name must be between 2 and 32 characters!',
'Вы успешно отредактировали тариф!' => 'Plan updated successfully!',
'Вы успешно удалили тариф!' => 'Plan deleted successfully!',
'Запрашиваеммый тариф не существует!' => 'The requested plan does not exist!',
'Ваше письмо отправлено! Номер IN' => 'Your message has been sent! Number IN',
' уже привязан!' => ' is already linked!',
'\' Отправлена инструкция с дальнейшими действиями!' => '\' Instructions with the next steps have been sent!',
'E-Mail Сменен!' => 'E-Mail changed!',
'На текущий E-Mail \'' => 'To the current E-Mail \'',
'Указанный ID-' => 'The specified ID-',
' - блокировка не удалась.' => ' - blocking failed.',
' - заблокирован.' => ' - blocked.',
' - неудачная переустановка.' => ' - reinstall failed.',
' - неудачная смена билда.' => ' - build change failed.',
' - неудачная смена ядра.' => ' - core change failed.',
' - неудачная установка.' => ' - installation failed.',
' - неудачное восстановление из бекапа.' => ' - restore from backup failed.',
' - неудачный бекап сервера.' => ' - server backup failed.',
' - отправлено уведомление.' => ' - notification sent.',
' - удален.' => ' - deleted.',
' - удаление не удалось.' => ' - deletion failed.',
' - успешная переустановка.' => ' - reinstalled successfully.',
' - успешная смена билда.' => ' - build changed successfully.',
' - успешная смена ядра.' => ' - core changed successfully.',
' - успешная установка.' => ' - installed successfully.',
' - успешное восстановление из бекапа.' => ' - restored from backup successfully.',
' - успешный бекап сервера.' => ' - server backed up successfully.',
' выполнена!' => ' completed!',
' для сервера #' => ' for server #',
' успешно обновлена (CPU: ' => ' updated successfully (CPU: ',
' успешно сохранена (CPU: ' => ' saved successfully (CPU: ',
' успешно сохранена (CPU: 0%, RAM: 0%, SSD: ' => ' saved successfully (CPU: 0%, RAM: 0%, SSD: ',
'Блокировка веб-хостинга #$webid' => 'Web hosting blocked #$webid',
'Блокировка сервера #$serverid' => 'Server blocked #$serverid',
'Завершение оплаченного периода веб-хостинга #$webid' => 'Paid period of web hosting ended #$webid',
'Завершение оплаченного периода сервера #$serverid' => 'Paid period of server ended #$serverid',
'Игровой сервер gs$item[server_id] - Поднят.' => 'Game server gs$item[server_id] - Started.',
'Остановка сервера: OVERLOAD-ssd = ' => 'Stopping the server: OVERLOAD-ssd = ',
'Остановка сервера: Чрезмерное кол.во игроков на сервере, игроков ' => 'Stopping the server: too many players on the server, players ',
'Ошибка остановки сервера gs$item[server_id]' => 'Failed to stop game server gs$item[server_id]',
'Статистика игрового сервера gs' => 'Game server statistics gs',
'Статистика игровой локации #' => 'Game location statistics #',
'Удаление веб-хостинга #$webid' => 'Web hosting deleted #$webid',
'Удаление сервера #$serverid' => 'Server deleted #$serverid',
'Не соответсвие MD5 хешей' => 'MD5 hash mismatch',
'Ошибка: Не удалось соединиться с сервером базы данных!' => 'Error: could not connect to the database server!',
'Только: check, pay' => 'Only: check, pay',
'Успех' => 'Success',
' р! Запускаем игровой сервер, пожалуйста, подождите...' => ' RUB! Starting the game server, please wait...',
' успешно был установлен,с вашего счёта снято ' => ' was installed successfully, the following amount was taken from your balance: ',
' успешно был установлен. Запускаем игровой сервер, пожалуйста, подождите...' => ' was installed successfully. Starting the game server, please wait...',
'МБ, установка мода невозможна!' => 'MB, the mod cannot be installed!',
'В данном статусе не доступно редактирование конфигурации!' => 'Editing the configuration is not available in this state!',
'Конфигурационный файл отредактирован!' => 'Configuration file saved!',
'[PAY] На счету не достаточно средств для продления сервера!' => '[PAY] Not enough funds on the balance to renew the server!',
'[SLOTS] Не достаточно средств!' => '[SLOTS] Not enough funds!',
'Вы указали неверный модуль!' => 'You specified an invalid module!',
'Вы успешно оплатили сервер на $days дней. С Вашего счета снято ' => 'You have paid for the server for $days days. The following amount was taken from your balance: ',
'Вы успешно установили $slots слотов! С Вашего счета снято ' => 'You have set $slots slots! The following amount was taken from your balance: ',
'МБ, загрузка модулей невозможна!' => 'MB, modules cannot be downloaded!',
'Продление сервера gs$serverid на $days дней' => 'Renewal of server gs$serverid for $days days',
'Увеличено до $slots слотов для сервера gs$serverid' => 'Increased to $slots slots for server gs$serverid',
'Услуга обещанный платеж для сервера gs$serverid' => 'Promised payment service for server gs$serverid',
'Установлен порт $port для сервера gs$serverid' => 'Port $port set for server gs$serverid',
'Введен неверный IP' => 'Invalid IP entered',
'Введены неверные данные после "/"' => 'Invalid data entered after "/"',
'Данное правило уже добавлено!' => 'This rule has already been added!',
'Не больше двух цифр после "/"' => 'No more than two digits after "/"',
'Не введены данные после "/"' => 'No data entered after "/"',
'Заказ сервера gs$serverid' => 'Order of server gs$serverid',
'Заказ тестового сервера gs$serverid' => 'Order of test server gs$serverid',
' р!' => ' RUB!',
' успешно был приобретен, с вашего счёта снято ' => ' was purchased successfully, the following amount was taken from your balance: ',
'Вы успешно оплатили веб-хостинг на $days дней. С Вашего счета снято ' => 'You have paid for web hosting for $days days. The following amount was taken from your balance: ',
'Продление веб-хостинга ws$webid на $days дней' => 'Renewal of web hosting ws$webid for $days days',
'Заказ веб-хостинга ws$webid' => 'Order of web hosting ws$webid',
'Обменять на' => 'Exchange for',
'У вас' => 'You have',
'бонусов' => 'bonuses',
'Службу поддержки' => 'Support team',
'Не оплачен' => 'Not paid',
'Оплачен' => 'Paid',
'ID Пользователя' => 'User ID',
'Не установлен' => 'Not installed',
'Рассылка начата!' => 'Mailing started!',
'Введите максимальное порт для заказа' => 'Enter the maximum port for ordering',
'Выберите query-драйвер игры' => 'Select the game query driver',
'Создание игры' => 'Create a game',
'Введите максимальный порт для заказа' => 'Enter the maximum port for ordering',
'Выберите статус игры' => 'Select the game status',
'Редактирование игры' => 'Edit game',
'На данный момент нет игр.' => 'There are no games at the moment.',
'Тех. поддержка' => 'Support',
'Дата обращения' => 'Request date',
'На данный момент нет запросов.' => 'There are no requests at the moment.',
'Отправитель' => 'Sender',
'Тема' => 'Subject',
'Удалить после отправки' => 'Delete after sending',
'На данный момент нет платежей.' => 'There are no payments at the moment.',
'Создание локации' => 'Create a location',
'Введите ID игр для которых будет доступна локация (через пробел)' => 'Enter the IDs of the games this location will be available for (separated by spaces)',
'Выберите статус локации' => 'Select the location status',
'Редактирование локации' => 'Edit location',
'Введите название мода' => 'Enter the mod name',
'Введите ссылку на изображение' => 'Enter the image link',
'Введите стоимость мода' => 'Enter the mod price',
'Загружено ' => 'Uploaded ',
'Создание мода' => 'Create a mod',
'Введите название архива' => 'Enter the archive name',
'Введите ссылку на архив (tar)' => 'Enter the archive link (tar)',
'Редактирование мода' => 'Edit mod',
'Игра' => 'Game',
'На данный момент нет модов.' => 'There are no mods at the moment.',
'Список модов' => 'Mod list',
'Стоимость' => 'Price',
'Введите заголовок' => 'Enter the title',
'Создание новости' => 'Create a news item',
'Редактирование новости' => 'Edit news item',
'Добавил' => 'Added by',
'На данный момент нет новостей.' => 'There are no news items at the moment.',
'Введите количество использований' => 'Enter the number of uses',
'Введите промо-код' => 'Enter the promo code',
'Создание промо кода' => 'Create a promo code',
'Редактирование промо кода' => 'Edit promo code',
'Использовано' => 'Used',
'На данный момент нет промо кодов.' => 'There are no promo codes at the moment.',
'Скидка' => 'Discount',
'Введите адрес файла' => 'Enter the file address',
'Введите название файла' => 'Enter the file name',
'Введите стоимость файла' => 'Enter the file price',
'Добавление файла в репозиторий' => 'Add a file to the repository',
'Введите ссылку на файд' => 'Enter the file link',
'Редактирование файла в репозитории' => 'Edit a file in the repository',
'На данный момент нет файлов.' => 'There are no files at the moment.',
'Список файлов в репозитории' => 'Files in the repository',
'MySQL Хост' => 'MySQL host',
'Адрес FTP-сервера' => 'FTP server address',
'Античит VAC' => 'VAC anti-cheat',
'Блокировать' => 'Block',
'Введите RCON Пароль' => 'Enter the RCON password',
'Вы уверенны в том, что хотите переустановить сервер? Все данные будут удалены.' => 'Are you sure you want to reinstall the server? All data will be deleted.',
'Вы уверены в том, что хотите восстановить сервер?' => 'Are you sure you want to restore the server?',
'Вы уверены в том, что хотите сделать бэкап сервера? Прежний бэкап будет удален.' => 'Are you sure you want to back up the server? The previous backup will be deleted.',
'Вы уверены в том, что хотите удалить BackUP сервера?' => 'Are you sure you want to delete the server backup?',
'Заблокирован' => 'Blocked',
'Запустить' => 'Start',
'Запущен' => 'Running',
'Карта' => 'Map',
'Обновляется' => 'Updating',
'Остановить' => 'Stop',
'Остановлен' => 'Stopped',
'Пароль доступа' => 'Access password',
'Перезапустить' => 'Restart',
'Переустанавливается' => 'Reinstalling',
'Переустановить' => 'Reinstall',
'Порт FTP-сервера' => 'FTP server port',
'Разблокировать' => 'Unblock',
'Развернуть BackUP' => 'Restore backup',
'Режим' => 'Mode',
'Сделать BackUP' => 'Create backup',
'Создается BackUP' => 'Creating backup',
'Удалить BackUP' => 'Delete backup',
'Удалить сервер' => 'Delete server',
'Устанавливается' => 'Installing',
'Устанавливается BackUP' => 'Restoring backup',
'Перейти' => 'Open',
'Авг.' => 'Aug',
'Август' => 'August',
'Апр.' => 'Apr',
'Вс' => 'Sun',
'Вт' => 'Tue',
'Дек.' => 'Dec',
'Декабрь' => 'December',
'Июнь' => 'June',
'Июнь.' => 'Jun',
'Количевство игроков' => 'Number of players',
'Количевство регистраций' => 'Number of registrations',
'Май' => 'May',
'Март' => 'March',
'Март.' => 'Mar',
'Ноя.' => 'Nov',
'Ноябрь' => 'November',
'Общая нагрузка на железо' => 'Total hardware load',
'Общее количевство игроков' => 'Total number of players',
'Окт.' => 'Oct',
'Пн' => 'Mon',
'Пополнение счета' => 'Balance top-up',
'Прибыль (руб)' => 'Revenue (RUB)',
'Пт' => 'Fri',
'Регистраций' => 'Registrations',
'Сб' => 'Sat',
'Сентябрь' => 'September',
'Ср' => 'Wed',
'Фев.' => 'Feb',
'Февраль' => 'February',
'Чт' => 'Thu',
'Введите название' => 'Enter the name',
'На данный момент нет категорий.' => 'There are no categories at the moment.',
'Введите ID клиента' => 'Enter the client ID',
'Введите тему обращения' => 'Enter the ticket subject',
'Вы уверенны в том, что хотите закрыть запрос?' => 'Are you sure you want to close the ticket?',
'Закрываем запрос...' => 'Closing the ticket...',
'Запрос закрыт' => 'Ticket closed',
'Запрос закрыт...' => 'Ticket closed...',
'Запрос открыт' => 'Ticket open',
'Импорт изображения' => 'Attach an image',
'Напишите сообщение...' => 'Write a message...',
'Получаю сообщения...' => 'Loading messages...',
'Получен ответ' => 'Reply received',
'Тех.поддержка' => 'Support',
'Web сайты пользователя' => 'User websites',
'Администрация' => 'Administration',
'Аккаунт неактивирован' => 'Account not activated',
'Аккаунт подтвержден' => 'Account confirmed',
'Вход в систему' => 'Sign-in',
'Вход через VK' => 'Sign-in via VK',
'Выход из системы' => 'Sign-out',
'Демонстрация' => 'Demo',
'Запросы пользователя' => 'User tickets',
'Логи авторизации' => 'Login log',
'Операции пользователя' => 'User transactions',
'Ошибка входа (пароль' => 'Login error (password',
'Ошибка входа через VK' => 'VK login error',
'Платежи пользователя' => 'User payments',
'Попытка востановленя пароля' => 'Password recovery attempt',
'Разблокирован' => 'Unblocked',
'Сервера пользователя' => 'User servers',
'Тестовый период запрещен' => 'Trial period denied',
'Тестовый период разрешен' => 'Trial period allowed',
'Тех.Поддержка' => 'Support',
'Удалить пользователя' => 'Delete user',
'На данный момент нет пользователей.' => 'There are no users at the moment.',
'Не подтвержден' => 'Not confirmed',
'Изменить пароль доступа' => 'Change the access password',
'Сменить пароль доступа' => 'Change the access password',
'Тариф' => 'Plan',
'Удалить веб-хостинг' => 'Delete web hosting',
'На данный момент нет веб-хостингов.' => 'There is no web hosting at the moment.',
'Введите имя пользователя (можно вводить не только root, но и пользователя с правами администратора)' => 'Enter the username (not only root — any user with administrator rights will do)',
'Создание web-локации' => 'Create a web location',
'Введите ID тарифов для которых будет доступна локация (через пробел)' => 'Enter the IDs of the plans this location will be available for (separated by spaces)',
'Редактирование web-локации' => 'Edit web location',
'Список web-локаций' => 'Web location list',
'Создание тарифа' => 'Create a plan',
'Выберите статус тарифа' => 'Select the plan status',
'Редактирование тарифа' => 'Edit plan',
'На данный момент нет тарифов.' => 'There are no plans at the moment.',
'Список тарифов' => 'Plan list',
'Цена' => 'Price',
'Шаблон' => 'Template',
'Ваш вопрос рассматривают.' => 'Your ticket is being reviewed.',
'Вопрос закрыт.' => 'Ticket closed.',
'Выход с аккаунта -' => 'Sign out of the account -',
'Ответ от администрации.' => 'Reply from the administration.',
'Пользователя' => 'User',
'Тех.поддержки' => 'Support',
' Приглашение от: ' => ' Invitation from: ',
'Вопроос' => 'Ticket',
'Задачи' => 'Tasks',
'Если вы не пытались сменить E-Mail, проигнорируйте данное сообщение и смените пароль от аккаунта!' => 'If you did not try to change your e-mail, ignore this message and change your account password!',
'Здравствуйте,' => 'Hello,',
'Ключ для смены E-Mail:' => 'E-Mail change key:',
'Новый E-Mail:' => 'New E-Mail:',
'Ваш пароль бы успешно сменен!' => 'Your password has been changed successfully!',
'Данные для входа в систему:' => 'Sign-in details:',
'! Мы благодарны Вам за то, что Вы выбрали именно нашу хостинг-компанию!' => '! We are grateful that you chose our hosting company!',
'Благодарим Вас за регистрацию на сайте игрового хостинга' => 'Thank you for registering with the game hosting site',
'Перейти на сайт' => 'Go to the website',
'Активировать учетную запись' => 'Activate account',
'Если вы не пытались сменить пароль, проигнорируйте данное сообщение!' => 'If you did not try to change your password, ignore this message!',
'Запрос на восстановления пароля был выполнен с IP:' => 'A password recovery request was made from IP:',
'У нас есть новость для Вас:' => 'We have some news for you:',
'Вы получили ответ:' => 'You have received a reply:',
'Уведомляем Вас об удалении сервера #' => 'We are notifying you that server # has been deleted',
'. Сервер будет удален через 3 дня после блокировки.' => '. The server will be deleted 3 days after being blocked.',
'Уведомляем Вас о блокировке сервера #' => 'We are notifying you that server # has been blocked',
'. До окончания оплаченного периода осталось' => '. Time left until the end of the paid period:',
'Уведомляем Вас о необходимости оплаты сервера #' => 'We are notifying you that server # needs to be paid for',
'Вами была подана заявка на добавление совладельца сервера, под USERID' => 'You have submitted a request to add a co-owner to the server, under USERID',
'Подтвердить' => 'Confirm',
'на сервер gs' => 'to server gs',
'Уведомляем Вас о том, что в тикете #' => 'We are notifying you that ticket #',
'появилось новое сообщение.' => 'has a new message.',
'Уведомляем Вас об удалении веб-хостинга #' => 'We are notifying you that web hosting # has been deleted',
'. Веб-хостинг будет удален через 3 дня после блокировки.' => '. The web hosting will be deleted 3 days after being blocked.',
'Уведомляем Вас о блокировке веб-хостинга #' => 'We are notifying you that web hosting # has been blocked',
'Уведомляем Вас о необходимости оплаты веб-хостинга #' => 'We are notifying you that web hosting # needs to be paid for',
'Активный' => 'Active',
'Бонусы' => 'Bonuses',
'Ваш E-Mail' => 'Your E-Mail',
'Ваш E-mail' => 'Your E-mail',
'Ваш ID' => 'Your ID',
'Ваша Фамилия' => 'Your last name',
'Ваше Имя' => 'Your first name',
'Введите ваше имя' => 'Enter your first name',
'Введите вашу фамилию' => 'Enter your last name',
'Введите новый E-mail' => 'Enter the new e-mail',
'Всего заработано:' => 'Earned in total:',
'Вы действительно хотите закончить данный сеанс?' => 'Do you really want to end this session?',
'Вы с нами:' => 'With us since:',
'Загрузка аватара' => 'Avatar upload',
'На данный момент у вас нет приглашенных друзей.' => 'You have no invited friends at the moment.',
'Настройки профиля' => 'Profile settings',
'Не привязан' => 'Not linked',
'Новый E-Mail' => 'New E-Mail',
'Операции' => 'Transactions',
'Редактирование профиля VK' => 'VK profile editing',
'Сеансы' => 'Sessions',
'Текущий' => 'Current',
'У вас есть возможность заработать вместе с нами, приглашая друзей.' => 'You can earn together with us by inviting friends.',
'Ваш комментарий...' => 'Your comment...',
'К сожалению, на данный момент нет комментариев.' => 'Unfortunately, there are no comments at the moment.',
'Хочешь оставить свой комментарий?' => 'Want to leave a comment?',
'Комментарии' => 'Comments',
'На данный момент нет коментариев.' => 'There are no comments at the moment.',
'Просмотров.' => 'Views.',
'Вся подробная информация в' => 'All the details are in',
'Хостинг возобновит работу в ближайшие минуты!' => 'The hosting will be back online within a few minutes!',
'") toastr.warning("Идет установка' => '") toastr.warning("Installing',
', пожалуйста, подождите...");' => ', please wait...");',
'Купить за' => 'Buy for',
'Сервер успешно был запущен!' => 'The server has been started successfully!',
'Товар куплен' => 'Item purchased',
'- Включить функцию убийства с одной пули (1 или 0)' => '- Enable one-shot kill (1 or 0)',
'- Выгрузить фильтрскрипт' => '- Unload a filterscript',
'- Забанить IP (Пример: banip 127.0.0.1)' => '- Ban an IP (example: banip 127.0.0.1)',
'- Забанить пользователя по его ID (Пример: ban 3)' => '- Ban a player by ID (example: ban 3)',
'- Загрузить фильтрскрипт' => '- Load a filterscript',
'- Изменить время на сервере (Пример: worldtime 2)' => '- Change the server time (example: worldtime 2)',
'- Изменить гравитацию на сервере - (Пример: gravity 0.008)' => '- Change the server gravity (example: gravity 0.008)',
'- Изменить макс. количество мест на сервере' => '- Change the maximum number of slots on the server',
'- Изменить название карты' => '- Change the map name',
'- Изменить название мода' => '- Change the mod name',
'- Изменить название сервера' => '- Change the server name',
'- Изменить погоду на сервере (Пример: weather 2)' => '- Change the server weather (example: weather 2)',
'- Изменить режим игры на сервере на заданный' => '- Switch the server game mode to the given one',
'- Кикнуть пользователя по его ID (Пример: kick 3)' => '- Kick a player by ID (example: kick 3)',
'- Открыть файл .cfg (Пример: exec blah.cfg)' => '- Open a .cfg file (example: exec blah.cfg)',
'- Очистить лог сервера' => '- Clear the server log',
'- Перезагрузить samp.ban' => '- Reload samp.ban',
'- Перезагрузить фильтрскрипт' => '- Reload a filterscript',
'- Показать всех игроков на сервере с их именами, ip и пингом' => '- Show every player on the server with their name, IP and ping',
'- Показать список RCON команд' => '- Show the list of RCON commands',
'- Посмотреть версию сервера' => '- Show the server version',
'- Посмотреть список всех установленных плагинов' => '- Show the list of installed plugins',
'- Посмотреть список всех установленных фильтрскриптов' => '- Show the list of installed filterscripts',
'- Посмотреть список текущих настроек' => '- Show the current settings',
'- Разбанить IP (Пример: unbanip 127.0.0.1)' => '- Unban an IP (example: unbanip 127.0.0.1)',
'- Рестарт сервера' => '- Restart the server',
'- Сказать в общий чат от лица админа (Пример: say Hello)' => '- Say something in the public chat as an admin (example: say Hello)',
'- Установить LAN (1 или 0)' => '- Set LAN mode (1 or 0)',
'- Установить url сайта на сервере' => '- Set the website URL on the server',
'- Установить пароль на сервере' => '- Set the server password',
'- Установить порядок гэйм-модов' => '- Set the game mode order',
'- Установить часовой пояс' => '- Set the time zone',
'changemode [название]' => 'changemode [name]',
'exec [имя файла]' => 'exec [file name]',
'gamemodetext [название]' => 'gamemodetext [name]',
'hostname [название]' => 'hostname [name]',
'loadfs [название]' => 'loadfs [name]',
'mapname [название]' => 'mapname [name]',
'password [пароль]' => 'password [password]',
'reloadfs [название]' => 'reloadfs [name]',
'say [текст]' => 'say [text]',
'unloadfs [название]' => 'unloadfs [name]',
'worldtime [время]' => 'worldtime [time]',
'Введите команду...' => 'Enter a command...',
'Консоль' => 'Console',
'Очистить консоль' => 'Clear the console',
'Тема Amethyst' => 'Amethyst theme',
'Тема City' => 'City theme',
'Тема Flat' => 'Flat theme',
'Тема Modern' => 'Modern theme',
'Тема Smooth' => 'Smooth theme',
' RUB. Дней: ' => ' RUB. Days: ',
'| Установлено' => '| Installed',
'Введите порт' => 'Enter the port',
'Версия сервера' => 'Server version',
'Вы действительно хотите активировать обещанный платёж на данный сервер ? С вашего счёта будет списано 15 руб!' => 'Do you really want to activate the promised payment for this server? 15 RUB will be taken from your balance!',
'Для данной игры пока нет билдов' => 'There are no builds for this game yet',
'Для данной игры пока нет модулей' => 'There are no modules for this game yet',
'Для данной игры пока нет ядер' => 'There are no cores for this game yet',
'Загрузить на сервер' => 'Upload to the server',
'Загрузка модулей NodeJS' => 'NodeJS module download',
'Изменение слотов' => 'Slot change',
'Модули NodeJS' => 'NodeJS modules',
'Модули загружаются в папку node_modules.' => 'Modules are downloaded into the node_modules folder.',
'Смена билда приводит к полной очистке сервера!' => 'Changing the build wipes the server completely!',
'Смена карты' => 'Map change',
'Смена порта' => 'Port change',
'Смена ядра приводит к полной очистке сервера!' => 'Changing the core wipes the server completely!',
'Услуга обещанный платеж продлит сервер на 3 дня.' => 'The promised payment service extends the server by 3 days.',
'1.1.0.0/16 - Сеть из 65536 адресов (с 1.1.1.1 по 1.1.255.255)' => '1.1.0.0/16 - a network of 65536 addresses (from 1.1.1.1 to 1.1.255.255)',
'1.1.0.0/255.255.0.0 - Сеть из 65536 адресов (с 1.1.1.1 по 1.1.255.255)' => '1.1.0.0/255.255.0.0 - a network of 65536 addresses (from 1.1.1.1 to 1.1.255.255)',
'1.1.1.0/24 - Сеть из 256 адресов (с 1.1.1.1 по 1.1.1.255)' => '1.1.1.0/24 - a network of 256 addresses (from 1.1.1.1 to 1.1.1.255)',
'1.1.1.0/255.255.255.0 - Сеть из 256 адресов (с 1.1.1.1 по 1.1.1.255)' => '1.1.1.0/255.255.255.0 - a network of 256 addresses (from 1.1.1.1 to 1.1.1.255)',
'1.1.1.1 - Одиночный IP адрес' => '1.1.1.1 - a single IP address',
'Firewall - это гарантированная защита Вашего сервера от нежелательных гостей. Он позволяет ограничить доступ определенным лицам по IP-адресу прямо из Панели управления. В отличие от бана в игре, такая блокировка полностью фильтрует весь трафик с данного IP-адреса.' => 'The firewall is guaranteed protection of your server against unwanted guests. It lets you deny access to specific people by IP address straight from the control panel. Unlike an in-game ban, this kind of block filters out all traffic from that IP address.',
'Блокировка ip адресов' => 'IP address blocking',
'Введите IP адрес...' => 'Enter an IP address...',
'Вы уверенны в том, что хотите разблокировать IP адрес?' => 'Are you sure you want to unblock this IP address?',
'Примеры для блокировки IP' => 'IP blocking examples',
'FTP Порт' => 'FTP port',
'Адрес для доступа по протоколу FTP' => 'Address for FTP access',
'Онлайн клиент' => 'Online client',
'Скачать FTP Клиент' => 'Download an FTP client',
'Тема Material' => 'Material theme',
'Тема Material gray' => 'Material gray theme',
'Тема Material light' => 'Material light theme',
'MySQL Порт' => 'MySQL port',
'MySQL Хост для внешнего подключения' => 'MySQL host for external connections',
'MySQL Хост для локального подключения' => 'MySQL host for local connections',
'База данных' => 'Database',
'Включаем базу данных...' => 'Enabling the database...',
'Включить' => 'Enable',
'Выключаем базу данных...' => 'Disabling the database...',
'Выключить' => 'Disable',
'На данный момент база данных не включена.' => 'The database is not enabled at the moment.',
'На данный момент база данных не создана.' => 'The database has not been created yet.',
'Пользователь активен' => 'User is active',
'Пользователь не создан' => 'User has not been created',
'Пользователь неактивен' => 'User is inactive',
'Создаем базу данных...' => 'Creating the database...',
'Создать' => 'Create',
' ядер, RAM: ' => ' cores, RAM: ',
'| Загруженность' => '| Load',
'Бесплатная база MySQL' => 'Free MySQL database',
'Введите количество слотов' => 'Enter the number of slots',
'Выберите игру' => 'Select a game',
'Купон' => 'Coupon',
'На данный момент нет доступных игр' => 'There are no games available at the moment',
'Параметры сервера' => 'Server parameters',
'Повторите пароль для FTP' => 'Repeat the FTP password',
'Придумайте пароль для FTP' => 'Choose an FTP password',
'Смена версии сервера одним кликом' => 'One-click server version change',
'Создать сервер' => 'Create a server',
'Введите ID друга...' => 'Enter a friend\'s ID...',
'Вы действительно хотите удалить друга?' => 'Do you really want to remove this friend?',
'Система совладельцев серверов - это система, позволяющая добавить своего друга в совладельцы. Добавив друга, он также сможет как и вы управлять вашим сервером.' => 'The server co-owner system lets you add a friend as a co-owner. Once added, your friend will be able to manage your server just like you do.',
'Совместное управление' => 'Shared management',
'Файл куплен' => 'File purchased',
'История количевства игроков' => 'Player count history',
'История нагрузки сервера' => 'Server load history',
'История операций с сервером' => 'Server operation history',
'На данный момент история чиста.' => 'The history is empty at the moment.',
'1 Час' => '1 hour',
'1 час' => '1 hour',
'12 Часов' => '12 hours',
'12 часов' => '12 hours',
'15 Минут' => '15 minutes',
'15 минут' => '15 minutes',
'24 Часа' => '24 hours',
'24 часа' => '24 hours',
'30 Минут' => '30 minutes',
'30 минут' => '30 minutes',
'Включение' => 'Start',
'Время выполнения' => 'Execution time',
'Вы действительно хотите удалить задачу ID-' => 'Do you really want to delete task ID-',
'Выключение' => 'Stop',
'Выполнение команд по расписанию' => 'Scheduled command execution',
'На данный момент нет задач.' => 'There are no tasks at the moment.',
'Перезагрузка' => 'Restart',
'Планировщик задач' => 'Task scheduler',
'Система планировщик задач - это система, позволяет автоматически выполнять определенные действия на сервере (запуск, рестарт, выключение и т.д.), с заданным временем или периодичностью.' => 'The task scheduler lets you run certain actions on the server automatically (start, restart, stop and so on) at a set time or interval.',
'Создать задачу' => 'Create a task',
'Список задач' => 'Task list',
'Тип задачи' => 'Task type',
'Данные обновлены в' => 'Data updated at',
'- в поле имя пользователя, введите ваш логин от ftp;' => '- in the user name field, enter your FTP login;',
'- в поле пароль, введите ваш пароль от ftp;' => '- in the password field, enter your FTP password;',
'- в поле хост, введите ip-адрес сервера, с портам (21);' => '- in the host field, enter the server IP address with the port (21);',
'- поле порт указать "21";' => '- set the port field to "21";',
'1. Скачать ftp-клиент, например: FileZilla' => '1. Download an FTP client, for example FileZilla',
'1. Устанавливайте только нужные Вам плагины.' => '1. Install only the plugins you actually need.',
'2. После запуска программы необходимо указать данные от ftp-сервера, их вы получите в управлении вашего игрового сервера, в разделе "FTP Доступ".' => '2. After starting the program you need to enter the FTP server details; you will find them in your game server management area, in the "FTP access" section.',
'2. Слишком большое количество плагинов может вызвать увеличение пинга и лаги.' => '2. Too many plugins can increase ping and cause lag.',
'3. Некоторые сочетания плагинов могут вызвать нестабильную работу сервера.' => '3. Some plugin combinations can make the server unstable.',
'3. После ввода данных, нажмите "Быстрое соединение"' => '3. Once the details are entered, click "Quickconnect"',
'FTP Доступ' => 'FTP access',
'Minecraft PE: Мой сервер не запускается и просит выбрать язык, что делать? (Nukkit)' => 'Minecraft PE: my server does not start and asks me to choose a language, what should I do? (Nukkit)',
'announce - Включает/выключает отображение сервера в Интернете.' => 'announce - turns the server listing on the Internet on or off.',
'bind - Указывает, на каком IP адресе работает сервер. Запрещено изменять на нашем хостинге.' => 'bind - specifies which IP address the server runs on. Changing it is not allowed on our hosting.',
'echo - Все, что стоит после этого параметра - будет выводится в консоль сервера при запуске. Стандартно установлено Executing Server Config...' => 'echo - everything after this parameter is printed to the server console at startup. The default is Executing Server Config...',
'filterscripts (N) - Скрипты' => 'filterscripts (N) - scripts',
'gamemode(n) (N) (t) - Игровой мод' => 'gamemode(n) (N) (t) - game mode',
'hostname - Название вашего сервера.' => 'hostname - the name of your server.',
'incar_rate - Технический параметр.' => 'incar_rate - a technical parameter.',
'lanmode - Указывает где работает сервер, в интернете или в локальной сети, 0 для интернета. Стандартно значение установлено на 0' => 'lanmode - specifies where the server runs, on the Internet or on a local network; 0 means the Internet. The default value is 0',
'mapname (m) - Название карты' => 'mapname (m) - map name',
'maxnpc - Кол-во ботов, которые могут быть использоваться на сервере.' => 'maxnpc - the number of bots that can be used on the server.',
'onfoot_rate - Технический параметр.' => 'onfoot_rate - a technical parameter.',
'password (p) - Пароль сервера' => 'password (p) - the server password',
'plugins (N) - Плагины' => 'plugins (N) - plugins',
'port - Порт сервера.' => 'port - the server port.',
'rcon 0/1 - Включает/выключает возможность использования RCON-консоли.' => 'rcon 0/1 - turns the use of the RCON console on or off.',
'rcon_password - RCON пароль сервера.' => 'rcon_password - the server RCON password.',
'stream_distance - Технический параметр.' => 'stream_distance - a technical parameter.',
'stream_rate - Технический параметр.' => 'stream_rate - a technical parameter.',
'weapon_rate - Технический параметр.' => 'weapon_rate - a technical parameter.',
'weburl - Адрес вашего сайта.' => 'weburl - the address of your website.',
'Бонусы можно получить за пополнение баланса.' => 'Bonuses can be earned by topping up your balance.',
'Быстрое соединение' => 'Quickconnect',
'В обязанности службы технической поддержки хостинга входит решение следующих задач' => 'The hosting technical support team is responsible for the following',
'В правом нижнем углу загрузится структура вашего игрового сервера. Здесь вы можете устанавливать любые плагины и выполнять любые настройки своего игрового сервера.' => 'The structure of your game server will load in the bottom right corner. From there you can install any plugins and apply any settings to your game server.',
'Важно знать и помнить' => 'Important things to know and remember',
'Где rus это язык на котором будет работать сервер.' => 'Here rus is the language the server will run in.',
'Далее укажите в нем такой параметр:' => 'Then set the following parameter in it:',
'Данная ошибка решается переименовыванием сервера английскими буквами.' => 'This error is fixed by renaming the server using Latin letters.',
'Если получилось так, что вам как-то удалось заменить наш стандартный файл конфигурации на свой, где нет строки bind, или просто удалить эту строку из нашего, то для нормальной работы сервера (да и вообще для любой) стоит эту строку вернуть назад. Ваши действия: Скачать на компьютер файл конфигурации server.cfg Открыть файл в любом текстовом редакторе и добавить в самый конец такую строку:' => 'If you somehow managed to replace our default configuration file with your own that has no bind line, or simply deleted that line from ours, you should put the line back for the server to work properly (and for it to work at all). What to do: download the server.cfg configuration file to your computer, open it in any text editor and add the following line at the very end:',
'Закачать файл назад по фтп с заменой старого' => 'Upload the file back over FTP, replacing the old one',
'Информация перед установкой плагинов' => 'Things to know before installing plugins',
'Как заработать бонусы?' => 'How do I earn bonuses?',
'Как подключиться к серверу через ftp?' => 'How do I connect to the server over FTP?',
'Какой будет пинг?' => 'What will the ping be?',
'Купон - это код,который вы вводите при заказе сервера,для получения скидки. (Вводить не обязательно).' => 'A coupon is a code you enter when ordering a server to get a discount. Entering it is optional.',
'Не входит обязанности службы технической поддержки' => 'What the technical support team is not responsible for',
'Не запускается сервер' => 'The server does not start',
'Ошибка UnknownResponse' => 'UnknownResponse error',
'Поддерживаемые языки:' => 'Supported languages:',
'Прежде чем искать решение проблемы и писать нам в тех.поддержку в первую очередь необходимо выяснить, что за ошибка вам попалась. Для этого вам необходимо посмотреть логи сервера и логи запуска сервера. Это файлы server_log.txt и screenlog. Посмотреть вы их можете через ФТП, например. В эти файлы записываются всё, что сервер отдает в командную строку.' => 'Before looking for a solution and writing to our support, you first need to find out which error you ran into. To do that, look at the server logs and the server startup logs — the files server_log.txt and screenlog. You can view them over FTP, for example. Everything the server prints to the command line is written into these files.',
'Проверить пинг и общее качество игрового сервера вы можете на тестовых демо серверах.' => 'You can check the ping and the overall quality of a game server on our demo test servers.',
'Проверьте наличие плагинов .so для вашего сервера в папке plugins, а также прописаны ли они в настройках сервера.' => 'Check that the .so plugins for your server are present in the plugins folder and that they are listed in the server settings.',
'Реагировать на проблемы неработоспособности функций хостинга. Предоставлять необходимую информацию касательно хостинга. Выполнять задачи поставленные клиентом (в случаи если эти задачи невозможно осуществить со стороны клиента, и эти задачи не входят в ряд дополнительных услуг.)' => 'Responding to problems with hosting features not working. Providing the necessary information about the hosting. Carrying out tasks set by the client (if those tasks cannot be done by the client themselves and are not part of the additional services).',
'Ручное добавление bind в файл конфигурации' => 'Adding bind to the configuration file manually',
'Сервер удаляется через 24 часа с момента отключения.' => 'The server is deleted 24 hours after it is switched off.',
'Создайте в корневой директории файл' => 'Create a file in the root directory',
'Сохранить файл' => 'Save the file',
'Статус сервера Unknown' => 'Server status Unknown',
'Устанавливать и настраивать плагины, моды, звуки, и т.д. даже в том случае, если клиент сам не в состоянии их настроить. Делать за клиента операции, которые может сделать клиент сам через FTP или Панель Управления в дальнейшем сокращёно ПУ Проводить обучение по настройке плагинов, по работе с серверами и другими услугами. Оказывать техподдержку лицам, которые не являются клиентами Хостинга. Проводить обучение по работе с серверами и другими услугами. Отвечать на вопросы которые не имеют отношения к сервисам хостинга.' => 'Installing and configuring plugins, mods, sounds and so on, even when the client cannot configure them themselves. Doing things for the client that the client can do themselves over FTP or in the control panel. Providing training on configuring plugins or working with servers and other services. Providing support to people who are not clients of the hosting. Answering questions unrelated to the hosting services.',
'Файл конфигурации server.cfg (SAMP,CRMP,UNITED)' => 'The server.cfg configuration file (SAMP, CRMP, UNITED)',
'Хостинг не отвечает за работоспособность/стабильность Вашего сервера с установленными Вами не стандартных плагинов, карт и других файлов. Мы не несем ответственности за работоспособность сервера при Вашей самостоятельной его настройке, наша задача предоставить Вам выделенный полностью рабочий сервер. Мы не обязаны, исправлять какие либо Ваши ошибки после которых, сервер не запускается или работает нестабильно. Возможно мы сможем помочь Вам в каких-либо вопросах связанных с настройкой, но задавать их нужно во вкладке Тех.Поддержка' => 'The hosting is not responsible for the operability or stability of your server once you install non-standard plugins, maps or other files. We take no responsibility for the server working while you configure it yourself; our job is to provide you with a fully working dedicated server. We are not obliged to fix any of your mistakes that leave the server unable to start or unstable. We may be able to help you with configuration questions, but they should be asked in the Support tab',
'Через сколько удаляется сервер если его не оплачивать?' => 'How long until an unpaid server is deleted?',
'Что такое купон?' => 'What is a coupon?',
'Статус поддержки' => 'Support status',
' руб. Дней: ' => ' RUB. Days: ',
'Выберите тариф' => 'Select a plan',
'Заказать' => 'Order',
'Идет просмотр настроек хостинга. И подготовка к установке.' => 'Reviewing the hosting settings and preparing for installation.',
'На данный момент нет доступных тарифов' => 'There are no plans available at the moment',
'Параметры веб-хостинга' => 'Web hosting parameters',
'<br>Номер ошибки: ' => '<br>Error number: ',
'Ошибка: ' => 'Error: ',
'Ошибка: Не удалось соединиться с базой ' => 'Error: could not connect to the database ',
'Genisys v0.15.х (PHP 7.0)' => 'Genisys v0.15.x (PHP 7.0)',
'Genisys_v0.15.х' => 'Genisys_v0.15.x',
'Steam [Чистый сервер]' => 'Steam [clean server]',
'Ошибка: Не указан E-Mail отправителя!' => 'Error: the sender e-mail is not set!',
'Ошибка: Не указан E-Mail получателя!' => 'Error: the recipient e-mail is not set!',
'Ошибка: Не указан текст сообщения!' => 'Error: the message text is not set!',
'Ошибка: Не указана тема сообщения!' => 'Error: the message subject is not set!',
'Ошибка: Не указано имя отправителя!' => 'Error: the sender name is not set!',
'Ошибка: Не удалось загрузить query-драйвер ' => 'Error: could not load the query driver ',
'Ошибка: Не удалось загрузить базовый query-драйвер!' => 'Error: could not load the base query driver!',
'Нет данных' => 'No data',
'Ошибка: Не удалось загрузить библиотеку для работы с sftp!' => 'Error: could not load the sftp library!',
'Ошибка: Не удалось соединиться с сервером!' => 'Error: could not connect to the server!',
'Вы уверенны в том, что хотите заблокировать сервер gs' => 'Are you sure you want to block server gs',
'Вы уверенны в том, что хотите разблокировать сервер gs' => 'Are you sure you want to unblock server gs',
'Вы уверенны в том, что хотите удалить сервер gs' => 'Are you sure you want to delete server gs',
'Вы уверенны в том, что хотите удалить пользователя ID-' => 'Are you sure you want to delete user ID-',
'Вы уверенны в том, что хотите заблокировать веб-хостинг ws' => 'Are you sure you want to block web hosting ws',
'Вы уверенны в том, что хотите разблокировать веб-хостинг ws' => 'Are you sure you want to unblock web hosting ws',
'Вы уверенны в том, что хотите удалить веб-хостинг ws' => 'Are you sure you want to delete web hosting ws',
'Идет установка' => 'Installing',
// ── форматы даты и последние служебные строки ────────────────────────────────
'd.m.Y в H:i' => 'd.m.Y H:i',
'dd.MM.yy в HH:mm' => 'dd.MM.yy HH:mm',
'Размер: ' => 'Size: ',
'КБ' => 'KB',
', пожалуйста, подождите...' => ', please wait...',
'Ошибка,' => 'Error,',
// ── атрибуты (placeholder/tooltip) и абзацы FAQ построчно ────────────────────
'Описание...' => 'Description...',
'Введите текст новости' => 'Enter the news text',
'Добавить мод' => 'Add a mod',
'Добавить тариф' => 'Add a plan',
'Добавить файл' => 'Add a file',
'Прежде чем искать решение проблемы и писать нам в тех.поддержку в первую очередь необходимо выяснить, что за ошибка вам попалась.' => 'Before looking for a solution and writing to our support, you first need to find out which error you ran into.',
'Для этого вам необходимо посмотреть логи сервера и логи запуска сервера.' => 'To do that you need to look at the server logs and the server startup logs.',
'Это файлы server_log.txt и screenlog. Посмотреть вы их можете через ФТП, например.' => 'These are the files server_log.txt and screenlog. You can view them over FTP, for example.',
'В эти файлы записываются всё, что сервер отдает в командную строку.' => 'Everything the server prints to the command line is written into these files.',
'Если получилось так, что вам как-то удалось заменить наш стандартный файл конфигурации на свой, где нет строки bind, или просто удалить эту строку из нашего, то для нормальной работы сервера (да и вообще для любой) стоит эту строку вернуть назад. Ваши действия:' => 'If you somehow managed to replace our default configuration file with your own that has no bind line, or simply deleted that line from ours, you should put the line back for the server to work properly (and for it to work at all). What to do:',
'Скачать на компьютер файл конфигурации server.cfg' => 'Download the server.cfg configuration file to your computer',
'Открыть файл в любом текстовом редакторе и добавить в самый конец такую строку:' => 'Open the file in any text editor and add the following line at the very end:',
); );
+1 -1
View File
@@ -51,7 +51,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
Оплачен Оплачен
<?php endif; ?> <?php endif; ?>
</td> </td>
<td class="text-right pt-7"><?php echo date("d.m.Y в H:i", strtotime($item['invoice_date_add'])) ?></td> <td class="text-right pt-7"><?php echo date(t("d.m.Y в H:i"), strtotime($item['invoice_date_add'])) ?></td>
<td class="text-right pt-7"><?php echo $item['invoice_ammount'] ?> RUB.</td> <td class="text-right pt-7"><?php echo $item['invoice_ammount'] ?> RUB.</td>
<td class="text-primary pr-0 pt-7 text-right"><?php echo $item['system'] ?></td> <td class="text-primary pr-0 pt-7 text-right"><?php echo $item['system'] ?></td>
</tr> </tr>
+2 -2
View File
@@ -16,10 +16,10 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<h3 class="card-title"><?php echo $item['waste_usluga'] ?></h3> <h3 class="card-title"><?php echo $item['waste_usluga'] ?></h3>
<div class="card-toolbar"> <div class="card-toolbar">
<?php if($item['waste_status'] == 1): ?> <?php if($item['waste_status'] == 1): ?>
<span class="badge badge-danger" data-toggle="kt-tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['waste_date_add'])) ?>" style="margin-right: .25rem">- <?php echo $item['waste_ammount'] ?> руб</span> <span class="badge badge-danger" data-toggle="kt-tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['waste_date_add'])) ?>" style="margin-right: .25rem">- <?php echo $item['waste_ammount'] ?> руб</span>
<?php endif; ?> <?php endif; ?>
<?php if($item['waste_status'] == 0): ?> <?php if($item['waste_status'] == 0): ?>
<span class="badge badge-success" data-toggle="kt-tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['waste_date_add'])) ?>" style="margin-right: .25rem">+ <?php echo $item['waste_ammount'] ?> руб</span> <span class="badge badge-success" data-toggle="kt-tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['waste_date_add'])) ?>" style="margin-right: .25rem">+ <?php echo $item['waste_ammount'] ?> руб</span>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>
@@ -21,9 +21,9 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<div class="card-toolbar"> <div class="card-toolbar">
<span class="badge badge-primary mr-2" data-toggle="tooltip" data-placement="right" title="" data-original-title="Платежная система"><?php echo $item['system'] ?></span> <span class="badge badge-primary mr-2" data-toggle="tooltip" data-placement="right" title="" data-original-title="Платежная система"><?php echo $item['system'] ?></span>
<?php if($item['invoice_status'] == 0): ?> <?php if($item['invoice_status'] == 0): ?>
<span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['invoice_date_add'])) ?>">Не оплачен</span> <span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['invoice_date_add'])) ?>">Не оплачен</span>
<?php elseif($item['invoice_status'] == 1): ?> <?php elseif($item['invoice_status'] == 1): ?>
<span class="badge badge-success" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['invoice_date_add'])) ?>">Оплачен</span> <span class="badge badge-success" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['invoice_date_add'])) ?>">Оплачен</span>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>
@@ -65,7 +65,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<?php elseif($item['ticket_status'] == 2): ?> <?php elseif($item['ticket_status'] == 2): ?>
<i class="fa fa-user text-primary" data-toggle="tooltip" data-placement="right" title="" data-original-title="Ответ от администрации"></i> <i class="fa fa-user text-primary" data-toggle="tooltip" data-placement="right" title="" data-original-title="Ответ от администрации"></i>
<?php endif; ?> <?php endif; ?>
</span><?php echo $item['ticket_name'] ?><small class="text-muted font-size-sm ml-2"><?php echo date("d.m.Y в H:i", strtotime($item['ticket_date_add'])) ?></small> </span><?php echo $item['ticket_name'] ?><small class="text-muted font-size-sm ml-2"><?php echo date(t("d.m.Y в H:i"), strtotime($item['ticket_date_add'])) ?></small>
</h3> </h3>
<div class="card-toolbar"> <div class="card-toolbar">
<a href="/admin/tickets/view/index/<?php echo $item['ticket_id'] ?>" class="btn btn-icon btn-primary mr-2" style="height: 24px;" data-toggle="tooltip" data-placement="right" title="" data-original-title="Перейти" > <a href="/admin/tickets/view/index/<?php echo $item['ticket_id'] ?>" class="btn btn-icon btn-primary mr-2" style="height: 24px;" data-toggle="tooltip" data-placement="right" title="" data-original-title="Перейти" >
@@ -58,7 +58,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<span class="navi-icon mr-4"> <span class="navi-icon mr-4">
<i class="flaticon-calendar icon-lg"></i> <i class="flaticon-calendar icon-lg"></i>
</span> </span>
<span class="navi-text"><?php echo date("d.m.Y в H:i", strtotime($ticket['ticket_date_add'])) ?></span> <span class="navi-text"><?php echo date(t("d.m.Y в H:i"), strtotime($ticket['ticket_date_add'])) ?></span>
</a> </a>
<a href="javascript:;" class="navi-link" data-toggle="tooltip" data-placement="right" title="" data-original-title="Статус запроса"> <a href="javascript:;" class="navi-link" data-toggle="tooltip" data-placement="right" title="" data-original-title="Статус запроса">
<span class="navi-icon mr-4"> <span class="navi-icon mr-4">
+1 -1
View File
@@ -179,7 +179,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<tr> <tr>
<td><?php echo $item['city'] ?></td> <td><?php echo $item['city'] ?></td>
<td><?php echo $item['country'] ?>(<?php echo $item['code'] ?>)</td> <td><?php echo $item['country'] ?>(<?php echo $item['code'] ?>)</td>
<td><?php echo date("d.m.Y в H:i", strtotime($item['datetime'])) ?></td> <td><?php echo date(t("d.m.Y в H:i"), strtotime($item['datetime'])) ?></td>
<td><?php echo $item['ip'] ?></td> <td><?php echo $item['ip'] ?></td>
<td><?php if($item['status'] == 0): ?> <td><?php if($item['status'] == 0): ?>
Ошибка входа (пароль <?php echo $item['password'] ?>) Ошибка входа (пароль <?php echo $item['password'] ?>)
@@ -16,9 +16,9 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<h3 class="card-title"><a href="/admin/users/edit/index/<?php echo $item['user_id'] ?>" class="text-dark"><?php echo $item['user_firstname'] ?> <?php echo $item['user_lastname'] ?></a><small class="text-muted font-size-sm ml-2"><?php echo $item['waste_usluga'] ?></small></h3> <h3 class="card-title"><a href="/admin/users/edit/index/<?php echo $item['user_id'] ?>" class="text-dark"><?php echo $item['user_firstname'] ?> <?php echo $item['user_lastname'] ?></a><small class="text-muted font-size-sm ml-2"><?php echo $item['waste_usluga'] ?></small></h3>
<div class="card-toolbar"> <div class="card-toolbar">
<?php if($item['waste_status'] == 1): ?> <?php if($item['waste_status'] == 1): ?>
<span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['waste_date_add'])) ?>">- <?php echo $item['waste_ammount'] ?> RUB.</span> <span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['waste_date_add'])) ?>">- <?php echo $item['waste_ammount'] ?> RUB.</span>
<?php elseif($item['waste_status'] == 0): ?> <?php elseif($item['waste_status'] == 0): ?>
<span class="badge badge-success" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['waste_date_add'])) ?>">+ <?php echo $item['waste_ammount'] ?> RUB.</span> <span class="badge badge-success" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['waste_date_add'])) ?>">+ <?php echo $item['waste_ammount'] ?> RUB.</span>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>
+1 -1
View File
@@ -507,7 +507,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<?php elseif($item['status'] == 2): ?> <?php elseif($item['status'] == 2): ?>
Выход с аккаунта - Выход с аккаунта -
<?php endif; ?> <?php endif; ?>
<?php echo date("d.m.Y в H:i", strtotime($item['datetime'])) ?></span> <?php echo date(t("d.m.Y в H:i"), strtotime($item['datetime'])) ?></span>
</div> </div>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
+1 -1
View File
@@ -483,7 +483,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<?php elseif($item['status'] == 2): ?> <?php elseif($item['status'] == 2): ?>
Выход с аккаунта - Выход с аккаунта -
<?php endif; ?> <?php endif; ?>
<?php echo date("d.m.Y в H:i", strtotime($item['datetime'])) ?></span> <?php echo date(t("d.m.Y в H:i"), strtotime($item['datetime'])) ?></span>
</div> </div>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
+7 -7
View File
@@ -214,9 +214,9 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<h3 class="card-title"><?php echo $item['waste_usluga'] ?></h3> <h3 class="card-title"><?php echo $item['waste_usluga'] ?></h3>
<div class="card-toolbar"> <div class="card-toolbar">
<?php if($item['waste_status'] == 1): ?> <?php if($item['waste_status'] == 1): ?>
<span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['waste_date_add'])) ?>">- <?php echo $item['waste_ammount'] ?> руб</span> <span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['waste_date_add'])) ?>">- <?php echo $item['waste_ammount'] ?> руб</span>
<?php elseif($item['waste_status'] == 0): ?> <?php elseif($item['waste_status'] == 0): ?>
<span class="badge badge-success" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['waste_date_add'])) ?>">+ <?php echo $item['waste_ammount'] ?> руб</span> <span class="badge badge-success" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['waste_date_add'])) ?>">+ <?php echo $item['waste_ammount'] ?> руб</span>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>
@@ -245,11 +245,11 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<h3 class="card-title"><?php echo $item['country'] ?>(<?php echo $item['code'] ?>) <?php echo $item['city'] ?><small class="text-muted font-size-sm ml-2"><?php echo $item['ip'] ?></small></h3> <h3 class="card-title"><?php echo $item['country'] ?>(<?php echo $item['code'] ?>) <?php echo $item['city'] ?><small class="text-muted font-size-sm ml-2"><?php echo $item['ip'] ?></small></h3>
<div class="card-toolbar"> <div class="card-toolbar">
<?php if($item['status'] == 0): ?> <?php if($item['status'] == 0): ?>
<span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['datetime'])) ?>">Ошибка входа (пароль <?php echo $item['password'] ?>)</span> <span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['datetime'])) ?>">Ошибка входа (пароль <?php echo $item['password'] ?>)</span>
<?php elseif($item['status'] == 1): ?> <?php elseif($item['status'] == 1): ?>
<span class="badge badge-success" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['datetime'])) ?>">Вход в систему</span> <span class="badge badge-success" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['datetime'])) ?>">Вход в систему</span>
<?php elseif($item['status'] == 2): ?> <?php elseif($item['status'] == 2): ?>
<span class="badge badge-warning" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date("d.m.Y в H:i", strtotime($item['datetime'])) ?>">Выход из системы</span> <span class="badge badge-warning" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата операции: <?php echo date(t("d.m.Y в H:i"), strtotime($item['datetime'])) ?>">Выход из системы</span>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>
@@ -266,8 +266,8 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
</a></span><?php if($item['auth_key'] == @$_COOKIE['uid']): ?>Текущий<?php else: ?>Активный<?php endif; ?><small class="text-muted font-size-sm ml-2"><?php echo $item['user_ip'] ?></small> </a></span><?php if($item['auth_key'] == @$_COOKIE['uid']): ?>Текущий<?php else: ?>Активный<?php endif; ?><small class="text-muted font-size-sm ml-2"><?php echo $item['user_ip'] ?></small>
</h3> </h3>
<div class="card-toolbar"> <div class="card-toolbar">
<span class="badge badge-primary" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата создания" style="margin-right: .25rem"><?php echo date("d.m.Y в H:i", strtotime($item['auth_date_add'])) ?></span> <span class="badge badge-primary" data-toggle="tooltip" data-placement="right" title="" data-original-title="Дата создания" style="margin-right: .25rem"><?php echo date(t("d.m.Y в H:i"), strtotime($item['auth_date_add'])) ?></span>
<span class="badge badge-primary" data-toggle="tooltip" data-placement="right" title="" data-original-title="Последняя активность" style="margin-right: .25rem"><?php echo date("d.m.Y в H:i", strtotime($item['user_last_activity'])) ?></span> <span class="badge badge-primary" data-toggle="tooltip" data-placement="right" title="" data-original-title="Последняя активность" style="margin-right: .25rem"><?php echo date(t("d.m.Y в H:i"), strtotime($item['user_last_activity'])) ?></span>
<a href="javascript:;" onClick="sendAction('closeSession',<?php echo $item['auth_id'] ?>)" class="btn btn-icon btn-light-danger btn-xs" data-toggle="tooltip" data-placement="right" title="" data-original-title="Завершить сеанс"> <a href="javascript:;" onClick="sendAction('closeSession',<?php echo $item['auth_id'] ?>)" class="btn btn-icon btn-light-danger btn-xs" data-toggle="tooltip" data-placement="right" title="" data-original-title="Завершить сеанс">
<i class="fa fa-times"></i> <i class="fa fa-times"></i>
</a> </a>
+1 -1
View File
@@ -64,7 +64,7 @@ Developed by Samir Shelenko (https://vk.com/id00v)
<div class="bg-primary"></div> <div class="bg-primary"></div>
</div> </div>
<div class="timeline-label text-primary"> <div class="timeline-label text-primary">
<span class="text-primary font-weight-bold"><?php echo date("d.m.Y в H:i", strtotime($item['news_date_add'])) ?></span> <span class="text-primary font-weight-bold"><?php echo date(t("d.m.Y в H:i"), strtotime($item['news_date_add'])) ?></span>
</div> </div>
<div class="timeline-content"> <div class="timeline-content">
<?php echo $item['news_title'] ?> <?php echo $item['news_title'] ?>
+1 -1
View File
@@ -42,7 +42,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
</g> </g>
</svg> </svg>
</span> </span>
<span class="text-muted font-weight-bold"><?php echo date("d.m.Y в H:i", strtotime($item['news_date_add'])) ?></span> <span class="text-muted font-weight-bold"><?php echo date(t("d.m.Y в H:i"), strtotime($item['news_date_add'])) ?></span>
</div> </div>
<div class="d-flex align-items-center" data-toggle="tooltip" title="" data-placement="right" data-original-title="Просмотров"> <div class="d-flex align-items-center" data-toggle="tooltip" title="" data-placement="right" data-original-title="Просмотров">
<span class="svg-icon svg-icon-md svg-icon-primary pr-1"> <span class="svg-icon svg-icon-md svg-icon-primary pr-1">
+1 -1
View File
@@ -96,7 +96,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
<a href="javascript:;" class="text-dark-75 text-hover-primary mb-1 font-size-lg font-weight-bolder"><?php if($item['user_firstname']){echo $item['user_firstname'];} else {echo 'Гость';} ?> <?php echo $item['user_lastname'] ?></a> <a href="javascript:;" class="text-dark-75 text-hover-primary mb-1 font-size-lg font-weight-bolder"><?php if($item['user_firstname']){echo $item['user_firstname'];} else {echo 'Гость';} ?> <?php echo $item['user_lastname'] ?></a>
<span class="text-muted font-weight-bold"><?php echo nl2br($item['news_message']) ?></span> <span class="text-muted font-weight-bold"><?php echo nl2br($item['news_message']) ?></span>
</div> </div>
<span class="text-muted font-weight-normal font-size-sm"><?php echo date("d.m.Y в H:i", strtotime($item['news_message_date_add'])) ?></span> <span class="text-muted font-weight-normal font-size-sm"><?php echo date(t("d.m.Y в H:i"), strtotime($item['news_message_date_add'])) ?></span>
</div> </div>
</div> </div>
</div> </div>

Some files were not shown because too many files have changed in this diff Show More