mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-12-23 21:55:52 -05:00
Improved internalization.
This commit is contained in:
parent
807ee7a020
commit
e2f69f8bf6
6
.gitignore
vendored
6
.gitignore
vendored
@ -5,6 +5,12 @@
|
||||
[Dd]aemon/
|
||||
[Bb]in/
|
||||
[Aa]gent/
|
||||
[Aa]gents/modules_meshcmd_min/
|
||||
[Aa]gents/modules_meshcore_min/
|
||||
[Aa]gents/meshcmd.min.js
|
||||
[Aa]gents/meshcore.min.js
|
||||
[Pu]ublic/translations/
|
||||
[Vv]iews/translations/
|
||||
meshcentral.db
|
||||
meshcentral.db.json
|
||||
mesherrors.txt
|
||||
|
4
agents/meshcore.min.js
vendored
4
agents/meshcore.min.js
vendored
@ -1211,9 +1211,9 @@ function createMeshCore(agent) {
|
||||
var setupcommands = " alias ls='ls --color=auto'\n";
|
||||
if (shell == sh) setupcommands += "stty erase ^H\n"
|
||||
|
||||
if (script && shell) {
|
||||
if (script && shell && process.platform == 'linux') {
|
||||
this.httprequest.process = childProcess.execFile(script, ['script', '--return', '--quiet', '-c', '"' + shell + '"', '/dev/null'], options); // Start as active user
|
||||
if (process.platform == 'linux') { this.httprequest.process.stdin.write(setupcommands); }
|
||||
this.httprequest.process.stdin.write(setupcommands);
|
||||
} else if (python && shell) {
|
||||
this.httprequest.process = childProcess.execFile(python, ['python', '-c', 'import pty; pty.spawn(["' + shell + '"])'], options); // Start as active user
|
||||
if (process.platform == 'linux') { this.httprequest.process.stdin.write(setupcommands); }
|
||||
|
72
meshuser.js
72
meshuser.js
@ -288,40 +288,66 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
||||
// Take a look at server stats
|
||||
var os = require('os');
|
||||
var stats = { action: 'serverstats', totalmem: os.totalmem(), freemem: os.freemem() };
|
||||
if (parent.parent.platform != 'win32') { stats.cpuavg = os.loadavg(); } // else { stats.cpuavg = [ 0.2435345, 0.523234234, 0.6435345345 ]; }
|
||||
if (parent.parent.platform != 'win32') { stats.cpuavg = os.loadavg(); }
|
||||
var serverStats = {
|
||||
"User Accounts": Object.keys(parent.users).length,
|
||||
"Device Groups": Object.keys(parent.meshes).length,
|
||||
"Agent Sessions": Object.keys(parent.wsagents).length,
|
||||
"Connected Users": Object.keys(parent.wssessions).length,
|
||||
"Users Sessions": Object.keys(parent.wssessions2).length,
|
||||
"Relay Sessions": parent.relaySessionCount,
|
||||
"Relay Count": Object.keys(parent.wsrelays).length
|
||||
UserAccounts: Object.keys(parent.users).length,
|
||||
DeviceGroups: Object.keys(parent.meshes).length,
|
||||
AgentSessions: Object.keys(parent.wsagents).length,
|
||||
ConnectedUsers: Object.keys(parent.wssessions).length,
|
||||
UsersSessions: Object.keys(parent.wssessions2).length,
|
||||
RelaySessions: parent.relaySessionCount,
|
||||
RelayCount: Object.keys(parent.wsrelays).length
|
||||
};
|
||||
if (parent.relaySessionErrorCount != 0) { serverStats['Relay Errors'] = parent.relaySessionErrorCount; }
|
||||
if (parent.parent.mpsserver != null) { serverStats['Connected Intel® AMT'] = Object.keys(parent.parent.mpsserver.ciraConnections).length; }
|
||||
if (parent.relaySessionErrorCount != 0) { serverStats.RelayErrors = parent.relaySessionErrorCount; }
|
||||
if (parent.parent.mpsserver != null) { serverStats.ConnectedIntelAMT = Object.keys(parent.parent.mpsserver.ciraConnections).length; }
|
||||
|
||||
// Take a look at agent errors
|
||||
var agentstats = parent.getAgentStats();
|
||||
var errorCounters = {}, errorCountersCount = 0;
|
||||
if (agentstats.meshDoesNotExistCount > 0) { errorCountersCount++; errorCounters["Unknown Group"] = agentstats.meshDoesNotExistCount; }
|
||||
if (agentstats.invalidPkcsSignatureCount > 0) { errorCountersCount++; errorCounters["Invalid PKCS signature"] = agentstats.invalidPkcsSignatureCount; }
|
||||
if (agentstats.invalidRsaSignatureCount > 0) { errorCountersCount++; errorCounters["Invalid RSA siguature"] = agentstats.invalidRsaSignatureCount; }
|
||||
if (agentstats.invalidJsonCount > 0) { errorCountersCount++; errorCounters["Invalid JSON"] = agentstats.invalidJsonCount; }
|
||||
if (agentstats.unknownAgentActionCount > 0) { errorCountersCount++; errorCounters["Unknown Action"] = agentstats.unknownAgentActionCount; }
|
||||
if (agentstats.agentBadWebCertHashCount > 0) { errorCountersCount++; errorCounters["Bad Web Certificate"] = agentstats.agentBadWebCertHashCount; }
|
||||
if ((agentstats.agentBadSignature1Count + agentstats.agentBadSignature2Count) > 0) { errorCountersCount++; errorCounters["Bad Signature"] = (agentstats.agentBadSignature1Count + agentstats.agentBadSignature2Count); }
|
||||
if (agentstats.agentMaxSessionHoldCount > 0) { errorCountersCount++; errorCounters["Max Sessions Reached"] = agentstats.agentMaxSessionHoldCount; }
|
||||
if ((agentstats.invalidDomainMeshCount + agentstats.invalidDomainMesh2Count) > 0) { errorCountersCount++; errorCounters["Unknown Device Group"] = (agentstats.invalidDomainMeshCount + agentstats.invalidDomainMesh2Count); }
|
||||
if ((agentstats.invalidMeshTypeCount + agentstats.invalidMeshType2Count) > 0) { errorCountersCount++; errorCounters["Invalid Device Group Type"] = (agentstats.invalidMeshTypeCount + agentstats.invalidMeshType2Count); }
|
||||
//if (agentstats.duplicateAgentCount > 0) { errorCountersCount++; errorCounters["Duplicate Agent"] = agentstats.duplicateAgentCount; }
|
||||
if (agentstats.meshDoesNotExistCount > 0) { errorCountersCount++; errorCounters.UnknownGroup = agentstats.meshDoesNotExistCount; }
|
||||
if (agentstats.invalidPkcsSignatureCount > 0) { errorCountersCount++; errorCounters.InvalidPKCSsignature = agentstats.invalidPkcsSignatureCount; }
|
||||
if (agentstats.invalidRsaSignatureCount > 0) { errorCountersCount++; errorCounters.InvalidRSAsiguature = agentstats.invalidRsaSignatureCount; }
|
||||
if (agentstats.invalidJsonCount > 0) { errorCountersCount++; errorCounters.InvalidJSON = agentstats.invalidJsonCount; }
|
||||
if (agentstats.unknownAgentActionCount > 0) { errorCountersCount++; errorCounters.UnknownAction = agentstats.unknownAgentActionCount; }
|
||||
if (agentstats.agentBadWebCertHashCount > 0) { errorCountersCount++; errorCounters.BadWebCertificate = agentstats.agentBadWebCertHashCount; }
|
||||
if ((agentstats.agentBadSignature1Count + agentstats.agentBadSignature2Count) > 0) { errorCountersCount++; errorCounters.BadSignature = (agentstats.agentBadSignature1Count + agentstats.agentBadSignature2Count); }
|
||||
if (agentstats.agentMaxSessionHoldCount > 0) { errorCountersCount++; errorCounters.MaxSessionsReached = agentstats.agentMaxSessionHoldCount; }
|
||||
if ((agentstats.invalidDomainMeshCount + agentstats.invalidDomainMesh2Count) > 0) { errorCountersCount++; errorCounters.UnknownDeviceGroup = (agentstats.invalidDomainMeshCount + agentstats.invalidDomainMesh2Count); }
|
||||
if ((agentstats.invalidMeshTypeCount + agentstats.invalidMeshType2Count) > 0) { errorCountersCount++; errorCounters.InvalidDeviceGroupType = (agentstats.invalidMeshTypeCount + agentstats.invalidMeshType2Count); }
|
||||
//if (agentstats.duplicateAgentCount > 0) { errorCountersCount++; errorCounters.DuplicateAgent = agentstats.duplicateAgentCount; }
|
||||
|
||||
// Send out the stats
|
||||
stats.values = { "Server State": serverStats }
|
||||
if (errorCountersCount > 0) { stats.values["Agent Error Counters"] = errorCounters; }
|
||||
stats.values = { ServerState: serverStats }
|
||||
if (errorCountersCount > 0) { stats.values.AgentErrorCounters = errorCounters; }
|
||||
try { ws.send(JSON.stringify(stats)); } catch (ex) { }
|
||||
}
|
||||
|
||||
//
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Device Groups",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Relay Sessions",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
// When data is received from the web socket
|
||||
ws.on('message', processWebSocketData);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "meshcentral",
|
||||
"version": "0.4.6-j",
|
||||
"version": "0.4.6-k",
|
||||
"keywords": [
|
||||
"Remote Management",
|
||||
"Intel AMT",
|
||||
|
@ -235,22 +235,28 @@ function totext(source, target, lang) {
|
||||
|
||||
// Generate raw text
|
||||
var output = [];
|
||||
var outputCharCount = 0; // Google has a 5000 character limit
|
||||
var splitOutput = [];
|
||||
var splitOutputPtr = 1;
|
||||
var count = 0;
|
||||
for (var i in sourceLangFileData.strings) {
|
||||
if ((sourceLangFileData.strings[i][lang] != null) && (sourceLangFileData.strings[i][lang].indexOf('\r') == -1) && (sourceLangFileData.strings[i][lang].indexOf('\n') == -1)) {
|
||||
output.push(sourceLangFileData.strings[i][lang]);
|
||||
if (splitOutput[Math.floor(count / 1000) + 1] == null) { splitOutput[Math.floor(count / 1000) + 1] = []; }
|
||||
splitOutput[Math.floor(count / 1000) + 1].push(sourceLangFileData.strings[i][lang]);
|
||||
outputCharCount += (sourceLangFileData.strings[i][lang].length + 2);
|
||||
if (outputCharCount > 4500) { outputCharCount = 0; splitOutputPtr++; }
|
||||
if (splitOutput[splitOutputPtr] == null) { splitOutput[splitOutputPtr] = []; }
|
||||
splitOutput[splitOutputPtr].push(sourceLangFileData.strings[i][lang]);
|
||||
} else {
|
||||
output.push('');
|
||||
if (splitOutput[Math.floor(count / 1000) + 1] == null) { splitOutput[Math.floor(count / 1000) + 1] = []; }
|
||||
splitOutput[Math.floor(count / 1000) + 1].push('');
|
||||
outputCharCount += 2;
|
||||
if (outputCharCount > 4500) { outputCharCount = 0; splitOutputPtr++; }
|
||||
if (splitOutput[splitOutputPtr] == null) { splitOutput[splitOutputPtr] = []; }
|
||||
splitOutput[splitOutputPtr].push('');
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
if (output.length <= 1000) {
|
||||
if (splitOutputPtr == 1) {
|
||||
// Save the target back
|
||||
fs.writeFileSync(target + '-' + lang + '.txt', output.join('\r\n'), { flag: 'w+' });
|
||||
console.log('Done.');
|
||||
@ -376,7 +382,8 @@ function extract(langFile, sources) {
|
||||
for (var i in sourceStrings) {
|
||||
count++;
|
||||
sourceStrings[i]['en'] = i;
|
||||
if ((sourceStrings[i].xloc != null) && (sourceStrings[i].xloc.length > 0)) { output.push(sourceStrings[i]); } // Only save results that have a source location.
|
||||
//if ((sourceStrings[i].xloc != null) && (sourceStrings[i].xloc.length > 0)) { output.push(sourceStrings[i]); } // Only save results that have a source location.
|
||||
output.push(sourceStrings[i]); // Save all results
|
||||
}
|
||||
fs.writeFileSync(langFile, JSON.stringify({ 'strings': output }, null, ' '), { flag: 'w+' });
|
||||
console.log(format("{0} strings in output file.", count));
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2586,11 +2586,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -2919,7 +2919,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("open", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -6656,8 +6656,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Edit Device Group Features", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -6885,10 +6885,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Device connections." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Device disconnections." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMT desktop and serial events." + '</label></div>';
|
||||
setDialogMode(2, "Notification Settings", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -7452,7 +7452,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Name" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Last Access") + '<th style=width:120px>' + "Permissions";
|
||||
x += '<th>' + "Name" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Last Access") + '<th style=width:120px>' + "Permissions";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -7909,9 +7909,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Change Password" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -8052,7 +8052,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Day" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -8356,6 +8356,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Device Groups",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Relay Sessions",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -8365,7 +8390,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "CPU load in the last minute" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 5 minutes" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 15 minutes" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "CPU load in the last minute" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 5 minutes" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 15 minutes" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -8377,12 +8402,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8473,10 +8499,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -3640,11 +3640,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -3973,7 +3973,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("open", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -7710,8 +7710,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Edit Device Group Features", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -7939,10 +7939,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Device connections." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Device disconnections." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMT desktop and serial events." + '</label></div>';
|
||||
setDialogMode(2, "Notification Settings", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -8506,7 +8506,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Name" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Last Access") + '<th style=width:120px>' + "Permissions";
|
||||
x += '<th>' + "Name" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Last Access") + '<th style=width:120px>' + "Permissions";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -8963,9 +8963,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Change Password" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -9106,7 +9106,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Day" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -9410,6 +9410,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Device Groups",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Relay Sessions",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -9419,7 +9444,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "CPU load in the last minute" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 5 minutes" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 15 minutes" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "CPU load in the last minute" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 5 minutes" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 15 minutes" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -9431,12 +9456,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9527,10 +9553,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -2586,11 +2586,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -2919,7 +2919,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("otevřít", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -6656,8 +6656,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Upravit vlastnosti skupiny zařízení", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -6885,10 +6885,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Připojení zařízení" + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Odpojení zařízení" + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMT desktop and serial události." + '</label></div>';
|
||||
setDialogMode(2, "Nastavení notifikací", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -7452,7 +7452,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Jméno" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Poslední přístup") + '<th style=width:120px>' + "Práva";
|
||||
x += '<th>' + "Jméno" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Poslední přístup") + '<th style=width:120px>' + "Práva";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -7909,9 +7909,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Změnit heslo" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -8052,7 +8052,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Den" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -8356,6 +8356,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Skupiny zařízení",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Přesměrované relace",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -8365,7 +8390,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "CPU zatížení v poslední minutě" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU zatížení v posledních 5 minutách" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU zatížení v posledních 15 minutách" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "CPU zatížení v poslední minutě" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU zatížení v posledních 5 minutách" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU zatížení v posledních 15 minutách" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -8377,12 +8402,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8473,10 +8499,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -2586,11 +2586,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -2919,7 +2919,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("open", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -6656,8 +6656,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Edit Device Group Features", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -6885,10 +6885,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Device connections." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Device disconnections." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMT desktop and serial events." + '</label></div>';
|
||||
setDialogMode(2, "Notification Settings", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -7452,7 +7452,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Nom" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Dernier accès") + '<th style=width:120px>' + "Permissions";
|
||||
x += '<th>' + "Nom" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Dernier accès") + '<th style=width:120px>' + "Permissions";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -7909,9 +7909,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Change Password" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -8052,7 +8052,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Day" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -8356,6 +8356,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Device Groups",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Relay Sessions",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -8365,7 +8390,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "CPU load in the last minute" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 5 minutes" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 15 minutes" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "CPU load in the last minute" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 5 minutes" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 15 minutes" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -8377,12 +8402,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8473,10 +8499,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -2586,11 +2586,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -2919,7 +2919,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("開いた", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -6656,8 +6656,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "デバイスグループ機能の編集", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -6885,10 +6885,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "デバイス接続。" + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "デバイスの切断。" + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMTデスクトップおよびシリアルイベント。" + '</label></div>';
|
||||
setDialogMode(2, "通知設定", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -7452,7 +7452,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "名" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("最終アクセス") + '<th style=width:120px>' + "許可";
|
||||
x += '<th>' + "名" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("最終アクセス") + '<th style=width:120px>' + "許可";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -7909,9 +7909,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "パスワードを変更する" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -8052,7 +8052,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "日" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -8356,6 +8356,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "デバイスグループ",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "中継セッション",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -8365,7 +8390,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "直前のCPU負荷" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "過去5分間のCPU負荷" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "過去15分間のCPU負荷" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "直前のCPU負荷" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "過去5分間のCPU負荷" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "過去15分間のCPU負荷" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -8377,12 +8402,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8473,10 +8499,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -2586,11 +2586,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -2919,7 +2919,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("Open", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -6656,8 +6656,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Functies van apparaatgroep bewerken", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -6885,10 +6885,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Apparaat verbindingen." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Apparaat verbroken." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMT desktop- en seriële gebeurtenissen." + '</label></div>';
|
||||
setDialogMode(2, "meldingsinstellingen", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -7452,7 +7452,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Naam" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Laatste toegang") + '<th style=width:120px>' + "machtigingen";
|
||||
x += '<th>' + "Naam" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Laatste toegang") + '<th style=width:120px>' + "machtigingen";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -7909,9 +7909,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Verander wachtwoord" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -8052,7 +8052,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Dag" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -8356,6 +8356,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Apparaatgroepen",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Relay Sessies",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -8365,7 +8390,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "CPU-belasting in de laatste minuut" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU-belasting in de afgelopen 5 minuten" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU-belasting in de afgelopen 15 minuten" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "CPU-belasting in de laatste minuut" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU-belasting in de afgelopen 5 minuten" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU-belasting in de afgelopen 15 minuten" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -8377,12 +8402,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8473,10 +8499,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -2586,11 +2586,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -2919,7 +2919,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("abrir", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -6656,8 +6656,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Editar recursos do grupo de dispositivos", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -6885,10 +6885,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Conexões de dispositivos." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Desconexões de dispositivos." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® Área de trabalho AMT e eventos seriais." + '</label></div>';
|
||||
setDialogMode(2, "Configurações de notificação", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -7452,7 +7452,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Nome" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Último acesso") + '<th style=width:120px>' + "Permissões";
|
||||
x += '<th>' + "Nome" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Último acesso") + '<th style=width:120px>' + "Permissões";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -7909,9 +7909,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Mudar senha" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -8052,7 +8052,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Dia" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -8356,6 +8356,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Grupos de dispositivos",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Retransmissão de sessão ",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -8365,7 +8390,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "Carga da CPU no último minuto" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "Carga da CPU nos últimos 5 minutos" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "Carga da CPU nos últimos 15 minutos" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "Carga da CPU no último minuto" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "Carga da CPU nos últimos 5 minutos" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "Carga da CPU nos últimos 15 minutos" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -8377,12 +8402,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8473,10 +8499,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -3638,11 +3638,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -3971,7 +3971,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("otevřít", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -7708,8 +7708,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Upravit vlastnosti skupiny zařízení", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -7937,10 +7937,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Připojení zařízení" + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Odpojení zařízení" + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMT desktop and serial události." + '</label></div>';
|
||||
setDialogMode(2, "Nastavení notifikací", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -8504,7 +8504,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Jméno" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Poslední přístup") + '<th style=width:120px>' + "Práva";
|
||||
x += '<th>' + "Jméno" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Poslední přístup") + '<th style=width:120px>' + "Práva";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -8961,9 +8961,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Změnit heslo" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -9104,7 +9104,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Den" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -9408,6 +9408,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Skupiny zařízení",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Přesměrované relace",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -9417,7 +9442,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "CPU zatížení v poslední minutě" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU zatížení v posledních 5 minutách" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU zatížení v posledních 15 minutách" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "CPU zatížení v poslední minutě" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU zatížení v posledních 5 minutách" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU zatížení v posledních 15 minutách" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -9429,12 +9454,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9525,10 +9551,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -3638,11 +3638,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -3971,7 +3971,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("open", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -7708,8 +7708,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Edit Device Group Features", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -7937,10 +7937,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Device connections." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Device disconnections." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMT desktop and serial events." + '</label></div>';
|
||||
setDialogMode(2, "Notification Settings", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -8504,7 +8504,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Nom" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Dernier accès") + '<th style=width:120px>' + "Permissions";
|
||||
x += '<th>' + "Nom" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Dernier accès") + '<th style=width:120px>' + "Permissions";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -8961,9 +8961,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Change Password" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -9104,7 +9104,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Day" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -9408,6 +9408,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Device Groups",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Relay Sessions",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -9417,7 +9442,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "CPU load in the last minute" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 5 minutes" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 15 minutes" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "CPU load in the last minute" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 5 minutes" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU load in the last 15 minutes" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -9429,12 +9454,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9525,10 +9551,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -3638,11 +3638,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -3971,7 +3971,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("開いた", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -7708,8 +7708,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "デバイスグループ機能の編集", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -7937,10 +7937,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "デバイス接続。" + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "デバイスの切断。" + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMTデスクトップおよびシリアルイベント。" + '</label></div>';
|
||||
setDialogMode(2, "通知設定", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -8504,7 +8504,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "名" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("最終アクセス") + '<th style=width:120px>' + "許可";
|
||||
x += '<th>' + "名" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("最終アクセス") + '<th style=width:120px>' + "許可";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -8961,9 +8961,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "パスワードを変更する" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -9104,7 +9104,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "日" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -9408,6 +9408,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "デバイスグループ",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "中継セッション",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -9417,7 +9442,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "直前のCPU負荷" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "過去5分間のCPU負荷" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "過去15分間のCPU負荷" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "直前のCPU負荷" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "過去5分間のCPU負荷" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "過去15分間のCPU負荷" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -9429,12 +9454,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9525,10 +9551,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -3638,11 +3638,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -3971,7 +3971,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("Open", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -7708,8 +7708,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Functies van apparaatgroep bewerken", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -7937,10 +7937,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Apparaat verbindingen." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Apparaat verbroken." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® AMT desktop- en seriële gebeurtenissen." + '</label></div>';
|
||||
setDialogMode(2, "meldingsinstellingen", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -8504,7 +8504,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Naam" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Laatste toegang") + '<th style=width:120px>' + "machtigingen";
|
||||
x += '<th>' + "Naam" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Laatste toegang") + '<th style=width:120px>' + "machtigingen";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -8961,9 +8961,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Verander wachtwoord" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -9104,7 +9104,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Dag" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -9408,6 +9408,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Apparaatgroepen",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Relay Sessies",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -9417,7 +9442,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "CPU-belasting in de laatste minuut" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU-belasting in de afgelopen 5 minuten" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU-belasting in de afgelopen 15 minuten" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "CPU-belasting in de laatste minuut" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU-belasting in de afgelopen 5 minuten" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "CPU-belasting in de afgelopen 15 minuten" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -9429,12 +9454,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9525,10 +9551,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
@ -3638,11 +3638,11 @@
|
||||
function onSearchInputChanged() {
|
||||
var x = Q('SearchInput').value.toLowerCase().trim(); putstore('_search', x);
|
||||
var userSearch = null, ipSearch = null, groupSearch = null;
|
||||
if (x.startsWith('user:')) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith('u:')) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith('ip:')) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith('group:')) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith('g:')) { groupSearch = x.substring(2); }
|
||||
if (x.startsWith("user:")) { userSearch = x.substring(5); }
|
||||
else if (x.startsWith("u:")) { userSearch = x.substring(2); }
|
||||
else if (x.startsWith("ip:")) { ipSearch = x.substring(3); }
|
||||
else if (x.startsWith("group:")) { groupSearch = x.substring(6); }
|
||||
else if (x.startsWith("g:")) { groupSearch = x.substring(2); }
|
||||
|
||||
if (x == '') {
|
||||
// No search
|
||||
@ -3971,7 +3971,7 @@
|
||||
});
|
||||
|
||||
// On right click open the context menu
|
||||
contextmenu.on("abrir", function (evt) {
|
||||
contextmenu.on('open', function (evt) {
|
||||
var feature = xxmap.map.forEachFeatureAtPixel(evt.pixel, function(ft, l){ return ft; });
|
||||
xxmap.contextmenu.clear(); //Clear the context menu
|
||||
if (feature) {
|
||||
@ -7708,8 +7708,8 @@
|
||||
function p20editmeshfeatures() {
|
||||
if (xxdialogMode) return;
|
||||
var flags = (currentMesh.flags)?currentMesh.flags:0;
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>Remove device on disconnect</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>Sync server device name to hostname</label><br></div>';
|
||||
var x = '<div><label><input type=checkbox id=d20flag1 ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
x += '<div><label><input type=checkbox id=d20flag2 ' + ((flags & 2) ? 'checked' : '') + '>' + "Sync server device name to hostname" + '</label><br></div>';
|
||||
setDialogMode(2, "Editar recursos do grupo de dispositivos", 3, p20editmeshfeaturesEx, x);
|
||||
}
|
||||
|
||||
@ -7937,10 +7937,10 @@
|
||||
if (xxdialogMode) return false;
|
||||
var meshNotify = 0;
|
||||
if (userinfo.links && userinfo.links[currentMesh._id] && userinfo.links[currentMesh._id].notify) { meshNotify = userinfo.links[currentMesh._id].notify; }
|
||||
var x = 'Notification settings must also be turned on in account settings.<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />Device connections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />Device disconnections.</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />Intel® AMT desktop and serial events.</label></div>';
|
||||
var x = "Notification settings must also be turned on in account settings." + '<br /><br />';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceConnect type=checkbox />' + "Conexões de dispositivos." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelDeviceDisconnect type=checkbox />' + "Desconexões de dispositivos." + '</label></div>';
|
||||
x += '<div><label><input id=p20notifyIntelAmtKvmActions type=checkbox />' + "Intel® Área de trabalho AMT e eventos seriais." + '</label></div>';
|
||||
setDialogMode(2, "Configurações de notificação", 3, p20editMeshNotifyEx, x);
|
||||
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
|
||||
Q('p20notifyIntelDeviceDisconnect').checked = (meshNotify & 4);
|
||||
@ -8504,7 +8504,7 @@
|
||||
|
||||
// Display the users using the sorted list
|
||||
var x = '<table class=p3usersTable cellpadding=0 cellspacing=0>', addHeader = true;
|
||||
x += '<th>' + "Nome" + '<th style=width:80px>Groups<th style=width:120px>' + nobreak("Último acesso") + '<th style=width:120px>' + "Permissões";
|
||||
x += '<th>' + "Nome" + '<th style=width:80px>' + "Groups" + '<th style=width:120px>' + nobreak("Último acesso") + '<th style=width:120px>' + "Permissões";
|
||||
|
||||
// Online users
|
||||
for (var i in sortedUserIds) {
|
||||
@ -8961,9 +8961,9 @@
|
||||
|
||||
// Show bottom buttons
|
||||
x = '<div style=float:right;font-size:x-small>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">Delete User</a>';
|
||||
if (deletePossible) x += '<a href=# style=cursor:pointer onclick=\'return p30showDeleteUserDialog()\' title="Remove this user">' + "Delete User" + '</a>';
|
||||
x += '</div><div style=font-size:x-small>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">Change Password</a>';
|
||||
if (userinfo.siteadmin == 0xFFFFFFFF) x += '<a href=# style=cursor:pointer onclick=\'return p30showUserChangePassDialog(' + multiFactor + ')\' title="Change the password for this user">' + "Mudar senha" + '</a>';
|
||||
x += '</div><br>'
|
||||
QH('p30html3', x);
|
||||
|
||||
@ -9104,7 +9104,7 @@
|
||||
++count;
|
||||
date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
|
||||
}
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>' + x + '</tbody></table>');
|
||||
QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Dia" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
|
||||
}
|
||||
|
||||
//
|
||||
@ -9408,6 +9408,31 @@
|
||||
});
|
||||
}
|
||||
|
||||
var serverStatsStrings = {
|
||||
ServerState: "Server State",
|
||||
AgentErrorCounters: "Agent Error Counters",
|
||||
UnknownGroup: "Unknown Group",
|
||||
InvalidPKCSsignature: "Invalid PKCS signature",
|
||||
InvalidRSAsiguature: "Invalid RSA siguature",
|
||||
InvalidJSON: "Invalid JSON",
|
||||
UnknownAction: "Unknown Action",
|
||||
BadWebCertificate: "Bad Web Certificate",
|
||||
BadSignature: "Bad Signature",
|
||||
MaxSessionsReached: "Max Sessions Reached",
|
||||
UnknownDeviceGroup: "Unknown Device Group",
|
||||
InvalidDeviceGroupType: "Invalid Device Group Type",
|
||||
DuplicateAgent: "Duplicate Agent",
|
||||
ConnectedIntelAMT: "Connected Intel® AMT",
|
||||
RelayErrors: "Relay Errors",
|
||||
UserAccounts: "User Accounts",
|
||||
DeviceGroups: "Grupos de dispositivos",
|
||||
AgentSessions: "Agent Sessions",
|
||||
ConnectedUsers: "Connected Users",
|
||||
UsersSessions: "Users Sessions",
|
||||
RelaySessions: "Retransmissão de sessão ",
|
||||
RelayCount: "Relay Count"
|
||||
};
|
||||
|
||||
var lastServerStats = null;
|
||||
function updateGeneralServerStats(message) {
|
||||
if (message != null) { lastServerStats = message; } else { message = lastServerStats; }
|
||||
@ -9417,7 +9442,7 @@
|
||||
if (typeof message.cpuavg == 'object') {
|
||||
var m = Math.min(message.cpuavg[0], 1);
|
||||
window.serverStatCpu.config.data.datasets[0].data = [m, 1 - m];
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>CPU Load</div><div><b title=\"' + "Carga da CPU no último minuto" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "Carga da CPU nos últimos 5 minutos" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "Carga da CPU nos últimos 15 minutos" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QH('serverCpuChartText', '<div style=margin-bottom:5px>' + "CPU Load" + '</div><div><b title=\"' + "Carga da CPU no último minuto" + '\">' + (Math.round(message.cpuavg[0] * 100.0) / 100.0) + '</b>, <b title=\"' + "Carga da CPU nos últimos 5 minutos" + '\">' + (Math.round(message.cpuavg[1] * 100.0) / 100.0) + '</b>, <b title=\"' + "Carga da CPU nos últimos 15 minutos" + '\">' + (Math.round(message.cpuavg[2] * 100.0) / 100.0) + '</b></div>');
|
||||
QS('serverCpuChartView')['display'] = 'inline-block';
|
||||
window.serverStatCpu.update();
|
||||
}
|
||||
@ -9429,12 +9454,13 @@
|
||||
}
|
||||
|
||||
// Display all of the server values
|
||||
// serverStatsStrings
|
||||
var x = '<div style=width:100% cellpadding=0 cellspacing=0>';
|
||||
if (typeof message.values == 'object') {
|
||||
for (var i in message.values) {
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + i + '</div>';
|
||||
x += '<div class=userTableHeader style=margin-bottom:4px;width:200px>' + (serverStatsStrings[i]?serverStatsStrings[i]:i) + '</div>';
|
||||
for (var j in message.values[i]) {
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + j + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
x += '<div style=display:inline-block><table class=serverStateTableCell><tr><td class=h1></td><td><span>' + (serverStatsStrings[j]?serverStatsStrings[j]:j) + '</span><span style=float:right>' + message.values[i][j] + '</span></td><td class=h2></td></tr></table></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9525,10 +9551,10 @@
|
||||
data = {
|
||||
labels: [pastDate(0), timeAfter],
|
||||
datasets: [
|
||||
{ label: 'External', data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: 'Heap Used', data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: 'Heap Total', data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: 'RSS', data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
{ label: "External", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true },
|
||||
{ label: "Heap Used", data: [], backgroundColor: 'rgba(16, 84, 158, .1)', borderColor: 'rgb(16, 84, 158)', fill: true },
|
||||
{ label: "Heap Total", data: [], backgroundColor: 'rgba(255, 99, 132, .1)', borderColor: 'rgb(255, 99, 132)', fill: true },
|
||||
{ label: "RSS", data: [], backgroundColor: 'rgba(39, 158, 16, .1)', borderColor: 'rgb(39, 158, 16)', fill: true }
|
||||
]
|
||||
};
|
||||
for (var i = 0; i < serverTimelineStats.length; i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user