mirror of
https://github.com/TheGreyDiamond/Enlight.git
synced 2025-07-18 04:33:50 +02:00
Basic rest api
This commit is contained in:
35
index.js
35
index.js
@ -4,14 +4,12 @@ const { win32 } = require("path");
|
|||||||
const sysInf = require("systeminformation");
|
const sysInf = require("systeminformation");
|
||||||
const dgram = require("dgram");
|
const dgram = require("dgram");
|
||||||
var server = dgram.createSocket("udp4");
|
var server = dgram.createSocket("udp4");
|
||||||
|
const express = require('express')
|
||||||
|
const restApp = express()
|
||||||
|
|
||||||
|
const restPort = 33334;
|
||||||
const PORT = 33333;
|
const PORT = 33333;
|
||||||
const MULTICAST_ADDR = "192.168.178.255";
|
const MULTICAST_ADDR = "192.168.178.50";
|
||||||
server.bind(PORT, function(){
|
|
||||||
server.setBroadcast(true);
|
|
||||||
server.setMulticastTTL(128);
|
|
||||||
server.addMembership(MULTICAST_ADDR);
|
|
||||||
});
|
|
||||||
|
|
||||||
var aWin2 = undefined;
|
var aWin2 = undefined;
|
||||||
|
|
||||||
@ -58,6 +56,11 @@ for (const [key, value] of Object.entries(pageLookup)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function prepBroadcast(){
|
function prepBroadcast(){
|
||||||
|
server.bind(PORT, function(){
|
||||||
|
server.setBroadcast(true);
|
||||||
|
server.setMulticastTTL(128);
|
||||||
|
server.addMembership(MULTICAST_ADDR);
|
||||||
|
});
|
||||||
runy = true
|
runy = true
|
||||||
while(runy){
|
while(runy){
|
||||||
//console.log("INTERFACE EMPTY", networkInterfaces)
|
//console.log("INTERFACE EMPTY", networkInterfaces)
|
||||||
@ -161,8 +164,6 @@ function doneLoading() {
|
|||||||
console.warn("Had to reschedule load finish")
|
console.warn("Had to reschedule load finish")
|
||||||
setTimeout(doneLoading, 200);
|
setTimeout(doneLoading, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
//aWin2.webContents.executeJavaScript("window.close()")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
@ -176,12 +177,23 @@ function init() {
|
|||||||
|
|
||||||
sysInf.networkInterfaces(function (data) {
|
sysInf.networkInterfaces(function (data) {
|
||||||
networkInterfaces = data;
|
networkInterfaces = data;
|
||||||
console.log("LOOOOOOOOOOOOOOOKKKK")
|
|
||||||
});
|
});
|
||||||
|
|
||||||
setTimeout(prepBroadcast, 10)
|
|
||||||
//prepBroadcast();
|
|
||||||
sessionState = 0; // Init with no connection
|
sessionState = 0; // Init with no connection
|
||||||
|
setTimeout(function(){
|
||||||
|
console.log("Starting restfulServer API interface")
|
||||||
|
restApp.listen(restPort, () => {
|
||||||
|
console.log(`Restful is running on http://localhost:${restPort}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
restApp.get('/', (req, res) => {
|
||||||
|
res.send('Hello World! The RestFul API of Enlight is up and working!')
|
||||||
|
})
|
||||||
|
restApp.get('/api/v1/ping', (req, res) => {
|
||||||
|
res.json({state:"Succes"});
|
||||||
|
})
|
||||||
|
}, 20);
|
||||||
|
|
||||||
// Handling sessioning
|
// Handling sessioning
|
||||||
setInterval(function(){
|
setInterval(function(){
|
||||||
@ -250,6 +262,7 @@ function init() {
|
|||||||
event.returnValue = sessionState;
|
event.returnValue = sessionState;
|
||||||
|
|
||||||
}else if (String(arg).includes("SESSION:createNew")) {
|
}else if (String(arg).includes("SESSION:createNew")) {
|
||||||
|
setTimeout(prepBroadcast, 5)
|
||||||
sessionState = 1;
|
sessionState = 1;
|
||||||
sessionStateGoal = 2;
|
sessionStateGoal = 2;
|
||||||
event.returnValue = "";
|
event.returnValue = "";
|
||||||
|
@ -201,21 +201,208 @@
|
|||||||
|
|
||||||
<!--</body>
|
<!--</body>
|
||||||
</html>-->
|
</html>-->
|
||||||
|
<!DOCTYPE html>
|
||||||
<h1>Sessions</h1>
|
<html>
|
||||||
yes.
|
<head>
|
||||||
<button onclick='ipcRenderer.sendSync("synchronous-message", "PAGE:change.index");'>Go back</button>
|
<meta charset="UTF-8" />
|
||||||
<state>Sessionstate: <state id = "sessionStateText">unknown</state></state>
|
<title>Enlight - Screen 1</title>
|
||||||
|
<!--<meta
|
||||||
|
http-equiv="Content-Security-Policy"
|
||||||
|
content="script-src 'self' 'unsafe-inline';"
|
||||||
|
/>-->
|
||||||
|
<script src="static/jquery-1.7.1.min.js" type="text/javascript"></script>
|
||||||
|
<script src="static/js/helper.js" type="text/javascript"></script>
|
||||||
|
<!--<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>*-->
|
||||||
|
<link href="static/default.css" rel="stylesheet" />
|
||||||
|
<link
|
||||||
|
href="static/fontawesome-free-5.15.1-web/css/all.css"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
<!--<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">-->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!--<div id="header-bar" class="header-bar">
|
||||||
|
<div class="areaRight">
|
||||||
|
<network>
|
||||||
|
<i
|
||||||
|
class="fas fa-network-wired"
|
||||||
|
id="networkBtn"
|
||||||
|
onclick='document.getElementById("networkDropdown").classList.toggle("show");'
|
||||||
|
></i>
|
||||||
|
<div id="networkDropdown" class="dropdown-content"></div>
|
||||||
|
</network>
|
||||||
|
<battery id="battery" class="fa"></battery>
|
||||||
|
<clock id="clock" class="header-clock"></clock>
|
||||||
|
<i
|
||||||
|
class="fa-spin loader1 fa"
|
||||||
|
style="font-size: 18px; padding-right: 4px"
|
||||||
|
id="loader"
|
||||||
|
></i
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<script>
|
<script>
|
||||||
connectionStatesAsText = {"-1": "Unknown", "0": "Not connected to a session", "1": "Connecting...", "2": "Hosting", "3": "Connected", "4": "Connection failed"};
|
var loaderInUse = true;
|
||||||
setInterval(function(){
|
const { ipcRenderer } = require("electron");
|
||||||
connectionState = ipcRenderer.sendSync("synchronous-message", "SESSION:get.state");
|
setInterval(function () {
|
||||||
document.getElementById("sessionStateText").innerHTML = connectionStatesAsText[String(connectionState)];
|
// Pulling general info from main thread
|
||||||
}, 1000);
|
loadOverride = ipcRenderer.sendSync(
|
||||||
|
"synchronous-message",
|
||||||
|
"loadOverride"
|
||||||
|
);
|
||||||
|
if (!loaderInUse) {
|
||||||
|
if (loadOverride) {
|
||||||
|
document.getElementById("loader").innerHTML = "";
|
||||||
|
} else {
|
||||||
|
document.getElementById("loader").innerHTML = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
// Network info
|
||||||
|
var allNetworkNames = [];
|
||||||
|
function buildNetworkDropDown() {
|
||||||
|
loaderInUse = true;
|
||||||
|
document.getElementById("loader").innerHTML = "";
|
||||||
|
allNetworks = ipcRenderer.sendSync(
|
||||||
|
"synchronous-message",
|
||||||
|
"getNetworks"
|
||||||
|
);
|
||||||
|
lastNetwork = ipcRenderer.sendSync(
|
||||||
|
"synchronous-message",
|
||||||
|
"getMainNetwork"
|
||||||
|
);
|
||||||
|
allNetworkNames = [];
|
||||||
|
console.log(lastNetwork);
|
||||||
|
i = 0;
|
||||||
|
var dropDown = document.getElementById("networkDropdown");
|
||||||
|
dropDown.innerHTML = "";
|
||||||
|
while (i < allNetworks.length) {
|
||||||
|
temp =
|
||||||
|
"<a id='networkEntry" +
|
||||||
|
String(i) +
|
||||||
|
"' onclick='selectNewNetwork(" +
|
||||||
|
String(i) +
|
||||||
|
")'> " +
|
||||||
|
encode_html(allNetworks[i].ifaceName) +
|
||||||
|
"</a>";
|
||||||
|
dropDown.innerHTML += temp;
|
||||||
|
allNetworkNames.push(allNetworks[i].ifaceName);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (does_list_contain(allNetworkNames, lastNetwork)) {
|
||||||
|
nameOfElm =
|
||||||
|
"networkEntry" + String(allNetworkNames.indexOf(lastNetwork));
|
||||||
|
networkEntryElm = document.getElementById(nameOfElm);
|
||||||
|
networkEntryElm.innerHTML = networkEntryElm.innerHTML.replace(
|
||||||
|
" ",
|
||||||
|
"✔"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
console.warn("Network is no longer valid");
|
||||||
|
ipcRenderer.sendSync(
|
||||||
|
"synchronous-message",
|
||||||
|
"state:networkNoLongerValid"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
loaderInUse = false;
|
||||||
|
document.getElementById("loader").innerHTML = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectNewNetwork(id) {
|
||||||
|
idAsNumber = parseInt(id);
|
||||||
|
newNetwork = allNetworkNames[id];
|
||||||
|
ipcRenderer.sendSync(
|
||||||
|
"synchronous-message",
|
||||||
|
"set:newNetwork|" + newNetwork
|
||||||
|
);
|
||||||
|
buildNetworkDropDown();
|
||||||
|
|
||||||
|
nameOfElm = "networkEntry" + String(idAsNumber);
|
||||||
|
networkEntryElm = document.getElementById(nameOfElm);
|
||||||
|
networkEntryElm.innerHTML = networkEntryElm.innerHTML.replace(
|
||||||
|
" ",
|
||||||
|
"✔"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
buildNetworkDropDown();
|
||||||
</script>
|
</script>
|
||||||
<button onclick='ipcRenderer.sendSync("synchronous-message", "SESSION:createNew");''>
|
<script>
|
||||||
Create new session
|
// Battery info screen
|
||||||
</button>
|
batteryExists = ipcRenderer.sendSync("synchronous-message", "hasBattery"); // prints "pong"
|
||||||
|
var batteryShowdStart = false;
|
||||||
|
if (batteryExists) {
|
||||||
|
batteryLevel = ipcRenderer.sendSync(
|
||||||
|
"synchronous-message",
|
||||||
|
"getBatteryLevel"
|
||||||
|
);
|
||||||
|
|
||||||
|
//Setup regular updates
|
||||||
|
setInterval(function () {
|
||||||
|
batteryLevel = parseInt(
|
||||||
|
ipcRenderer.sendSync("synchronous-message", "getBatteryLevel")
|
||||||
|
);
|
||||||
|
|
||||||
|
batteryShowdStart = true;
|
||||||
|
if (batteryLevel > 75) {
|
||||||
|
document.getElementById("battery").innerHTML = "";
|
||||||
|
} else if (batteryLevel <= 75 && batteryLevel > 50) {
|
||||||
|
document.getElementById("battery").innerHTML = "";
|
||||||
|
} else if (batteryLevel <= 50 && batteryLevel > 25) {
|
||||||
|
document.getElementById("battery").innerHTML = "";
|
||||||
|
} else if (batteryLevel <= 25 && batteryLevel > 5) {
|
||||||
|
document.getElementById("battery").innerHTML = "";
|
||||||
|
} else {
|
||||||
|
document.getElementById("battery").innerHTML = "";
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
|
} else {
|
||||||
|
batteryShowdStart = true;
|
||||||
|
}
|
||||||
|
if (batteryShowdStart) {
|
||||||
|
document.getElementById("loader").innerHTML = "";
|
||||||
|
loaderInUse = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
setInterval(function () {
|
||||||
|
var date = new Date();
|
||||||
|
hour = updateTime(date.getHours());
|
||||||
|
min = updateTime(date.getMinutes());
|
||||||
|
sec = updateTime(date.getSeconds());
|
||||||
|
document.getElementById("clock").innerHTML =
|
||||||
|
hour + ":" + min + ":" + sec;
|
||||||
|
}, 500);
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
window.onclick = function (event) {
|
||||||
|
if (!event.target.matches("#networkBtn")) {
|
||||||
|
var dropdowns = document.getElementsByClassName("dropdown-content");
|
||||||
|
var i;
|
||||||
|
for (i = 0; i < dropdowns.length; i++) {
|
||||||
|
var openDropdown = dropdowns[i];
|
||||||
|
if (openDropdown.classList.contains("show")) {
|
||||||
|
openDropdown.classList.remove("show");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>-->
|
||||||
|
<!--<iframe src="header.html" class="headerIframe"></iframe>-->
|
||||||
|
<h1>Hello World!</h1>
|
||||||
|
<button onclick='ipcRenderer.sendSync("synchronous-message", "PAGE:change.session");'>Session screen</button>
|
||||||
|
We are using node
|
||||||
|
<script>
|
||||||
|
document.write(process.versions.node);
|
||||||
|
</script>
|
||||||
|
, Chrome
|
||||||
|
<script>
|
||||||
|
document.write(process.versions.chrome);
|
||||||
|
</script>
|
||||||
|
, and Electron
|
||||||
|
<script>
|
||||||
|
document.write(process.versions.electron);
|
||||||
|
</script>
|
||||||
|
.
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Reference in New Issue
Block a user