Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
Пользователь
Регистрация
8 Янв 2025
Сообщения
212
Всем привет... Наверное
Я открыл студию Return Games.... Вот....
Ниже можете почитать немного обо мне и еще рандом инфу....
VK для связи: @dima_twolife


Проект Ariozna RP - 50 RUB
Проект Black Russia - 25 RUB
Проект Diamond RP - 10 RUB

Форум любого проекта - 10 RUB
Сайт любого проекта - 10 RUB

Бот для пиара - 5 RUB
Бот для проверки подписки - 5 RUB
Бот для логов - 5 RUB

Дополнительный BattlePass для проекта - 15 RUB
Дополнительные / новые квесты для проекта - 15 RUB

Прошу строго не судить
 
Последнее редактирование:
Пользователь
Регистрация
28 Дек 2024
Сообщения
311
Всем привет... Наверное
сразу видно уверенность на все 100
Я открыл студию ReyVer Sliv.... Вот....
рекомендую почитать книги о том, как научится общается с людьми и не боятся их

Проект Ariozna RP - 50 RUB
Проект Black Russia - 25 RUB
Проект Diamond RP - 10 RUB

Форум любого проекта - 10 RUB
Сайт любого проекта - 10 RUB

Бот для пиара - 5 RUB
Бот для проверки подписки - 5 RUB
Бот для логов - 5 RUB

Дополнительный BattlePass для проекта - 15 RUB
Дополнительные / новые квесты для проекта - 15 RUB
а подробнее чутка можно что туда входит то? сервер? мод? сервер с модом? форум и т.д
 
Пользователь
Регистрация
8 Янв 2025
Сообщения
212
сразу видно уверенность на все 100

рекомендую почитать книги о том, как научится общается с людьми и не боятся их


а подробнее чутка можно что туда входит то? сервер? мод? сервер с модом? форум и т.д
Мод, форум, сайт, логи, авто-пиар бот
рекомендую почитать книги о том, как научится общается с людьми и не боятся их
После хейта в сторону моего проекта "MChat" вот так приходится
 
Пользователь
Регистрация
8 Янв 2025
Сообщения
212
Update Arizona RP || 23.08.2025
  • Добавил остаток скинов
  • Настроил отображение CEF
  • Оптимизировал CASH
  • Исправил команду /ban (там был баг что система не успевала проверять забанен ли игрок)
 
Пользователь
Регистрация
8 Янв 2025
Сообщения
212
Update Site || 25.08.2025
  • Запустил в бета тестирование сайт студии
 
Команда форума
Модератор
Регистрация
4 Ноя 2024
Сообщения
960
Форум любого проекта - 10 RUB
OFFTOP


:love:, мне, пожалуйста, копию форума kingz.net, сделать стиль без зависимости плагинов, если плагин нужен будет, то прописать в шаблоне условие, которое будет проверять активность плагина. Еще в профиле хотелось бы, чтобы вместо вкладки "Web3" выводились сообщения профиля. Еще мне хочется, чтобы у сообщений пользователей был фон, который стоит у них на баннере профиля
изображение_2025-08-25_112920884.png
И еще главное просьба, даже условие! Нужно это все делать при помощи CSS, изменения в шаблонах я не одобряю, так как считаю, что слабаки могу изменять шаблоны и туда лезть:cautious:, настоящие проффисианалы должы все делать при помощи CSS. ТЗ все мои делание описывает, если будете браться за него, то мяукните 🥵

 
Пользователь
Регистрация
8 Янв 2025
Сообщения
212
OFFTOP


:love:, мне, пожалуйста, копию форума kingz.net, сделать стиль без зависимости плагинов, если плагин нужен будет, то прописать в шаблоне условие, которое будет проверять активность плагина. Еще в профиле хотелось бы, чтобы вместо вкладки "Web3" выводились сообщения профиля. Еще мне хочется, чтобы у сообщений пользователей был фон, который стоит у них на баннере профиля
Посмотреть вложение 11984
И еще главное просьба, даже условие! Нужно это все делать при помощи CSS, изменения в шаблонах я не одобряю, так как считаю, что слабаки могу изменять шаблоны и туда лезть:cautious:, настоящие проффисианалы должы все делать при помощи CSS. ТЗ все мои делание описывает, если будете браться за него, то мяукните 🥵

жирно не будет?
 
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Команда форума
Администратор
Регистрация
13 Мар 2022
Сообщения
1,089
Работать за такие ценники, даже если ты начинающий pawn-разработчик == не уважать самого себя.
Студия, которую ты открыл, соберет неплатежеспособную аудиторию. Если на русском - школьников.
Не ставь фиксированные ценники. Работай в зависимости от сложности тех. задания, собирай портфолио и цени себя и свое время.
 
