UNPKG

minecraft-core-master

Version:

Núcleo avanzado para launchers de Minecraft. Descarga, instala y ejecuta versiones de Minecraft, assets, librerías, Java y loaders de forma automática y eficiente.

65 lines (64 loc) 2.61 kB
import path from 'path'; import { app, BrowserWindow, session } from "electron"; const defaultProperties = { width: 1000, height: 650, resizable: false, center: true, icon: path.join(__dirname, '../../../resources/icons', `microsoft.${process.platform === 'win32' ? 'ico' : 'png'}`), }; export default async function openMicrosoftWindow(url) { await new Promise((resolve) => { app.whenReady().then(() => { session.defaultSession.cookies.get({ domain: 'live.com' }).then((cookies) => { for (const cookie of cookies) { const urlcookie = `http${cookie.secure ? 's' : ''}://${cookie.domain.replace(/^\./, '') + cookie.path}`; session.defaultSession.cookies.remove(urlcookie, cookie.name); } }); resolve(); }); }); return new Promise((resolve) => { app.whenReady().then(() => { const mainWindow = new BrowserWindow(defaultProperties); mainWindow.setMenu(null); mainWindow.loadURL(url); let loading = false; mainWindow.webContents.setWindowOpenHandler(() => { return { action: "deny" }; }); const allowedDomains = [ "https://login.live.com", "https://login.microsoftonline.com", "https://login.live-int.com", "https://login.microsoft.com", "https://login.live.com/oauth20_desktop.srf" ]; mainWindow.webContents.on("will-navigate", (event, navigationUrl) => { if (!allowedDomains.some(domain => navigationUrl.startsWith(domain))) { event.preventDefault(); console.log("Bloqueado:", navigationUrl); } }); mainWindow.on('close', () => { if (!loading) resolve(null); }); mainWindow.webContents.on('did-finish-load', () => { const loc = mainWindow.webContents.getURL(); if (loc.startsWith('https://login.live.com/oauth20_desktop.srf')) { const code = new URLSearchParams(loc.split('?')[1]).get('code'); resolve(code ?? null); loading = true; try { mainWindow.close(); } catch { console.error('Failed to close window!'); } } }); }); }); }