Другие настройки
TextureProvider
TextureProvider нужен при отсутствии поддержки скинов со стороны AuthCoreProvider. Выберите один из вариантов TextureProvider:
- Поддерживаются следующие placeholder:
- %username% имя пользователя
- %uuid% UUID пользователя
- %hash% UUID пользователя без разделителей
Метод Request
"textureProvider": {
"skinURL": "http://example.com/skins/%username%.png",
"cloakURL": "http://example.com/cloaks/%username%.png",
"type": "request"
},
Прямое получение скина
- Если скины хранятся не на этой машине
- Выполняется дополнительный запрос в ЛаунчСервере на подсчёт хеш суммы и передаче её в AuthLib
"textureProvider": {
"skinURL": "http://example.com/skins/%username%.png",
"cloakURL": "http://example.com/cloaks/%username%.png",
"skinLocalPath": "/var/www/site/skins/%username%.png",
"cloakLocalPath": "/var/www/site/cloaks/%username%.png",
"type": "request"
},
Получение скина с локальным путём
- Быстрее обработка хеш суммы
- ЛаунчСерверу не нужно выполнять дополнительный запрос, так как файл считывается локально
Метод JSON
"textureProvider": {
"url": "http://example.com/getskin.php?username=%username%",
"type": "json"
},
Запрос к сайту для получения URL'ов скина/плаща и их метаданных
- Может обрабатывать slim (тонкие) скины
Комьюнити реализации:
[PHP] microwin7/GravitLauncher-TextureProvider[PHP] GravitLauncher/TextureLoader
Пример ответа:
{
"SKIN": {
"url": "http://example.com/skins/Gravita.png",
"digest": "SHA256 HASH (HEX)",
"metadata": {
"model": "slim"
}
},
"CAPE": {
"url": "http://example.com/cloaks/Gravita.png",
"digest": "SHA256 HASH (HEX)"
}
}
Метод Void
"textureProvider": {
"type": "void"
},
Скины и плащи не передаются
- Если у вас другое решение по передаче скинов, либо если вам скины и плащи не нужны
- Сервер может сам устанавливать скины, к примеру при использовании плагина SkinsRestorer
Подпись Лаунчера
Лаунчер (как JAR, так и EXE) может быть подписан. JAR версия Лаунчера подписана всегда и отключить это нельзя. По умолчанию сертификат генерируется при build из текущей даты, ключей ЛаунчСервера и названия проекта.
Генерация с помощью XCA
- Скачайте последнюю версию XCA (Windows) с официального сайта, установите и запустите. Если у вас Linux - то установите пакет
xcaс помощью вашего менеджера пакетов - Создайте новую базу данных с помощью
File -> New DataBaseи защитите её паролем. - Создадим корневой СА. Перейдите в раздел
Certificatesи нажмитеNew Certificate. В разделеSubjectзаполните полеCommon Name(напримерBeautifulCraft Root CA), остальные поля по желанию. НажмитеGenerate a new keyи выберите типRSAразмером 2048 или 4096. - В разделе
ExtensionsукажитеType-Certification Authority. Укажите срок действия сертификата по вашему усмотрению. Не рекомендуется устанавливать срок действия меньше 1 года и больше 50 лет. Для применения срока нужно нажать кнопкуApply - В разделе
Key UsageустановитеCertificate SignиCRL Sign. - По желанию вы можете создать промежуточные СА. Действия аналогичны созданию корневого СА, но в разделе
Sourceнужно выбрать родительский(предыдущий) СА. - Создадим конечный CodeSign сертификат. В разделе
Sourceмы должны выбрать родительский(предыдущий) СА. Настройка разделаSubjectполностью аналогична. В разделеExtensionsукажитеType-End Entity. Укажите срок действия по усмотрению. В разделеKey UsageустановитеDigital Signatureа в соседнем спискеCode SigningиMicrosoft Individual Code Signing. - Экспортируем CodeSign сертификат. Для этого нужно выбрать конечный CodeSign сертификат и нажать кнопку
Export. Выбираем тип экспортаPKCS#12 chain. Задаем пароль и сохраняем в удобное место. - Экспортируем корневой сертификат. Для этого нужно выбрать корневой и нажать кнопку
Export. Выбираем тип экспортаPEM. Сохраняем в удобное место. - Мы получили два файла. Файл типа
.pfx/.p12нужно указать в секцииsignЛаунчСервера вместе со всеми данными. Файл типа.crtнужно скопировать в папкуtruststoreЛаунчСервера.
Получение алиаса из файла .p12/.pfx
Для получения алиаса (поле keyAlias) нам понадобится утилита keytool из состава JDK. Выполните эту команду:
keytool -storepass PASSWORD -keystore PATH_TO_PFX_OR_P12 -list
Вы получите следующий вывод:
Your keystore contains 1 entry
beautiful codesign, Jan 16, 2023, PrivateKeyEntry,
Строка beautiful codesign будет искомым алиасом
Настройка секции sign для .p12/.pfx
Пример настройки:
"sign": {
"enabled": true,
"keyStore": "PATH_TO_PFX_OR_P12",
"keyStoreType": "PKCS12",
"keyStorePass": "PASSWORD",
"keyAlias": "KEY ALIAS",
"keyPass": "PASSWORD",
"metaInfKeyName": "SIGNUMO.RSA",
"metaInfSfName": "SIGNUMO.SF",
"signAlgo": "SHA256WITHRSA"
},
Обратите внимание
Пароли keyStorePass и keyPass должны совпадать
MixProvider
MixProvider - это метод расширения AuthCoreProvider дополнительной функциональностью
Расширение uploadAsset
Работоспособная реализация: PHP
Это расширение для загрузки скинов и плащей прямо в лаунчере без использования сайта
"mixes": {
"textureLoader": {
"urls": {
"SKIN": "http://example.com/assetloader/upload.php?type=SKIN",
"CAPE": "http://example.com/assetloader/upload.php?type=CAPE"
},
"slimSupportConf": "USER",
"type": "uploadAsset"
}
}
На указанный url придет POST запрос с содержимым form/multipart
file(Content-Type:image/png) - предоставляет PNG скин который пользователь хочет загрузитьoptions(Content-Type:application/json) - предоставляет настройки, выбранные пользователем для загрузки
{
"modelSlim": true
}
- Так же будет передан заголовок
Authorization: Bearer USER_ACCESS_TOKENкоторый вы должны проверить
Вы можете указать поддерживает ли ваш метод загрузку slim скинов, и если да - то как
USER-slimподдерживается, пользователь сам ставит галочкуslimскин или нетSERVER-slimподдерживается, тип скина определяет скриптUNSPOORTED-slimне поддерживается
При успешной загрузке скина вы должны отправить следующий ответ с кодом 200:
{
"url": "ASSET URL",
"digest": "SHA256 HEX HASH",
"metadata": {
"model": "skim"
}
}
При ошибке вы должны вернуть код >=400 и следующий ответ:
{
"error": "Access denied"
}
