Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб NTLauncher C (Си) ServerManager - обвязка NTLauncher'а для UNIX систем

serega6531

Старожил
Девелопер
Пользователь
Баллы
173
b7b93a0bd486f5faaa91c401bc2855bc.png
Обвязка больше не разрабатывается. Все исходники на github'е.

Что это?

Это — копия официальной обвязки NTLauncher'а от лалки @HoShiMin'а. Недостаток его обвязки в том, что она написана на Delphi, а значит не работает на Unix системах. Так не пойдёт — сказал я, и переписал её на чистом C. В чём преимущества этой обвязки?

Преимущества:
  1. Написана на чистом C, а значит быстрая и поддерживает самую распространённую серверную ОС — Linux.
  2. Может хранить данные в MySQL базе данных, что ускоряет работу и улучшает взаимодействие администратора с данными. Также это открывает простор для web-скриптов на сайте, например, вы можете сделать регистрацию и в лаунчере, и на сайте.
  3. Поддерживает почти все функции, что и в оригинальной обвязке.
  4. Собственный модуль хеширования на основе OpenSSL, поддерживающий несколько вариантов хешей (в т.ч. md5, SHA1, SHA256, SHA512 и другие).
  5. Автоматическое удаление вайтлиста (Защитит при неожиданных выключениях сервера).
  6. Открытый исходный код.
  7. Хорошо документирована.
  8. Легкая в настройке.
Настройка:
Настроить эту обвязку очень просто. Откройте файл settings.h и найдите следующий текст:
Код:
/* НАСТРОЙКИ */
#define SERVER_PORT 65533 //Порт, на котором запущен сервер
#define MAXTHREADS 15 //Максимальное количество одновременно обрабатываемых игроков
#define CLIENT_VERSION 0 //Версия клиента
#define CLIENT_HASH "58e8c6b9374e0d4ff71df7ba3ba136cc" //Хеш клиента
#define LAUNCH_STRING "cd server && java -Xms512M -Xmx512M -jar craftbukkit.jar" //Строка, запускающая сервер. Обязателен переход в папку сервера.
#define PATH_TO_WHITELIST "server/white-list.txt"
#define TIME_TO_ENTER 90 //Время на вход в игру (в секундах)
#define HASH_ALGO HASH_MD5 //Алгоритм хеширования
#define DATABASE DB_MYSQL //Где хранится информация об игроках. Может быть DB_MYSQL или DB_FILE
Как видите, комментарии после каждой строки объясняют назначение каждого параметра. Если вы выбрали файлы, как базу данных, но вы можете изменить параметр HWIDS_DIR ("PlayersHWIDs/" по умолчанию). Она показывает папку для хранения Hardware ID игроков. А если вы выбрали MySQL, как базу данных, то вы должны настроить данные для подключения. Вот они:
Код:
/* Настройки MYSQL */
#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER "authserver"
#define MYSQL_PASS "authserverpass"
#define MYSQL_PORT 3306
#define MYSQL_DB "authserver"
Тут название каждого параметра само говорит, за что он отвечает.

Компиляция:
После настройки необходимо скомпилировать обвязку. Для этого перейдите в папку с обвязкой (cd NTLauncher-authserver/) и используйте команду make СС=<compiller>, где <compiller> - ваш любимый C компилятор. Вы обязательно должны указать компилятор, иначе обвязка не скомпилируется.
Внимание! Для работы нужен OpenSSL и MySQL C Connector.

Команды консоли:
  • banuser <name> - банит все HWID'ы пользователя
  • banhwid <hwid> - банит введённый HWID
  • stop - выключает сервер и обвязку
Только если вы выбрали MySQL как БД:
  • unbanuser <name> - Разбанивает HWID'ы пользователя
  • unbanhwid <hwid> - Разбанивает выбранный HWID
Остальные команды посылаются напрямую серверу.

Скриншот:
b3acd5de35bf258b7dc021dcab9f021f.png

Ссылки:
GitHub репозиторий проекта - тут
Ссылка на zip архив с последним коммитом - вот он
Ссылка на оригинальную обвязку - вот она

Спасибо @HoShiMin и @Asmodai за помощь в разработке.
 
Последнее редактирование:
Добавлены солёные хеши. Настройки перемещены в settings.h.
Работаю над хранением данных в mysql и разбаном.
Добавил поддержку MySQL (commit). @HoShiMin, твой ход! :D
Обновил дизайн темы, улучшил инструкции.
Приглашаю посмотреть @alexandrage.
 
