mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-07-19 05:28:50 -04:00
Merge branch 'Ylianst:master' into dockerrewrite
This commit is contained in:
commit
0514f4a859
@ -1556,14 +1556,13 @@ function handleServerCommand(data) {
|
||||
// Windows command shell
|
||||
mesh.cmdchild = require('child_process').execFile(process.env['windir'] + '\\system32\\cmd.exe', ['cmd'], options);
|
||||
mesh.cmdchild.descriptorMetadata = 'UserCommandsShell';
|
||||
mesh.cmdchild.stdout.on('data', function (c) { replydata += c.toString(); });
|
||||
mesh.cmdchild.stderr.on('data', function (c) { replydata += c.toString(); });
|
||||
mesh.cmdchild.stdout.on('data', function (c) { replydata += c.toString(); sendConsoleText(c.toString()); });
|
||||
mesh.cmdchild.stderr.on('data', function (c) { replydata += c.toString(); sendConsoleText(c.toString()); });
|
||||
mesh.cmdchild.stdin.write(data.cmds + '\r\nexit\r\n');
|
||||
mesh.cmdchild.on('exit', function () {
|
||||
if (data.reply) {
|
||||
mesh.SendCommand({ action: 'msg', type: 'runcommands', result: replydata, sessionid: data.sessionid, responseid: data.responseid });
|
||||
} else {
|
||||
sendConsoleText(replydata);
|
||||
sendConsoleText("Run commands completed.");
|
||||
}
|
||||
delete mesh.cmdchild;
|
||||
@ -1572,14 +1571,13 @@ function handleServerCommand(data) {
|
||||
// Windows Powershell
|
||||
mesh.cmdchild = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['powershell', '-noprofile', '-nologo', '-command', '-'], options);
|
||||
mesh.cmdchild.descriptorMetadata = 'UserCommandsPowerShell';
|
||||
mesh.cmdchild.stdout.on('data', function (c) { replydata += c.toString(); });
|
||||
mesh.cmdchild.stderr.on('data', function (c) { replydata += c.toString(); });
|
||||
mesh.cmdchild.stdout.on('data', function (c) { replydata += c.toString(); sendConsoleText(c.toString()); });
|
||||
mesh.cmdchild.stderr.on('data', function (c) { replydata += c.toString(); sendConsoleText(c.toString()); });
|
||||
mesh.cmdchild.stdin.write(data.cmds + '\r\nexit\r\n');
|
||||
mesh.cmdchild.on('exit', function () {
|
||||
if (data.reply) {
|
||||
mesh.SendCommand({ action: 'msg', type: 'runcommands', result: replydata, sessionid: data.sessionid, responseid: data.responseid });
|
||||
} else {
|
||||
sendConsoleText(replydata);
|
||||
sendConsoleText("Run commands completed.");
|
||||
}
|
||||
delete mesh.cmdchild;
|
||||
@ -1589,14 +1587,13 @@ function handleServerCommand(data) {
|
||||
// Linux shell
|
||||
mesh.cmdchild = require('child_process').execFile('/bin/sh', ['sh'], options);
|
||||
mesh.cmdchild.descriptorMetadata = 'UserCommandsShell';
|
||||
mesh.cmdchild.stdout.on('data', function (c) { replydata += c.toString(); });
|
||||
mesh.cmdchild.stderr.on('data', function (c) { replydata += c.toString(); });
|
||||
mesh.cmdchild.stdout.on('data', function (c) { replydata += c.toString(); sendConsoleText(c.toString()); });
|
||||
mesh.cmdchild.stderr.on('data', function (c) { replydata += c.toString(); sendConsoleText(c.toString()); });
|
||||
mesh.cmdchild.stdin.write(data.cmds.split('\r').join('') + '\nexit\n');
|
||||
mesh.cmdchild.on('exit', function () {
|
||||
if (data.reply) {
|
||||
mesh.SendCommand({ action: 'msg', type: 'runcommands', result: replydata, sessionid: data.sessionid, responseid: data.responseid });
|
||||
} else {
|
||||
sendConsoleText(replydata);
|
||||
sendConsoleText("Run commands completed.");
|
||||
}
|
||||
delete mesh.cmdchild;
|
||||
|
@ -114,7 +114,7 @@ CheckInstallAgent() {
|
||||
# RaspberryPi 3B+ running Ubuntu 64 (aarch64)
|
||||
machineid=26
|
||||
fi
|
||||
if [ $marchinetype == 'riscv64' ]
|
||||
if [ $machinetype == 'riscv64' ]
|
||||
then
|
||||
# RISC-V 64 bit
|
||||
machineid=45
|
||||
|
12
db.js
12
db.js
@ -3323,7 +3323,10 @@ module.exports.CreateDB = function (parent, func) {
|
||||
|
||||
var cmd = '"' + mongoDumpPath + '"';
|
||||
if (dburl) { cmd = '\"' + mongoDumpPath + '\" --uri=\"' + dburl + '\"'; }
|
||||
|
||||
if (parent.config.settings.autobackup?.mongodumpargs) {
|
||||
cmd = '\"' + mongoDumpPath + '\" ' + parent.config.settings.autobackup.mongodumpargs;
|
||||
if (!parent.config.settings.autobackup.mongodumpargs.includes("--db=")) {cmd += ' --db=' + (parent.config.settings.mongodbname ? parent.config.settings.mongodbname : 'meshcentral')};
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
@ -3352,8 +3355,9 @@ module.exports.CreateDB = function (parent, func) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
const testFile = path.join(backupPath, (parent.config.settings.autobackup.backupname + ".test"));
|
||||
|
||||
const currentDate = new Date();
|
||||
const fileSuffix = currentDate.getFullYear() + '-' + padNumber(currentDate.getMonth() + 1, 2) + '-' + padNumber(currentDate.getDate(), 2) + '-' + padNumber(currentDate.getHours(), 2) + '-' + padNumber(currentDate.getMinutes(), 2);
|
||||
const testFile = path.join(backupPath, parent.config.settings.autobackup.backupname + fileSuffix + '.zip');
|
||||
try { fs.writeFileSync( testFile, "DeleteMe"); }
|
||||
catch (e) {
|
||||
//Unable to create file
|
||||
@ -3377,7 +3381,7 @@ module.exports.CreateDB = function (parent, func) {
|
||||
const child_process = require('child_process');
|
||||
child_process.exec(cmd, { cwd: backupPath }, function (error, stdout, stderr) {
|
||||
if ((error != null) && (error != '')) {
|
||||
func(1, "Unable to find mongodump tool, backup will not be performed. Command tried: " + cmd);
|
||||
func(1, "Mongodump error, backup will not be performed. Command tried: " + cmd + ' --> ERROR: ' + stderr);
|
||||
return;
|
||||
} else {parent.config.settings.autobackup.backupintervalhours = backupInterval;}
|
||||
});
|
||||
|
@ -807,7 +807,12 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
|
||||
if (device.agent.ver != obj.agentInfo.agentVersion) { device.agent.ver = obj.agentInfo.agentVersion; change = 1; changes.push('agent version'); }
|
||||
if (device.agent.id != obj.agentInfo.agentId) { device.agent.id = obj.agentInfo.agentId; change = 1; changes.push('agent type'); }
|
||||
if ((device.agent.caps & 24) != (obj.agentInfo.capabilities & 24)) { device.agent.caps = obj.agentInfo.capabilities; change = 1; changes.push('agent capabilities'); } // If agent console or javascript support changes, update capabilities
|
||||
if (mesh.flags && (mesh.flags & 2) && (device.name != obj.agentInfo.computerName)) { device.name = obj.agentInfo.computerName; change = 1; } // We want the server name to be sync'ed to the hostname
|
||||
// We want the server name to be sync'ed to the hostname or the --agentName
|
||||
// (flag 16 allows to override the name until next connection)
|
||||
if (mesh.flags && (mesh.flags & 2)) {
|
||||
var preferredName = (mesh.flags & 8) && obj.agentName || obj.agentInfo.computerName;
|
||||
if (device.name != preferredName) {device.name = preferredName; change = 1; }
|
||||
}
|
||||
if (device.ip != obj.remoteaddr) { device.ip = obj.remoteaddr; change = 1; }
|
||||
|
||||
if (change == 1) {
|
||||
|
@ -886,6 +886,10 @@
|
||||
"default": "mongodump",
|
||||
"description": "The file path of where \"mongodump\" is located. Default is \"mongodump\""
|
||||
},
|
||||
"mongoDumpArgs": {
|
||||
"type": "string",
|
||||
"description": "Override the default mongodump --uri=<mongoDb>. The --db= option is automatically appended if omitted. (f.e. --host=127.0.0.1 --username=someUser --password=PaSsWORD --authenticationDatabase=admin)"
|
||||
},
|
||||
"mysqlDumpPath": {
|
||||
"type": "string",
|
||||
"default": "mysqldump",
|
||||
|
@ -6740,7 +6740,7 @@
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->1",
|
||||
"default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1",
|
||||
"default3.handlebars->35->1016",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->3",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->3"
|
||||
]
|
||||
@ -10646,7 +10646,7 @@
|
||||
"default.handlebars->rfbPortContextMenu->1",
|
||||
"default.handlebars->sshPortContextMenu->1",
|
||||
"default3.handlebars->altPortContextMenu->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1rspan->5->1->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1rspan->5->1->0",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->connectbutton2sspan->5->1->0",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->1->p13Connectsspan->5->1->0",
|
||||
"default3.handlebars->httpPortContextMenu->1",
|
||||
@ -12469,7 +12469,7 @@
|
||||
"xloc": [
|
||||
"default.handlebars->deskConnectContextMenu->3",
|
||||
"default.handlebars->filesShellContextMenu->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1span->5->3->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1span->5->3->0",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->1->p13Connectspan->5->1->0"
|
||||
]
|
||||
},
|
||||
@ -12500,7 +12500,7 @@
|
||||
"zh-cht": "詢問同意+工具欄",
|
||||
"xloc": [
|
||||
"default.handlebars->deskConnectContextMenu->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1span->5->1->0"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1span->5->1->0"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -13199,7 +13199,7 @@
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->3",
|
||||
"default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->autoconnectbutton2",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->1->p13AutoConnect",
|
||||
"sharing-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
|
||||
@ -16128,7 +16128,7 @@
|
||||
"zh-cht": "更改遠程機器的電源狀態",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -17979,7 +17979,7 @@
|
||||
"zh-cht": "剪貼板",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->5",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
@ -19634,7 +19634,7 @@
|
||||
"default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
|
||||
"default3.handlebars->35->2206",
|
||||
"default3.handlebars->35->983",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1span->connectbutton1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1span->connectbutton1",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->connectbutton2span->connectbutton2",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->1->p13Connectspan->p13Connect",
|
||||
"mstsc.handlebars->main->1->3->1->12->1->0",
|
||||
@ -19879,8 +19879,8 @@
|
||||
"zh-cht": "使用 MeshAgent 遠程桌面連接",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1span",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->disconnectbutton1span",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1span",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->disconnectbutton1span",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->connectbutton2span",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->connectbutton2sspan",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->1->p13Connectspan",
|
||||
@ -19914,7 +19914,7 @@
|
||||
"zh-cht": "使用 RDP 連接",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1rspan",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1rspan"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1rspan"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -19943,7 +19943,7 @@
|
||||
"zh-cht": "使用硬件 KVM 連接",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1hspan",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1hspan"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1hspan"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -24543,7 +24543,7 @@
|
||||
"zh-cht": "桌面會話延遲",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea4->1"
|
||||
]
|
||||
},
|
||||
@ -27125,8 +27125,8 @@
|
||||
"default.handlebars->deskDisconnectContextMenu->3",
|
||||
"default3.handlebars->35->2207",
|
||||
"default3.handlebars->35->984",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->disconnectbutton1span->5->3->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->disconnectbutton1span->disconnectbutton1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->disconnectbutton1span->5->3->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->disconnectbutton1span->disconnectbutton1",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->disconnectbutton2span->disconnectbutton2",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->1->p13Disconnect",
|
||||
"sharing-mobile.handlebars->11->62",
|
||||
@ -27196,7 +27196,7 @@
|
||||
"zh-cht": "斷開連接並鎖定",
|
||||
"xloc": [
|
||||
"default.handlebars->deskDisconnectContextMenu->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->disconnectbutton1span->5->1->0"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->disconnectbutton1span->5->1->0"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -27314,7 +27314,7 @@
|
||||
"default3.handlebars->35->446",
|
||||
"default3.handlebars->35->486",
|
||||
"default3.handlebars->35->8",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->deskstatus",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->deskstatus",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->termstatus",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->1->p13Status",
|
||||
"sharing-mobile.handlebars->11->1",
|
||||
@ -27493,7 +27493,7 @@
|
||||
"zh-cht": "在遠程電腦上顯示通知",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -28560,7 +28560,7 @@
|
||||
"zh-cht": "將遠程剪貼板下載到本地剪貼板",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -29572,7 +29572,7 @@
|
||||
"default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3",
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->5",
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->4->1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->4->1->1",
|
||||
"sharing.handlebars->p12->9->3"
|
||||
]
|
||||
@ -30284,7 +30284,7 @@
|
||||
"zh-cht": "編輯遠程桌面設置",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea1->1"
|
||||
]
|
||||
},
|
||||
@ -34834,7 +34834,7 @@
|
||||
"zh-cht": "全部關注",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -36017,7 +36017,7 @@
|
||||
"default.handlebars->container->column_l->p11->p11title->p11deviceNameHeader->devListToolbarViewIcons",
|
||||
"default.handlebars->container->column_l->p12->p12title->devListToolbarViewIcons2",
|
||||
"default.handlebars->container->column_l->p14->p14title->devListToolbarViewIcons",
|
||||
"default3.handlebars->container->column_l->p11->p11title->devListToolbarViewIcons11",
|
||||
"default3.handlebars->container->column_l->p11->p11title->devListToolbarViewIcons",
|
||||
"default3.handlebars->container->column_l->p12->p12title->devListToolbarViewIcons2",
|
||||
"default3.handlebars->container->column_l->p14->p14title->devListToolbarViewIcons"
|
||||
]
|
||||
@ -38196,7 +38196,7 @@
|
||||
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1hspan",
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2hspan",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1hspan->connectbutton1h",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1hspan->connectbutton1h",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->connectbutton2hspan->connectbutton2h",
|
||||
"sharing-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea1->3->connectbutton1hspan"
|
||||
@ -40872,7 +40872,7 @@
|
||||
"xloc": [
|
||||
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3->11->DeskControlSpan",
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->5->11->DeskControlSpan",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->1->DeskControlSpan->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->1->DeskControlSpan->1",
|
||||
"sharing-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3->5->DeskControlSpan",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea4->3->9->DeskControlSpan"
|
||||
]
|
||||
@ -49099,7 +49099,7 @@
|
||||
"zh-cht": "鎖定遠程計算機",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -54752,8 +54752,8 @@
|
||||
"default3.handlebars->35->2932",
|
||||
"default3.handlebars->35->341",
|
||||
"default3.handlebars->35->892",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->3",
|
||||
"default3.handlebars->container->column_l->p42->p42tbl->1->0->5"
|
||||
]
|
||||
},
|
||||
@ -59696,7 +59696,7 @@
|
||||
"zh-cht": "在遠程電腦上打開一個網址",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -59728,7 +59728,7 @@
|
||||
"default.handlebars->47->1030",
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->35->1027",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -60391,7 +60391,7 @@
|
||||
"default.handlebars->47->1470",
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->1",
|
||||
"default3.handlebars->35->1456",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->1"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->1"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -61867,7 +61867,7 @@
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->1",
|
||||
"default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1",
|
||||
"default3.handlebars->35->1017",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->3",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->3"
|
||||
]
|
||||
@ -63070,7 +63070,7 @@
|
||||
"xloc": [
|
||||
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3",
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -63647,7 +63647,7 @@
|
||||
"zh-cht": "隱私欄",
|
||||
"xloc": [
|
||||
"default.handlebars->deskConnectContextMenu->5",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1span->5->5->0"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1span->5->5->0"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -63883,7 +63883,7 @@
|
||||
"zh-cht": "進程",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsAreaTop->deskToolsTopTabProcess",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsAreaTop->deskToolsTopTabProcess"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsAreaTop->deskToolsTopTabProcess"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -64698,7 +64698,7 @@
|
||||
"zh-cht": "RDP 連接",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1rspan",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1rspan->connectbutton1r"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1rspan->connectbutton1r"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -65346,7 +65346,7 @@
|
||||
"zh-cht": "將遠程桌面會話記錄到檔案",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -65706,7 +65706,7 @@
|
||||
"default.handlebars->container->column_l->p40->3->3",
|
||||
"default.handlebars->container->column_l->p52->3->1->0->3->3",
|
||||
"default3.handlebars->35->872",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsAreaTop->DeskToolsRefreshButton",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsAreaTop->DeskToolsRefreshButton",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
|
||||
"default3.handlebars->container->column_l->p40->3->1",
|
||||
"default3.handlebars->container->column_l->p52->3->1->0->1->1",
|
||||
@ -65771,7 +65771,7 @@
|
||||
"zh-cht": "刷新桌面",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -67477,7 +67477,7 @@
|
||||
"zh-cht": "遠程輸入被鎖定",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -67507,7 +67507,7 @@
|
||||
"zh-cht": "遠程輸入已解鎖",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -70210,7 +70210,7 @@
|
||||
"zh-cht": "向左旋轉",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea1->1"
|
||||
]
|
||||
},
|
||||
@ -70241,7 +70241,7 @@
|
||||
"zh-cht": "向右旋轉",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea1->1"
|
||||
]
|
||||
},
|
||||
@ -70437,7 +70437,7 @@
|
||||
"uk": "Запустити сценарій на цьому комп'ютері",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -71967,7 +71967,7 @@
|
||||
"zh-cht": "保存遠程桌面的屏幕截圖",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea4->1"
|
||||
]
|
||||
},
|
||||
@ -73236,7 +73236,7 @@
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->5",
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->specialKeyDropDown",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->4->1->3",
|
||||
"messenger.handlebars->xbottom->1->1->0->3",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea4->3",
|
||||
@ -74834,7 +74834,7 @@
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->1",
|
||||
"default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->3",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
|
||||
"messenger.handlebars->xtop->3",
|
||||
@ -75054,7 +75054,7 @@
|
||||
"zh-cht": "服務",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsAreaTop->deskToolsTopTabService",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsAreaTop->deskToolsTopTabService"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsAreaTop->deskToolsTopTabService"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -75245,7 +75245,7 @@
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->4->1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->4->1->3",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea4->1",
|
||||
"sharing.handlebars->p12->9->1"
|
||||
@ -75552,7 +75552,7 @@
|
||||
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3",
|
||||
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->kvmListToolbar",
|
||||
"default3.handlebars->container->column_l->p1->devListToolbarSpan->kvmListToolbar",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p4->3->1->0->1->3",
|
||||
"sharing-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3"
|
||||
]
|
||||
@ -75891,7 +75891,7 @@
|
||||
"zh-cht": "與訪客共享設備",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -78210,8 +78210,8 @@
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader",
|
||||
"default.handlebars->container->column_l->p13->p13toolbar->1->4->1->1->p13sortdropdown->1",
|
||||
"default.handlebars->container->column_l->p5->p5toolbar->1->2->p5filesubhead->1->p5sortdropdown->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->4->1->1->p13sortdropdown->1",
|
||||
"default3.handlebars->container->column_l->p5->p5toolbar->1->2->p5filesubhead->3->p5sortdropdown->1",
|
||||
"sharing-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->4->1->1->1->0->3->p13sortdropdown->1",
|
||||
@ -78245,7 +78245,7 @@
|
||||
"zh-cht": "按進程ID排序",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -78311,7 +78311,7 @@
|
||||
"zh-cht": "按狀態排序",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -79840,7 +79840,7 @@
|
||||
"default.handlebars->47->1469",
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->1",
|
||||
"default3.handlebars->35->1455",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->1"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->1"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -83833,9 +83833,9 @@
|
||||
{
|
||||
"en": "Toggle Dropdown",
|
||||
"xloc": [
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1rspan->connectbutton1rd->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->connectbutton1span->connectbutton1d->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->1->disconnectbutton1span->diconnectbutton1d->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1rspan->connectbutton1rd->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->connectbutton1span->connectbutton1d->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->1->disconnectbutton1span->diconnectbutton1d->1",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->connectbutton2span->connectbutton2d->0",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->1->connectbutton2sspan->connectbutton2sd->0",
|
||||
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->1->p13Connectspan->p13Connectdrop->0",
|
||||
@ -83937,7 +83937,7 @@
|
||||
"zh-cht": "切換查看模式",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
|
||||
"player.handlebars->p11->deskarea0->deskarea1->1",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea1->1"
|
||||
]
|
||||
@ -83999,7 +83999,7 @@
|
||||
"zh-cht": "切換焦點模式,現用中僅更新鼠標周圍的區域",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -84059,7 +84059,7 @@
|
||||
"zh-cht": "切換鼠標和鍵盤輸入",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->5->11",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea4->3->9"
|
||||
]
|
||||
},
|
||||
@ -84125,7 +84125,7 @@
|
||||
"zh-cht": "切換遠程桌面背景",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -84212,7 +84212,7 @@
|
||||
"zh-cht": "切換工具視圖",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -84392,7 +84392,7 @@
|
||||
"zh-cht": "工具",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -85134,7 +85134,7 @@
|
||||
"default3.handlebars->35->2276",
|
||||
"default3.handlebars->35->3158",
|
||||
"default3.handlebars->35->506",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
@ -87286,7 +87286,7 @@
|
||||
"zh-cht": "將本地剪貼板上傳到遠程裝置",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->1",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->4->deskarea4->3"
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -99589,7 +99589,7 @@
|
||||
"ru": "⇲",
|
||||
"xloc": [
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1->5",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3->19",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3->19",
|
||||
"player.handlebars->p11->deskarea0->deskarea1->1->1",
|
||||
"sharing.handlebars->p11->deskarea0->deskarea1->1->3"
|
||||
]
|
||||
@ -99741,7 +99741,7 @@
|
||||
"default.handlebars->container->column_l->p6->p6info->p2ServerActions->3->p2ServerActionsGoogleBackup->0->p2ServerActionsGoogleBackupCheck->0",
|
||||
"default.handlebars->container->column_l->p6->p6info->p2ServerActions->3->p2ServerActionsRestore->0->0->0",
|
||||
"default.handlebars->container->column_l->p6->p6info->p2ServerActions->3->p2ServerActionsVersion->0->0->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->p11bigok->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->p11bigok->0",
|
||||
"default3.handlebars->container->column_l->p13->p13filetable->p13bigok->0",
|
||||
"default3.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageAuthApp->1->authAppSetupCheck->0",
|
||||
"default3.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageDuoApp->1->authDuoSetupCheck->0",
|
||||
@ -99785,7 +99785,7 @@
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1->idx_deskFullBtn2",
|
||||
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->1->idx_termFullBtn2",
|
||||
"default.handlebars->container->dialog->dialogHeader->id_dialogclose",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->0->deskarea1->3->idx_deskFullBtn2",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3->idx_deskFullBtn2",
|
||||
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->3->idx_termFullBtn2",
|
||||
"player.handlebars->p11->dialog->dialogHeader->id_dialogclose",
|
||||
"sharing.handlebars->dialog->dialogHeader->id_dialogclose",
|
||||
@ -99815,7 +99815,7 @@
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->p11bigfail->0",
|
||||
"default.handlebars->container->column_l->p13->p13filetable->p13bigfail->0",
|
||||
"default.handlebars->container->column_l->p5->p5filetable->bigfail->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->1->1->2->deskarea3x->p11bigfail->0",
|
||||
"default3.handlebars->container->column_l->p11->deskarea0->deskarea3x->p11bigfail->0",
|
||||
"default3.handlebars->container->column_l->p13->p13filetable->p13bigfail->0",
|
||||
"default3.handlebars->container->column_l->p5->p5filetable->bigfail->0",
|
||||
"player.handlebars->p11->deskarea0->deskarea3x->bigfail->0",
|
||||
|
@ -1,4 +1,4 @@
|
||||
<!DOCTYPE html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
@ -7497,7 +7497,7 @@
|
||||
// Add node name
|
||||
var nname = EscapeHtml(node.name), nnameEx;
|
||||
if (nname.length == 0) { nname = '<i>' + "None" + '</i>'; }
|
||||
if (((meshrights & 4) != 0) && ((!mesh.flags) || ((mesh.flags & 2) == 0))) { nname = '<span tabindex=0 title="' + "Click here to edit the server-side device name" + '" onclick=showEditNodeValueDialog(0) onkeyup="if (event.key == \'Enter\') showEditNodeValueDialog(0)" style=cursor:pointer>' + nname + ' <img class=hoverButton src="images/link5.png" /></span>'; }
|
||||
if (((meshrights & 4) != 0) && ((!mesh.flags) || ((mesh.flags & 2) == 0 || (mesh.flags & 16)))) { nname = '<span tabindex=0 title="' + "Click here to edit the server-side device name" + '" onclick=showEditNodeValueDialog(0) onkeyup="if (event.key == \'Enter\') showEditNodeValueDialog(0)" style=cursor:pointer>' + nname + ' <img class=hoverButton src="images/link5.png" /></span>'; }
|
||||
nnameEx = nname;
|
||||
if (mesh) { nname += '<span style=color:#AAA;font-size:small> - ' + EscapeHtml(mesh.name) + '</span>'; }
|
||||
QH('p10deviceName', nname);
|
||||
@ -13280,7 +13280,7 @@
|
||||
x += '<div id=d2devrelaydiv style=display:none>';
|
||||
relayDevices.sort(nameSort);
|
||||
var relayDevices2 = [];
|
||||
for (var i in relayDevices) { relayDevices2.push('<option value="' + relayDevices[i]._id + '">' + EscapeHtml(relayDevices[i].name) + '</option>'); }
|
||||
for (var i in relayDevices) { relayDevices2.push('<option value="' + relayDevices[i]._id + '">' + EscapeHtml(relayDevices[i].name) + ' (' + EscapeHtml(relayDevices[i].meshnamel) + ')' + '</option>'); }
|
||||
x += addHtmlValue("Relay Device", '<div style=width:230px;margin:0;padding:0><select id=d2devrelay style=width:100% onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,2) >' + relayDevices2.join('') + '</select></div>');
|
||||
x += '</div>';
|
||||
}
|
||||
@ -13559,7 +13559,7 @@
|
||||
if (((currentMesh.mtype == 3) || (currentMesh.mtype == 4)) && (currentMesh.relayid != null)) {
|
||||
var relayName = '<i>' + "Unknown" + '</i>';
|
||||
var relayNode = getNodeFromId(currentMesh.relayid);
|
||||
if (relayNode != null) { relayName = EscapeHtml(relayNode.name); }
|
||||
if (relayNode != null) { relayName = EscapeHtml(relayNode.name) + ' (' + EscapeHtml(relayNode.meshnamel) + ')'; }
|
||||
x += addHtmlValue("Relay Device", addLinkConditional(relayName, 'p20editmeshrelay()', (meshrights & 1) != 0));
|
||||
}
|
||||
|
||||
@ -13586,6 +13586,8 @@
|
||||
if (currentMesh.flags) {
|
||||
if (currentMesh.flags & 1) { meshFeatures.push("Auto-Remove"); }
|
||||
if (currentMesh.flags & 2) { meshFeatures.push((currentMesh.mtype == 4)?"Port Name Sync":"Hostname Sync"); }
|
||||
if (currentMesh.flags & 8) { meshFeatures.push("prefer --agentname"); }
|
||||
if (currentMesh.flags & 16) { meshFeatures.push("allow override"); }
|
||||
if ((serverinfo.devGroupSessionRecording == 1) && (currentMesh.flags & 4)) { meshFeatures.push("Record Sessions"); }
|
||||
}
|
||||
if ((typeof currentMesh.expireDevs == 'number') && (currentMesh.expireDevs > 0)) { meshFeatures.push("Remove inactive"); }
|
||||
@ -13976,7 +13978,7 @@
|
||||
setDialogMode(2, "Edit Device Group", 1, null, "No relay devices available.");
|
||||
} else {
|
||||
var relayDevices2 = [];
|
||||
for (var i in relayDevices) { relayDevices2.push('<option value="' + (relayDevices[i]._id + '"' + ((currentMesh.relayid == relayDevices[i]._id) ? ' selected' : '')) + '>' + EscapeHtml(relayDevices[i].name) + '</option>'); }
|
||||
for (var i in relayDevices) { relayDevices2.push('<option value="' + (relayDevices[i]._id + '"' + ((currentMesh.relayid == relayDevices[i]._id) ? ' selected' : '')) + '>' + EscapeHtml(relayDevices[i].name) + ' (' + EscapeHtml(relayDevices[i].meshnamel) + ')' + '</option>'); }
|
||||
var x = addHtmlValue("Relay Device", '<div style=width:230px;margin:0;padding:0><select id=d2devrelay style=width:100%>' + relayDevices2.join('') + '</select></div>');
|
||||
setDialogMode(2, "Edit Device Group", 3, p20editmeshrelayEx, x);
|
||||
}
|
||||
@ -14067,6 +14069,10 @@
|
||||
}
|
||||
if ((currentMesh.mtype == 2) || (currentMesh.mtype == 4)) {
|
||||
x += '<div><label><input type=checkbox id=d20flag2 onchange=p20editmeshfeaturesValidate() ' + ((flags & 2) ? 'checked' : '') + '>' + ((currentMesh.mtype == 4)?"Sync server device name to port name":"Sync server device name to hostname") + '</label><br></div>';
|
||||
if (currentMesh.mtype == 2) {
|
||||
x += '<div style="margin-left:8px"><label><input type=checkbox id=d20flag8 onchange=p20editmeshfeaturesValidate() ' + ((flags & 8) ? 'checked' : '') + '>' + "Prefer value of --agentName" + '</label><br></div>';
|
||||
x += '<div style="margin-left:8px"><label><input type=checkbox id=d20flag16 onchange=p20editmeshfeaturesValidate() ' + ((flags & 16) ? 'checked' : '') + '>' + "Allow to override server device name until next connection" + '</label><br></div>';
|
||||
}
|
||||
x += '<div><label><input type=checkbox id=d20flag1 onchange=p20editmeshfeaturesValidate() ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
}
|
||||
x += '<div><label><input type=checkbox id=d20expireDevice onchange=p20editmeshfeaturesValidate() ' + ((expire > 0) ? 'checked' : '') + '>' + "Automatically remove inactive devices" + '</label><br></div>';
|
||||
@ -14087,6 +14093,16 @@
|
||||
function p20editmeshfeaturesValidate() {
|
||||
var flags = 0, ok = true;
|
||||
if (((currentMesh.mtype == 2) || (currentMesh.mtype == 4)) && (Q('d20flag1').checked)) { flags += 1; }
|
||||
if (currentMesh.mtype == 2) {
|
||||
if (Q('d20flag2').checked) {
|
||||
flags += 2;
|
||||
if (event.currentTarget.id == 'd20flag2') { Q('d20flag8').checked = true; Q('d20flag16').checked = true; }
|
||||
}
|
||||
for (const flag of [8, 16]) {
|
||||
const element = Q('d20flag' + flag);
|
||||
if ((element.checked = element.checked && !(element.disabled = !(flags & 2)))) { flags += flag; }
|
||||
}
|
||||
}
|
||||
QE('d20expireDevice', (flags & 1) == 0);
|
||||
var x = ((flags & 1) == 0) && Q('d20expireDevice').checked;
|
||||
QV('d20expireDeviceDev', x);
|
||||
@ -14099,6 +14115,8 @@
|
||||
if ((currentMesh.mtype == 2) || (currentMesh.mtype == 4)) {
|
||||
if (Q('d20flag1').checked) { flags += 1; }
|
||||
if (Q('d20flag2').checked) { flags += 2; }
|
||||
if (Q('d20flag8').checked) { flags += 8; }
|
||||
if (Q('d20flag16').checked) { flags += 16; }
|
||||
}
|
||||
if ((serverinfo.devGroupSessionRecording == 1) && (currentMesh.mtype != 4)) { if (Q('d20flag4').checked) { flags += 4; } }
|
||||
var expireDevs = 0;
|
||||
|
@ -8168,7 +8168,7 @@
|
||||
// Add node name
|
||||
var nname = EscapeHtml(node.name), nnameEx;
|
||||
if (nname.length == 0) { nname = '<i>' + "None" + '</i>'; }
|
||||
if (((meshrights & 4) != 0) && ((!mesh.flags) || ((mesh.flags & 2) == 0))) { nname = '<span tabindex=0 title="' + "Click here to edit the server-side device name" + '" onclick=showEditNodeValueDialog(0) onkeyup="if (event.key == \'Enter\') showEditNodeValueDialog(0)" role="button">' + nname + ' <i class="fa-solid fa-pencil fa-2xs"/></i></span>'; }
|
||||
if (((meshrights & 4) != 0) && ((!mesh.flags) || ((mesh.flags & 2) == 0 || (mesh.flags & 16)))) { nname = '<span tabindex=0 title="' + "Click here to edit the server-side device name" + '" onclick=showEditNodeValueDialog(0) onkeyup="if (event.key == \'Enter\') showEditNodeValueDialog(0)" role="button">' + nname + ' <i class="fa-solid fa-pencil fa-2xs"/></i></span>'; }
|
||||
nnameEx = nname;
|
||||
if (mesh) { nname += '<span style=color:#AAA;font-size:small> - ' + EscapeHtml(mesh.name) + '</span>'; }
|
||||
QH('p10deviceName', nname);
|
||||
@ -14287,7 +14287,7 @@
|
||||
x += '<div id=d2devrelaydiv style=display:none>';
|
||||
relayDevices.sort(nameSort);
|
||||
var relayDevices2 = [];
|
||||
for (var i in relayDevices) { relayDevices2.push('<option value="' + relayDevices[i]._id + '">' + EscapeHtml(relayDevices[i].name) + '</option>'); }
|
||||
for (var i in relayDevices) { relayDevices2.push('<option value="' + relayDevices[i]._id + '">' + EscapeHtml(relayDevices[i].name) + ' (' + EscapeHtml(relayDevices[i].meshnamel) + ')' + '</option>'); }
|
||||
x += addHtmlFormFloating("Relay Device", '<select id=d2devrelay onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,2) class=form-select >' + relayDevices2.join('') + '</select>');
|
||||
x += '</div>';
|
||||
}
|
||||
@ -14601,7 +14601,7 @@
|
||||
if (((currentMesh.mtype == 3) || (currentMesh.mtype == 4)) && (currentMesh.relayid != null)) {
|
||||
var relayName = '<i>' + "Unknown" + '</i>';
|
||||
var relayNode = getNodeFromId(currentMesh.relayid);
|
||||
if (relayNode != null) { relayName = EscapeHtml(relayNode.name); }
|
||||
if (relayNode != null) { relayName = EscapeHtml(relayNode.name) + ' (' + EscapeHtml(relayNode.meshnamel) + ')'; }
|
||||
x += addHtmlValue("Relay Device", addLinkConditional(relayName, 'p20editmeshrelay()', (meshrights & 1) != 0));
|
||||
}
|
||||
|
||||
@ -14628,6 +14628,8 @@
|
||||
if (currentMesh.flags) {
|
||||
if (currentMesh.flags & 1) { meshFeatures.push("Auto-Remove"); }
|
||||
if (currentMesh.flags & 2) { meshFeatures.push((currentMesh.mtype == 4) ? "Port Name Sync" : "Hostname Sync"); }
|
||||
if (currentMesh.flags & 8) { meshFeatures.push("prefer --agentname"); }
|
||||
if (currentMesh.flags & 16) { meshFeatures.push("allow override"); }
|
||||
if ((serverinfo.devGroupSessionRecording == 1) && (currentMesh.flags & 4)) { meshFeatures.push("Record Sessions"); }
|
||||
}
|
||||
if ((typeof currentMesh.expireDevs == 'number') && (currentMesh.expireDevs > 0)) { meshFeatures.push("Remove inactive"); }
|
||||
@ -15037,7 +15039,7 @@
|
||||
showModal('xxAddAgentModal', 'idx_dlgOkButton');
|
||||
} else {
|
||||
var relayDevices2 = [];
|
||||
for (var i in relayDevices) { relayDevices2.push('<option value="' + (relayDevices[i]._id + '"' + ((currentMesh.relayid == relayDevices[i]._id) ? ' selected' : '')) + '>' + EscapeHtml(relayDevices[i].name) + '</option>'); }
|
||||
for (var i in relayDevices) { relayDevices2.push('<option value="' + (relayDevices[i]._id + '"' + ((currentMesh.relayid == relayDevices[i]._id) ? ' selected' : '')) + '>' + EscapeHtml(relayDevices[i].name) + ' (' + EscapeHtml(relayDevices[i].meshnamel) + ')' + '</option>'); }
|
||||
var x = addHtmlFormFloating("Relay Device", '<select id=d2devrelay class="form-select">' + relayDevices2.join('') + '</select>');
|
||||
setModalContent('xxAddAgent', "Edit Device Group", x);
|
||||
showModal('xxAddAgentModal', 'idx_dlgOkButton', p20editmeshrelayEx);
|
||||
@ -15144,6 +15146,10 @@
|
||||
}
|
||||
if ((currentMesh.mtype == 2) || (currentMesh.mtype == 4)) {
|
||||
x += '<div class="form-check"><label><input type=checkbox id=d20flag2 class="form-check-input me-2" onchange=p20editmeshfeaturesValidate() ' + ((flags & 2) ? 'checked' : '') + '>' + ((currentMesh.mtype == 4) ? "Sync server device name to port name" : "Sync server device name to hostname") + '</label><br></div>';
|
||||
if (currentMesh.mtype == 2) {
|
||||
x += '<div style="margin-left:12px"><label><input type=checkbox id=d20flag8 class="form-check-input me-2" onchange=p20editmeshfeaturesValidate() ' + ((flags & 8) ? 'checked' : '') + '>' + "Prefer value of --agentName" + '</label><br></div>';
|
||||
x += '<div style="margin-left:12px"><label><input type=checkbox id=d20flag16 class="form-check-input me-2" onchange=p20editmeshfeaturesValidate() ' + ((flags & 16) ? 'checked' : '') + '>' + "Allow to override server device name until next connection" + '</label><br></div>';
|
||||
}
|
||||
x += '<div class="form-check"><label><input type=checkbox id=d20flag1 class="form-check-input me-2" onchange=p20editmeshfeaturesValidate() ' + ((flags & 1) ? 'checked' : '') + '>' + "Remove device on disconnect" + '</label><br></div>';
|
||||
}
|
||||
x += '<div class="form-check"><label><input type=checkbox id=d20expireDevice class="form-check-input me-2" onchange=p20editmeshfeaturesValidate() ' + ((expire > 0) ? 'checked' : '') + '>' + "Automatically remove inactive devices" + '</label><br></div>';
|
||||
@ -15165,6 +15171,16 @@
|
||||
function p20editmeshfeaturesValidate() {
|
||||
var flags = 0, ok = true;
|
||||
if (((currentMesh.mtype == 2) || (currentMesh.mtype == 4)) && (Q('d20flag1').checked)) { flags += 1; }
|
||||
if (currentMesh.mtype == 2) {
|
||||
if (Q('d20flag2').checked) {
|
||||
flags += 2;
|
||||
if (event.currentTarget.id == 'd20flag2') { Q('d20flag8').checked = true; Q('d20flag16').checked = true; }
|
||||
}
|
||||
for (const flag of [8, 16]) {
|
||||
const element = Q('d20flag' + flag);
|
||||
if ((element.checked = element.checked && !(element.disabled = !(flags & 2)))) { flags += flag; }
|
||||
}
|
||||
}
|
||||
QE('d20expireDevice', (flags & 1) == 0);
|
||||
var x = ((flags & 1) == 0) && Q('d20expireDevice').checked;
|
||||
QV('d20expireDeviceDev', x);
|
||||
@ -15177,6 +15193,8 @@
|
||||
if ((currentMesh.mtype == 2) || (currentMesh.mtype == 4)) {
|
||||
if (Q('d20flag1').checked) { flags += 1; }
|
||||
if (Q('d20flag2').checked) { flags += 2; }
|
||||
if (Q('d20flag8').checked) { flags += 8; }
|
||||
if (Q('d20flag16').checked) { flags += 16; }
|
||||
}
|
||||
if ((serverinfo.devGroupSessionRecording == 1) && (currentMesh.mtype != 4)) { if (Q('d20flag4').checked) { flags += 4; } }
|
||||
var expireDevs = 0;
|
||||
|
26
webserver.js
26
webserver.js
@ -65,7 +65,12 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
||||
obj.db = db;
|
||||
obj.app = obj.express();
|
||||
if (obj.args.agentport) { obj.agentapp = obj.express(); }
|
||||
if (args.compression !== false) { obj.app.use(require('compression')()); }
|
||||
if (args.compression !== false) {
|
||||
obj.app.use(require('compression')({ filter: function (req, res) {
|
||||
if (req.path == '/devicefile.ashx') return false; // Don't compress device file transfers to show file sizes
|
||||
return require('compression').filter(req, res);
|
||||
}}));
|
||||
}
|
||||
obj.app.disable('x-powered-by');
|
||||
obj.tlsServer = null;
|
||||
obj.tcpServer = null;
|
||||
@ -3514,7 +3519,13 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
||||
const twoFactorCookie = obj.parent.encodeCookie({ userid: cookie.u, expire: maxCookieAge * 24 * 60 /*, ip: req.clientIp*/ }, obj.parent.loginCookieEncryptionKey);
|
||||
res.cookie('twofactor', twoFactorCookie, { maxAge: (maxCookieAge * 24 * 60 * 60 * 1000), httpOnly: true, sameSite: parent.config.settings.sessionsamesite, secure: true });
|
||||
}
|
||||
|
||||
var user = obj.users[cookie.u];
|
||||
// Notify account login
|
||||
var targets = ['*', 'server-users', user._id];
|
||||
if (user.groups) { for (var i in user.groups) { targets.push('server-users:' + i); } }
|
||||
const ua = obj.getUserAgentInfo(req);
|
||||
const loginEvent = { etype: 'user', userid: user._id, username: user.name, account: obj.CloneSafeUser(user), action: 'login', msgid: 107, msgArgs: [req.clientIp, ua.browserStr, ua.osStr], msg: 'Account login', domain: domain.id, ip: req.clientIp, userAgent: req.headers['user-agent'], twoFactorType: 'pushlogin' };
|
||||
obj.parent.DispatchEvent(targets, obj, loginEvent);
|
||||
handleRootRequestEx(req, res, domain);
|
||||
return;
|
||||
}
|
||||
@ -7067,6 +7078,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
||||
// User credentials are stored in session, just check again and get userid
|
||||
obj.authenticate(sec.tuser, sec.tpass, domain, function (err, userid, passhint, loginOptions) {
|
||||
if ((userid != null) && (err == null)) {
|
||||
var user = obj.users[userid]; // Get user object
|
||||
// Login data correct, now exchange authorization code for 2FA
|
||||
client.exchangeAuthorizationCodeFor2FAResult(req.query.duo_code, userid.split('/')[2]).then(function (data) {
|
||||
const sec = parent.decryptSessionData(req.session.e);
|
||||
@ -7082,6 +7094,12 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
||||
delete sec.tpass;
|
||||
req.session.e = parent.encryptSessionData(sec);
|
||||
obj.parent.authLog('https', 'Accepted Duo authentication for ' + userid + ' from ' + req.clientIp + ':' + req.connection.remotePort, { useragent: req.headers['user-agent'], sessionid: req.session.x });
|
||||
// Notify account login
|
||||
var targets = ['*', 'server-users', user._id];
|
||||
if (user.groups) { for (var i in user.groups) { targets.push('server-users:' + i); } }
|
||||
const ua = obj.getUserAgentInfo(req);
|
||||
const loginEvent = { etype: 'user', userid: user._id, username: user.name, account: obj.CloneSafeUser(user), action: 'login', msgid: 107, msgArgs: [req.clientIp, ua.browserStr, ua.osStr], msg: 'Account login', domain: domain.id, ip: req.clientIp, userAgent: req.headers['user-agent'], twoFactorType: 'duo' };
|
||||
obj.parent.DispatchEvent(targets, obj, loginEvent);
|
||||
res.redirect(domain.url + getQueryPortion(req));
|
||||
}).catch(function (err) {
|
||||
const sec = parent.decryptSessionData(req.session.e);
|
||||
@ -7092,6 +7110,10 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
||||
req.session.e = parent.encryptSessionData(sec);
|
||||
req.session.loginmode = 1;
|
||||
req.session.messageid = 117; // Invalid security check
|
||||
// Notify account 2fa failed login
|
||||
const ua = obj.getUserAgentInfo(req);
|
||||
obj.parent.DispatchEvent(['*', 'server-users', user._id], obj, { action: 'authfail', username: user.name, userid: user._id, domain: domain.id, msg: 'User login attempt with incorrect 2nd factor from ' + req.clientIp, msgid: 108, msgArgs: [req.clientIp, ua.browserStr, ua.osStr] });
|
||||
obj.setbad2Fa(req);
|
||||
res.redirect(domain.url + getQueryPortion(req));
|
||||
});
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user