Туториал [урок] система авторизации клиента

  • Автор темы Автор темы byxar
  • Дата начала Дата начала
По гугли, вот пример: http://www.rubukkit.org/threads/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-bad-login.30380
Запрос к MySQL точно правилен?
Или... Вообщем: нужно взять чистый клиент, чистый лаунчер и проверить...



Залил новый лк от NC22, решил подключиться, сервер вылетел с такой ошибкой

java.lang.NoSuchMethodError: iu.<init>(Lit;Lorg/bukkit/craftbukkit/v1_4_R1/Craft Server;)V
at it.a(NetLoginHandler.java:171)
at cw.a(Packet205ClientCommand.java:45)
at cg.b(TcpConnection.java:467)
at it.c(NetLoginHandler.java:90)
at hu.a(ServerListenThread.java:58)
at ht.b(DedicatedServerListenThread.java:33)
at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:981)
at ho.r(DedicatedServer.java:309)
at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:857)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:744)
at fy.run(ThreadMinecraftServer.java:16)
 
Сделал все согласно инструкции, но сервер упрямо отказывается пускать игроков, даже если в скриптах тупо прописать заглатывание переменных и вывод положительного ответа для сервера вроде

Код:
$user = $_GET['user'];
$serverid = $_GET['serverId'];
echo "YES";

Код:
$sessionid = $_GET['sessionId'];
$user = $_GET['user'];
$serverid = $_GET['serverId'];
echo "OK";

Версия 1.6.4, в чем может быть корень проблемы?
Самое забавное, что несмотря на отредактированные классы, он продолжает пускать только игроков с лицензионной сессией.
 
Последнее редактирование:
Возможно с генерацией или сохранением сессии что-то не так, и у тебя какая версия майна?
 
При попытке зайти на сервер выдает failed to verify username...НО иногда пускает..где-то 1/20 раз...ссылки прописаны в клиенте и в ядре правильно...
Кто подскажет, чо за фигня?
Вангую что колонка server создана неправильно и обрезает строку. Удали и пересоздай server varchar 255.
 
А как делать, что-бы моды качал? client.zip не качает!
 
Код:
Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 11

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 11

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 11

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 11

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 11

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 11

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 11

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 11

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 17

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 17

Notice: Undefined variable: crypt in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 24

Notice: Undefined variable: realPass in /var/www/minetea1/data/www/mineteam.baims.net/auth.php on line 32
Bad login

Вот такое вылезло при проверке скриптом)))
Как это исправить?Буду признателен)
 
Да и ещё Зделай пажалуста register.php
Как-нибудь потом, может быть...

Ох, маленький намёк, "зделай" - это питомец проблемы.
Система авторизации клиента позволяет зайти на сервер только игрокам использующим ваш лаунчер и клиент. Соответственно отпадает надобность в плагинах авторизации.
Для использования этой системы нужно скачать исходники лаунчера(смотрите прикрепленные файлы), написанный мною скрипт(смотрите прикрепленные файлы), а также mcp44 для редактирования клиента и официального сервера или In Class Translator(смотрите прикрепленные файлы) для редактирования bukkit сервера.
Заливаем скрипты на свой сайт, все в одну папку и настраиваем connect.php под свою базу данных. Если у вас уже есть таблица с аккаунтами, то нужно добавить в нее колонки server и session. Если нет, то импортируйте файл accounts.sql в свою MySQL базу. Также обязательно нужно импортировать файл data.sql
Описание полей в таблице data:
launcher-version : версия лаунчера(если не знаете зачем оно, не трогайте)
last-game-build : версия клиента(любое значение, указывать без точек), это нужно изменять когда вы заливаете новую версию клиента

Теперь открываем исходники лаунчера в eclipse или NetBeans. В файле GameUpdater.java заменяем http://s3.amazonaws.com/MinecraftDownload/ на ссылку откуда будет качаться клиент, в файле LauncherFrame.java заменяем https://login.minecraft.net/ на ссылку к файлу auth.php , в файле LoginForm.java заменяем http://www.minecraft.net/register.jsp на ссылку к своей регистрации и http://www.minecraft.net/download.jsp на ссылку загрузок на своем сайте(не обязательно) и компилируем(как это сделать: ссылка).
Теперь откройте папку куда распаковали mcp44 и закиньте клиентскую папку bin и чистый minecraft_server.jar(если у вас официальный сервер) в папку jars. Декомпилируйте. Откройте src\minecraft\net\minecraft\src\NetClientHandler.java в любом текстовом редакторе и замените http://session.minecraft.net/game/joinserver.jsp?user= на ссылку к файлу joinserver.php и обязательно оставьте ?user= в конце. Потом откройте src\minecraft_server\net\minecraft\src\ThreadLoginVerifier.java в любом текстовом редакторе и замените http://session.minecraft.net/game/checkserver.jsp?user= на ссылку к файлу checkserver.php и обязательно оставьте ?user= в конце. Рекомпилируйте и запустите файл reobfuscate.bat. Теперь закинте файл в папке reobf\minecraft в minecraft.jar и файл в папке reobf\minecraft_server в minecraft_serer.jar. Все, запускайте сервер c параметром online-mode=true и пробуйте.
Если используете bukkit сервер, то извлеките из craftbukkit-0.0.1-SNAPSHOT.jar файл net\minecraft\server\ThreadLoginVerifier.class, откройте его в
In Class Translator и замените http://session.minecraft.net/game/checkserver.jsp?user= на ссылку к файлу checkserver.php и обязательно оставьте ?user= в конце. Закинте файл ThreadLoginVerifier.class обратно в craftbukkit-0.0.1-SNAPSHOT.jar. Все, запускайте сервер c параметром online-mode=true и пробуйте.
Скрипт поддерживает md5 хеш и хеш плагина xauth. Т.е. если у вас стоял плагин авторизации, вы без труда можете перейти на эту систему.


скрипты для проверки
простая регистрация с мд5 хэшем

Файлы, которые нужно редактировать In Class Translator'ом в версии 1.0.0
в клиенте:

Код:
abp.class - путь к joinserver.php
di.class - путь к папке со скинами
vi.class - путь к папке с плащами
zb.class - путь к папке со скинами
vanilla server:
Код:
n.class - путь к checkserver.php
bukkit:
Код:
ничего не поменялось

Возникает несссколько вопросссов, сссир:
1 - Где искать сервер для MCP и почему он абортит сразу же после того как не обнаружил сервер, в статье написано что всё норм, я конечно знаю что на minecraft-mods.ru или ru minecraft wiki наверняка осталась версия 1.5.2 но ума не приложу - ЗАЧЕМ ЖЕ абортить!?

2 - Чёрта какого ни фига не работает, собран, точнее, не собран в Java SE, среде eclipse, с ссылками норм, с лаунчером тоже Апплет говорит минекрафт в норме.
 
На 1.6.4 Эта связка работает?
 
По подробнее про connect.php например где узнать IP и Port датабазы, использую бесплатный хостинг hostinger.ru да бы не тратить деньги на простую тренировку.
 
Подскажите а такую штуку можно провернуть с лаунчером Сашка?
 
хм, тоже пишет Bad login, майн 1.4.7, сервер MCPC
в клиенте поменял ссылку в классе: ayh.class
на сервере : iu.class
че за мазафака?
P.S. Лаунчер сашка.
 
Насмешил, так насмешил... не было бы рук не написал этого, грубость=false.
А если честно что может быть не так?
Поищи еще ссылки на авторизацию в клиенте, кстати напиши еще пару туторов на майн.су, а то все снесли они...
 
Назад
Верх