diff --git a/meshagent.js b/meshagent.js
index 7169b9ff..5ea181d9 100644
--- a/meshagent.js
+++ b/meshagent.js
@@ -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) {
diff --git a/views/default.handlebars b/views/default.handlebars
index 342bae84..6524af4b 100644
--- a/views/default.handlebars
+++ b/views/default.handlebars
@@ -7486,7 +7486,7 @@
// Add node name
var nname = EscapeHtml(node.name), nnameEx;
if (nname.length == 0) { nname = '' + "None" + ''; }
- if (((meshrights & 4) != 0) && ((!mesh.flags) || ((mesh.flags & 2) == 0))) { nname = '' + nname + ' '; }
+ if (((meshrights & 4) != 0) && ((!mesh.flags) || ((mesh.flags & 2) == 0 || (mesh.flags & 16)))) { nname = '' + nname + '
'; }
nnameEx = nname;
if (mesh) { nname += ' - ' + EscapeHtml(mesh.name) + ''; }
QH('p10deviceName', nname);
@@ -13561,6 +13561,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"); }
@@ -14042,6 +14044,10 @@
}
if ((currentMesh.mtype == 2) || (currentMesh.mtype == 4)) {
x += '