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

Веб [alpha] PHP авторизация для 1.6.x

caver

Активный участник
Пользователь
Баллы
88
Накропал на php систему авторизации для 1.6.x

Warning! Говнокод детектед, вы предупреждены.

https://github.com/caver115/mineauth16x
Done: /authenticate /invalidate /refresh joinserver/checkserver
Наработки включены в webMCR

=== Testing environment ON ===
Желающие протестить свои сборки серверов/клиентов
http://dev.caver.org/
Пользователи:
[email protected] - [email protected] , пароль "test" т.е. логины все от 0 до 9
По сравнению с официальным надо изменить домен на http://dev.caver.org
Далее следующие пути /game/joinserver.jsp;/game/checkserver.jsp;etc.. трогать НЕ НАДО.
=== Testing environment OFF ===

2013.07.14: Протокол авторизации имплементирован для webMCR в master ветке на github
2013.07.12: Добавил тулзу для генерации XML файлов ресурсов по аналогии с официальным сервером
2013.07.11: Добавил join/check server. Чуток причесал, проверил работу с CraftBukkit и рекомпиленым клиентом

PS: Отзывы, добавления, пожелания приветствуются.
 
Лаунчер я брал из соседней темы.
Для того чтобы проходила авторизация надо в табличке users создать собственно юзера

Код:
insert into users ( mail, password ) values ( '[email protected]', md5(md5('test')) );

соответственно будет login: [email protected] пароль: test

Ну а вообще никто и не говорил, что эта поделка будет "из коробки" работать, пилить и точить еще.
Кстати сегодня весь вечер пользовал эту авторизацию, шероховатости есть. но так вполне себе рабочее.

PS: пересобрал бутстрап, теперь он радостно выкачивает лаунчер, который качает либы с клиентом
Остаток вечера убил на экзерсисы с Forge и как его всовывать в патченного клиента
постиг дао mcp/forge src :)
Клиент делает робкие попытки получить скины/плащи с моего сервера, джойнсервер тоже запатчил.
Завтра буду декомпилить Optifine и дружить его с форжем.
Вот картиночка с логами и результатом запуска.
9251512794_1ccc45a4ac_o.png
 
@caver, Так касяк исправлен? У меня от php никакого ответа не было при авторизации. Или надо к php какую то либу подключать?
 
В смысле никакого ответа ? Посмотри логи апача, что там пишет то?
 
@caver, вово как подружить фордж и патченный клиент 1.6.2 а то ошибка
Код:
Error: Could not find or load main class net.minecraft.launchwrapper.Launch
как только meta-inf прибить или оптик закинуть. PS без форджа все пучком, где его долб....ую проверку найти.
 
Поднял специально для экспирементов и проверки
http://dev.caver.org/
В данный момент отвечает на
===
/game/joinserver.jsp #заглушка, fake ответ
/game/checkserver.jsp #заглушка, fake ответ
/authenticate
/invalidate
/refresh
===
Пользователи:
test0test.com - test9test.com , пароль "test" т.е. логины все от 0 до 9
@caver, вово как подружить фордж и патченный клиент 1.6.2 а то ошибка
Код:
Error: Could not find or load main class net.minecraft.launchwrapper.Launch
как только meta-inf прибить или оптик закинуть. PS без форджа все пучком, где его долб....ую проверку найти.

Накропал небольшой скриптик, до оптика ПОКА еще недотянулся, там нужно патчи писать, просто не успеваю.
 
@caver, 1 минус что ник берется из mail@ может исправишь.
@caver, вово как подружить фордж и патченный клиент 1.6.2 а то ошибка
Код:
Error: Could not find or load main class net.minecraft.launchwrapper.Launch
как только meta-inf прибить или оптик закинуть. PS без форджа все пучком, где его долб....ую проверку найти.

Forge спокойно запускает клиент без метаинфы так что не надо. Сегодня скидки на прямые руки и батники, может еще успеешь :).
 
@caver, 1 минус что ник берется из mail@ может исправишь
Forge спокойно запускает клиент без метаинфы так что не надо.
По идее это должно рулится из настроек CMSки, что то типа никнейма
считай это затычкой, никто не мешает это поправить ;)