Пользователь
Регистрация
8 Янв 2025
Сообщения
212
Работать за такие ценники, даже если ты начинающий pawn-разработчик == не уважать самого себя.
Студия, которую ты открыл, соберет неплатежеспособную аудиторию. Если на русском - школьников.
Не ставь фиксированные ценники. Работай в зависимости от сложности тех. задания, собирай портфолио и цени себя и свое время.
Ладно, видимо мне все что светит - это заброс Pawn'а.
Шучу)

Эти школьники - аудитория которая приносят прибыль и актив
Это бизнес, это актив
 
Пользователь
Регистрация
11 Дек 2024
Сообщения
171
Update Arizona RP || 23.08.2025
  • Добавил остаток скинов
  • Настроил отображение CEF
  • Оптимизировал CASH
  • Исправил команду /ban (там был баг что система не успевала проверять забанен ли игрок)
Как я понял мод 2к21-22 года
 
Активный
Регистрация
26 Апр 2022
Сообщения
819
OFFTOP


:love:, мне, пожалуйста, копию форума kingz.net, сделать стиль без зависимости плагинов, если плагин нужен будет, то прописать в шаблоне условие, которое будет проверять активность плагина. Еще в профиле хотелось бы, чтобы вместо вкладки "Web3" выводились сообщения профиля. Еще мне хочется, чтобы у сообщений пользователей был фон, который стоит у них на баннере профиля
Посмотреть вложение 11984
И еще главное просьба, даже условие! Нужно это все делать при помощи CSS, изменения в шаблонах я не одобряю, так как считаю, что слабаки могу изменять шаблоны и туда лезть:cautious:, настоящие проффисианалы должы все делать при помощи CSS. ТЗ все мои делание описывает, если будете браться за него, то мяукните 🥵

Сэр, подвиньтесь, такого перспективного разработчика должен забрать я.

Так вот, мне нужен плагин чтоб я удаленно мог управлять веб-сервером из админ панели, вот ТЗ:
1. Общее описание

Плагин "Server Control Panel" предназначен для предоставления администраторам XenForo удобного интерфейса для мониторинга и базового управления ключевыми компонентами серверной инфраструктуры (веб-сервер, PHP, MySQL) напрямую из админ-панели XenForo. Цель — упростить частые операции по настройке и перезапуску сервисов, сокращая необходимость прямого доступа к SSH.

2. Версия XenForo

  • Требуемая версия: XenForo 2.3.x
3. Цели плагина

  • Обеспечить возможность перезапуска/перезагрузки веб-сервера (Apache/Nginx), PHP-FPM и MySQL.
  • Предоставить интерфейс для просмотра и изменения ключевых параметров php.ini.
  • Предоставить интерфейс для просмотра и изменения ключевых параметров my.cnf.
  • Отображать текущий статус управляемых сервисов.
  • Вести логи всех действий, выполненных через плагин.
  • Обеспечить высокий уровень безопасности, предотвращая несанкционированный доступ и потенциальные уязвимости.
4. Нефункциональные требования

  • Безопасность:
    • Все действия должны быть доступны только пользователям с соответствующими разрешениями администратора XenForo.
    • Любое выполнение системных команд (через exec, shell_exec и т.д.) должно быть крайне осторожным, с полной валидацией входных данных и использованием "белых списков" разрешенных команд/параметров.
    • Должна быть возможность указать, какие команды требуют sudo и какие пользователи могут их выполнять (путем настройки sudoers на сервере). Плагин не должен запрашивать пароль.
    • Конфигурационные файлы (пути к ним, команды перезапуска) должны храниться в защищенном месте (например, в системных настройках XenForo, а не в открытом коде).
    • Предупреждения о потенциальной опасности изменения настроек должны быть явно видны.
  • Производительность: Плагин не должен создавать чрезмерную нагрузку на сервер. Запросы к сервисам должны быть быстрыми.
  • Удобство использования (UX): Интуитивно понятный интерфейс в админ-панели XenForo, с четкими описаниями полей и действий.
  • Надежность: Устойчивость к ошибкам при выполнении команд. Четкое информирование пользователя об успехе или неудаче операции.
  • Локализация: Все текстовые элементы должны быть реализованы через систему фраз XenForo.
5. Функциональные требования

5.1. Административный интерфейс (Admin CP)


  • Новый раздел/меню: В админ-панели XenForo должен быть создан новый раздел, например, "Server Control".
  • Главная страница плагина ("Dashboard"):
    • Краткий обзор состояния всех управляемых сервисов (Web Server, PHP-FPM, MySQL).
    • Возможность быстрого перезапуска/перезагрузки для каждого сервиса.
    • Ссылки на более детальные страницы настроек каждого модуля.
  • Страница настроек плагина:
    • Настройка путей к конфигурационным файлам (e.g., /etc/php/8.x/fpm/php.ini, /etc/nginx/nginx.conf, /etc/mysql/my.cnf).
    • Настройка команд для проверки статуса сервисов (e.g., systemctl status nginx, pgrep -x php-fpm).
    • Настройка команд для перезагрузки/перезапуска сервисов (e.g., sudo systemctl reload nginx, sudo systemctl restart php8.x-fpm, sudo systemctl restart mysql).
    • Выбор типа веб-сервера (Apache/Nginx).
    • Выбор версии PHP-FPM.
    • Раздел предупреждений и рекомендаций по безопасности.
