summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaindropsSys <contact@minteck.org>2023-04-20 16:20:11 +0200
committerRaindropsSys <contact@minteck.org>2023-04-20 16:20:11 +0200
commit3661eadc63e4d2a240f88c18c4d50d12956d7223 (patch)
tree61b306e48729ce792957b8c777c61d5a500eb001
parent4f509150ab86e7919dd05cdf19392d5d0ed95158 (diff)
downloaddelta-kiosk-3661eadc63e4d2a240f88c18c4d50d12956d7223.tar.gz
delta-kiosk-3661eadc63e4d2a240f88c18c4d50d12956d7223.tar.bz2
delta-kiosk-3661eadc63e4d2a240f88c18c4d50d12956d7223.zip
Updated 2 files and added 3 files (automated)
-rw-r--r--build.sh4
-rw-r--r--index.html90
-rw-r--r--index.js98
-rw-r--r--logo.svg15
-rw-r--r--unlock.svg1
5 files changed, 202 insertions, 6 deletions
diff --git a/build.sh b/build.sh
new file mode 100644
index 0000000..de1ee86
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+electron-packager --overwrite --platform darwin --arch arm64 .
+electron-packager --overwrite --platform linux --arch x64 . \ No newline at end of file
diff --git a/index.html b/index.html
index 02fe2bd..c191504 100644
--- a/index.html
+++ b/index.html
@@ -60,12 +60,83 @@
list-style: none;
padding: 0;
}
+
+ #preload {
+ position: fixed;
+ z-index: 9999;
+ display: flex;
+ inset: 0;
+ background: black;
+ align-items: center;
+ justify-content: center;
+ cursor: none;
+ }
+
+ #preload-icon {
+ width: 20%;
+ pointer-events: none;
+ }
</style>
+ <script>
+ let server = "http://192.168.1.121:8081/";
+ let admin = "6c89f976-0eee-4bd9-8f55-de961d4bd905";
+
+ window.preloadWaitInterval = null;
+ window.preloadWaitTimeout = null;
+
+ async function startPreloadUnlock() {
+ document.getElementById("preload-icon").src = "./unlock.svg";
+ document.getElementById("preload-icon").style.opacity = "1";
+
+ window.preloadWaitInterval = setInterval(() => {
+ if (document.getElementById("preload-icon").style.opacity === "0") {
+ document.getElementById("preload-icon").style.opacity = "1";
+ } else if (document.getElementById("preload-icon").style.opacity === "1") {
+ document.getElementById("preload-icon").style.opacity = "0";
+ }
+ }, 1000);
+
+ window.preloadWaitTimeout = setTimeout(() => {
+ clearInterval(window.preloadWaitInterval);
+ clearInterval(window.authApprovalInterval);
+
+ document.getElementById("preload-icon").src = "./logo.svg";
+ document.getElementById("preload-icon").style.opacity = "1";
+ }, 30000);
+
+ let data = JSON.parse(await (await window.fetch(server + "/dev.equestria.delta.kiosk.RequestApproval/?activate&id=" + admin)).text());
+ window.authId = data.id;
+
+ window.authApprovalInterval = setInterval(async () => {
+ let data = JSON.parse(await (await window.fetch(server + "/dev.equestria.delta.kiosk.CheckApproved/?id=" + window.authId)).text());
+ if (data['token']) {
+ clearInterval(window.preloadWaitInterval);
+ clearInterval(window.authApprovalInterval);
+
+ document.getElementById("preload-icon").src = "./logo.svg";
+ document.getElementById("preload-icon").style.opacity = "1";
+ document.getElementById("preload").style.display = "none";
+ document.getElementById("video").currentTime = 0;
+ } else if (data['token'] === false) {
+ clearInterval(window.preloadWaitInterval);
+ clearInterval(window.authApprovalInterval);
+
+ document.getElementById("preload-icon").src = "./logo.svg";
+ document.getElementById("preload-icon").style.opacity = "1";
+ }
+ }, 500);
+ }
+ </script>
</head>
<body style="position: fixed;inset: 0;margin: 0;">
+ <div id="preload" onclick="startPreloadUnlock();">
+ <img id="preload-icon" alt="" src="./logo.svg">
+ </div>
+
<div id="welcome">
- <video src="video.mp4" muted loop autoplay style="position: fixed;inset: 0;width: 100vw;height: 100vh;"></video>
+ <video id="video" src="video.mp4" muted loop autoplay style="position: fixed;inset: 0;width: 100vw;height: 100vh;"></video>
<div style="position: fixed; bottom: 20px; left: 0; right: 0; text-align: center; text-shadow: 0 0 5px white; font-size: 24px;">Cliquez n'importe où pour commencer</div>
+ <div id="version" style="position: fixed;bottom: 5px;left: 0;right: 5px;text-align: right;text-shadow: 0 0 5px white;font-size: 18px;opacity: .25;">-</div>
<div style="position: fixed; inset: 0; z-index: 999; cursor: pointer;" onclick="start();"></div>
</div>
@@ -88,7 +159,6 @@
const remote = require('@electron/remote');
const { ipcRenderer } = require('electron');
- let server = "http://192.168.1.121:8081/";
window.user = null;
window.authTimeout = null;
window.authApprovalInterval = null;
@@ -97,6 +167,9 @@
window.browsingTimeout2 = null;
(async () => {
+ window.serverVersion = await (await window.fetch("https://delta.equestria.dev/version")).text();
+ document.getElementById("version").innerText = "v" + window.serverVersion;
+
let users = JSON.parse(await (await window.fetch(server + "/dev.equestria.delta.kiosk.GetUserList/")).text());
for (let user of users) {
@@ -161,18 +234,29 @@
clearTimeout(window.authTimeout);
window.browsingTimeout1 = setInterval(() => {
- if (document.getElementById("webview").getURL().endsWith("/login/")) {
+ if (document.getElementById("webview").getURL().includes("/login/")) {
end();
}
if (document.getElementById("webview").getURL().endsWith("/_dev.equestria.delta.kiosk.ShutdownKiosk")) {
window.close();
}
+
+ if (document.getElementById("webview").getURL().endsWith("/_dev.equestria.delta.kiosk.DisableKiosk")) {
+ end();
+ document.getElementById("preload").style.display = "";
+ }
+
+ if (document.getElementById("webview").getURL().endsWith("/_dev.equestria.delta.kiosk.SessionEnd")) {
+ end();
+ }
});
window.browsingTimeout2 = setTimeout(() => {
end();
}, 300000);
+ } else if (data['token'] === false) {
+ end();
}
}, 1000);
}
diff --git a/index.js b/index.js
index 803f9a1..091ff58 100644
--- a/index.js
+++ b/index.js
@@ -1,4 +1,4 @@
-const { app, BrowserWindow, Menu, ipcMain } = require('electron');
+const { app, BrowserWindow, Menu, ipcMain, MenuItem } = require('electron');
require('@electron/remote/main').initialize();
const createWindow = () => {
@@ -21,8 +21,100 @@ const createWindow = () => {
mainWindow.send('devtools');
});
- mainWindow.setMenu(Menu.buildFromTemplate([]));
- Menu.setApplicationMenu(Menu.buildFromTemplate([]));
+ let menu = Menu.buildFromTemplate([
+ new MenuItem({
+ label: "Electron",
+ submenu: Menu.buildFromTemplate([
+ new MenuItem({
+ label: "quit",
+ role: "quit",
+ registerAccelerator: false,
+ accelerator: ''
+ })
+ ])
+ }),
+ new MenuItem({
+ label: "devOptions",
+ submenu: Menu.buildFromTemplate([
+ new MenuItem({
+ label: "toggleDevTools",
+ role: "toggleDevTools",
+ registerAccelerator: false,
+ accelerator: ''
+ }),
+ new MenuItem({
+ label: "forceReload",
+ role: "forceReload",
+ registerAccelerator: false,
+ accelerator: ''
+ }),
+ new MenuItem({
+ label: "togglefullscreen",
+ role: "togglefullscreen",
+ registerAccelerator: false,
+ accelerator: ''
+ }),
+ new MenuItem({
+ label: "minimize",
+ role: "minimize",
+ registerAccelerator: false,
+ accelerator: ''
+ }),
+ new MenuItem({
+ label: "about",
+ role: "about",
+ registerAccelerator: false,
+ accelerator: ''
+ }),
+ new MenuItem({
+ label: "quit",
+ role: "quit",
+ registerAccelerator: false,
+ accelerator: ''
+ })
+ ])
+ }),
+ new MenuItem({
+ label: "editOptions",
+ submenu: Menu.buildFromTemplate([
+ new MenuItem({
+ label: "undo",
+ role: "undo"
+ }),
+ new MenuItem({
+ label: "redo",
+ role: "redo"
+ }),
+ new MenuItem({
+ label: "cut",
+ role: "cut"
+ }),
+ new MenuItem({
+ label: "copy",
+ role: "copy"
+ }),
+ new MenuItem({
+ label: "paste",
+ role: "paste"
+ }),
+ new MenuItem({
+ label: "pasteAndMatchStyle",
+ role: "pasteAndMatchStyle"
+ }),
+ new MenuItem({
+ label: "delete",
+ role: "delete"
+ }),
+ new MenuItem({
+ label: "selectAll",
+ role: "selectAll"
+ })
+ ])
+ })
+ ]);
+
+ mainWindow.setMenu(menu);
+ Menu.setApplicationMenu(menu);
mainWindow.loadFile('index.html');
}
diff --git a/logo.svg b/logo.svg
new file mode 100644
index 0000000..1019d73
--- /dev/null
+++ b/logo.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 26.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:url(#SVGID_1_);}
+</style>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="73.6195" y1="186.9167" x2="437.5792" y2="550.8765">
+ <stop offset="0" style="stop-color:#E44857"/>
+ <stop offset="0.5" style="stop-color:#C711E1"/>
+ <stop offset="1" style="stop-color:#7F52FF"/>
+</linearGradient>
+<path class="st0" d="M237.7,24.3L14.1,472.1C7.5,485.4,17.2,501,32,501h447.1c14.9,0,24.5-15.6,17.9-28.9L273.5,24.3
+ C266.1,9.6,245.1,9.6,237.7,24.3z"/>
+</svg>
diff --git a/unlock.svg b/unlock.svg
new file mode 100644
index 0000000..e1e45b4
--- /dev/null
+++ b/unlock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 96 960 960" width="48" fill="#ffffff"><path d="M419 724q1-88 20.5-128.5T505 519q38-30 57-61.109T581 393q0-40-25.5-65.5T485 302q-47 0-75 27t-42 66l-118-51q26-72 84.5-118.5T484.756 179q108.228 0 167.736 61.148Q712 301.297 712 390q0 59-22 103.5T624 578q-47 42-58 67t-10 79H419Zm65.788 277Q448 1001 421.5 974.5T395 911.504q0-37.495 26.42-63.5Q447.841 822 484.92 822 523 822 549 848.004q26 26.005 26 63.5Q575 948 548.788 974.5q-26.213 26.5-64 26.5Z"/></svg> \ No newline at end of file