From 7938555c919e84014a462deb7578cea38388fab0 Mon Sep 17 00:00:00 2001 From: DIKER0K Date: Fri, 18 Jul 2025 00:51:08 +0500 Subject: [PATCH] feat: your authorization --- src/main/auth-service.ts | 3 ++- src/main/minecraft-launcher.ts | 44 ++++++++++++++++++++-------------- src/renderer/App.tsx | 9 ++++--- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/main/auth-service.ts b/src/main/auth-service.ts index 1b237b7..b107b13 100644 --- a/src/main/auth-service.ts +++ b/src/main/auth-service.ts @@ -2,7 +2,7 @@ import { YggdrasilClient, YggrasilAuthentication } from '@xmcl/user'; import { v4 as uuidv4 } from 'uuid'; // Ely.by сервер -const ELY_BY_AUTH_SERVER = 'https://authserver.ely.by'; +const ELY_BY_AUTH_SERVER = 'http://127.0.0.1:8000'; export class AuthService { private client: YggdrasilClient; @@ -49,6 +49,7 @@ export class AuthService { async validate(accessToken: string, clientToken: string): Promise { try { + console.log(accessToken, clientToken); const response = await fetch(`${ELY_BY_AUTH_SERVER}/auth/validate`, { method: 'POST', headers: { diff --git a/src/main/minecraft-launcher.ts b/src/main/minecraft-launcher.ts index dfe7c4e..7a792e5 100644 --- a/src/main/minecraft-launcher.ts +++ b/src/main/minecraft-launcher.ts @@ -479,7 +479,7 @@ export function initMinecraftHandlers() { username, memory = 4096, baseVersion = '1.21.4', - fabricVersion = 'fabric0.16.14', + fabricVersion = '0.16.14', packName = 'Comfort', // Название основной сборки versionToLaunchOverride = '', // Возможность переопределить версию для запуска serverIp = 'popa-popa.ru', @@ -499,6 +499,8 @@ export function initMinecraftHandlers() { // Найти версию пакета, Fabric или базовую версию let versionToLaunch = versionToLaunchOverride; + console.log('fabric:', `${baseVersion}-fabric${fabricVersion}`); + if (!versionToLaunch) { if ( versionsContents.includes(`${baseVersion}-fabric${fabricVersion}`) @@ -598,6 +600,11 @@ export function initMinecraftHandlers() { } // 2. Устанавливаем Fabric + console.log('Попытка установки Fabric:', { + minecraftVersion: baseVersion, + fabricVersion: fabricVersion, + minecraftDir: minecraftDir, + }); try { event.sender.send('installation-status', { step: 'fabric-list', @@ -733,8 +740,13 @@ export function initMinecraftHandlers() { server: serverConfig, // Используем созданный объект конфигурации extraJVMArgs: [ '-Dlog4j2.formatMsgNoLookups=true', - `-javaagent:${authlibPath}=ely.by`, + `-javaagent:${authlibPath}=http://147.78.65.214:8000`, `-Xmx${memory}M`, + '-Dauthlibinjector.skinWhitelist=127.0.0.1,falrfg-213-87-196-173.ru.tuna.am', + '-Dauthlibinjector.debug=verbose,authlib', + '-Dauthlibinjector.legacySkinPolyfill=enabled', + '-Dauthlibinjector.mojangAntiFeatures=disabled', + '-Dcom.mojang.authlib.disableSecureProfileEndpoints=true', ], // Используем данные аутентификации Yggdrasil accessToken, @@ -924,22 +936,18 @@ export function initAuthHandlers() { }); // Валидация токена - ipcMain.handle('validate-token', async (event, accessToken) => { - try { - const clientToken = JSON.parse( - fs.readFileSync( - path.join(app.getPath('userData'), 'config.json'), - 'utf8', - ), - ).clientToken; - - const valid = await authService.validate(accessToken, clientToken); - return { valid }; - } catch (error) { - console.error('Ошибка валидации токена:', error); - return { valid: false }; - } - }); + ipcMain.handle( + 'validate-token', + async (event, { accessToken, clientToken }) => { + try { + const valid = await authService.validate(accessToken, clientToken); + return { valid }; + } catch (error) { + console.error('Ошибка валидации токена:', error); + return { valid: false }; + } + }, + ); // Обновление токена ipcMain.handle( diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 7154a5c..2ed2e8a 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -26,7 +26,10 @@ const AuthCheck = ({ children }: { children: ReactNode }) => { const config = JSON.parse(savedConfig); if (config.accessToken) { // Можно добавить дополнительную проверку токена - const isValid = await validateToken(config.accessToken); + const isValid = await validateToken( + config.accessToken, + config.clientToken, + ); setIsAuthenticated(isValid); return; } @@ -41,12 +44,12 @@ const AuthCheck = ({ children }: { children: ReactNode }) => { checkAuth(); }, []); - const validateToken = async (token: string) => { + const validateToken = async (accessToken: string, clientToken: string) => { try { // Используем IPC для валидации токена через main процесс const result = await window.electron.ipcRenderer.invoke( 'validate-token', - token, + { accessToken, clientToken }, ); // Если токен недействителен, очищаем сохраненные данные в localStorage