5.2. Модуль управления Web Server (Apache/Nginx)

  • Страница: "Server Control -> Web Server"
  • Отображение статуса:
    • Текущий статус сервиса (работает/остановлен/ошибка).
    • Дополнительная информация (PID, время работы, нагрузка — если доступно через команду статуса).
  • Действия:
    • Перезагрузить (Reload): Мягкая перезагрузка конфигурации без остановки сервиса.
    • Перезапустить (Restart): Полная остановка и повторный запуск сервиса.
    • Остановить (Stop): Полная остановка сервиса (с предупреждением).
    • Запустить (Start): Запуск остановленного сервиса.
  • Отображение конфигурации (read-only): Возможность просмотреть содержимое основного конфигурационного файла веб-сервера (например, nginx.conf или httpd.conf). Только для чтения.
5.3. Модуль управления PHP (PHP-FPM)

  • Страница: "Server Control -> PHP"
  • Отображение статуса:
    • Текущий статус сервиса PHP-FPM.
    • Текущая используемая версия PHP.
  • Просмотр и изменение php.ini параметров:
    • Список ключевых параметров, которые можно редактировать (через xf:eek:ption_group или кастомный интерфейс):
      • upload_max_filesize
      • post_max_size
      • memory_limit
      • max_execution_time
      • max_input_vars
      • display_errors (с предупреждением о безопасности для production)
      • error_reporting
      • date.timezone
      • Другие, часто используемые.
    • Каждый параметр должен быть представлен в виде формы ввода с текущим значением и возможностью его изменения.
    • После изменения параметров должна быть кнопка "Сохранить и перезапустить PHP-FPM".
  • Действия:
    • Перезапустить PHP-FPM: Полная остановка и повторный запуск сервиса для применения новых настроек.
  • Кэширование PHP: Возможность очистки opcache (если используется и команда доступна).
5.4. Модуль управления MySQL

  • Страница: "Server Control -> MySQL"
  • Отображение статуса:
    • Текущий статус сервиса (работает/остановлен/ошибка).
    • Версия MySQL/MariaDB.
  • Просмотр и изменение my.cnf параметров:
    • Список ключевых параметров, которые можно редактировать (через xf:eek:ption_group или кастомный интерфейс):
      • max_connections
      • innodb_buffer_pool_size
      • query_cache_size (если используется)
      • wait_timeout
      • interactive_timeout
      • key_buffer_size
      • Другие, часто используемые.
    • Каждый параметр должен быть представлен в виде формы ввода с текущим значением и возможностью его изменения.
    • После изменения параметров должна быть кнопка "Сохранить и перезапустить MySQL".
  • Действия:
    • Перезапустить MySQL: Полная остановка и повторный запуск сервиса для применения новых настроек.
5.5. Общие функции

  • Логирование действий:
    • Каждое действие (перезапуск, изменение параметра, попытка выполнения команды) должно быть записано в журнал.
    • Журнал должен содержать: дату/время, администратора, тип действия, измененный параметр (если применимо), результат (успех/ошибка), полный вывод команды (если есть).
    • Интерфейс для просмотра журнала в админ-панели.
  • Система разрешений:
    • Интеграция с системой разрешений администраторов XenForo. Возможность назначать, какие группы администраторов могут управлять каждым из сервисов или выполнять определенные действия.
  • Валидация:
    • Строгая валидация всех пользовательских вводов (числовые значения, строки, пути к файлам).
    • Проверка существования файлов и доступности команд перед их выполнением.
  • Резервное копирование и восстановление конфигураций:
    • Перед изменением любого конфигурационного файла плагин должен создавать его резервную копию (например, с отметкой времени).
    • Должна быть возможность восстановить предыдущую версию конфигурационного файла из этих бэкапов.
