CH-J Server ManagerSerververwaltung über SSH
Menü
Veröffentlichte Quellen

CH-J Server Manager

Durchsuchen Sie Verzeichnisse und Dateien einer bestimmten Anwendungsausgabe.

Quellen als ZIP herunterladen
CH-J Proprietary Software License 1.14

Die Quellen werden unter der CH-J Proprietary Software License 1.14 bereitgestellt. Ihre Verfügbarkeit ändert die Lizenzbedingungen nicht und gewährt keine zusätzlichen Rechte.

2,7 KB · 68 ZeilenDatei herunterladen
1"use strict";
3const path = require("node:path");
5function 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: false
14 }
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 });
68module.exports = { showLicenseWindow };

SHA-256: 6fa6ddf1727d48995de3d72afef49d4450b1c36f2ffc2afc37f569e33c068915

SHA-256 des Archivs: 5ac91caf4fa32a6fdb114f2430deed486fbe7489d5eea343d1f034169fafb5e0