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

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

Лаунчер GravitLauncher v5.1

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

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

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

    Баллы:
    66
    Сборка на момент коммита 4167282 от 20 Августа
    [+] Полноценные модули на Java
    Можно писать полноценные модули для сервера. Модули смогут добавлять комманды, authHandler/authProvider/TextureProvider, пользоваться всеми API лаунчсервера и добавлять свои
    Что бы модуль был загружен его достаточно положить в папку modules и перезапустить лаунчсервер
    Новые команды, связанные с модулми: loadModule(загружает модуль по указанному пути), modules(список загруженных модулей)
    [+] Возможность ставить разные скины на разные сервера
    Используйте маску %client% в TextureProvider для использования этой возможности
    Так же в строку запуска сервера добавьте параметр с названием профиля -Dlauncher.title=название
    [+] Сессии
    Теперь можно отличить одного клиента от другого, так как клиент передает в запросе свою сессию
    [+] Возможность выделять более 4Гб оперативной памяти на 64битных системах
    [+] Множество различных фиксов
    Настоятельно рекомендую обновиться до этого билда

    Ссылка на релиз: https://github.com/gravit0/Launcher/releases/tag/15.5-dev
     
    Последнее редактирование: 20 авг 2018
  2. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    Привет! Мне тут скинули ссылку на твой форк, и возможно тебе будет интересно моё мнение как создателя этого лаунчера. Сразу скажу, обидеть я тебя никак не хочу. Мне наоборот очень приятно что кто-то пытается развивать мой лаунчер пока я занята другими проектами. Но...:
    • Насчёт нативной защиты просто говорить ничего не буду, наверное там всё хорошо
    • Насчёт Gradle - вот что хотите мне говорите, но тут от него больше проблем чем пользы и лишние сложности
    • Насчёт модулей на джаве - идея классная, реализация лично мне не нравится
    • Насчёт скинов зависящих от профиля - опять же, идея классная, реализация не нравится, причём тут дело даже не просто в коде как в п.1, а в том ещё как этот профиль идентифицируется сервером
    • Насчёт того что код избавлен он грязных "хаков" - после твоих правок это теперь не хаки а просто костыли которые гораздо более вероятно сломаются в зависимости от условий в которых код работает. Мой код работает на OpenJDK и Oracle JRE, то есть на 100% платформ на которых работает майнкрафт, и там есть гарантия что он всегда будет работать на них корректно и как ожидается. Ты же полагаешься либо на system properties, либо на какие-то левые API и так далее. По мне этого делать не стоило
    • Насчёт защиты от брута - см. п. про модули и скины
    • Не так давно у всех 8ая джава появилась, а ты уже 10 просишь у людей. Многие лаунчеры до сих пор не работают на Java 10 и поэтому игроки её и не ставят
    • Про PHP скрипт и JSON Auth Provider ничего говорить не буду, мне всё-таки больше интересны женщины
    • Симлинки и правда полностью разрешены у тебя в форке, вот только они не мониторятся на изменения на линуксах и винде. Это и было причиной их запрета
    • Возможно JS плагины и не так нужны когда есть "модули", но зачем вырезать было - не совсем понимаю. Как минимум 6 проектов которым я лично писала JS плагины уже не смогут использовать твой форк
    • Про исправления и доработки... Блин. Чувак. Я просто листая коммиты столько логических ошибок в коде нашла, что просто не счесть, которые наоборот могут вызвать баги в corner case'ах, а багфиксов как таковых которые что-то фиксили нет. Ты действительно перелопатил кучу кода, но вот только зачем? До твоих правок код лаунчера был структурирован, не имел противоречий, не использовал мешанину из API никак не связанных друг с другом.
    • Про разбиение на модули... Ну, людей у которых больше-лучше порадует
    • Обходы не проверяла, комментировать не могу
    • Почему то что изменена структура классов это плюс? Это может поломать старый код без видимой на то причины
    • Уже сказала, ни одного бага как такового исправлено не было
    • Отдельным пунктом - довольно криво переписано на Netty, добавлен SSL, убраны SignedObjectHolder и SignedBytesHolder, и проверка цифровой подписи... Я честно не знаю к чему это всё было сделано, потому что абсолютно всё из этого это регресс. Netty с такой реализацией будет работать медленней чем blocking IO, SSL не нужен, signed object holder защищал от подмены игроком того что отправил сервер (файлы ты тоже SSL защищать будешь?), проверка цифровой подписи защищала от изменения лаунчера. теперь этого всего нет. это особенно забавно добавлять нативную защиту убирая самую базовую.
    Это чисто моё мнение, ты можешь (очевидно) делать как ты хочешь. Но я людям этот форк использовать не рекомендовала бы. Если хочешь, можешь написать в ВК чтобы обсудить то что я написала подробнее (это касается только автора форка, мимокрокодилов буду жёстко посылать)
     
    Последнее редактирование: 21 авг 2018
  3. D1Xer

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

    Баллы:
    76
    Имя в Minecraft:
    TheTarasik
    не нихера, многабукв
     
  4. fereter

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

    Баллы:
    66
    Имя в Minecraft:
    Fereter
    Если там используется немодифицированный avanguard, то с нативной защитой все плохо. Она грузит систему, она мешает нормальной работе некоторых сервисов от разработчиков железа, она может вызывать срабатывания эвристики антивирусов, а от читеров она защищает чуть лучше, чем проверка запущенных процессов.
     
  5. zaxar163

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

    Баллы:
    66
    Я вам скажу что avn поправленный нагрузки не несёт, у нас своя его версия... И да @new-sashok724 ssl в разработке, с остальным воевать не буду хотя хочется, ваш костыль с nashorn много дров наломал на бетах 10.
    P.S Забыл на 10 minecraft пустить можно я себе версии делал с патчями для форжи.
     
    Последнее редактирование: 21 авг 2018
  6. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    SSL не нужен. Я почти на 100% уверена что в любой вашей реализации можно будет MITM атаку сделать без особых проблем. Даже в моей реализации протокола лаунчера в котором шифрования в принципе нет и есть только цифровые подписи невозможно ничего важного подделать, потому что у клиента просто нет ключа которым подписываются данные, а у вас с очень высокой вероятностью будет можно.

    Насчёт Nashorn - я проверяла лично на 10ой джаве, всё идеально работает. Если на бетке не работает, это проблема бетки. И не путай пожалуйста костыли и хаки. Вот у вас костыли. Некрасивые, скрипящие, норовящие сломаться. А я использую недокументированное API которое на текущий момент не собираются удалять в будущих версиях и значит не удалят (я JEP читаю и знаю что планируется в следующих версиях Java).

    Насчёт 10ой джавы вообще - я про ЛАУНЧЕРЫ говорю, а не про сам майнкрафт. А факт в том что почти все ЛАУНЧЕРЫ на 10ой джаве не работают, в том числе не работает очень популярный ТЛаунчер (и legacy и новый), и поэтому игроки её ставить не будут, да и чем вызвано это требование 10ой джавы я тоже не поняла, никакие незаменимые фишки вы из неё не используете

    И да, ещё раз, (очевидно) вы можете делать как хотите. То что я написала - лишь моё мнение, которое я написала потому что я считаю себя в этом вопросе более опытной. Не хотите - не прислушивайтесь и делайте херню, хотите - можем обсудить.
     
    Последнее редактирование: 21 авг 2018
  7. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    Что это за куча неструктурированных слов и перескакивание от одного к другому без пояснений? Окей, попробую понять...

    1. Как SSL поможет от атаки запросами?! А Netty вообще ещё хуже сделает потому что вы крайне криво портировали на него протокол, можно сказать просто обернули то что было
    2. Переменные среды это ENV, это ок для передачи параметров от процесса к процессу. А вот system properties которые ты скорее всего имел ввиду использовать для получения информации о JVM там где нужно чтобы эту информацию нельзя было подделать - крайне не умно
    3. Про проверку JAVA_OPTS тоже ничего не говорила, хотя выглядит как-то кривовато в вашей реализации
    4. Фикса GameDirWatcher я не увидела, как и бага про который мне бы написали, можно пожалуйста ссылочку? Я видела что вы кастрировали HashedDir только
    5. Защиты JS нет, у вас её тоже нет. Защиты конфига тоже нет, и у вас её тоже нет, вы её даже хуже сделали убрав цифровые подписи.
    6. С хикари там не косяк, а некорректная настройка mysql сервера, которую можно приглушить со стороны лаунчера, это правда. И наоборот, если таймзона НЕ указана в конфиге и берётся из системы в виде MSK а не в виде +3:00, тогда происходит ошибка.
     
    Последнее редактирование: 21 авг 2018
  8. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    1. SSL без CA не поможет никогда от MITM атак, это будет просто бесполезная нагрузка на процессор и немного увеличенная задержка на установку связи, а в то что вы нормально портируете протокол лаунчера на Netty после увиденного лично я не верю.
    2. Хорошо если делаете. Ну и просто небольшое 'докопался' - уязвимость это на стороне сервера применимый термин, а в клиенте это просто отсутствие защиты
    3. Так можно ссылочку на коммит?! Второй раз уже прошу)
    4. Этот пункт не поняла к чему и что он значит
     
  9. zaxar163

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

    Баллы:
    66
    Куда мои сообщение деваются.
     
  10. Автор темы
    Gravit

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

    Баллы:
    66
    Форумные срачи, как же я давно вас не видел.
    Если от Gradle лишние сложности, тогда почему в Ваших issue есть просьбы добавить его?
    Почему в репозитории моем уже подключен Travic.CI, почему любой может просто клонировать репозиторйи и сделать gradle build, а Ваш лаунчер с этим удобством и близко не сравнится?
    PullRequest открыты, любой разработчик может предложить своюю реализацию, и если она окажется достойной - с радостью приму её. Если лично Вам чтото не нравиться - делайте лучше или перестаньте ныть. Это - OpenSource
    Если мой код - костыли, то почему мой код спокойно без изменений работает и комплируется на Oracle/OpenJDK 10/9/8, а Ваш - только на JDK 8? Вы, именно Вы, используете недокументированные особенности конкретной JVM. И то, что Ваш код умудряется работать на OpenJDK - заслуга разработчиков OpenJDK, которые заботливо перенесли недокументированные особенности, хотя делать этого не обязаны.
    Достаточно сделать модуль, который бы подгружал plugin.js. Использование JavaScript плагинов изначально очень плохая идея, и спасать изначально кривую фитчу я не намерен.
    Я не боюсь ломать обратную совместимость. Иногда невозможно двигаться вперед, если тебя тянет куча legacy
    Для получения сертификата Вы использовали хак, который не работает в новых версиях Java.
    Очень глупо критиковать ветку, которая ни разу не сливалась с master'ом или другой веткой. Я остановил ее разработку, так как не решил проблемы, заложенные в Вашем протоколе. Когда появяться новые идеи и решения - продолжу разработку
     
  11. Zoom4ikDan4ik

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

    Баллы:
    78
    Грубовато получилось, с тобой нормально пытаются разговаривать, а в ответ...
     
  12. Автор темы
    Gravit

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

    Баллы:
    66
    С Java 9 SystemClassLoader больше не является URLClassLoader. Все проекты, несовметсимые с Java 10/9 горят именно на этой фитче. И это - правильное решение.
    https://github.com/gravit0/Launcher/commit/a215c5e61d6dcf47b40b750a17fa4b39da86907a
    Баг состоит в неправильном алгоритме сравнения внутри FileNameMatcher
    Не знаю, зачем использовать паттерны там, где это не нужно, тем более неправильно, поэтому просто заменил на простой алгоритм сравнения

    Извиняюсь за грубость, но Ваши действия и решения все больше вызывают негативную реакцию
     
  13. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    1) Могу скинуть видео как я меньше чем за 3 минуты включая время клонирования репозитория соберу лаунчер. Почему люди что-то хотят мне неизвестно. Для простых проектов вроде лаунчера гредл НЕ удобен. Намного больше времени тратится на его настройку или на его капризы, чем на сборку скриптом, который пишется за 15 минут и про существование которого можно забыть.
    2) Я не ною. Я субъективно говорю, что качество кода в вашем форке для меня неудовлетворительно даже как черновой вариант. Сравнить всегда есть с чем (с кодом моей версии лаунчера).
    3) Я компилирую лаунчер на 8ой джаве чтобы он работал и на 8ой, и на 9ой, и на 10ой джаве, и на 11ой как она выйдет. Лаунчер спокойно компилируется и под 10ой джавой, я не знаю какие у вас с этим проблемы, но тогда он не будет работать на предыдущих версиях джавы, прямо как у вас. Разработчики OpenJDK ничего не переносили, эти недокументированные функции наоборот из OpenJDK перешли в Oracle JRE, потому что Oracle JRE основана на OpenJDK. И какая мне в принципе должна быть разница, сам майнкрафт и много библиотек которые к нему идут работают ТОЛЬКО на этих двух реализациях JVM, смысл лаунчеру поддерживать что-то ещё?
    4) Почему это плохая идея, учитывая что весь рантайм лаунчера УЖЕ на JS, и если бы он был бы на джаве это вызвало бы много трудностей у людей которые будут делать дизайны? Зачем делать модуль для того что было изначально? Чем эта фича кривая?
    5) Это НЕ движение вперёд, ты просто взял и переместил классы, ничего в них толком не улучшив. Это в лучшем случае стагнация
    6) Если Вы про получение сертификата JAR, то во первых работает (официальный билд лаунчера прекрасно работает на джаве 10 и даже на бете 11), во вторых это не оправдывает удаление проверки цифровых подписей впринципе, потому что они проверяются другим ключом, который читается во всех версиях джавы без всяких 'хаков'
    7) То что SSL не будет никак и ни от чего защищать это не из-за моего протокола, а из-за самого факта отсутствия CA. BTW, Netty даже с правильной реализацией всего и вся не потащит 10к подключений в секунду.
     
    Последнее редактирование: 21 авг 2018
  14. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    Насчёт URLClassLoader - это изменение я знаю и мой лаунчер корректно работает и на J8, и на J9, и на J10. А вот за ссылку на коммит спасибо. Паттерны нужны, к слову. Многим нужно добавлять в исключения например только .txt/.cfg/какие нибудь ещё файлы
     
  15. Автор темы
    Gravit

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

    Баллы:
    66
    Но Gradle уже настроен с помощью усилий Zaxxar, за что ему огромное спасибо. И это действительно удобно, когда не нужно скачивать никакие зависимости самостоятельно.
    На момент когда этот форк только начал развиваться лаунчер не комплировался с JDK 10 как минимум из за ExtendedWatchModifer, и я уверен сейчас он тоже не соберется. Надо найти самые первые коммиты, там будут исправления что бы лаунчер комплировался под JDK 10
    Решение делать Runtime на JavaFX + JS это хорошая идея, и я ее одобряю. Однако плагины на JavaScript не могут сделать равно ничено по сравнению с настоящими модулями на джаве.
    Перемещение классов позволяет разделить лаунчер на более мелкие модули. Сервер не должен иметь классы, запускающие клиент, ему это не нужно. Как и authlib-clean не должен быть в зависимостях у сервера
    За эти 11 дней было реализовано намного больше фитч, чем в Вашем лаунчере за месяцы. Я не боюсь экспериментировать и развивать лаунчер, не боюсь сломать легаси. Конечно нужно время на доводку, но пока Вы приделываете идеальное крыло к идеальному самолету, авантюристы уже летают на бочке, простяных и палок настречу приключениям.
     
  16. zaxar163

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

    Баллы:
    66
    Ссылку на коммит надо искать в коммитах, ибо он был вместе ещё с несколькими фиксами.
    А теперь вопросы:
    1. Где вы увидели говнокод?
    2. Что не нравится в реализации gradle?
    3. Что не нравится в реализации модулей?
     
  17. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    Использовать гредл просто чтобы зависимости скачивать - вот уж точно верх идиотства. Я их хотела положить к лаунчеру, но я не считаю что это правильно класть в репозиторий то что и так уже есть в интернете. Я лично считаю что в репозитории лаунчера должен быть только код лаунчера.
    Я не так давно использовала ExtendedWatchModifier, который убирать кстати тоже было большой ошибкой, на бетке 11ой джавы, соответственно он был и есть в JDK 10, в модуле jdk.unsupported. Этот флаг делает слежение за папками намного более удобным и оптимальным на винде и я не вижу адекватной причины его убирать.
    Я не знаю что нельзя сделать на JS что можно на джаве на стороне лаунчсервера, может каких-то API не хватает потому что они не требовались, но тут проблема не в самом JS. Я на JS и AuthProvider писала, и счёт статистики, и TextureProvider, и фильтр подключений, и проблем никаких не было
    Насчёт более мелких модулей, отчасти согласна что возможно стоило бы ещё один общий модуль добавить, это да
    Насчёт того что вы реализовали за 11 дней больше фич, чем я за месяцы))) Я лаунчером в это время вообще-то и не занималась. И вообще вот эта риторика когда вы хвастаетесь количеством а не качеством лично мне не нравится. И да, я лучше буду летать на идеальном самолёте который у меня будет потом, а не на пороховой бочке и сейчас. Ну это сами решайте какие у вас приоритеты.
     
    Последнее редактирование: 21 авг 2018
  18. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    1. Во всём форке. Это касается и структуры кода, и подхода к тому как этот код пишется, и к тому какие API вместе с какими используются (когда я увидела что вы там Swing куда-то ввинтили меня чуть не стошнило). Ну и если не говорить про 'внешний вид' кода, то в нём просто мало проверок на corner case и есть много ситуаций когда он сломается.
    2. Я уже сказала. Мне не нравится не то как вы используете гредл, а то что вы его в принципе используете. Почему тоже сказала. Ну это ваше дело. Ещё раз, всё что я пишу - моё мнение, просто которое я могу обосновать если нужно.
    3. см.п.1
     
  19. Автор темы
    Gravit

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

    Баллы:
    66
    jdk.unsupported подключается отдельно в module-info.java или в параметрах запуска. Ни то, ни другое не реализовать, учитывая отсутствие поддержки модульности у большинства библиотек
    Я тестировал работу без ExtendedWatchEventModifer как на винде, так и на линуксе, не замечаю никаикх проблем.
    Использование его будет оправдано когда появится поддержка Multi-Release JARs в IDEA, добавленная в Java 9.
    Был конкретный баг, когда Alert из JavaFX кидал исключения об ошибке инициализации, из за чего я его заменил.
    Какие именно "corner case" Вы увидели?
     
  20. new-sashok724

    new-sashok724 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashok724
    1. Ничего то что Unsafe оттуда уже используется без всяких module-info?) Либо, добавить просто компилятору флаг --add-modules, делается элементарно в настройках IDEA. Проблем никаких быть и не должно, это просто более оптимально и надёжно рабоющая вещь
    2. Не знаю что там был за баг, но что-то мне кажется что его можно было решить нормально, как минимум потому что до вашего форка абсолютно весь код лаунчера был без этого всего)
    3. Мне заново перелистывать всю историю коммитов предлагаете?)
     

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