6. Технические детали и реализация

  • XenForo API: Использование стандартных паттернов и API XenForo для разработки плагинов (Controller, Entity, Repository, Template, Option, Permission).
  • Взаимодействие с сервером:
    • Использование функций PHP exec() или shell_exec() для выполнения системных команд. Крайне важно: Ограничить эти вызовы до "белого списка" заранее определенных команд и параметров, а также использовать escapeshellarg() для любых переменных, передаваемых в команды.
    • Для чтения/записи конфигурационных файлов использовать file_get_contents() и file_put_contents(). Убедиться, что пользователь, под которым работает веб-сервер, имеет права на чтение/запись этих файлов (что само по себе является потенциальной проблемой безопасности, поэтому рекомендуется использовать скрипты с sudo).
  • Пользователь www-data и sudo:
    • Поскольку XenForo работает от имени пользователя веб-сервера (часто www-data), прямое выполнение команд вроде systemctl restart без пароля невозможно.
    • Рекомендуемое решение: На сервере должны быть настроены правила sudoers (файл /etc/sudoers или /etc/sudoers.d/), которые позволяют пользователю www-data выполнять конкретные, заранее определенные команды без запроса пароля (например, sudo /usr/bin/systemctl reload nginx).
    • Плагин будет вызывать эти команды с sudo.
    • Пример записи в sudoers: www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl reload nginx, /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php8.x-fpm, /usr/bin/systemctl restart mysql Или более безопасно, через обертку: www-data ALL=(ALL) NOPASSWD: /path/to/my_xenforo_server_control_script.sh Где my_xenforo_server_control_script.sh будет содержать логику для вызова нужных systemctl команд.
  • Парсинг конфигурационных файлов:
    • Для php.ini и my.cnf потребуется логика для парсинга файлов, поиска и замены значений параметров, а затем записи файла обратно. Учитывать комментарии и разные форматы строк.
  • Обработка ошибок:
    • В случае неудачи выполнения команды, плагин должен отобразить детальное сообщение об ошибке, включая вывод stderr команды.
7. Этапы разработки (высокоуровнево)

  1. Проектирование базы данных: Создание сущности для логов действий.
  2. Основные контроллеры и маршруты: Настройка базовой структуры админ-панели.
  3. Настройки плагина: Реализация страницы настроек для путей и команд.
  4. Модуль Web Server: Статус и действия перезапуска.
  5. Модуль PHP: Статус, чтение/запись php.ini, перезапуск.
  6. Модуль MySQL: Статус, чтение/запись my.cnf, перезапуск.
  7. Логирование: Интеграция записи и просмотра логов.
  8. Система разрешений: Интеграция с XenForo.
  9. Резервное копирование/Восстановление: Реализация механизма бэкапов.
  10. Тестирование: Тщательное тестирование всех функций, особенно на безопасность и обработку ошибок.
8. Риски и предупреждения

  • Риск безопасности 1-го уровня: Прямое выполнение системных команд из веб-приложения является огромной потенциальной уязвимостью. Необходимо уделить максимум внимания настройкам sudoers и валидации входных данных. Этот плагин НИКОГДА не должен запускаться на сервере, где не было ручной настройки sudoers для строго определенных команд!
  • Риск нарушения стабильности: Неправильно измененные параметры конфигурации или ошибочный перезапуск сервисов могут привести к недоступности сайта или всего сервера.
  • Зависимость от ОС/Дистрибутива: Команды systemctl, пути к файлам могут отличаться в разных дистрибутивах Linux (Ubuntu, CentOS и т.д.). Плагин должен быть максимально гибким в настройке этих команд/путей.
  • Права доступа: Веб-серверный пользователь (www-data) может не иметь прав на чтение/запись системных конфигурационных файлов. Этот аспект также должен быть решен через sudoers или специальные скрипты-обертки.
 
Пользователь
Регистрация
11 Дек 2024
Сообщения
171

Проект Ariozna RP - 50 RUB
Проект Black Russia - 25 RUB
Проект Diamond RP - 10 RUB

Форум любого проекта - 10 RUB
Сайт любого проекта - 10 RUB

Бот для пиара - 5 RUB
Бот для проверки подписки - 5 RUB
Бот для логов - 5 RUB

Дополнительный BattlePass для проекта - 15 RUB
Дополнительные / новые квесты для проекта - 15 RUB
Мне чуть кажется, работать за такие ценники - это не уважать самого себя
 
Пользователь
Регистрация
8 Янв 2025
Сообщения
212
Сэр, подвиньтесь, такого перспективного разработчика должен забрать я.

Так вот, мне нужен плагин чтоб я удаленно мог управлять веб-сервером из админ панели, вот ТЗ:
1. Общее описание

Плагин "Server Control Panel" предназначен для предоставления администраторам XenForo удобного интерфейса для мониторинга и базового управления ключевыми компонентами серверной инфраструктуры (веб-сервер, PHP, MySQL) напрямую из админ-панели XenForo. Цель — упростить частые операции по настройке и перезапуску сервисов, сокращая необходимость прямого доступа к SSH.

2. Версия XenForo

  • Требуемая версия: XenForo 2.3.x
3. Цели плагина

  • Обеспечить возможность перезапуска/перезагрузки веб-сервера (Apache/Nginx), PHP-FPM и MySQL.
  • Предоставить интерфейс для просмотра и изменения ключевых параметров php.ini.
  • Предоставить интерфейс для просмотра и изменения ключевых параметров my.cnf.
  • Отображать текущий статус управляемых сервисов.
  • Вести логи всех действий, выполненных через плагин.
  • Обеспечить высокий уровень безопасности, предотвращая несанкционированный доступ и потенциальные уязвимости.
