Vydané zdroje
Stáhnout zdroje ZIP
CH-J Server Manager
Procházejte adresáře a soubory konkrétního vydání aplikace.
Zdroje jsou zveřejněny pod CH-J Proprietary Software License 1.14. Jejich dostupnost nemění licenční podmínky ani neposkytuje další oprávnění.
1
"use strict";3
const path = require("node:path");5
function showLicenseWindow({ BrowserWindow, ipcMain, acceptance, language = "cs", onWindow = () => {} }) {6
return new Promise((resolve, reject) => {7
const window = new BrowserWindow({8
title: "CH-J Server Manager — License", width: 900, height: 760,9
minWidth: 640, minHeight: 520, show: false, autoHideMenuBar: true,10
webPreferences: {11
preload: path.join(__dirname, "..", "..", "preload", "licensePreload.js"),12
contextIsolation: true, nodeIntegration: false, sandbox: true,13
webSecurity: true, spellcheck: false14
}15
});16
onWindow(window);17
let accepted = false;18
let guidancePresented = false;19
let guidanceShown = false;20
function trusted(event) {21
if (window.isDestroyed() || event.sender !== window.webContents || event.senderFrame !== window.webContents.mainFrame) {22
throw new Error("Untrusted license IPC sender.");23
}24
}25
ipcMain.handle("license:read", (event) => {26
trusted(event);27
guidancePresented = true;28
return { text: acceptance.text, guidance: acceptance.guidance, ...acceptance.identity, language };29
});30
ipcMain.handle("license:show", (event, payload) => {31
trusted(event);32
if (!guidancePresented || payload?.guidanceSha256 !== acceptance.identity.guidanceSha256) {33
throw new Error("Display the current operational guidance before continuing.");34
}35
guidanceShown = true;36
return { ok: true };37
});38
ipcMain.handle("license:accept", (event, payload) => {39
trusted(event);40
if (!guidanceShown) throw new Error("Display operational guidance before accepting the license.");41
acceptance.accept({ ...payload, guidanceShown });42
accepted = true;43
// Let the IPC reply reach the renderer before closing its window.44
setImmediate(() => window.close());45
return { ok: true };46
});47
ipcMain.handle("license:decline", (event) => {48
trusted(event);49
setImmediate(() => window.close());50
return { ok: true };51
});52
window.webContents.setWindowOpenHandler(() => ({ action: "deny" }));53
window.webContents.on("will-navigate", event => event.preventDefault());54
window.webContents.on("will-attach-webview", event => event.preventDefault());55
window.once("ready-to-show", () => window.show());56
window.once("closed", () => {57
for (const channel of ["license:read", "license:show", "license:accept", "license:decline"]) ipcMain.removeHandler(channel);58
onWindow(null);59
resolve(accepted);60
});61
window.loadFile(path.join(__dirname, "..", "..", "renderer", "license.html")).catch(error => {62
window.destroy();63
reject(error);64
});65
});66
}68
module.exports = { showLicenseWindow };SHA-256: 6fa6ddf1727d48995de3d72afef49d4450b1c36f2ffc2afc37f569e33c068915
SHA-256 archivu: 5ac91caf4fa32a6fdb114f2430deed486fbe7489d5eea343d1f034169fafb5e0