1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
  3. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем caver, 9 июл 2013.

  1. Автор темы
    caver

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15
    Накропал на 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: Отзывы, добавления, пожелания приветствуются.
     
    Freech, NC22, tiger'ok и 2 другим нравится это.
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Не работает, никакого ответа лаунчеру не идет.
     
    zuma2 нравится это.
  3. Автор темы
    caver

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15
    Лаунчер я брал из соседней темы.
    Для того чтобы проходила авторизация надо в табличке users создать собственно юзера

    Код:
    insert into users ( mail, password ) values ( '[email protected]', md5(md5('test')) );
    соответственно будет login: [email protected] пароль: test

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

    PS: пересобрал бутстрап, теперь он радостно выкачивает лаунчер, который качает либы с клиентом
    Остаток вечера убил на экзерсисы с Forge и как его всовывать в патченного клиента
    постиг дао mcp/forge src :)
    Клиент делает робкие попытки получить скины/плащи с моего сервера, джойнсервер тоже запатчил.
    Завтра буду декомпилить Optifine и дружить его с форжем.
    Вот картиночка с логами и результатом запуска.
    [​IMG]
     
    book777 нравится это.
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    @caver, Так касяк исправлен? У меня от php никакого ответа не было при авторизации. Или надо к php какую то либу подключать?
     
  5. Автор темы
    caver

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15
    В смысле никакого ответа ? Посмотри логи апача, что там пишет то?
     
  6. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Все разобрался. Написал бы сразу что майл нужно писать вместо логина.
     
  7. Trespasser

    Trespasser Старожил Пользователь

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

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15
    Поднял специально для экспирементов и проверки
    http://dev.caver.org/
    В данный момент отвечает на
    ===
    /game/joinserver.jsp #заглушка, fake ответ
    /game/checkserver.jsp #заглушка, fake ответ
    /authenticate
    /invalidate
    /refresh
    ===
    Пользователи:
    test0test.com - test9test.com , пароль "test" т.е. логины все от 0 до 9
    Накропал небольшой скриптик, до оптика ПОКА еще недотянулся, там нужно патчи писать, просто не успеваю.
     
  9. alexandrage

    alexandrage Старожил Пользователь

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

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15
    По идее это должно рулится из настроек 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, то в аккаунт менеджере можно создать несколько профайлов и оттуда же рулить активным в данный момент.
     
  11. Trespasser

    Trespasser Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    trespasser
    @alexandrage, возможно в ранних версиях форджа 1.6.2,
    с последними у меня не прокатило. И на форуме форджа по поводу этого крик вчера был.
     
  12. Автор темы
    caver

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15
    Кстати посмотрел как работает система аутентификации клиента, могу конечно ошибаться но логика выходит такая:
    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 !!!

    Лечится через -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
     
    Trespasser нравится это.
  13. Trespasser

    Trespasser Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    trespasser
    ага спс, последнее для оптика нужно, а первый параметр я вчера не нашел.
    Все полетело на ура. фордж+ карта + оптик. через батник, можно переводить и кидать народу :)
     
  14. Автор темы
    caver

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15
    "Не советую, съедят" (с) там не так все просто с этими хитропопыми run-time патчами и пересекающимися изменениями, т.е. зачастую есть изменения в MCP Forge и Оптике. И вот "со всей это хренью надо взлететь". Форджик с патеченным клиентом я вроде подружил, но это на уровне сорцов и отказа от run-time патча.
    С оптиком все гораздо грустнее.
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    @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 запуске нет ответа никакого.
     
    zuma2 нравится это.
  16. Автор темы
    caver

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15

    Мде, где то я ошибся малость при разборе логики работы, мне казалось, что клиент при 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 авторизации.
     

    Вложения:

    poiNt_3D нравится это.
  17. Сало

    Сало Активный участник Пользователь

    Баллы:
    88
    Skype:
    cajio.ru
    Имя в Minecraft:
    CAJIO
    Собственно почему хоронить тему?
     
  18. Автор темы
    caver

    caver Активный участник Пользователь

    Баллы:
    88
    Skype:
    caver15
    А нафига попу боян ? ;)
     
  19. NC22

    NC22 Старожил Пользователь

    Баллы:
    153
    Имя в Minecraft:
    NC22
    @caver, Спасибо за опубликованные доработки.

    Думаю ответил на этот вопрос на гитхабе. Если вкратце - разработка толковых спецификаций это всегда полезно. Тем более в этой теме уже раскрыт ряд вопросов, осталось оформить.
     
  20. AnderseH

    AnderseH Активный участник

    Баллы:
    63
    Имя в Minecraft:
    AndrUHO
    Хелп! Как заставить лаунчер скачивать мои файлы. Юзаю эту авторизацию, и уже битую неделю капаюсь с Minecraft.Download. Объясните идиоту, а то уже реально напрягает.
     

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