4. Нефункциональные требования

  • Безопасность:
    • Все действия должны быть доступны только пользователям с соответствующими разрешениями администратора XenForo.
    • Любое выполнение системных команд (через exec, shell_exec и т.д.) должно быть крайне осторожным, с полной валидацией входных данных и использованием "белых списков" разрешенных команд/параметров.
    • Должна быть возможность указать, какие команды требуют sudo и какие пользователи могут их выполнять (путем настройки sudoers на сервере). Плагин не должен запрашивать пароль.
    • Конфигурационные файлы (пути к ним, команды перезапуска) должны храниться в защищенном месте (например, в системных настройках XenForo, а не в открытом коде).
    • Предупреждения о потенциальной опасности изменения настроек должны быть явно видны.
  • Производительность: Плагин не должен создавать чрезмерную нагрузку на сервер. Запросы к сервисам должны быть быстрыми.
  • Удобство использования (UX): Интуитивно понятный интерфейс в админ-панели XenForo, с четкими описаниями полей и действий.
  • Надежность: Устойчивость к ошибкам при выполнении команд. Четкое информирование пользователя об успехе или неудаче операции.
  • Локализация: Все текстовые элементы должны быть реализованы через систему фраз XenForo.
5. Функциональные требования

5.1. Административный интерфейс (Admin CP)


  • Новый раздел/меню: В админ-панели XenForo должен быть создан новый раздел, например, "Server Control".
  • Главная страница плагина ("Dashboard"):
    • Краткий обзор состояния всех управляемых сервисов (Web Server, PHP-FPM, MySQL).
    • Возможность быстрого перезапуска/перезагрузки для каждого сервиса.
    • Ссылки на более детальные страницы настроек каждого модуля.
  • Страница настроек плагина:
    • Настройка путей к конфигурационным файлам (e.g., /etc/php/8.x/fpm/php.ini, /etc/nginx/nginx.conf, /etc/mysql/my.cnf).
    • Настройка команд для проверки статуса сервисов (e.g., systemctl status nginx, pgrep -x php-fpm).
    • Настройка команд для перезагрузки/перезапуска сервисов (e.g., sudo systemctl reload nginx, sudo systemctl restart php8.x-fpm, sudo systemctl restart mysql).
    • Выбор типа веб-сервера (Apache/Nginx).
    • Выбор версии PHP-FPM.
    • Раздел предупреждений и рекомендаций по безопасности.
5.2. Модуль управления Web Server (Apache/Nginx)

  • Страница: "Server Control -> Web Server"
  • Отображение статуса:
    • Текущий статус сервиса (работает/остановлен/ошибка).
    • Дополнительная информация (PID, время работы, нагрузка — если доступно через команду статуса).
  • Действия:
    • Перезагрузить (Reload): Мягкая перезагрузка конфигурации без остановки сервиса.
    • Перезапустить (Restart): Полная остановка и повторный запуск сервиса.
    • Остановить (Stop): Полная остановка сервиса (с предупреждением).
    • Запустить (Start): Запуск остановленного сервиса.
  • Отображение конфигурации (read-only): Возможность просмотреть содержимое основного конфигурационного файла веб-сервера (например, nginx.conf или httpd.conf). Только для чтения.
5.3. Модуль управления PHP (PHP-FPM)

  • Страница: "Server Control -> PHP"
  • Отображение статуса:
    • Текущий статус сервиса PHP-FPM.
    • Текущая используемая версия PHP.
  • Просмотр и изменение php.ini параметров:
    • Список ключевых параметров, которые можно редактировать (через xf:eek:ption_group или кастомный интерфейс):
      • upload_max_filesize
      • post_max_size
      • memory_limit
      • max_execution_time
      • max_input_vars
      • display_errors (с предупреждением о безопасности для production)
      • error_reporting
      • date.timezone
      • Другие, часто используемые.
    • Каждый параметр должен быть представлен в виде формы ввода с текущим значением и возможностью его изменения.
    • После изменения параметров должна быть кнопка "Сохранить и перезапустить PHP-FPM".
  • Действия:
    • Перезапустить PHP-FPM: Полная остановка и повторный запуск сервиса для применения новых настроек.
  • Кэширование PHP: Возможность очистки opcache (если используется и команда доступна).
5.4. Модуль управления MySQL

  • Страница: "Server Control -> MySQL"
  • Отображение статуса:
    • Текущий статус сервиса (работает/остановлен/ошибка).
    • Версия MySQL/MariaDB.
  • Просмотр и изменение my.cnf параметров:
    • Список ключевых параметров, которые можно редактировать (через xf:eek:ption_group или кастомный интерфейс):
      • max_connections
      • innodb_buffer_pool_size
      • query_cache_size (если используется)
      • wait_timeout
      • interactive_timeout
      • key_buffer_size
      • Другие, часто используемые.
    • Каждый параметр должен быть представлен в виде формы ввода с текущим значением и возможностью его изменения.
    • После изменения параметров должна быть кнопка "Сохранить и перезапустить MySQL".
  • Действия:
    • Перезапустить MySQL: Полная остановка и повторный запуск сервиса для применения новых настроек.
