mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-12-22 21:31:35 +03:00
Added half relay timeout, terms page fix.
This commit is contained in:
parent
f4867f2349
commit
72741beb26
@ -161,6 +161,9 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
|
|||||||
relayinfo.peer1.ws.peer = relayinfo.peer2.ws;
|
relayinfo.peer1.ws.peer = relayinfo.peer2.ws;
|
||||||
relayinfo.peer2.ws.peer = relayinfo.peer1.ws;
|
relayinfo.peer2.ws.peer = relayinfo.peer1.ws;
|
||||||
|
|
||||||
|
// Remove the timeout
|
||||||
|
if (relayinfo.timeout) { clearTimeout(relayinfo.timeout); delete relayinfo.timeout; }
|
||||||
|
|
||||||
parent.parent.debug(1, 'Relay connected: ' + obj.id + ' (' + cleanRemoteAddr(ws._socket.remoteAddress) + ' --> ' + cleanRemoteAddr(obj.peer.ws._socket.remoteAddress) + ')');
|
parent.parent.debug(1, 'Relay connected: ' + obj.id + ' (' + cleanRemoteAddr(ws._socket.remoteAddress) + ' --> ' + cleanRemoteAddr(obj.peer.ws._socket.remoteAddress) + ')');
|
||||||
} else {
|
} else {
|
||||||
// Connected already, drop (TODO: maybe we should re-connect?)
|
// Connected already, drop (TODO: maybe we should re-connect?)
|
||||||
@ -174,7 +177,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
|
|||||||
} else {
|
} else {
|
||||||
// Wait for other relay connection
|
// Wait for other relay connection
|
||||||
ws._socket.pause(); // Hold traffic until the other connection
|
ws._socket.pause(); // Hold traffic until the other connection
|
||||||
parent.wsrelays[obj.id] = { peer1: obj, state: 1 };
|
parent.wsrelays[obj.id] = { peer1: obj, state: 1, timeout: setTimeout(function () { closeBothSides(); }, 30000) };
|
||||||
parent.parent.debug(1, 'Relay holding: ' + obj.id + ' (' + cleanRemoteAddr(ws._socket.remoteAddress) + ') ' + (obj.authenticated ? 'Authenticated' : ''));
|
parent.parent.debug(1, 'Relay holding: ' + obj.id + ' (' + cleanRemoteAddr(ws._socket.remoteAddress) + ') ' + (obj.authenticated ? 'Authenticated' : ''));
|
||||||
|
|
||||||
// Check if a peer server has this connection
|
// Check if a peer server has this connection
|
||||||
@ -241,6 +244,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
|
|||||||
} else {
|
} else {
|
||||||
parent.parent.debug(1, 'Relay disconnect: ' + obj.id + ' (' + cleanRemoteAddr(ws._socket.remoteAddress) + ')');
|
parent.parent.debug(1, 'Relay disconnect: ' + obj.id + ' (' + cleanRemoteAddr(ws._socket.remoteAddress) + ')');
|
||||||
}
|
}
|
||||||
|
try { ws.close(); } catch (ex) { }
|
||||||
delete parent.wsrelays[obj.id];
|
delete parent.wsrelays[obj.id];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
@ -6,95 +6,7 @@
|
|||||||
<meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0" />
|
<meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0" />
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
<meta name="format-detection" content="telephone=no" />
|
<meta name="format-detection" content="telephone=no" />
|
||||||
<style>
|
<link type="text/css" href="styles/style.css" media="screen" rel="stylesheet" title="CSS" />
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
border: 0;
|
|
||||||
color: black;
|
|
||||||
font-size: 13px;
|
|
||||||
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
|
|
||||||
background-color: #d3d9d6;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
|
||||||
background-color: #fff;
|
|
||||||
margin: 0 auto;
|
|
||||||
border-top: 0;
|
|
||||||
border-right: 1px solid #b7b7b7;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-left: 1px solid #b7b7b7;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#masthead {
|
|
||||||
width: auto;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
overflow: auto;
|
|
||||||
text-align: right;
|
|
||||||
background-color: #036;
|
|
||||||
}
|
|
||||||
|
|
||||||
#column_l {
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 15px;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer {
|
|
||||||
clear: both;
|
|
||||||
overflow: auto;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #113962;
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.style3 {
|
|
||||||
text-align: center;
|
|
||||||
color: white;
|
|
||||||
background-color: #808080;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer {
|
|
||||||
clear: both;
|
|
||||||
overflow: auto;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #113962;
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer a {
|
|
||||||
color: #fff;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer a:hover {
|
|
||||||
color: #fff;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #036;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.noselect {
|
|
||||||
-webkit-touch-callout: none;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-khtml-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript" src="scripts/common-0.0.1.js"></script>
|
<script type="text/javascript" src="scripts/common-0.0.1.js"></script>
|
||||||
<title>MeshCentral - Terms of use</title>
|
<title>MeshCentral - Terms of use</title>
|
||||||
</head>
|
</head>
|
||||||
@ -110,11 +22,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<p id="logoutControl" style="color:white;font-size:11px;margin: 10px 10px 0;">{{{logoutControl}}}</p>
|
<p id="logoutControl" style="color:white;font-size:11px;margin: 10px 10px 0;">{{{logoutControl}}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="page_content">
|
<div id="page_leftbar">
|
||||||
<div id=topbar class="noselect style3" style="height:24px;position:relative">
|
<div style="height:16px"></div>
|
||||||
<div title="Toggle full width" style="cursor:pointer;color:white;position:absolute;top:3px;right:6px" onclick="toggleFullScreen(1)">↔</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="column_l">
|
<div id=topbar class="noselect style3" style="height:24px;position:relative">
|
||||||
|
<div id=uiMenuButton title="User interface selection" onclick="showUserInterfaceSelectMenu()">
|
||||||
|
♦
|
||||||
|
<div id=uiMenu style="display:none">
|
||||||
|
<div id=uiViewButton1 class=uiSelector onclick=userInterfaceSelectMenu(1) title="Left bar interface"><div class="uiSelector1"></div></div>
|
||||||
|
<div id=uiViewButton2 class=uiSelector onclick=userInterfaceSelectMenu(2) title="Top bar interface"><div class="uiSelector2"></div></div>
|
||||||
|
<div id=uiViewButton3 class=uiSelector onclick=userInterfaceSelectMenu(3) title="Fixed width interface"><div class="uiSelector3"></div></div>
|
||||||
|
<div id=uiViewButton4 class=uiSelector onclick=toggleNightMode() title="Toggle night mode"><div class="uiSelector4"></div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="column_l" style="max-height:calc(100vh - 135px);overflow-y:auto">
|
||||||
<h1>Terms of use</h1>
|
<h1>Terms of use</h1>
|
||||||
<p>Please contact the site administrator for terms of use.</p>
|
<p>Please contact the site administrator for terms of use.</p>
|
||||||
<hr />
|
<hr />
|
||||||
@ -225,7 +147,6 @@
|
|||||||
</p>
|
</p>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<table cellpadding="0" cellspacing="10" style="width: 100%">
|
<table cellpadding="0" cellspacing="10" style="width: 100%">
|
||||||
<tr>
|
<tr>
|
||||||
@ -237,48 +158,79 @@
|
|||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
'use strict';
|
'use strict';
|
||||||
var webPageFullScreen = getstore('webPageFullScreen', true);
|
var uiMode = parseInt(getstore('uiMode', 1));
|
||||||
if (webPageFullScreen == 'false') { webPageFullScreen = false; }
|
var webPageStackMenu = false;
|
||||||
if (webPageFullScreen == 'true') { webPageFullScreen = true; }
|
var webPageFullScreen = true;
|
||||||
toggleFullScreen();
|
var nightMode = (getstore('_nightMode', '0') == '1');
|
||||||
|
|
||||||
var terms = "{{{terms}}}";
|
var terms = "{{{terms}}}";
|
||||||
if (terms != "") { QH('column_l', decodeURIComponent(terms)); }
|
if (terms != "") { QH('column_l', decodeURIComponent(terms)); }
|
||||||
QV('column_l', true);
|
QV('column_l', true);
|
||||||
|
userInterfaceSelectMenu();
|
||||||
|
|
||||||
|
// Toggle user interface menu
|
||||||
|
function showUserInterfaceSelectMenu() {
|
||||||
|
Q('uiViewButton1').classList.remove('uiSelectorSel');
|
||||||
|
Q('uiViewButton2').classList.remove('uiSelectorSel');
|
||||||
|
Q('uiViewButton3').classList.remove('uiSelectorSel');
|
||||||
|
Q('uiViewButton4').classList.remove('uiSelectorSel');
|
||||||
|
try { Q('uiViewButton' + uiMode).classList.add('uiSelectorSel'); } catch (ex) { }
|
||||||
|
QV('uiMenu', (QS('uiMenu').display == 'none'));
|
||||||
|
if (nightMode) { Q('uiViewButton4').classList.add('uiSelectorSel'); }
|
||||||
|
}
|
||||||
|
|
||||||
|
function userInterfaceSelectMenu(s) {
|
||||||
|
if (s) { uiMode = s; putstore('uiMode', uiMode); }
|
||||||
|
webPageFullScreen = (uiMode < 3);
|
||||||
|
webPageStackMenu = true;//(uiMode > 1);
|
||||||
|
toggleFullScreen(0);
|
||||||
|
toggleStackMenu(0);
|
||||||
|
QC('column_l').add('room4submenu');
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleNightMode() {
|
||||||
|
nightMode = !nightMode;
|
||||||
|
if (nightMode) { QC('body').add('night'); } else { QC('body').remove('night'); }
|
||||||
|
putstore('_nightMode', nightMode ? '1' : '0');
|
||||||
|
}
|
||||||
|
|
||||||
// Toggle the web page to full screen
|
// Toggle the web page to full screen
|
||||||
function toggleFullScreen(toggle) {
|
function toggleFullScreen(toggle) {
|
||||||
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
|
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
|
||||||
|
var hide = 0;
|
||||||
|
//if (args.hide) { hide = parseInt(args.hide); }
|
||||||
if (webPageFullScreen == false) {
|
if (webPageFullScreen == false) {
|
||||||
QS('container').width = '960px';
|
QC('body').remove("menu_stack");
|
||||||
QS('container')["min-width"] = '960px';
|
QC('body').remove("fullscreen");
|
||||||
QS('container')['border-right'] = '1px solid #b7b7b7';
|
QC('body').remove("arg_hide");
|
||||||
QS('container')['border-left'] = '1px solid #b7b7b7';
|
//if (xxcurrentView >= 10) QC('column_l').add('room4submenu');
|
||||||
QS('container')['overflow'] = 'hidden';
|
//QV('UserDummyMenuSpan', false);
|
||||||
QS('column_l').height = '';
|
//QV('page_leftbar', false);
|
||||||
QS('column_l').width = '930px';
|
|
||||||
QS('column_l')["overflow-y"] = '';
|
|
||||||
QS('column_l')["max-height"] = '';
|
|
||||||
QS('column_l')["min-width"] = '';
|
|
||||||
QS('masthead')["width"] = '960px';
|
|
||||||
QS('body')['overflow'] = 'auto';
|
|
||||||
} else {
|
} else {
|
||||||
QS('container').width = '100%';
|
QC('body').add("fullscreen");
|
||||||
QS('container')['min-width'] = '';
|
if (hide & 16) QC('body').add("arg_hide"); // This is replacement for QV('page_leftbar', !(hide & 16));
|
||||||
QS('container')['border-right'] = '0';
|
//QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
|
||||||
QS('container')['border-left'] = '0';
|
//QV('page_leftbar', true);
|
||||||
QS('container')['overflow'] = 'hidden';
|
|
||||||
QS('column_l').height = 'calc(100vh - 135px)';
|
|
||||||
QS('column_l').width = '';
|
|
||||||
QS('column_l')["overflow-y"] = 'auto';
|
|
||||||
QS('column_l')["max-height"] = 'calc(100vh - 111px)';
|
|
||||||
QS('column_l')["min-width"] = '';
|
|
||||||
QS('masthead')["width"] = '100%';
|
|
||||||
QS('body')['overflow'] = 'hidden';
|
|
||||||
}
|
}
|
||||||
QV('body', true);
|
QV('body', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If FullScreen, toggle menu to be horisontal or vertical
|
||||||
|
function toggleStackMenu(toggle) {
|
||||||
|
if (webPageFullScreen == true) {
|
||||||
|
if (toggle === 1) {
|
||||||
|
webPageStackMenu = !webPageStackMenu;
|
||||||
|
putstore('webPageStackMenu', webPageStackMenu);
|
||||||
|
}
|
||||||
|
if (webPageStackMenu == false) {
|
||||||
|
QC('body').remove("menu_stack");
|
||||||
|
} else {
|
||||||
|
QC('body').add("menu_stack");
|
||||||
|
//if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function putstore(name, val) { try { if (typeof (localStorage) === 'undefined') return; localStorage.setItem(name, val); } catch (e) { } }
|
function putstore(name, val) { try { if (typeof (localStorage) === 'undefined') return; localStorage.setItem(name, val); } catch (e) { } }
|
||||||
function getstore(name, val) { try { if (typeof (localStorage) === 'undefined') return val; var v = localStorage.getItem(name); if ((v == null) || (v == null)) return val; return v; } catch (e) { return val; } }
|
function getstore(name, val) { try { if (typeof (localStorage) === 'undefined') return val; var v = localStorage.getItem(name); if ((v == null) || (v == null)) return val; return v; } catch (e) { return val; } }
|
||||||
|
|
||||||
|
12
webserver.js
12
webserver.js
@ -1476,7 +1476,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
|
|||||||
if (req.session && req.session.userid) {
|
if (req.session && req.session.userid) {
|
||||||
if (req.session.domainid != domain.id) { req.session = null; res.redirect(domain.url); return; } // Check is the session is for the correct domain
|
if (req.session.domainid != domain.id) { req.session = null; res.redirect(domain.url); return; } // Check is the session is for the correct domain
|
||||||
var user = obj.users[req.session.userid];
|
var user = obj.users[req.session.userid];
|
||||||
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, terms: encodeURIComponent(parent.configurationFiles['terms.txt'].toString()), logoutControl: 'Welcome ' + user.name + '. <a href=' + domain.url + 'logout?' + Math.random() + ' style=color:white>Logout</a>' });
|
var logoutcontrol = 'Welcome ' + user.name + '.';
|
||||||
|
if ((domain.ldap == null) && (domain.sspi == null) && (obj.args.user == null) && (obj.args.nousers != true)) { logoutcontrol += ' <a href=' + domain.url + 'logout?' + Math.random() + ' style=color:white>Logout</a>'; } // If a default user is in use or no user mode, don't display the logout button
|
||||||
|
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, terms: encodeURIComponent(parent.configurationFiles['terms.txt'].toString()), logoutControl: logoutcontrol });
|
||||||
} else {
|
} else {
|
||||||
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, terms: encodeURIComponent(parent.configurationFiles['terms.txt'].toString()) });
|
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, terms: encodeURIComponent(parent.configurationFiles['terms.txt'].toString()) });
|
||||||
}
|
}
|
||||||
@ -1492,7 +1494,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
|
|||||||
if (req.session && req.session.userid) {
|
if (req.session && req.session.userid) {
|
||||||
if (req.session.domainid != domain.id) { req.session = null; res.redirect(domain.url); return; } // Check is the session is for the correct domain
|
if (req.session.domainid != domain.id) { req.session = null; res.redirect(domain.url); return; } // Check is the session is for the correct domain
|
||||||
var user = obj.users[req.session.userid];
|
var user = obj.users[req.session.userid];
|
||||||
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, terms: encodeURIComponent(data), logoutControl: 'Welcome ' + user.name + '. <a href=' + domain.url + 'logout?' + Math.random() + ' style=color:white>Logout</a>' });
|
var logoutcontrol = 'Welcome ' + user.name + '.';
|
||||||
|
if ((domain.ldap == null) && (domain.sspi == null) && (obj.args.user == null) && (obj.args.nousers != true)) { logoutcontrol += ' <a href=' + domain.url + 'logout?' + Math.random() + ' style=color:white>Logout</a>'; } // If a default user is in use or no user mode, don't display the logout button
|
||||||
|
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, terms: encodeURIComponent(data), logoutControl: logoutcontrol });
|
||||||
} else {
|
} else {
|
||||||
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, terms: encodeURIComponent(data) });
|
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, terms: encodeURIComponent(data) });
|
||||||
}
|
}
|
||||||
@ -1503,7 +1507,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
|
|||||||
if (req.session && req.session.userid) {
|
if (req.session && req.session.userid) {
|
||||||
if (req.session.domainid != domain.id) { req.session = null; res.redirect(domain.url); return; } // Check is the session is for the correct domain
|
if (req.session.domainid != domain.id) { req.session = null; res.redirect(domain.url); return; } // Check is the session is for the correct domain
|
||||||
var user = obj.users[req.session.userid];
|
var user = obj.users[req.session.userid];
|
||||||
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, logoutControl: 'Welcome ' + user.name + '. <a href=' + domain.url + 'logout?' + Math.random() + ' style=color:white>Logout</a>' });
|
var logoutcontrol = 'Welcome ' + user.name + '.';
|
||||||
|
if ((domain.ldap == null) && (domain.sspi == null) && (obj.args.user == null) && (obj.args.nousers != true)) { logoutcontrol += ' <a href=' + domain.url + 'logout?' + Math.random() + ' style=color:white>Logout</a>'; } // If a default user is in use or no user mode, don't display the logout button
|
||||||
|
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2, logoutControl: logoutcontrol });
|
||||||
} else {
|
} else {
|
||||||
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2 });
|
res.render(obj.path.join(obj.parent.webViewsPath, isMobileBrowser(req) ? 'terms-mobile' : 'terms'), { title: domain.title, title2: domain.title2 });
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user