PHP:
function getAvailableProfiles ($u){
    $u = mysql_real_escape_string($u);
    $dbResult = mysql_query ( "select id, nickname as name from profiles where lower(mail) = lower('$u')  " );
 
    if(mysql_num_rows($dbResult) == 0) {
      createDefaultProfile($u);

Насколько я понял идею всего этого profiles, то в аккаунт менеджере можно создать несколько профайлов и оттуда же рулить активным в данный момент.
 
@alexandrage, возможно в ранних версиях форджа 1.6.2,
Forge спокойно запускает клиент без метаинфы так что не надо. Сегодня скидки на прямые руки и батники, может еще успеешь :).
с последними у меня не прокатило. И на форуме форджа по поводу этого крик вчера был.
 
Кстати посмотрел как работает система аутентификации клиента, могу конечно ошибаться но логика выходит такая:
1. Клиент генерит clientToken
2. приходит к /authenticate и показывает clientToken login password
3. Получает accessToken
...
запуск игры
коннект к серверу
...
4. Клиент идет к MC серверу с коннектом
5. MC сервер генерирует? serverId и отдает клиенту
6. Клиент идет к /game/joinserver.jsp с username accessToken и serverId для валидации
7. MC сервер идет /game/checkserver.jsp с username и serverId для проверки решения о допуске
8. ....
9. ???!!!
10. Profit !!!
@alexandrage, возможно в ранних версиях форджа 1.6.2,
с последними у меня не прокатило. И на форуме форджа по поводу этого крик вчера был.


Лечится через -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
 
Лечится через -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
ага спс, последнее для оптика нужно, а первый параметр я вчера не нашел.
Все полетело на ура. фордж+ карта + оптик. через батник, можно переводить и кидать народу :)
 
Все полетело на ура. фордж+ карта + оптик. через батник, можно переводить и кидать народу :)
"Не советую, съедят" (с) там не так все просто с этими хитропопыми run-time патчами и пересекающимися изменениями, т.е. зачастую есть изменения в MCP Forge и Оптике. И вот "со всей это хренью надо взлететь". Форджик с патеченным клиентом я вроде подружил, но это на уровне сорцов и отказа от run-time патча.
С оптиком все гораздо грустнее.
 
@caver, ошибка в refresh.php. Тестил на денвере. Поставил error_reporting(0); чтоб не выводило ошибку.
Код:
drage.dyndns.org\www\1.6.x\refresh.php on line <i>12</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0580</td><td bgcolor='#eeeeec' align='right'>135504</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='N:\home\alexandrage.dyndns.org\www\1.6.x\refresh.php' bgcolor='#eeeeec'>..\refresh.php<b>:</b>0</td></tr>
</table></font>
<!--error--><br />
<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: Illegal string offset 'mail' in N:\home\alexandrage.dyndns.org\www\1.6.x\refresh.php on line <i>13</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0580</td><td bgcolor='#eeeeec' align='right'>135504</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='N:\home\alexandrage.dyndns.org\www\1.6.x\refresh.php' bgcolor='#eeeeec'>..\refresh.php<b>:</b>0</td></tr>
</table></font>
{"clientToken":"86c1d78d-2dbd-4f69-8da8-ec4101bfd156","accessToken":"e024fc21f77de33902ad91e1d85da9e6","selectedProfile":{"id":"1","name":"zenit"}}
Только это не сильно помогло. 1 рас вводишь майл и пароль, патом при 2ром запуске лаунчера пишет play, а при следующем запуске ошибка в консоли и play offline.
Ошибка от того что при 3 запуске нет ответа никакого.
 
@caver, ошибка в refresh.php. Тестил на денвере. Поставил error_reporting(0); чтоб не выводило ошибку.

Только это не сильно помогло. 1 рас вводишь майл и пароль, патом при 2ром запуске лаунчера пишет play, а при следующем запуске ошибка в консоли и play offline.
Ошибка от того что при 3 запуске нет ответа никакого.


Мде, где то я ошибся малость при разборе логики работы, мне казалось, что клиент при refresh должен получать обновленный accessToken, оказалось нифига подобного.

В refresh.php заокменть
# $accessToken = generate_accessToken( $checkTokenResult['mail'] );
# saveAccessToken( $accessToken, $checkTokenResult['mail'] );
и поменяй 'accessToken' => $accessToken на 'accessToken' => $json->accessToken
Up. Добавил joinserver checkserver
Поправил шапку.
На первый взгляд все работает, дальше хз ;)
Покурил сорцы лаучера из соседней темы, обработал напильником.
Научил выкачивать и синхронизировать моды удаляя всякую бяку из $MC_DIR$/mods
Для генерации XML файла-ресурсов модов собственно нужен простенький пхпшник.
Лежит в Minecraft.Resources/index.php
Собственно тему можно на мой взгляд хоронить ;)
Решил не изобретать "салон с курсистками и шахматами", а просто дописал webMCR.
pull request я в гитхабе отправил, сюда выложу патчик для добавления в webMCR 1.6.x авторизации.
 

Вложения:

Собственно почему хоронить тему?
 
@caver, Спасибо за опубликованные доработки.

А нафига попу боян ?
Думаю ответил на этот вопрос на гитхабе. Если вкратце - разработка толковых спецификаций это всегда полезно. Тем более в этой теме уже раскрыт ряд вопросов, осталось оформить.
 
Хелп! Как заставить лаунчер скачивать мои файлы. Юзаю эту авторизацию, и уже битую неделю капаюсь с Minecraft.Download. Объясните идиоту, а то уже реально напрягает.
 

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

Назад
Верх