5.5. Общие функции

  • Логирование действий:
    • Каждое действие (перезапуск, изменение параметра, попытка выполнения команды) должно быть записано в журнал.
    • Журнал должен содержать: дату/время, администратора, тип действия, измененный параметр (если применимо), результат (успех/ошибка), полный вывод команды (если есть).
    • Интерфейс для просмотра журнала в админ-панели.
  • Система разрешений:
    • Интеграция с системой разрешений администраторов XenForo. Возможность назначать, какие группы администраторов могут управлять каждым из сервисов или выполнять определенные действия.
  • Валидация:
    • Строгая валидация всех пользовательских вводов (числовые значения, строки, пути к файлам).
    • Проверка существования файлов и доступности команд перед их выполнением.
  • Резервное копирование и восстановление конфигураций:
    • Перед изменением любого конфигурационного файла плагин должен создавать его резервную копию (например, с отметкой времени).
    • Должна быть возможность восстановить предыдущую версию конфигурационного файла из этих бэкапов.
6. Технические детали и реализация

  • XenForo API: Использование стандартных паттернов и API XenForo для разработки плагинов (Controller, Entity, Repository, Template, Option, Permission).
  • Взаимодействие с сервером:
    • Использование функций PHP exec() или shell_exec() для выполнения системных команд. Крайне важно: Ограничить эти вызовы до "белого списка" заранее определенных команд и параметров, а также использовать escapeshellarg() для любых переменных, передаваемых в команды.
    • Для чтения/записи конфигурационных файлов использовать file_get_contents() и file_put_contents(). Убедиться, что пользователь, под которым работает веб-сервер, имеет права на чтение/запись этих файлов (что само по себе является потенциальной проблемой безопасности, поэтому рекомендуется использовать скрипты с sudo).
  • Пользователь www-data и sudo:
    • Поскольку XenForo работает от имени пользователя веб-сервера (часто www-data), прямое выполнение команд вроде systemctl restart без пароля невозможно.
    • Рекомендуемое решение: На сервере должны быть настроены правила sudoers (файл /etc/sudoers или /etc/sudoers.d/), которые позволяют пользователю www-data выполнять конкретные, заранее определенные команды без запроса пароля (например, sudo /usr/bin/systemctl reload nginx).
    • Плагин будет вызывать эти команды с sudo.
    • Пример записи в sudoers: www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl reload nginx, /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php8.x-fpm, /usr/bin/systemctl restart mysql Или более безопасно, через обертку: www-data ALL=(ALL) NOPASSWD: /path/to/my_xenforo_server_control_script.sh Где my_xenforo_server_control_script.sh будет содержать логику для вызова нужных systemctl команд.
  • Парсинг конфигурационных файлов:
    • Для php.ini и my.cnf потребуется логика для парсинга файлов, поиска и замены значений параметров, а затем записи файла обратно. Учитывать комментарии и разные форматы строк.
  • Обработка ошибок:
    • В случае неудачи выполнения команды, плагин должен отобразить детальное сообщение об ошибке, включая вывод stderr команды.
Хоть где-то ты не до меня докапываешься)

Мне чуть кажется, работать за такие ценники - это не уважать самого себя
Я просто пытаюсь аудиторию школьников собрать
 
Активный
Регистрация
26 Апр 2022
Сообщения
819
Сэр, подвиньтесь, такого перспективного разработчика должен забрать я.

Так вот, мне нужен плагин чтоб я удаленно мог управлять веб-сервером из админ панели, вот ТЗ:
1. Общее описание

Плагин "Server Control Panel" предназначен для предоставления администраторам XenForo удобного интерфейса для мониторинга и базового управления ключевыми компонентами серверной инфраструктуры (веб-сервер, PHP, MySQL) напрямую из админ-панели XenForo. Цель — упростить частые операции по настройке и перезапуску сервисов, сокращая необходимость прямого доступа к SSH.

2. Версия XenForo

  • Требуемая версия: XenForo 2.3.x
3. Цели плагина

  • Обеспечить возможность перезапуска/перезагрузки веб-сервера (Apache/Nginx), PHP-FPM и MySQL.
  • Предоставить интерфейс для просмотра и изменения ключевых параметров php.ini.
  • Предоставить интерфейс для просмотра и изменения ключевых параметров my.cnf.
  • Отображать текущий статус управляемых сервисов.
  • Вести логи всех действий, выполненных через плагин.
  • Обеспечить высокий уровень безопасности, предотвращая несанкционированный доступ и потенциальные уязвимости.
