mirror of
				https://github.com/Ylianst/MeshCentral.git
				synced 2025-03-09 15:40:18 +00:00 
			
		
		
		
	Fixed default session renew timer.
This commit is contained in:
		
							parent
							
								
									b6cc60c1ac
								
							
						
					
					
						commit
						0e697167e9
					
				
					 6 changed files with 66 additions and 10 deletions
				
			
		|  | @ -15,7 +15,7 @@ | |||
|         "WANonly": { "type": "boolean", "default": false, "description": "When enabled, only MeshCentral WAN features are enabled and agents will connect to the server using a well known DNS name." }, | ||||
|         "LANonly": { "type": "boolean", "default": false, "description": "When enabled, only MeshCentral LAN features are enabled and agents will find the server using multicast LAN packets." }, | ||||
|         "maintenanceMode": { "type": "boolean", "default": false, "description": "When enabled the server is in maintenance mode, only administrators can login. Use the maintenance command in server console to change." }, | ||||
|         "sessionTime": { "type": "integer" }, | ||||
|         "sessionTime": { "type": "integer", "default": 60, "description": "Duration of a session cookie in minutes. Changing this affects how often the session needs to be automatically refreshed." }, | ||||
|         "sessionKey": { "type": "string" }, | ||||
|         "sessionSameSite": { "type": "string" }, | ||||
|         "dbEncryptKey": { "type": "string" }, | ||||
|  | @ -273,7 +273,7 @@ | |||
|           "userBlockedIP": { "type": "string" }, | ||||
|           "agentAllowedIP": { "type": "string" }, | ||||
|           "agentBlockedIP": { "type": "string" }, | ||||
|           "userSessionIdleTimeout": { "type": "integer" }, | ||||
|           "userSessionIdleTimeout": { "type": "integer", "default": null, "description": "When set, idle users will be disconnected after a set amounts of minutes." }, | ||||
|           "userConsentFlags": { | ||||
|             "type": "object", | ||||
|             "additionalProperties": false, | ||||
|  |  | |||
|  | @ -1543,6 +1543,7 @@ function CreateMeshCentralServer(config, args) { | |||
|                         for (var i in obj.mpsserver.ciraConnections) { data.conn.am += obj.mpsserver.ciraConnections[i].length; } | ||||
|                     } | ||||
|                     if (obj.firstStats === true) { delete obj.firstStats; data.first = true; } | ||||
|                     if (obj.multiServer != null) { data.s = obj.multiServer.serverid; } | ||||
|                     obj.db.SetServerStats(data); // Save the stats to the database
 | ||||
|                     obj.DispatchEvent(['*'], obj, { action: 'servertimelinestats', data: data }); // Event the server stats
 | ||||
|                 }, 300000); | ||||
|  |  | |||
|  | @ -558,9 +558,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use | |||
|                     if ((user.siteadmin & 21) == 0) return; // Only site administrators with "site backup" or "site restore" or "site update" permissions can use this.
 | ||||
|                     if (common.validateInt(command.hours, 0, 24 * 30) == false) return; | ||||
|                     db.GetServerStats(command.hours, function (err, docs) { | ||||
|                         if (err == null) { | ||||
|                             try { ws.send(JSON.stringify({ action: 'servertimelinestats', events: docs })); } catch (ex) { } | ||||
|                         } | ||||
|                         if (err == null) { try { ws.send(JSON.stringify({ action: 'servertimelinestats', events: docs })); } catch (ex) { } } | ||||
|                     }); | ||||
|                     break; | ||||
|                 } | ||||
|  |  | |||
|  | @ -9,7 +9,6 @@ | |||
|     "_mongoDumpPath": "C:\\Program Files\\MongoDB\\Server\\4.2\\bin\\mongodump.exe", | ||||
|     "_WANonly": true, | ||||
|     "_LANonly": true, | ||||
|     "_sessionTime": 30, | ||||
|     "_sessionKey": "MyReallySecretPassword1", | ||||
|     "_sessionSameSite": "strict", | ||||
|     "_dbEncryptKey": "MyReallySecretPassword2", | ||||
|  |  | |||
|  | @ -994,6 +994,8 @@ | |||
|                 <div id="p40title"><h1>My Server Stats</h1></div> | ||||
|                 <div class="areaHead"> | ||||
|                     <div class="toright2"> | ||||
|                         <select id=p40server style="display:none" onchange=updateServerTimelineStats()> | ||||
|                         </select>  | ||||
|                         <select id=p40type onchange=updateServerTimelineStats()> | ||||
|                             <option value=0>Connections</option> | ||||
|                             <option value=1>Memory</option> | ||||
|  | @ -1248,7 +1250,7 @@ | |||
|         <audio id="chimes"><source src="sounds/chimes.mp3" type="audio/mp3" /></audio> | ||||
|         <iframe style=display:none name="fileDownloadFrame"></iframe> | ||||
|     </div> | ||||
|     <script type="text/javascript" nonce="abc"> | ||||
|     <script type="text/javascript"> | ||||
|         'use strict'; | ||||
| 
 | ||||