Забавное будущее у такой дырявой авторизации. Я доверяю online mode true на все овер100% и никогда не променяю на подобную клоаку.
 
Я уже предвижу автобатники на ммо

Узнаете когда лаунчер наберет популярность и его начнут ставить на проЭкты.
Подсказка. Сервер с этим лаунчером должен работать с online mode false
Да, пока не кончится время авторизации, можно будет зайти с любого батника. Все претензии к @HoShiMin
 
Забавное будущее у такой дырявой авторизации. Я доверяю online mode true на все овер100% и никогда не променяю на подобную клоаку.
Не твои ли слова, что все можно обойти? Данный лаунчер прекрасно справляется с обязанностями лаунчера: скачал, распаковал, запустил. Хотя тут можно согласится, не понятно зачем было портить лаунчер такой странной авторизацией.
Спасибо @serega6531 за реализацию для Unix систем.
Как насчет реализации функции авторестарта сервера?
 
Хотелось бы спросить - зачем нужен авторестарт сервера? В том же RemoteToolkit есть авторестарт, достаточно указать его вместо ядра сервера.
 
Хотелось бы спросить - зачем нужен авторестарт сервера? В том же RemoteToolkit есть авторестарт, достаточно указать его вместо ядра сервера.
А он запуститься? Он у меня сейчас и стоит, поэтому и предложил, я пока на стадии "ковыряюсь", ничего не проверял. Да и коль ставим серверную утилиту для лаунчера, было бы приятно если бы она имела именно серверный функционал, а не чисто моста для лаунчера.
 
А он запуститься? Он у меня сейчас и стоит, поэтому и предложил, я пока на стадии "ковыряюсь", ничего не проверял. Да и коль ставим серверную утилиту для лаунчера, было бы приятно если бы она имела именно серверный функционал, а не чисто моста для лаунчера.
Да, достаточно добавить параметры к запуску. Либо можно использовать любой удобный плагин рестарта.
 
Не твои ли слова, что все можно обойти? Данный лаунчер прекрасно справляется с обязанностями лаунчера: скачал, распаковал, запустил. Хотя тут можно согласится, не понятно зачем было портить лаунчер такой странной авторизацией.
Спасибо @serega6531 за реализацию для Unix систем.
Как насчет реализации функции авторестарта сервера?
Я о том и говорю, лаунчер неплохой, но зачем дырявую авторизацию то делать?
 
@serega6531, снова ты дырок наделал. Допиши весь функционал какой нужен, я уж тогда сам скачаю, секьюрность улучшу.
Постарайся поменьше вставлять #if DATABASE == DB_FILE, там можно в функции это дело вытащить. Особенно ради объявления переменной в начале функции. В C99 и выше это уже не обязательно, скорее традиция. Можно и перед использующим эту переменную кодом. Удобство чтения без лишних ifdef в логике важнее.
 
@serega6531, снова ты дырок наделал. Допиши весь функционал какой нужен, я уж тогда сам скачаю, секьюрность улучшу.
Постарайся поменьше вставлять #if DATABASE == DB_FILE, там можно в функции это дело вытащить. Особенно ради объявления переменной в начале функции. В C99 и выше это уже не обязательно, скорее традиция. Можно и перед использующим эту переменную кодом. Удобство чтения без лишних ifdef в логике важнее.
Сейчас делаю перезапуск сервера при краше, но не могу протестировать. Сервер не желает ложиться, а при убийстве процесса kill'ом pid остаётся в списке (pidof java).
@serega6531, снова ты дырок наделал. Допиши весь функционал какой нужен, я уж тогда сам скачаю, секьюрность улучшу.
Постарайся поменьше вставлять #if DATABASE == DB_FILE, там можно в функции это дело вытащить. Особенно ради объявления переменной в начале функции. В C99 и выше это уже не обязательно, скорее традиция. Можно и перед использующим эту переменную кодом. Удобство чтения без лишних ifdef в логике важнее.
Улучшите секьюрность сейчас. Лучше сразу на github'е.
Решил больше не разрабатывать эту обвязку. Сделал новый коммит с почти доделанным авторестартом сервера, кому надо - переделает.
 
Последнее редактирование:
основа вебки софт? значит не веб
 

Поделиться этой страницей

Назад
Верх