4. Нефункциональные требования

  • Безопасность:
    • Все действия должны быть доступны только пользователям с соответствующими разрешениями администратора XenForo.
    • Любое выполнение системных команд (через exec, shell_exec и т.д.) должно быть крайне осторожным, с полной валидацией входных данных и использованием "белых списков" разрешенных команд/параметров.
    • Должна быть возможность указать, какие команды требуют sudo и какие пользователи могут их выполнять (путем настройки sudoers на сервере). Плагин не должен запрашивать пароль.
    • Конфигурационные файлы (пути к ним, команды перезапуска) должны храниться в защищенном месте (например, в системных настройках XenForo, а не в открытом коде).
    • Предупреждения о потенциальной опасности изменения настроек должны быть явно видны.
  • Производительность: Плагин не должен создавать чрезмерную нагрузку на сервер. Запросы к сервисам должны быть быстрыми.
  • Удобство использования (UX): Интуитивно понятный интерфейс в админ-панели XenForo, с четкими описаниями полей и действий.
  • Надежность: Устойчивость к ошибкам при выполнении команд. Четкое информирование пользователя об успехе или неудаче операции.
  • Локализация: Все текстовые элементы должны быть реализованы через систему фраз XenForo.
5. Функциональные требования

5.1. Административный интерфейс (Admin CP)


  • Новый раздел/меню: В админ-панели XenForo должен быть создан новый раздел, например, "Server Control".
  • Главная страница плагина ("Dashboard"):
    • Краткий обзор состояния всех управляемых сервисов (Web Server, PHP-FPM, MySQL).
    • Возможность быстрого перезапуска/перезагрузки для каждого сервиса.
    • Ссылки на более детальные страницы настроек каждого модуля.
  • Страница настроек плагина:
    • Настройка путей к конфигурационным файлам (e.g., /etc/php/8.x/fpm/php.ini, /etc/nginx/nginx.conf, /etc/mysql/my.cnf).
    • Настройка команд для проверки статуса сервисов (e.g., systemctl status nginx, pgrep -x php-fpm).
    • Настройка команд для перезагрузки/перезапуска сервисов (e.g., sudo systemctl reload nginx, sudo systemctl restart php8.x-fpm, sudo systemctl restart mysql).
    • Выбор типа веб-сервера (Apache/Nginx).
    • Выбор версии PHP-FPM.
    • Раздел предупреждений и рекомендаций по безопасности.
5.2. Модуль управления Web Server (Apache/Nginx)

  • Страница: "Server Control -> Web Server"
  • Отображение статуса:
    • Текущий статус сервиса (работает/остановлен/ошибка).
    • Дополнительная информация (PID, время работы, нагрузка — если доступно через команду статуса).
  • Действия:
    • Перезагрузить (Reload): Мягкая перезагрузка конфигурации без остановки сервиса.
    • Перезапустить (Restart): Полная остановка и повторный запуск сервиса.
    • Остановить (Stop): Полная остановка сервиса (с предупреждением).
    • Запустить (Start): Запуск остановленного сервиса.
  • Отображение конфигурации (read-only): Возможность просмотреть содержимое основного конфигурационного файла веб-сервера (например, nginx.conf или httpd.conf). Только для чтения.
5.3. Модуль управления PHP (PHP-FPM)

  • Страница: "Server Control -> PHP"
  • Отображение статуса:
    • Текущий статус сервиса PHP-FPM.
    • Текущая используемая версия PHP.
  • Просмотр и изменение php.ini параметров:
    • Список ключевых параметров, которые можно редактировать (через xf:eek:ption_group или кастомный интерфейс):
      • upload_max_filesize
      • post_max_size
      • memory_limit
      • max_execution_time
      • max_input_vars
      • display_errors (с предупреждением о безопасности для production)
      • error_reporting
      • date.timezone
      • Другие, часто используемые.
    • Каждый параметр должен быть представлен в виде формы ввода с текущим значением и возможностью его изменения.
    • После изменения параметров должна быть кнопка "Сохранить и перезапустить PHP-FPM".
  • Действия:
    • Перезапустить PHP-FPM: Полная остановка и повторный запуск сервиса для применения новых настроек.
  • Кэширование PHP: Возможность очистки opcache (если используется и команда доступна).
5.4. Модуль управления MySQL

  • Страница: "Server Control -> MySQL"
  • Отображение статуса:
    • Текущий статус сервиса (работает/остановлен/ошибка).
    • Версия MySQL/MariaDB.
  • Просмотр и изменение my.cnf параметров:
    • Список ключевых параметров, которые можно редактировать (через xf:eek:ption_group или кастомный интерфейс):
      • max_connections
      • innodb_buffer_pool_size
      • query_cache_size (если используется)
      • wait_timeout
      • interactive_timeout
      • key_buffer_size
      • Другие, часто используемые.
    • Каждый параметр должен быть представлен в виде формы ввода с текущим значением и возможностью его изменения.
    • После изменения параметров должна быть кнопка "Сохранить и перезапустить MySQL".
  • Действия:
    • Перезапустить MySQL: Полная остановка и повторный запуск сервиса для применения новых настроек.
