diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json index 33d13a64..024828e0 100644 --- a/meshcentral-config-schema.json +++ b/meshcentral-config-schema.json @@ -268,7 +268,20 @@ "agentAllowedIP": { "type": "string" }, "agentBlockedIP": { "type": "string" }, "userSessionIdleTimeout": { "type": "integer" }, - "userConsentFlags": { "type": "integer" }, + "userConsentFlags": { + "type": "object", + "additionalProperties": false, + "description": "Use this section to require user consent for this domain.", + "properties": { + "desktopnotify": { "type": "boolean", "default": false, "description": "Enable desktop notification for this domain." }, + "terminalnotify": { "type": "boolean", "default": false, "description": "Enable terminal notification for this domain." }, + "filenotify": { "type": "boolean", "default": false, "description": "Enable files notification for this domain." }, + "desktopprompt": { "type": "boolean", "default": false, "description": "Enable desktop prompt for this domain." }, + "terminalprompt": { "type": "boolean", "default": false, "description": "Enable terminal user prompt for this domain." }, + "fileprompt": { "type": "boolean", "default": false, "description": "Enable files prompt for this domain." }, + "desktopprivacybar": { "type": "boolean", "default": false, "description": "Enable remote desktop privacy bar for this domain." } + } + }, "urlSwitching": { "type": "boolean" }, "desktopPrivacyBarText": { "type": "string" }, "limits": { diff --git a/meshcentral.js b/meshcentral.js index 98896306..3baad577 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -1110,6 +1110,19 @@ function CreateMeshCentralServer(config, args) { } else { delete obj.config.domains[i].agentcustomization; } + + // Convert user consent flags + if (typeof obj.config.domains[i].userconsentflags == 'object') { + var flags = 0; + if (obj.config.domains[i].userconsentflags.desktopnotify == true) { flags |= 1; } + if (obj.config.domains[i].userconsentflags.terminalnotify == true) { flags |= 2; } + if (obj.config.domains[i].userconsentflags.filenotify == true) { flags |= 4; } + if (obj.config.domains[i].userconsentflags.desktopprompt == true) { flags |= 8; } + if (obj.config.domains[i].userconsentflags.terminalprompt == true) { flags |= 16; } + if (obj.config.domains[i].userconsentflags.fileprompt == true) { flags |= 32; } + if (obj.config.domains[i].userconsentflags.desktopprivacybar == true) { flags |= 64; } + obj.config.domains[i].userconsentflags = flags; + } } // Log passed arguments into Windows Service Log diff --git a/sample-config-advanced.json b/sample-config-advanced.json index 8cb2beac..563dbd6d 100644 --- a/sample-config-advanced.json +++ b/sample-config-advanced.json @@ -192,8 +192,15 @@ "_orphanAgentUser": "admin", "___userSessionIdleTimeout__": "Number of user idle minutes before auto-disconnect", "_userSessionIdleTimeout": 30, - "__userConsentFlags__": "Set to: 1 for desktop, 2 for terminal, 3 for files, 7 for all", - "_userConsentFlags": 7, + "userConsentFlags": { + "desktopnotify": true, + "terminalnotify": true, + "filenotify": true, + "desktopprompt": true, + "terminalprompt": true, + "fileprompt": true, + "desktopprivacybar": true + }, "_urlSwitching": false, "_desktopPrivacyBarText": "Your privacy bar message", "_limits": {