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/client.js | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 crash/client.js (limited to 'crash/client.js') 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)*/ +} -- cgit