5.5. Общие функции

  • Логирование действий:
    • Каждое действие (перезапуск, изменение параметра, попытка выполнения команды) должно быть записано в журнал.
    • Журнал должен содержать: дату/время, администратора, тип действия, измененный параметр (если применимо), результат (успех/ошибка), полный вывод команды (если есть).
    • Интерфейс для просмотра журнала в админ-панели.
  • Система разрешений:
    • Интеграция с системой разрешений администраторов XenForo. Возможность назначать, какие группы администраторов могут управлять каждым из сервисов или выполнять определенные действия.
  • Валидация:
    • Строгая валидация всех пользовательских вводов (числовые значения, строки, пути к файлам).
    • Проверка существования файлов и доступности команд перед их выполнением.
  • Резервное копирование и восстановление конфигураций:
    • Перед изменением любого конфигурационного файла плагин должен создавать его резервную копию (например, с отметкой времени).
    • Должна быть возможность восстановить предыдущую версию конфигурационного файла из этих бэкапов.
6. Технические детали и реализация

  • XenForo API: Использование стандартных паттернов и API XenForo для разработки плагинов (Controller, Entity, Repository, Template, Option, Permission).
  • Взаимодействие с сервером:
    • Использование функций PHP exec() или shell_exec() для выполнения системных команд. Крайне важно: Ограничить эти вызовы до "белого списка" заранее определенных команд и параметров, а также использовать escapeshellarg() для любых переменных, передаваемых в команды.
    • Для чтения/записи конфигурационных файлов использовать file_get_contents() и file_put_contents(). Убедиться, что пользователь, под которым работает веб-сервер, имеет права на чтение/запись этих файлов (что само по себе является потенциальной проблемой безопасности, поэтому рекомендуется использовать скрипты с sudo).
  • Пользователь www-data и sudo:
    • Поскольку XenForo работает от имени пользователя веб-сервера (часто www-data), прямое выполнение команд вроде systemctl restart без пароля невозможно.
    • Рекомендуемое решение: На сервере должны быть настроены правила sudoers (файл /etc/sudoers или /etc/sudoers.d/), которые позволяют пользователю www-data выполнять конкретные, заранее определенные команды без запроса пароля (например, sudo /usr/bin/systemctl reload nginx).
    • Плагин будет вызывать эти команды с sudo.
    • Пример записи в sudoers: www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl reload nginx, /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php8.x-fpm, /usr/bin/systemctl restart mysql Или более безопасно, через обертку: www-data ALL=(ALL) NOPASSWD: /path/to/my_xenforo_server_control_script.sh Где my_xenforo_server_control_script.sh будет содержать логику для вызова нужных systemctl команд.
  • Парсинг конфигурационных файлов:
    • Для php.ini и my.cnf потребуется логика для парсинга файлов, поиска и замены значений параметров, а затем записи файла обратно. Учитывать комментарии и разные форматы строк.
  • Обработка ошибок:
    • В случае неудачи выполнения команды, плагин должен отобразить детальное сообщение об ошибке, включая вывод stderr команды.
7. Этапы разработки (высокоуровнево)

  1. Проектирование базы данных: Создание сущности для логов действий.
  2. Основные контроллеры и маршруты: Настройка базовой структуры админ-панели.
  3. Настройки плагина: Реализация страницы настроек для путей и команд.
  4. Модуль Web Server: Статус и действия перезапуска.
  5. Модуль PHP: Статус, чтение/запись php.ini, перезапуск.
  6. Модуль MySQL: Статус, чтение/запись my.cnf, перезапуск.
  7. Логирование: Интеграция записи и просмотра логов.
  8. Система разрешений: Интеграция с XenForo.
  9. Резервное копирование/Восстановление: Реализация механизма бэкапов.
  10. Тестирование: Тщательное тестирование всех функций, особенно на безопасность и обработку ошибок.
8. Риски и предупреждения

  • Риск безопасности 1-го уровня: Прямое выполнение системных команд из веб-приложения является огромной потенциальной уязвимостью. Необходимо уделить максимум внимания настройкам sudoers и валидации входных данных. Этот плагин НИКОГДА не должен запускаться на сервере, где не было ручной настройки sudoers для строго определенных команд!
  • Риск нарушения стабильности: Неправильно измененные параметры конфигурации или ошибочный перезапуск сервисов могут привести к недоступности сайта или всего сервера.
  • Зависимость от ОС/Дистрибутива: Команды systemctl, пути к файлам могут отличаться в разных дистрибутивах Linux (Ubuntu, CentOS и т.д.). Плагин должен быть максимально гибким в настройке этих команд/путей.
  • Права доступа: Веб-серверный пользователь (www-data) может не иметь прав на чтение/запись системных конфигурационных файлов. Этот аспект также должен быть решен через sudoers или специальные скрипты-обертки.
По оплате: Команда KAIF SECURITY LTD готова предложить за данную работу 1.000$. Мы надеемся на обратную связь.
 
Сверху