mirror of
https://github.com/TheGreyDiamond/Enlight.git
synced 2025-12-16 23:10:45 +01:00
Joining works now
This commit is contained in:
238
index.js
238
index.js
@@ -1,13 +1,20 @@
|
|||||||
const { app, BrowserWindow, screen, ipcMain, BrowserView } = require("electron");
|
const {
|
||||||
var Config = require('config-js');
|
app,
|
||||||
|
BrowserWindow,
|
||||||
|
screen,
|
||||||
|
ipcMain,
|
||||||
|
BrowserView,
|
||||||
|
} = require("electron");
|
||||||
|
var Config = require("config-js");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const { win32 } = require("path");
|
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 express = require("express");
|
||||||
const { time } = require("console");
|
const { time } = require("console");
|
||||||
const restApp = express()
|
const { nanoid } = require("nanoid");
|
||||||
|
const restApp = express();
|
||||||
|
|
||||||
const restPort = 33334;
|
const restPort = 33334;
|
||||||
const PORT = 33333;
|
const PORT = 33333;
|
||||||
@@ -26,7 +33,7 @@ var preloadedPageLookup = {};
|
|||||||
var pageLookup = {};
|
var pageLookup = {};
|
||||||
pageLookup["index"] = "index.html";
|
pageLookup["index"] = "index.html";
|
||||||
pageLookup["session"] = "sessions.html";
|
pageLookup["session"] = "sessions.html";
|
||||||
pageLookup["header"] = "header.html"
|
pageLookup["header"] = "header.html";
|
||||||
|
|
||||||
/// !!!-----------!!!
|
/// !!!-----------!!!
|
||||||
// Session state data
|
// Session state data
|
||||||
@@ -42,10 +49,12 @@ var sessionStateGoal = -1;
|
|||||||
|
|
||||||
var mySession = {
|
var mySession = {
|
||||||
name: "Unnamed Session",
|
name: "Unnamed Session",
|
||||||
joinable: true,
|
joinable: false,
|
||||||
passwordProtected: false,
|
passwordProtected: false,
|
||||||
passwordHash: "",
|
passwordHash: "",
|
||||||
members: 1
|
members: 1,
|
||||||
|
memberList: [],
|
||||||
|
usedUIDs: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
var mainConn = "";
|
var mainConn = "";
|
||||||
@@ -53,60 +62,60 @@ var mainNetworkInterface = undefined;
|
|||||||
|
|
||||||
for (const [key, value] of Object.entries(pageLookup)) {
|
for (const [key, value] of Object.entries(pageLookup)) {
|
||||||
// check if the property/key is defined in the object itself, not in parent
|
// check if the property/key is defined in the object itself, not in parent
|
||||||
if (pageLookup.hasOwnProperty(key)) {
|
if (pageLookup.hasOwnProperty(key)) {
|
||||||
fs.readFile('ui_templates/' + value, 'utf8', function (err,data) {
|
fs.readFile("ui_templates/" + value, "utf8", function (err, data) {
|
||||||
preLoadedAmount++;
|
preLoadedAmount++;
|
||||||
if (err) {
|
if (err) {
|
||||||
return console.log(err);
|
return console.log(err);
|
||||||
}
|
}
|
||||||
preloadedPageLookup[key] = data;
|
preloadedPageLookup[key] = data;
|
||||||
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function prepBroadcast(){
|
function prepBroadcast() {
|
||||||
server.bind(PORT, function(){
|
server.bind(PORT, function () {
|
||||||
server.setBroadcast(true);
|
server.setBroadcast(true);
|
||||||
server.setMulticastTTL(128);
|
server.setMulticastTTL(128);
|
||||||
server.addMembership(MULTICAST_ADDR);
|
server.addMembership(MULTICAST_ADDR);
|
||||||
});
|
});
|
||||||
runy = true
|
runy = true;
|
||||||
while(runy){
|
while (runy) {
|
||||||
//console.log("INTERFACE EMPTY", networkInterfaces)
|
//console.log("INTERFACE EMPTY", networkInterfaces)
|
||||||
if(networkInterfaces.length >=1){
|
if (networkInterfaces.length >= 1) {
|
||||||
runy = false
|
runy = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log("Waiting done")
|
console.log("Waiting done");
|
||||||
|
|
||||||
var Ibroad = 0;
|
var Ibroad = 0;
|
||||||
var names = [];
|
var names = [];
|
||||||
while(Ibroad < networkInterfaces.length){
|
while (Ibroad < networkInterfaces.length) {
|
||||||
names.push(networkInterfaces[Ibroad].ifaceName)
|
names.push(networkInterfaces[Ibroad].ifaceName);
|
||||||
Ibroad++;
|
Ibroad++;
|
||||||
}
|
}
|
||||||
last = fs.readFileSync("usrStore/lastNetwork.data")
|
last = fs.readFileSync("usrStore/lastNetwork.data");
|
||||||
mainConn = last.toString();
|
mainConn = last.toString();
|
||||||
ind = names.indexOf(mainConn);
|
ind = names.indexOf(mainConn);
|
||||||
mainNetworkInterface = networkInterfaces[ind]
|
mainNetworkInterface = networkInterfaces[ind];
|
||||||
//console.info("!!!!!!!!!!!!!!!!!!!!!", mainConn, names, mainNetworkInterface)
|
//console.info("!!!!!!!!!!!!!!!!!!!!!", mainConn, names, mainNetworkInterface)
|
||||||
}
|
}
|
||||||
|
|
||||||
function broadcastNew() {
|
function broadcastNew() {
|
||||||
|
var message = new Buffer(
|
||||||
var message = new Buffer("ENLIGHT_NEW_SESSION$" + String(mainNetworkInterface.ip4));
|
"ENLIGHT_NEW_SESSION$" + String(mainNetworkInterface.ip4)
|
||||||
|
);
|
||||||
server.send(message, 0, message.length, PORT, MULTICAST_ADDR);
|
server.send(message, 0, message.length, PORT, MULTICAST_ADDR);
|
||||||
console.log("Sent " + message + " to the wire...");
|
console.log("Sent " + message + " to the wire...");
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadPage(name){
|
function loadPage(name) {
|
||||||
load = preloadedPageLookup[name]
|
load = preloadedPageLookup[name];
|
||||||
if(load == undefined){
|
if (load == undefined) {
|
||||||
load = fs.readFileSync("ui_templates/" + pageLookup[name]).toString();
|
load = fs.readFileSync("ui_templates/" + pageLookup[name]).toString();
|
||||||
console.warn("Loading fallback for page " + name);
|
console.warn("Loading fallback for page " + name);
|
||||||
}
|
}
|
||||||
return(load)
|
return load;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createWindow() {
|
function createWindow() {
|
||||||
@@ -121,16 +130,15 @@ function createWindow() {
|
|||||||
win.setMenuBarVisibility(false);
|
win.setMenuBarVisibility(false);
|
||||||
win.setAutoHideMenuBar(true);
|
win.setAutoHideMenuBar(true);
|
||||||
|
|
||||||
|
main = loadPage("index");
|
||||||
main = loadPage("index")
|
header = loadPage("header");
|
||||||
header = loadPage("header")
|
|
||||||
//
|
//
|
||||||
//header = fs.readFileSync("ui_templates/header.html").toString();
|
//header = fs.readFileSync("ui_templates/header.html").toString();
|
||||||
toLoad = header + main;
|
toLoad = header + main;
|
||||||
fs.writeFileSync("ui_templates/temp.html", toLoad)
|
fs.writeFileSync("ui_templates/temp.html", toLoad);
|
||||||
//win.loadURL("data:text/html;charset=utf-8," + encodeURI(toLoad));
|
//win.loadURL("data:text/html;charset=utf-8," + encodeURI(toLoad));
|
||||||
win.loadFile("ui_templates/temp.html")
|
win.loadFile("ui_templates/temp.html");
|
||||||
return(win)
|
return win;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createStartupInfo() {
|
function createStartupInfo() {
|
||||||
@@ -152,7 +160,7 @@ function createStartupInfo() {
|
|||||||
|
|
||||||
function doneLoading() {
|
function doneLoading() {
|
||||||
var fadeOutI = 1;
|
var fadeOutI = 1;
|
||||||
if(Object.keys(pageLookup).length == preLoadedAmount){
|
if (Object.keys(pageLookup).length == preLoadedAmount) {
|
||||||
aWin2.webContents.executeJavaScript(
|
aWin2.webContents.executeJavaScript(
|
||||||
"document.getElementById('current').innerHTML = 'Done';"
|
"document.getElementById('current').innerHTML = 'Done';"
|
||||||
);
|
);
|
||||||
@@ -170,8 +178,8 @@ function doneLoading() {
|
|||||||
clearInterval(fadeIntervall);
|
clearInterval(fadeIntervall);
|
||||||
}
|
}
|
||||||
}, 20);
|
}, 20);
|
||||||
}else{
|
} else {
|
||||||
console.warn("Had to reschedule load finish")
|
console.warn("Had to reschedule load finish");
|
||||||
setTimeout(doneLoading, 200);
|
setTimeout(doneLoading, 200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -179,58 +187,85 @@ function doneLoading() {
|
|||||||
function init() {
|
function init() {
|
||||||
win = createWindow();
|
win = createWindow();
|
||||||
aWin2 = createStartupInfo();
|
aWin2 = createStartupInfo();
|
||||||
setInterval(function(){
|
setInterval(function () {
|
||||||
sysInf.networkInterfaces(function (data) {
|
sysInf.networkInterfaces(function (data) {
|
||||||
networkInterfaces = data;
|
networkInterfaces = data;
|
||||||
});
|
});
|
||||||
}, 2 * 60 * 1000) // Update network interface every 2 mins
|
}, 2 * 60 * 1000); // Update network interface every 2 mins
|
||||||
|
|
||||||
sysInf.networkInterfaces(function (data) {
|
sysInf.networkInterfaces(function (data) {
|
||||||
networkInterfaces = data;
|
networkInterfaces = data;
|
||||||
});
|
});
|
||||||
|
|
||||||
var langs = new Config('./lang/langs_v1.js');
|
var langs = new Config("./lang/langs_v1.js");
|
||||||
|
|
||||||
sessionState = 0; // Init with no connection
|
sessionState = 0; // Init with no connection
|
||||||
setTimeout(function(){
|
setTimeout(function () {
|
||||||
console.log("Starting restfulServer API interface")
|
console.log("Starting restfulServer API interface");
|
||||||
restApp.listen(restPort, () => {
|
restApp.listen(restPort, () => {
|
||||||
console.log(`Restful is running on http://localhost:${restPort}`)
|
console.log(`Restful is running on http://localhost:${restPort}`);
|
||||||
})
|
});
|
||||||
|
|
||||||
restApp.get('/', (req, res) => {
|
restApp.get("/", (req, res) => {
|
||||||
res.send('Hello World! The RestFul API of Enlight is up and working!')
|
res.send("Hello World! The RestFul API of Enlight is up and working!");
|
||||||
})
|
});
|
||||||
|
|
||||||
restApp.get('/api/v1/ping', (req, res) => {
|
restApp.get("/api/v1/ping", (req, res) => {
|
||||||
res.json({state:"Succes", uptime: time.time()});
|
res.json({ state: "Succes", uptime: time.time() });
|
||||||
})
|
});
|
||||||
|
|
||||||
restApp.get('/api/v1/session/info', (req, res) => {
|
restApp.get("/api/v1/session/info", (req, res) => {
|
||||||
res.json({state:"Succes", name: mySession.name, joinAble: mySession.joinable, passwordProtected: mySession.passwordProtected});
|
res.json({
|
||||||
})
|
state: "Succes",
|
||||||
|
name: mySession.name,
|
||||||
|
joinAble: mySession.joinable,
|
||||||
|
passwordProtected: mySession.passwordProtected,
|
||||||
|
memberAmount: mySession.members,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
restApp.get('/api/v1/session/join', (req, res) => {
|
restApp.get("/api/v1/session/join", (req, res) => {
|
||||||
if(mySession.joinable){
|
if (mySession.joinable) {
|
||||||
if(mySession.passwordProtected == false){
|
if (mySession.passwordProtected == false) {
|
||||||
res.json({state: "Succes"})
|
uid = nanoid();
|
||||||
}else{
|
while (mySession.usedUIDs.includes(uid)) {
|
||||||
res.json({state: "Failed", message: "Passwords are not yet implemented", code: -1})
|
uid = nanoid();
|
||||||
|
}
|
||||||
|
|
||||||
|
mySession.usedUIDs.push(uid);
|
||||||
|
dev = {
|
||||||
|
type: "client",
|
||||||
|
ip: req.connection.remoteAddress,
|
||||||
|
uid: uid,
|
||||||
|
};
|
||||||
|
mySession.memberList.push();
|
||||||
|
mySession.members++;
|
||||||
|
res.json({ state: "Succes", uid: uid });
|
||||||
|
} else {
|
||||||
|
res.json({
|
||||||
|
state: "Failed",
|
||||||
|
message: "Passwords are not yet implemented",
|
||||||
|
code: -1,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
res.json({state: "Failed", message: "Session is not joinable.", code: 1})
|
res.json({
|
||||||
|
state: "Failed",
|
||||||
|
message: "Session is not joinable.",
|
||||||
|
code: 1,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
//name: mySession.name, joinAble: mySession.joinable, passwordProtected: mySession.passwordProtected});
|
//name: mySession.name, joinAble: mySession.joinable, passwordProtected: mySession.passwordProtected});
|
||||||
})
|
});
|
||||||
}, 20);
|
}, 20);
|
||||||
|
|
||||||
// Handling sessioning
|
// Handling sessioning
|
||||||
setInterval(function(){
|
setInterval(function () {
|
||||||
if(sessionStateGoal == 2){
|
if (sessionStateGoal == 2) {
|
||||||
broadcastNew();
|
broadcastNew();
|
||||||
sessionState = 2;
|
sessionState = 2;
|
||||||
}
|
}
|
||||||
}, 400)
|
}, 400);
|
||||||
|
|
||||||
setTimeout(doneLoading, 2000);
|
setTimeout(doneLoading, 2000);
|
||||||
ipcMain.on("asynchronous-message", (event, arg) => {
|
ipcMain.on("asynchronous-message", (event, arg) => {
|
||||||
@@ -239,65 +274,66 @@ function init() {
|
|||||||
event.reply("asynchronous-reply", sysInf.battery().hasbattery);
|
event.reply("asynchronous-reply", sysInf.battery().hasbattery);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
ipcMain.on("synchronous-message", (event, arg) => {
|
ipcMain.on("synchronous-message", (event, arg) => {
|
||||||
if (String(arg).includes("hasBattery")) {
|
if (String(arg).includes("hasBattery")) {
|
||||||
sysInf.battery(function (data) {
|
sysInf.battery(function (data) {
|
||||||
event.returnValue = data.hasbattery;
|
event.returnValue = data.hasbattery;
|
||||||
});
|
});
|
||||||
}else if (String(arg).includes("getBatteryLevel")) {
|
} else if (String(arg).includes("getBatteryLevel")) {
|
||||||
sysInf.battery(function (data) {
|
sysInf.battery(function (data) {
|
||||||
event.returnValue = data.percent;
|
event.returnValue = data.percent;
|
||||||
});
|
});
|
||||||
}else if (String(arg).includes("loadOverride")) {
|
} else if (String(arg).includes("loadOverride")) {
|
||||||
event.returnValue = false;
|
event.returnValue = false;
|
||||||
}else if (String(arg).includes("getNetworks")) {
|
} else if (String(arg).includes("getNetworks")) {
|
||||||
event.returnValue = networkInterfaces;
|
event.returnValue = networkInterfaces;
|
||||||
}else if (String(arg).includes("set:newNetwork")) {
|
} else if (String(arg).includes("set:newNetwork")) {
|
||||||
fs.writeFile('usrStore/lastNetwork.data', String(arg).split("|")[1], function (err) {
|
fs.writeFile(
|
||||||
if (err) return console.log(err);
|
"usrStore/lastNetwork.data",
|
||||||
console.log('Saved new main network');
|
String(arg).split("|")[1],
|
||||||
});
|
function (err) {
|
||||||
|
if (err) return console.log(err);
|
||||||
|
console.log("Saved new main network");
|
||||||
|
}
|
||||||
|
);
|
||||||
event.returnValue = "";
|
event.returnValue = "";
|
||||||
} else if (String(arg).includes("getMainNetwork")) {
|
} else if (String(arg).includes("getMainNetwork")) {
|
||||||
try{
|
try {
|
||||||
last = fs.readFileSync("usrStore/lastNetwork.data")
|
last = fs.readFileSync("usrStore/lastNetwork.data");
|
||||||
//console.log(last.toString())
|
//console.log(last.toString())
|
||||||
event.returnValue = last.toString();
|
event.returnValue = last.toString();
|
||||||
mainConn = last.toString();
|
mainConn = last.toString();
|
||||||
}catch(e){
|
} catch (e) {
|
||||||
sysInf.networkInterfaces(function (data) {
|
sysInf.networkInterfaces(function (data) {
|
||||||
fs.writeFileSync("usrStore/lastNetwork.data", data[0].ifaceName);
|
fs.writeFileSync("usrStore/lastNetwork.data", data[0].ifaceName);
|
||||||
event.returnValue = data[0].ifaceName
|
event.returnValue = data[0].ifaceName;
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
} else if (String(arg).includes("PAGE:change")) {
|
||||||
}else if (String(arg).includes("PAGE:change")) {
|
newPage = String(arg).split(".")[1];
|
||||||
newPage = String(arg).split(".")[1]
|
main = header = loadPage(newPage);
|
||||||
main = header = loadPage(newPage)
|
|
||||||
|
|
||||||
header = loadPage("header")
|
header = loadPage("header");
|
||||||
toLoad = header + main;
|
toLoad = header + main;
|
||||||
const timestamp = Date.now();
|
const timestamp = Date.now();
|
||||||
fs.writeFileSync("ui_templates/temp.html", toLoad)
|
fs.writeFileSync("ui_templates/temp.html", toLoad);
|
||||||
const timestamp2 = Date.now();
|
const timestamp2 = Date.now();
|
||||||
win.loadFile("ui_templates/temp.html")
|
win.loadFile("ui_templates/temp.html");
|
||||||
const timestamp3 = Date.now();
|
const timestamp3 = Date.now();
|
||||||
//win.loadFile("ui_templates/header.html")
|
//win.loadFile("ui_templates/header.html")
|
||||||
event.returnValue = "";
|
event.returnValue = "";
|
||||||
}else if (String(arg).includes("SESSION:get.state")) {
|
} else if (String(arg).includes("SESSION:get.state")) {
|
||||||
event.returnValue = sessionState;
|
event.returnValue = sessionState;
|
||||||
|
} else if (String(arg).includes("SESSION:createNew")) {
|
||||||
}else if (String(arg).includes("SESSION:createNew")) {
|
setTimeout(prepBroadcast, 5);
|
||||||
setTimeout(prepBroadcast, 5)
|
mySession.name = String(arg).split("|")[1];
|
||||||
|
mySession.joinable = true;
|
||||||
sessionState = 1;
|
sessionState = 1;
|
||||||
sessionStateGoal = 2;
|
sessionStateGoal = 2;
|
||||||
event.returnValue = "";
|
event.returnValue = "";
|
||||||
|
} else {
|
||||||
}else{
|
event.returnValue = "ERR:UNKNOW_CMD";
|
||||||
event.returnValue = "ERR:UNKNOW_CMD"
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
5
package-lock.json
generated
5
package-lock.json
generated
@@ -851,6 +851,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||||
},
|
},
|
||||||
|
"nanoid": {
|
||||||
|
"version": "3.1.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.18.tgz",
|
||||||
|
"integrity": "sha512-rndlDjbbHbcV3xi+R2fpJ+PbGMdfBxz5v1fATIQFq0DP64FsicQdwnKLy47K4kZHdRpmQXtz24eGsxQqamzYTA=="
|
||||||
|
},
|
||||||
"negotiator": {
|
"negotiator": {
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
"ejs": "^3.1.5",
|
"ejs": "^3.1.5",
|
||||||
"electron": "^11.0.2",
|
"electron": "^11.0.2",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
|
"nanoid": "^3.1.18",
|
||||||
"systeminformation": "^4.30.1",
|
"systeminformation": "^4.30.1",
|
||||||
"yarn": "^1.22.10"
|
"yarn": "^1.22.10"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,20 @@
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<button onclick='ipcRenderer.sendSync("synchronous-message", "SESSION:createNew");''>
|
Name: <input type="text" value="Unnamed session" id="sessionName">
|
||||||
|
<button onclick='createNewSession()'>
|
||||||
Create new session
|
Create new session
|
||||||
</button>
|
</button>
|
||||||
|
<script>
|
||||||
|
function createNewSession() {
|
||||||
|
val = document.getElementById("sessionName").value
|
||||||
|
if (val.indexOf('|') > -1)
|
||||||
|
{
|
||||||
|
alert("Your Sessionname may not contain a |");
|
||||||
|
}
|
||||||
|
console.log(val)
|
||||||
|
ipcRenderer.sendSync("synchronous-message", "SESSION:createNew| " + val);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -214,8 +214,20 @@
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<button onclick='ipcRenderer.sendSync("synchronous-message", "SESSION:createNew");''>
|
Name: <input type="text" value="Unnamed session" id="sessionName">
|
||||||
|
<button onclick='createNewSession()'>
|
||||||
Create new session
|
Create new session
|
||||||
</button>
|
</button>
|
||||||
|
<script>
|
||||||
|
function createNewSession() {
|
||||||
|
val = document.getElementById("sessionName").value
|
||||||
|
if (val.indexOf('|') > -1)
|
||||||
|
{
|
||||||
|
alert("Your Sessionname may not contain a |");
|
||||||
|
}
|
||||||
|
console.log(val)
|
||||||
|
ipcRenderer.sendSync("synchronous-message", "SESSION:createNew| " + val);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user