From 8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6 Mon Sep 17 00:00:00 2001 From: Minteck Date: Sat, 5 Jun 2021 19:27:48 +0200 Subject: Presque sortie du jeu --- crash/artwork.jpg | Bin 0 -> 83347 bytes crash/client.js | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ crash/crash.html | 72 ++++++++++++++++++++++++++++++++++ crash/wrapper.js | 41 ++++++++++++++++++++ 4 files changed, 227 insertions(+) create mode 100644 crash/artwork.jpg create mode 100644 crash/client.js create mode 100644 crash/crash.html create mode 100644 crash/wrapper.js (limited to 'crash') diff --git a/crash/artwork.jpg b/crash/artwork.jpg new file mode 100644 index 0000000..a999d22 Binary files /dev/null and b/crash/artwork.jpg differ diff --git a/crash/client.js b/crash/client.js new file mode 100644 index 0000000..d5ea355 --- /dev/null +++ b/crash/client.js @@ -0,0 +1,114 @@ +if (native) { + function crash(error) { + try { + require('@electron/remote').getCurrentWindow().hide(); + } catch (e) {} + id = new Date().toISOString(); + + try { + global.pkg = require('./package.json'); + } catch (e) { + console.warn(e); + global.pkg = require('../package.json'); + + } + + report = "\n"; + report += "Kartik Crash Report\n\nPlease send this to the developers so they can fix the problem and deploy a patch to all players.\n\nStack Trace:\n" + error.stack.split("\n").forEach((line) => { + report += " " + line + "\n"; + }) + report += "\n\nSystem Information:\n" + report += " " + "Kartik"+require('@electron/remote').getCurrentWindow().channel + "(" + pkg.name + ") " +pkg.version + " [" + pkg.serial + "]\n"; + + report += " " + require('os').type() + " (" + require('os').version() + ", " + require('os').arch() +") version " + require('os').release() + "\n"; + cores = require('os').cpus() + if (cores.length > 1) { + report += " " + cores.length + " processors"; + } else { + report += " " + cores.length + " processor"; + } + report += "\n\nKartik Components:\n"; + Object.keys(process.versions).forEach((e) => { + + v = process.versions[e]; + report += " " + e + "@" + v + "\n"; + }) + + require('fs').writeFileSync(require('os').userInfo().homedir + "/.kartik/crashes/" + id + ".txt", report); + if (error.message !== "Invalid display" && error.message !== "Out of memory") { + + fetch("https://kartik.hopto.org/telemetry/report/?report=" + btoa(report.replaceAll(require('os').userInfo().username, ""))) + + .then(() => { + if (require('os').platform() === "win32") { + require('child_process').execSync("runtime\\kartik-crash.bat"); + } else if (require('os').platform() === "darwin") { + require('child_process').execSync("./runtime/kartik-crash-mac.sh"); + } else { + require('child_process').execSync("./runtime/kartik-crash.sh"); + } + require('@electron/remote').getCurrentWindow().destroy(); + + window.close(); + require('@electron/remote').getCurrentWindow().close(); + }) + .catch(() => { + if (require('os').platform() === "win32") { + require('child_process').execSync("runtime\\kartik-crash.bat"); + } else if (require('os').platform() === "darwin") { + + require('child_process').execSync("./runtime/kartik-crash-mac.sh"); + } else { + require('child_process').execSync("./runtime/kartik-crash.sh"); + } + require('@electron/remote').getCurrentWindow().destroy(); + window.close(); + require('@electron/remote').getCurrentWindow().close(); + }) + } else { + if (require('os').platform() === "win32") { + require('child_process').execSync("runtime\\kartik-crash.bat"); + } else if (require('os').platform() === "darwin") { + require('child_process').execSync("./runtime/kartik-crash-mac.sh"); + } else { + require('child_process').execSync("./runtime/kartik-crash.sh"); + } + + require('@electron/remote').getCurrentWindow().destroy(); + window.close(); + require('@electron/remote').getCurrentWindow().close(); + } + } + + window.onerror = (_a, _b, _c, _d, error) => { + if (typeof error != "undefined") { + crash(error); + } else { + error("CrashManager", "An exception was thrown without details about it"); + crash(new Error("Unknown error")); + } + } + + process.on('uncaughtException', (error) => { + if (typeof error != "undefined") { + crash(error); + } else { + error("CrashManager", "An exception was thrown without details about it"); + crash(new Error("Unknown error")); + } + }) + + /*setInterval(() => { + try { + if (document.body.clientWidth >= (screen.width - 50) || document.body.clientHeight >= (screen.height - 50) || require('@electron/remote').getCurrentWindow().pwidth >= (screen.width - 50) || require('@electron/remote').getCurrentWindow().pheight >= (screen.height - 50) || require('@electron/remote').getCurrentWindow().scale < 0.9) { + + if (!location.href.includes("credits.html")) { + error("CrashManager", "Invalid display, crashing"); + crash(new Error("Invalid display")); + // TODO: Instead reset the size and restart + } + } + } catch (e) {} + }, 2000)*/ +} diff --git a/crash/crash.html b/crash/crash.html new file mode 100644 index 0000000..5b922aa --- /dev/null +++ b/crash/crash.html @@ -0,0 +1,72 @@ + + + + + + + + + + +
+ +
+
+

+

+

+

+
+ + + + diff --git a/crash/wrapper.js b/crash/wrapper.js new file mode 100644 index 0000000..ba5a8b9 --- /dev/null +++ b/crash/wrapper.js @@ -0,0 +1,41 @@ +const { app, BrowserWindow } = require('electron') + +if (require('fs').existsSync(require('os').userInfo().homedir + "/.kartik/config/lang.txt")) { + lp = require('fs').readFileSync(require('os').userInfo().homedir + "/.kartik/config/lang.txt").toString(); +} + +function createWindow () { + const win = new BrowserWindow({ + width: 800, + height: 375, + resizeable: false, + resizable: false, + maximizable: false, + bgColor: "#ffffff", + title: "Kartik", + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + enableRemoteModule: true, + webviewTag: true + } + }) + + win.lp = lp; + win.loadFile('crash.html') + win.setMenu(null); +} + +app.whenReady().then(createWindow) + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit() + } +}) + +app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow() + } +}) \ No newline at end of file -- cgit