|         // Process server-side web state | ||||
|  | @ -13377,6 +13379,15 @@ | |||
|         function setServerTimelineStats(stats) { serverTimelineStats = stats; updateServerTimelineStats(); } | ||||
|         function addServerTimelineStats(stats) { | ||||
|             if (serverTimelineStats == null) return; | ||||
| 
 | ||||
|             // Check if this new data is for our selected server | ||||
|             var selectedServer = null; | ||||
|             if (Q('p40server').value != null) { | ||||
|                 selectedServer = decodeURIComponent(Q('p40server').value); | ||||
|                 if (selectedServer == "") { selectedServer = null; } | ||||
|             } | ||||
|             if (stats.s != selectedServer) return; | ||||
| 
 | ||||
|             serverTimelineStats.push(stats); | ||||
|             var chartType = Q('p40type').value; | ||||
|             if (chartType == 0) { | ||||
|  | @ -13406,7 +13417,8 @@ | |||
|         function setupServerTimelineStats() { window.serverMainStats = new Chart(document.getElementById('serverMainStats').getContext('2d'), serverTimelineConfig); } | ||||
| 
 | ||||
|         function updateServerTimelineStats() { | ||||
|             var data, chartType = Q('p40type').value, timeAfter = pastDate(Q('p40time').value); | ||||
|             var data, chartType = Q('p40type').value, timeAfter = pastDate(Q('p40time').value), servers = [], selectedServer = null, serverEmptyExists = false, serverAutoSelect = true; | ||||
|             if (Q('p40server').value != null) { selectedServer = decodeURIComponent(Q('p40server').value); if (selectedServer == "") { selectedServer = null; } serverAutoSelect = false; } | ||||
|             serverTimelineConfig.options.scales.xAxes[0].time = { min: timeAfter }; | ||||
|             if (chartType == 0) { // Connections | ||||
|                 serverTimelineConfig.options.scales.yAxes[0].scaleLabel.labelString = "Connection Count"; | ||||
|  | @ -13422,6 +13434,12 @@ | |||
|                 }; | ||||
|                 for (var i = 0; i < serverTimelineStats.length; i++) { | ||||
|                     var t = new Date(serverTimelineStats[i].time); | ||||
|                     if ((serverTimelineStats[i].s != null) && (servers.indexOf(serverTimelineStats[i].s) == -1)) { | ||||
|                         servers.push(serverTimelineStats[i].s); | ||||
|                         if (serverAutoSelect) { selectedServer = serverTimelineStats[i].s; serverAutoSelect = false; } | ||||
|                     } | ||||
|                     if (serverTimelineStats[i].s == null) { serverEmptyExists = true; } | ||||
|                     if (serverTimelineStats[i].s != selectedServer) { continue; } | ||||
|                     if (serverTimelineStats[i].first == true) { | ||||
|                         data.datasets[0].data.push({ x: serverTimelineStats[i].time - 1, y: NaN }); | ||||
|                         data.datasets[1].data.push({ x: serverTimelineStats[i].time - 1, y: NaN }); | ||||
|  | @ -13449,6 +13467,12 @@ | |||
|                     ] | ||||
|                 }; | ||||
|                 for (var i = 0; i < serverTimelineStats.length; i++) { | ||||
|                     if ((serverTimelineStats[i].s != null) && (servers.indexOf(serverTimelineStats[i].s) == -1)) { | ||||
|                         servers.push(serverTimelineStats[i].s); | ||||
|                         if (serverAutoSelect) { selectedServer = serverTimelineStats[i].s; serverAutoSelect = false; } | ||||
|                     } | ||||
|                     if (serverTimelineStats[i].s == null) { serverEmptyExists = true; } | ||||
|                     if (serverTimelineStats[i].s != selectedServer) { continue; } | ||||
|                     if (serverTimelineStats[i].first == true) { | ||||
|                         data.datasets[0].data.push({ x: serverTimelineStats[i].time - 1, y: NaN }); | ||||
|                         data.datasets[1].data.push({ x: serverTimelineStats[i].time - 1, y: NaN }); | ||||
|  | @ -13480,6 +13504,14 @@ | |||
|             }*/ | ||||
|             serverTimelineConfig.data = data; | ||||
|             window.serverMainStats.update(); | ||||
| 
 | ||||
|             if (servers.length > 0) { | ||||
|                 var x = ''; | ||||
|                 for (var i = 0; i < servers.length; i++) { x += '<option value="' + encodeURIComponentEx(servers[i]) + '"' + ((selectedServer == servers[i])?' selected':'') + '>' + EscapeHtml(servers[i]) + '</option>'; } | ||||
|                 if (serverEmptyExists) { x += '<option value=""' + ((selectedServer == null)?' selected':'') + '>' + "Null" + '</option>'; } | ||||
|                 QH('p40server', x); | ||||
|             } | ||||
|             QV('p40server', servers.length > 0); | ||||
|         } | ||||
| 
 | ||||
|         function p40downloadEvents() { | ||||
|  |  | |||
							
								
								
									
										30
									
								
								webserver.js
									
										
									
									
									
								
							
							
						
						
									
										30
									
								
								webserver.js
									
										
									
									
									
								
							|  | @ -2458,7 +2458,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) { | |||
|                     serverfeatures: serverFeatures, | ||||
|                     features: features, | ||||
|                     features2: features2, | ||||
|                     sessiontime: args.sessiontime, | ||||
|                     sessiontime: (args.sessiontime) ? args.sessiontime : 60, | ||||
|                     mpspass: args.mpspass, | ||||
|                     passRequirements: passRequirements, | ||||
|                     customui: customui, | ||||
|  | @ -2562,7 +2562,33 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) { | |||
|         if (domain.customui != null) { customui = encodeURIComponent(JSON.stringify(domain.customui)); } | ||||
| 
 | ||||
|         // Render the login page
 | ||||
|         render(req, res, getRenderPage((domain.sitestyle == 2) ? 'login2' : 'login', req, domain), getRenderArgs({ loginmode: loginmode, rootCertLink: getRootCertLink(), newAccount: newAccountsAllowed, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: obj.getWebServerName(domain), serverPublicPort: httpsPort, passlogin: (typeof domain.showpasswordlogin == 'boolean') ? domain.showpasswordlogin : true, emailcheck: emailcheck, features: features, sessiontime: args.sessiontime, passRequirements: passRequirements, customui: customui, footer: (domain.loginfooter == null) ? '' : domain.loginfooter, hkey: encodeURIComponent(hardwareKeyChallenge).replace(/'/g, '%27'), messageid: msgid, passhint: passhint, welcometext: domain.welcometext ? encodeURIComponent(domain.welcometext).split('\'').join('\\\'') : null, hwstate: hwstate, otpemail: otpemail, otpsms: otpsms, twoFactorCookieDays: twoFactorCookieDays, authStrategies: authStrategies.join(','), loginpicture: (typeof domain.loginpicture == 'string') }, req, domain, (domain.sitestyle == 2) ? 'login2' : 'login')); | ||||
|         render(req, res, | ||||
|             getRenderPage((domain.sitestyle == 2) ? 'login2' : 'login', req, domain), | ||||
|             getRenderArgs({ | ||||
|                 loginmode: loginmode, | ||||
|                 rootCertLink: getRootCertLink(), | ||||
|                 newAccount: newAccountsAllowed, | ||||
|                 newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), | ||||
|                 serverDnsName: obj.getWebServerName(domain), | ||||
|                 serverPublicPort: httpsPort, | ||||
|                 passlogin: (typeof domain.showpasswordlogin == 'boolean') ? domain.showpasswordlogin : true, | ||||
|                 emailcheck: emailcheck, | ||||
|                 features: features, | ||||
|                 sessiontime: (args.sessiontime) ? args.sessiontime : 60, | ||||
|                 passRequirements: passRequirements, | ||||
|                 customui: customui, | ||||
|                 footer: (domain.loginfooter == null) ? '' : domain.loginfooter, | ||||
|                 hkey: encodeURIComponent(hardwareKeyChallenge).replace(/'/g, '%27'), | ||||
|                 messageid: msgid, | ||||
|                 passhint: passhint, | ||||
|                 welcometext: domain.welcometext ? encodeURIComponent(domain.welcometext).split('\'').join('\\\'') : null, | ||||
|                 hwstate: hwstate, | ||||
|                 otpemail: otpemail, | ||||
|                 otpsms: otpsms, | ||||
|                 twoFactorCookieDays: twoFactorCookieDays, | ||||
|                 authStrategies: authStrategies.join(','), | ||||
|                 loginpicture: (typeof domain.loginpicture == 'string') | ||||
|             }, req, domain, (domain.sitestyle == 2) ? 'login2' : 'login')); | ||||
|     } | ||||
| 
 | ||||
|     // Handle a post request on the root
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue