Конфигурация
Пример готовой конфигурации
{
"projectName": "GravitProject",
"mirrors": [
"https://mirror.gravit.pro/",
"https://gravit-launcher-mirror.storage.googleapis.com/"
],
"binaryName": "Launcher",
"copyBinaries": true,
"cacheUpdates": true,
"env": "STD",
"auth": {
"std": {
"isDefault": true,
"core": {
"type": "reject"
},
"textureProvider": {
"skinURL": "http://example.com/skins/%username%.png",
"cloakURL": "http://example.com/cloaks/%username%.png",
"type": "request"
},
"displayName": "Default"
}
},
"sessions": {
"autoDump": false,
"dumpFile": "sessions.json",
"type": "memory"
},
"protectHandler": {
"profileWhitelist": {},
"allowUpdates": [],
"type": "std"
},
"components": {
"regLimiter": {
"message": "Превышен лимит регистраций",
"excludeIps": [],
"exclude": [],
"rateLimit": 3,
"rateLimitMillis": 36000000,
"type": "regLimiter"
},
"authLimiter": {
"message": "Превышен лимит авторизаций",
"exclude": [],
"rateLimit": 3,
"rateLimitMillis": 8000,
"type": "authLimiter"
},
"proguard": {
"modeAfter": "MainBuild",
"dir": "proguard",
"enabled": true,
"mappings": true,
"type": "proguard"
}
},
"launch4j": {
"enabled": true,
"setMaxVersion": false,
"maxVersion": "1.8.999",
"minVersion": "1.8.0",
"downloadUrl": "http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html",
"productName": "GravitLauncher",
"productVer": "5.2.4.4",
"fileDesc": "GravitLauncher 5.2.4",
"fileVer": "5.2.4.4",
"internalName": "Launcher",
"copyright": "© GravitLauncher Team",
"trademarks": "This product is licensed under GPLv3",
"txtFileVersion": "%s, build %d",
"txtProductVersion": "%s, build %d"
},
"netty": {
"fileServerEnabled": true,
"sendExceptionEnabled": false,
"ipForwarding": false,
"disableWebApiInterface": false,
"showHiddenFiles": false,
"launcherURL": "http://localhost:9274/Launcher.jar",
"downloadURL": "http://localhost:9274/%dirname%/",
"launcherEXEURL": "http://localhost:9274/Launcher.exe",
"address": "ws://localhost:9274/api",
"bindings": {},
"performance": {
"usingEpoll": false,
"bossThread": 2,
"workerThread": 8,
"schedulerThread": 2,
"sessionLifetimeMs": 86400000,
"maxWebSocketRequestBytes": 1048576
},
"binds": [
{
"address": "0.0.0.0",
"port": 9274
}
],
"logLevel": "DEBUG"
},
"launcher": {
"guardType": "no",
"compress": true,
"stripLineNumbers": true,
"deleteTempFiles": true,
"certificatePinning": false,
"encryptRuntime": false,
"memoryLimit": 256
},
"sign": {
"enabled": false,
"keyStore": "pathToKey",
"keyStoreType": "JKS",
"keyStorePass": "mypass",
"keyAlias": "myname",
"keyPass": "mypass",
"metaInfKeyName": "SIGNUMO.RSA",
"metaInfSfName": "SIGNUMO.SF",
"signAlgo": "SHA256WITHRSA"
},
"startScript": ".\\start.bat"
}
Описание настроек конфигурации
projectName
- название вашего проектаmirrors
- список зеркал, для скачивания файлов игры. Для получения подробной информации смотрите раздел Загрузка клиентовbinaryName
- Имя бинарника в папке updates. Меняя его не забывайте менять URL скачкиcopyBinaries
- Помещать ли бинарники в папку updatesenv
- окружение, влияет на уровень отладочных сообщенийauth
- отвечает за авторизацию и отдачу скинов Настройка авторизацииprotectHandler
- отвечает за выдачу токенов(accessToken) Настройка ProtectHandlersessions
- отвечает за хранение сессийcomponents
- опциональные компоненты
regLimiter
- ограничение регистрацииmessage
: - сообщение в случае превышение лимитаexcludeIps
exclude
rateLimit
- количество попыток до ограниченияrateLimitMillis
- время до снятия ограничения в мс
authLimiter
- ограничение количества попыток авторизацийmessage
- сообщение в случае превышение лимитаexclude
- белый список :think:rateLimit
- количество попыток авторизации до ограниченияrateLimitMillis
- время до снятия ограничения в мс
proguard
- отвечает за обфускацию лаунчераmodeAfter
- режим работыdir
- папка с proguardenabled
- включить обфускациюmappings
- включить генерацию маппингов proguard
launch4j
- создание EXE из JAR
enabled
- включить создание EXEsetMaxVersion
- ограничивает версию Java в пределах диапозона версий см. нижеmaxVersion
- максимальная версия JavaminVersion
- минимальная версия JavadownloadUrl
- ссылка для скачивания Java в случае её отсутствия
netty
fileServerEnabled
- включить раздачу файлов из updates по httpsendExceptionEnabled
- разрешить отправку сообщений об ошибке лаунчсервера на клиентdisableWebApiInterface
- отключение /webapi - http запросов к лаунчсерверуipForwarding
- разрешить проксирование реального IP через HTTP заголовки. Включить если используется проксирование nginx/apache2/cloudflareshowHiddenFiles
- разрешает раздачу скрытых файловlauncherURL
- URL для скачивание лаунчера(JAR)downloadURL
- URL для скачивание клиентов и ассетовlauncherEXEURL
- URL скачки лаунчера(EXE)address
- адрес WebSocket API, по которому лаунчер будет подключатьсяbindings
- настройки особых URL для скачивание ассетов/клиентовperformance
usingEpoll
- ускоряет работу с множеством соеденений(доступно только для Linux)bossThread
- число потоков на прием соедененийworkerThread
- число потоков на обработку запросов
binds
- адреса прослушивания сокета(bind)logLevel
- уровень сообщений Netty в логгере slf4j
launcher
- настройки лаунчера
guardType
- тип нативной защиты AntiInject(см инструкцию к вашей нативной защите)compress
- сжатие итогового файлаstripLineNumbers
- включить вырезание отладочной информацииdeleteTempFiles
- удалять временные файлы в папке build
sign
- настройки подписи лаунчера Подпись лаунчераstartScript
- Скрипт запуска лаунчсервера(используется только в команде restart)
Настройка ProtectHandler
ProtectHandler часть находится в состоянии активной разработки. В дальнейшем будут появлятся всё новые и новые возможности
Способ none
Защита полностью отстуствует
"protectHandler": {
"type": "none"
}
Способ std
Стандартный protectHandler
- Токен авторизации можно получить только если authType CLIENT и пройдена проверка хеша лаунчера
- Получить и сменить профиль можно только если пройдена проверка на белый список
- Получить можно только такие папки updates: assets выбранного клиента, папка выбранного клиента, все папки из allowUpdates
"protectHandler": {
"profileWhitelist": { "Ваш UUID профиля": ["Ник1", "Ник2"] },
"allowUpdates": [],
"type": "std"
}
Способ advanced
Включает в себя все функции std а так же:
- Включает механизмы TrustLevel и обмен ключами с клиентом
- Включает обработку SecurityReport от нативных защит
- Можно включить обработку HardwareInfo и баны по железу
Стандартная конфигурация без hardwareFeature
"protectHandler": {
"profileWhitelist": { "Ваш UUID профиля": ["Ник1", "Ник2"] },
"allowUpdates": [],
"type": "advanced"
}
profileWhitelist
- вайтлист