JSON config schema improvements.

This commit is contained in:
Ylian Saint-Hilaire 2020-06-15 13:08:46 -07:00
parent b85d674963
commit 888a5bab7d
3 changed files with 439 additions and 433 deletions

View File

@ -7,20 +7,20 @@
"settings": { "settings": {
"type": "object", "type": "object",
"properties": { "properties": {
"Cert": { "type": "string" }, "cert": { "type": "string" },
"MongoDb": { "type": "string" }, "mongoDb": { "type": "string" },
"MongoDbName": { "type": "string" }, "mongoDbName": { "type": "string" },
"MongoDbChangeStream": { "type": "boolean" }, "mongoDbChangeStream": { "type": "boolean" },
"MongoDumpPath": { "type": "string" }, "mongoDumpPath": { "type": "string" },
"WANonly": { "type": "boolean", "default": false }, "WANonly": { "type": "boolean", "default": false },
"LANonly": { "type": "boolean", "default": false }, "LANonly": { "type": "boolean", "default": false },
"SessionTime": { "type": "integer" }, "sessionTime": { "type": "integer" },
"SessionKey": { "type": "string" }, "sessionKey": { "type": "string" },
"SessionSameSite": { "type": "string" }, "sessionSameSite": { "type": "string" },
"DbEncryptKey": { "type": "string" }, "dbEncryptKey": { "type": "string" },
"DbRecordsEncryptKey": { "type": "string" }, "dbRecordsEncryptKey": { "type": "string" },
"DbRecordsDecryptKey": { "type": "string" }, "dbRecordsDecryptKey": { "type": "string" },
"DbExpire": { "dbExpire": {
"type": "object", "type": "object",
"properties": { "properties": {
"events": { "type": "integer" }, "events": { "type": "integer" },
@ -28,45 +28,46 @@
"statsevents": { "type": "integer" } "statsevents": { "type": "integer" }
} }
}, },
"Port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 },
"PortBind": { "type": "string" }, "portBind": { "type": "string", "description": "When set, bind the HTTPS main port to a specific network address." },
"AliasPort": { "type": "integer", "minimum": 1, "maximum": 65535 }, "aliasPort": { "type": "integer", "minimum": 1, "maximum": 65535 },
"RedirPort": { "type": "integer", "minimum": 1, "maximum": 65535 }, "redirPort": { "type": "integer", "minimum": 1, "maximum": 65535 },
"RedirPortBind": { "type": "string" }, "redirPortBind": { "type": "string", "description": "When set, bind the HTTP redirection port to a specific network address." },
"RedirAliasPort": { "type": "integer", "minimum": 1, "maximum": 65535 }, "redirAliasPort": { "type": "integer", "minimum": 1, "maximum": 65535 },
"AgentPort": { "type": "integer", "minimum": 1, "maximum": 65535, "description": "When set, enabled a new HTTPS server port that only accepts agent connections" }, "agentPort": { "type": "integer", "minimum": 1, "maximum": 65535, "description": "When set, enabled a new HTTPS server port that only accepts agent connections." },
"AgentPortBind": { "type": "string", "description": "When set, binds the agent port to a specific network interface" }, "agentPortBind": { "type": "string", "description": "When set, binds the agent port to a specific network interface." },
"AgentAliasPort": { "type": "integer", "minimum": 1, "maximum": 65535, "description": "When set, indicates the actual publically visible agent-only port. If not set, the AgentPort value is used" }, "agentAliasPort": { "type": "integer", "minimum": 1, "maximum": 65535, "description": "When set, indicates the actual publically visible agent-only port. If not set, the AgentPort value is used." },
"AgentAliasDNS": { "type": "string", "format": "hostname", "description": "When set, specified the DNS name used by agents to connect to the agent-only port" }, "agentAliasDNS": { "type": "string", "format": "hostname", "description": "When set, specified the DNS name used by agents to connect to the agent-only port." },
"AgentPortTls": { "type": "boolean", "default": true, "description": "Indicates if the agent-only port must perform TLS, this should be set to false if TLS is performed in front of this server" }, "agentPortTls": { "type": "boolean", "default": true, "description": "Indicates if the agent-only port must perform TLS, this should be set to false if TLS is performed in front of this server." },
"ExactPorts": { "type": "boolean", "default": false }, "exactPorts": { "type": "boolean", "default": false },
"AllowLoginToken": { "type": "boolean", "default": false }, "allowLoginToken": { "type": "boolean", "default": false },
"AllowFraming": { "type": "boolean", "default": false }, "allowFraming": { "type": "boolean", "default": false },
"CookieIpCheck": { "type": "boolean" }, "cookieIpCheck": { "type": "boolean" },
"CookieEncoding": { "type": "string", "enum": [ "hex", "base64" ], "default": "base64" }, "cookieEncoding": { "type": "string", "enum": [ "hex", "base64" ], "default": "base64", "description": "Encoding format of cookies in the HTTP headers, this is typically Base64 but some reverse proxies will require HEX." },
"WebRTC": { "type": "boolean", "default": false, "description": "When enabled, allows use of WebRTC to allow direct network traffic between the agent and browser" }, "webRTC": { "type": "boolean", "default": false, "description": "When enabled, allows use of WebRTC to allow direct network traffic between the agent and browser." },
"Nice404": { "type": "boolean" }, "nice404": { "type": "boolean", "default": true, "description": "By default, a nice looking 404 error page is displayed when needed. Set this to false to disable it." },
"ClickOnce": { "type": "boolean" }, "clickOnce": { "type": "boolean", "default": true, "description": "By default Microsoft ClickOnce support is enabled allowing connection routing from the web site on IE browser and browsers with ClickOnce add-in." },
"SelfUpdate": { "type": "boolean", "default": false, "description": "When true, this server will attempt to self-update everyday after midnight." }, "selfUpdate": { "type": "boolean", "default": false, "description": "When true, this server will attempt to self-update everyday after midnight." },
"BrowserPing": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the browser at x seconds interval and expects a response from the browser." }, "browserPing": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the browser at x seconds interval and expects a response from the browser." },
"BrowserPong": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the browser at x seconds interval." }, "browserPong": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the browser at x seconds interval." },
"AgentPing": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the agent at x seconds interval and expects a response from the agent." }, "agentPing": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the agent at x seconds interval and expects a response from the agent." },
"AgentPong": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the agent at x seconds interval." }, "agentPong": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the agent at x seconds interval." },
"AgentIdleTimeout": { "type": "integer", "minimum": 1 }, "agentIdleTimeout": { "type": "integer", "minimum": 1 },
"MeshErrorLogPath": { "type": "string" }, "meshErrorLogPath": { "type": "string" },
"NpmPath": { "type": "string" }, "npmPath": { "type": "string" },
"NpmProxy": { "type": "string", "format": "uri" }, "npmProxy": { "type": "string", "format": "uri" },
"AllowHighQualityDesktop": { "type": "boolean", "default": true }, "allowHighQualityDesktop": { "type": "boolean", "default": true },
"DesktopMultiplex": { "type": "boolean", "default": false }, "desktopMultiplex": { "type": "boolean", "default": false },
"UserAllowedIP": { "type": [ "string", "array" ] }, "userAllowedIP": { "type": [ "string", "array" ] },
"UserBlockedIP": { "type": [ "string", "array" ] }, "userBlockedIP": { "type": [ "string", "array" ] },
"AgentAllowedIP": { "type": [ "string", "array" ] }, "agentAllowedIP": { "type": [ "string", "array" ] },
"AgentBlockedIP": { "type": [ "string", "array" ] }, "agentBlockedIP": { "type": [ "string", "array" ] },
"AuthLog": { "type": "string" }, "authLog": { "type": "string" },
"ManageAllDeviceGroups": { "type": "array", "items": [ { "type": "string" } ] }, "manageAllDeviceGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"ManageCrossDomain": { "type": "array", "items": [ { "type": "string" } ] }, "manageCrossDomain": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"LocalDiscovery": { "localDiscovery": {
"type": "object", "type": "object",
"description": "When this server is in LAN mode, you may discover this server using a multicast discovery tool. When discovery happens, the name and info fields are sent back to the discovery tool.",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"name": { "type": "string" }, "name": { "type": "string" },
@ -74,29 +75,26 @@
}, },
"required": [ "name", "info" ] "required": [ "name", "info" ]
}, },
"TlsOffload": { "type": [ "string", "boolean" ], "default": false }, "tlsOffload": { "type": [ "string", "boolean" ], "default": false },
"TrustedProxy": { "type": "string" }, "trustedProxy": { "type": "string" },
"MpsPort": { "type": "integer", "minimum": 1, "maximum": 65535 }, "mpsPort": { "type": "integer", "minimum": 1, "maximum": 65535 },
"MpsPortBind": { "type": "string" }, "mpsPortBind": { "type": "string" },
"MpsAliasPort": { "type": "integer", "minimum": 1, "maximum": 65535 }, "mpsAliasPort": { "type": "integer", "minimum": 1, "maximum": 65535 },
"MpsAliasHost": { "type": "string" }, "mpsAliasHost": { "type": "string" },
"MpsTlsOffload": { "type": "boolean", "default": false }, "mpsTlsOffload": { "type": "boolean", "default": false },
"No2FactorAuth": { "type": "boolean" }, "no2FactorAuth": { "type": "boolean" },
"Log": { "type": "string" }, "log": { "type": "string" },
"syslog": { "type": "string" }, "syslog": { "type": "string" },
"syslogauth": { "type": "string" }, "syslogauth": { "type": "string" },
"syslogjson": { "type": "string" }, "syslogjson": { "type": "string" },
"WebRtConfig": { "webrtcConfig": {
"type": "object", "type": "object",
"properties": { "properties": {
"iceServers": { "iceServers": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "urls": { "type": "string" } }, "required": [ "urls" ] } }
"type": "array",
"items": [ { "type": "object", "properties": { "urls": { "type": "string" } }, "required": [ "urls" ] } ]
}
}, },
"required": [ "iceServers" ] "required": [ "iceServers" ]
}, },
"AutoBackup": { "autoBackup": {
"type": "object", "type": "object",
"properties": { "properties": {
"backupIntervalHours": { "type": "integer" }, "backupIntervalHours": { "type": "integer" },
@ -105,8 +103,8 @@
"backupPath": { "type": "string" } "backupPath": { "type": "string" }
} }
}, },
"Redirects": { "type": "object" }, "redirects": { "type": "object" },
"MaxInvalidLogin": { "maxInvalidLogin": {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
@ -115,247 +113,243 @@
"coolofftime": { "type": "integer" } "coolofftime": { "type": "integer" }
} }
}, },
"Plugins": { "plugins": {
"type": "object", "type": "object",
"properties": { "enabled": { "type": "boolean" } }, "properties": { "enabled": { "type": "boolean" } },
"required": [ "enabled" ] "required": [ "enabled" ]
} }
} }
}, },
"domaindefaults": { "type": "object" }, "domaindefaults": { "$ref": "#/properties/domains/items" },
"domains": { "domains": {
"type": "object", "type": "object",
"properties": { "items": {
"": { "type": "object",
"type": "object", "properties": {
"properties": { "title": { "type": "string" },
"Title": { "type": "string" }, "title2": { "type": "string" },
"Title2": { "type": "string" }, "titlePicture": { "type": "string" },
"TitlePicture": { "type": "string" }, "userQuota": { "type": "integer" },
"UserQuota": { "type": "integer" }, "meshQuota": { "type": "integer" },
"MeshQuota": { "type": "integer" }, "minify": { "type": "boolean", "default": false, "description": "When enabled, the server will send reduced sided web pages." },
"Minify": { "type": "boolean" }, "newAccounts": { "type": "boolean" },
"NewAccounts": { "type": "boolean" }, "newAccountsUserGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"NewAccountsUserGroups": { "type": "array", "items": [ { "type": "string" } ] }, "userNameIsEmail": { "type": "boolean", "default": false, "description": "When enabled, the username of each account is also the email address of the account." },
"UserNameIsEmail": { "type": "boolean" }, "newAccountEmailDomains": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"NewAccountEmailDomains": { "type": "array", "items": [ { "type": "string" } ] }, "newAccountsRights": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"NewAccountsRights": { "type": "array", "items": [ { "type": "string" } ] }, "welcomeText": { "type": "string" },
"WelcomeText": { "type": "string" }, "welcomePicture": { "type": "string" },
"WelcomePicture": { "type": "string" }, "hide": { "type": "integer" },
"Hide": { "type": "integer" }, "footer": { "type": "string" },
"Footer": { "type": "string" }, "certUrl": { "type": "string", "format": "uri" },
"CertUrl": { "type": "string", "format": "uri" }, "passwordRequirements": {
"PasswordRequirements": { "type": "object",
"type": "object", "properties": {
"properties": { "min": { "type": "integer" },
"min": { "type": "integer" }, "max": { "type": "integer" },
"max": { "type": "integer" }, "upper": { "type": "integer" },
"upper": { "type": "integer" }, "lower": { "type": "integer" },
"lower": { "type": "integer" }, "numeric": { "type": "integer" },
"numeric": { "type": "integer" }, "nonalpha": { "type": "integer" },
"nonalpha": { "type": "integer" }, "reset": { "type": "integer" },
"reset": { "type": "integer" }, "force2factor": { "type": "boolean" },
"force2factor": { "type": "boolean" }, "skip2factor": { "type": "string" }
"skip2factor": { "type": "string" } }
} },
}, "agentInviteCodes": { "type": "boolean", "default": false },
"AgentInviteCodes": { "type": "boolean", "default": false }, "agentNoProxy": { "type": "boolean", "default": false },
"AgentNoProxy": { "type": "boolean", "default": false }, "geoLocation": { "type": "boolean", "default": false },
"GeoLocation": { "type": "boolean", "default": false }, "novnc": { "type": "boolean", "default": true },
"novnc": { "type": "boolean", "default": true }, "mstsc": { "type": "boolean", "default": false },
"mstsc": { "customUI": { "type": "object" },
"type": "boolean", "consentMessages": {
"default": false "type": "object",
}, "additionalProperties": false,
"CustomUI": { "type": "object" }, "properties": {
"ConsentMessages": { "Title": { "type": "string" },
"type": "object", "Desktop": { "type": "string" },
"additionalProperties": false, "Terminal": { "type": "string" },
"properties": { "Files": { "type": "string" }
"Title": { "type": "string" }, }
"Desktop": { "type": "string" }, },
"Terminal": { "type": "string" }, "notificationMessages": {
"Files": { "type": "string" } "type": "object",
} "additionalProperties": false,
}, "properties": {
"NotificationMessages": { "Title": { "type": "string" },
"type": "object", "Desktop": { "type": "string" },
"additionalProperties": false, "Terminal": { "type": "string" },
"properties": { "Files": { "type": "string" }
"Title": { "type": "string" }, }
"Desktop": { "type": "string" }, },
"Terminal": { "type": "string" }, "userAllowedIP": { "type": "string" },
"Files": { "type": "string" } "userBlockedIP": { "type": "string" },
} "agentAllowedIP": { "type": "string" },
}, "agentBlockedIP": { "type": "string" },
"UserAllowedIP": { "type": "string" }, "userSessionIdleTimeout": { "type": "integer" },
"UserBlockedIP": { "type": "string" }, "userConsentFlags": { "type": "integer" },
"AgentAllowedIP": { "type": "string" }, "urlSwitching": { "type": "boolean" },
"AgentBlockedIP": { "type": "string" }, "desktopPrivacyBarText": { "type": "string" },
"UserSessionIdleTimeout": { "type": "integer" }, "limits": {
"UserConsentFlags": { "type": "integer" }, "type": "object",
"UrlSwitching": { "type": "boolean" }, "additionalProperties": false,
"DesktopPrivacyBarText": { "type": "string" }, "properties": {
"Limits": { "MaxDevices": { "type": "integer" },
"type": "object", "MaxUserAccounts": { "type": "integer" },
"properties": { "MaxUserSessions": { "type": "integer" },
"MaxDevices": { "type": "integer" }, "MaxAgentSessions": { "type": "integer" },
"MaxUserAccounts": { "type": "integer" }, "MaxSingleUserSessions": { "type": "integer" }
"MaxUserSessions": { "type": "integer" }, }
"MaxAgentSessions": { "type": "integer" }, },
"MaxSingleUserSessions": { "type": "integer" } "amtAcmActivation": {
} "type": "object",
}, "additionalProperties": false,
"AmtAcmActivation": { "properties": {
"type": "object", "log": { "type": "string" },
"properties": { "certs": {
"log": { "type": "string" }, "type": "object",
"certs": { "additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"certfiles": { "type": "array", "items": [ { "type": "string" } ] },
"keyfile": { "type": "string" }
},
"required": [ "certfiles", "keyfile" ]
}
}
}
},
"Redirects": {
"type": "object",
"additionalProperties": { "type": "string" }
},
"Yubikey": {
"type": "object",
"properties": {
"id": { "type": "string" },
"secret": { "type": "string" },
"proxy": { "type": "string" }
},
"required": [ "id", "secret" ]
},
"AgentConfig": {
"type": "array",
"items": [ { "type": "string" } ]
},
"SessionRecording": {
"type": "object",
"properties": {
"filepath": { "type": "string" },
"index": { "type": "boolean", "default": false },
"maxRecordings": { "type": "integer" },
"maxRecordingSizeMegabytes": { "type": "integer" },
"protocols": {
"type": "array",
"items": [ { "type": "integer" } ]
}
},
"required": [ "protocols" ]
},
"AuthStrategies": {
"type": "object",
"additionalProperties": false,
"properties": {
"twitter": {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"callbackurl": { "type": "string", "format": "uri" }, "certfiles": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"newAccounts": { "type": "boolean" }, "keyfile": { "type": "string" }
"newAccountsUserGroups": { "type": "array", "items": [ { "type": "string" } ] },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" }
}, },
"required": [ "clientid", "clientsecret" ] "required": [ "certfiles", "keyfile" ]
},
"google": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean" },
"newAccountsUserGroups": { "type": "array", "items": [ { "type": "string" } ] },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" }
},
"required": [ "clientid", "clientsecret" ]
},
"github": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean" },
"newAccountsUserGroups": { "type": "array", "items": [ { "type": "string" } ] },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" }
},
"required": [ "clientid", "clientsecret" ]
},
"reddit": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean" },
"newAccountsUserGroups": { "type": "array", "items": [ { "type": "string" } ] },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" }
},
"required": [ "clientid", "clientsecret" ]
},
"azure": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean" },
"newAccountsUserGroups": { "type": "array", "items": [ { "type": "string" } ] },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" },
"tenantid": { "type": "string" }
},
"required": [ "clientid", "clientsecret", "tenantid" ]
},
"jumpcloud": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean" },
"newAccountsUserGroups": { "type": "array", "items": [ { "type": "string" } ] },
"entityid": { "type": "string" },
"idpurl": { "type": "string" },
"cert": { "type": "string" }
},
"required": [ "entityid", "idpurl", "cert" ]
},
"saml": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"disableRequestedAuthnContext": { "type": "boolean" },
"newAccounts": { "type": "boolean" },
"newAccountsUserGroups": { "type": "array", "items": [ { "type": "string" } ] },
"newAccountsRights": { "type": "array", "items": [ { "type": "string" } ] },
"entityid": { "type": "string" },
"idpurl": { "type": "string" },
"cert": { "type": "string" }
},
"required": [ "entityid", "idpurl", "cert" ]
} }
} }
},
"required": [ "certs" ]
},
"redirects": {
"type": "object",
"additionalProperties": { "type": "string" }
},
"yubikey": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": { "type": "string" },
"secret": { "type": "string" },
"proxy": { "type": "string", "format": "uri" }
},
"required": [ "id", "secret" ]
},
"httpHeaders": { "type": "object", "additionalProperties": { "type": "string" } },
"agentConfig": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"sessionRecording": {
"type": "object",
"additionalProperties": false,
"properties": {
"filepath": { "type": "string" },
"index": { "type": "boolean", "default": false },
"maxRecordings": { "type": "integer" },
"maxRecordingSizeMegabytes": { "type": "integer" },
"protocols": { "type": "array", "uniqueItems": true, "items": { "type": "integer" } }
},
"required": [ "protocols" ]
},
"authStrategies": {
"type": "object",
"additionalProperties": false,
"properties": {
"twitter": {
"type": "object",
"additionalProperties": false,
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean", "default": false },
"newAccountsUserGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" }
},
"required": [ "clientid", "clientsecret" ]
},
"google": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean", "default": false },
"newAccountsUserGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" }
},
"required": [ "clientid", "clientsecret" ]
},
"github": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean", "default": false },
"newAccountsUserGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" }
},
"required": [ "clientid", "clientsecret" ]
},
"reddit": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean", "default": false },
"newAccountsUserGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" }
},
"required": [ "clientid", "clientsecret" ]
},
"azure": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean", "default": false },
"newAccountsUserGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"clientid": { "type": "string" },
"clientsecret": { "type": "string" },
"tenantid": { "type": "string" }
},
"required": [ "clientid", "clientsecret", "tenantid" ]
},
"jumpcloud": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"newAccounts": { "type": "boolean", "default": false },
"newAccountsUserGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"entityid": { "type": "string" },
"idpurl": { "type": "string", "format": "uri" },
"cert": { "type": "string" }
},
"required": [ "entityid", "idpurl", "cert" ]
},
"saml": {
"type": "object",
"properties": {
"callbackurl": { "type": "string", "format": "uri" },
"disableRequestedAuthnContext": { "type": "boolean" },
"newAccounts": { "type": "boolean", "default": false },
"newAccountsUserGroups": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"newAccountsRights": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
"entityid": { "type": "string" },
"idpurl": { "type": "string", "format": "uri" },
"cert": { "type": "string" }
},
"required": [ "entityid", "idpurl", "cert" ]
}
} }
} }
} }
} }
}, },
"letsencrypt": { "letsEncrypt": {
"title" : "Built-in Let's Encrypt support", "title" : "Built-in Let's Encrypt support",
"description": "If your server has a proper DNS name and it public facing on the Internet with a public facing HTTP server on port 80, you can get a free TLS certificate.", "description": "If your server has a proper DNS name and it public facing on the Internet with a public facing HTTP server on port 80, you can get a free TLS certificate.",
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"email": { "type": "string", "format": "email" }, "email": { "type": "string", "format": "email", "description": "Email address of the administrator of this server. Make sure this is a valid email address otherwise the certificate request will fail." },
"names": { "type": "string" }, "names": { "type": "string" },
"production": { "type": "boolean", "default": false } "production": { "type": "boolean", "default": false, "description": "By default a test certificate will be obtained from Let's Encrypt. Always start by getting a test certificate and make sure that works before setting this to true and obtaining a production certificaite. Making too many bad requests for a production certificate will get you banned for a long period of time." }
}, },
"required": [ "email", "names" ] "required": [ "email", "names" ]
}, },
@ -381,7 +375,7 @@
}, },
"smtp": { "smtp": {
"title" : "Email server", "title" : "Email server",
"description": "Connects MeshCentral to a email server, allows MeshCentral to send email messages for 2FA or user notification", "description": "Connects MeshCentral to a email server, allows MeshCentral to send email messages for 2FA or user notification.",
"type": "object", "type": "object",
"properties": { "properties": {
"host": { "type": "string", "format": "hostname" }, "host": { "type": "string", "format": "hostname" },
@ -395,18 +389,30 @@
}, },
"sms": { "sms": {
"title" : "SMS provider", "title" : "SMS provider",
"description": "Connects MeshCentral to a SMS text messaging provider, allows MeshCentral to send SMS messages for 2FA or user notification", "description": "Connects MeshCentral to a SMS text messaging provider, allows MeshCentral to send SMS messages for 2FA or user notification.",
"type": "object", "oneOf": [
"properties": { {
"provider": { "type": "string", "enum": [ "twilio", "plivo" ] }, "type": "object",
"id": { "type": "string" }, "properties": {
"sid": { "type": "string" }, "provider": { "type": "string", "enum": [ "twilio" ] },
"token": { "type": "string" }, "sid": { "type": "string" },
"from": { "type": "string" } "auth": { "type": "string" },
}, "from": { "type": "string" }
"required": [ "provider", "token", "from" ] },
"required": [ "provider", "sid", "auth", "from" ]
},
{
"type": "object",
"properties": {
"provider": { "type": "string", "enum": [ "plivo" ] },
"id": { "type": "string" },
"token": { "type": "string" },
"from": { "type": "string" }
},
"required": [ "provider", "id", "token", "from" ]
}
]
} }
}, },
"required": [ "settings", "domains" ] "required": [ "settings", "domains" ]
} }

View File

@ -2,127 +2,127 @@
"$schema": "http://info.meshcentral.com/downloads/meshcentral-config-schema.json", "$schema": "http://info.meshcentral.com/downloads/meshcentral-config-schema.json",
"__comment__": "This is a sample configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.", "__comment__": "This is a sample configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.",
"settings": { "settings": {
"_Cert": "myserver.mydomain.com", "_cert": "myserver.mydomain.com",
"_MongoDb": "mongodb://127.0.0.1:27017", "_mongoDb": "mongodb://127.0.0.1:27017",
"_MongoDbName": "meshcentral", "_mongoDbName": "meshcentral",
"_MongoDbChangeStream": true, "_mongoDbChangeStream": true,
"_MongoDumpPath": "C:\\Program Files\\MongoDB\\Server\\4.2\\bin\\mongodump.exe", "_mongoDumpPath": "C:\\Program Files\\MongoDB\\Server\\4.2\\bin\\mongodump.exe",
"_WANonly": true, "_WANonly": true,
"_LANonly": true, "_LANonly": true,
"_SessionTime": 30, "_sessionTime": 30,
"_SessionKey": "MyReallySecretPassword1", "_sessionKey": "MyReallySecretPassword1",
"_SessionSameSite": "strict", "_sessionSameSite": "strict",
"_DbEncryptKey": "MyReallySecretPassword2", "_dbEncryptKey": "MyReallySecretPassword2",
"_DbRecordsEncryptKey": "MyReallySecretPassword", "_dbRecordsEncryptKey": "MyReallySecretPassword",
"_DbRecordsDecryptKey": "MyReallySecretPassword", "_dbRecordsDecryptKey": "MyReallySecretPassword",
"__DbExpire": "Amount of time to keep various events in the database, in seconds. Below are the default values.", "__dbExpire": "Amount of time to keep various events in the database, in seconds. Below are the default values.",
"_DbExpire": { "_dbExpire": {
"events": 1728000, "events": 1728000,
"powerevents": 864000, "powerevents": 864000,
"statsevents": 2592000 "statsevents": 2592000
}, },
"_Port": 443, "port": 443,
"_PortBind": "127.0.0.1", "_portBind": "127.0.0.1",
"_AliasPort": 444, "aliasPort": 444,
"_RedirPort": 80, "_redirPort": 80,
"_RedirPortBind": "127.0.0.1", "_redirPortBind": "127.0.0.1",
"_RedirAliasPort": 80, "_redirAliasPort": 80,
"_AgentPort": 1234, "_agentPort": 1234,
"_AgentPortBind": "127.0.0.1", "_agentPortBind": "127.0.0.1",
"_AgentAliasPort": 1234, "_agentAliasPort": 1234,
"_AgentAliasDNS": "agents.myserver.mydomain.com", "_agentAliasDNS": "agents.myserver.mydomain.com",
"_AgentPortTls": true, "_agentPortTls": true,
"_ExactPorts": true, "_exactPorts": true,
"_AllowLoginToken": true, "_allowLoginToken": true,
"_AllowFraming": true, "_allowFraming": true,
"_CookieIpCheck": false, "_cookieIpCheck": false,
"_CookieEncoding": "hex", "_cookieEncoding": "hex",
"_WebRTC": false, "_webRTC": false,
"_Nice404": false, "_nice404": false,
"_ClickOnce": false, "_clickOnce": false,
"_SelfUpdate": true, "_selfUpdate": true,
"_BrowserPing": 60, "_browserPing": 60,
"_BrowserPong": 60, "_browserPong": 60,
"_AgentPing": 60, "_agentPing": 60,
"_AgentPong": 60, "_agentPong": 60,
"_AgentIdleTimeout": 150, "_agentIdleTimeout": 150,
"_MeshErrorLogPath": "c:\\tmp", "_meshErrorLogPath": "c:\\tmp",
"_NpmPath": "c:\\npm.exe", "_npmPath": "c:\\npm.exe",
"_NpmProxy": "http://1.2.3.4:80", "_npmProxy": "http://1.2.3.4:80",
"_AllowHighQualityDesktop": true, "_allowHighQualityDesktop": true,
"_DesktopMultiplex": true, "_desktopMultiplex": true,
"_UserAllowedIP": "127.0.0.1,192.168.1.0/24", "_userAllowedIP": "127.0.0.1,192.168.1.0/24",
"_UserBlockedIP": "127.0.0.1,::1,192.168.0.100", "_userBlockedIP": "127.0.0.1,::1,192.168.0.100",
"_AgentAllowedIP": "192.168.0.100/24", "_agentAllowedIP": "192.168.0.100/24",
"_AgentBlockedIP": "127.0.0.1,::1", "_agentBlockedIP": "127.0.0.1,::1",
"_AuthLog": "c:\\temp\\auth.log", "_authLog": "c:\\temp\\auth.log",
"_ManageAllDeviceGroups": [ "user//admin" ], "_manageAllDeviceGroups": [ "user//admin" ],
"_ManageCrossDomain": [ "user//admin" ], "_manageCrossDomain": [ "user//admin" ],
"_LocalDiscovery": { "_localDiscovery": {
"name": "Local server name", "name": "Local server name",
"info": "Information about this server" "info": "Information about this server"
}, },
"_TlsOffload": "127.0.0.1,::1", "_rlsOffload": "127.0.0.1,::1",
"_TrustedProxy": "127.0.0.1,::1", "_rrustedProxy": "127.0.0.1,::1",
"_MpsPort": 44330, "_mpsPort": 44330,
"_MpsPortBind": "127.0.0.1", "_mpsPortBind": "127.0.0.1",
"_MpsAliasPort": 4433, "_mpsAliasPort": 4433,
"_MpsAliasHost": "mps.mydomain.com", "_mpsAliasHost": "mps.mydomain.com",
"_MpsTlsOffload": true, "_mpsTlsOffload": true,
"_No2FactorAuth": true, "_no2FactorAuth": true,
"_Log": "main,web,webrequest,cert", "_log": "main,web,webrequest,cert",
"_syslog": "meshcentral", "_syslog": "meshcentral",
"_syslogauth": "meshcentral-auth", "_syslogauth": "meshcentral-auth",
"_syslogjson": "meshcentral-json", "_syslogjson": "meshcentral-json",
"_WebRtConfig": { "_webrtcConfig": {
"iceServers": [ "iceServers": [
{ "urls": "stun:stun.services.mozilla.com" }, { "urls": "stun:stun.services.mozilla.com" },
{ "urls": "stun:stun.l.google.com:19302" } { "urls": "stun:stun.l.google.com:19302" }
] ]
}, },
"_AutoBackup": { "_autoBackup": {
"backupIntervalHours": 24, "backupIntervalHours": 24,
"keepLastDaysBackup": 10, "keepLastDaysBackup": 10,
"zipPassword": "MyReallySecretPassword3", "zipPassword": "MyReallySecretPassword3",
"_backupPath": "C:\\backups" "_backupPath": "C:\\backups"
}, },
"_Redirects": { "_redirects": {
"meshcommander": "https://www.meshcommander.com/" "meshcommander": "https://www.meshcommander.com/"
}, },
"__MaxInvalidLogin": "Time in minutes, max amount of bad logins from a source IP in the time before logins are rejected.", "__maxInvalidLogin": "Time in minutes, max amount of bad logins from a source IP in the time before logins are rejected.",
"_MaxInvalidLogin": { "_maxInvalidLogin": {
"time": 10, "time": 10,
"count": 10, "count": 10,
"coolofftime": 10 "coolofftime": 10
}, },
"_Plugins": { "enabled": true } "_plugins": { "enabled": true }
}, },
"_domaindefaults": { "_domaindefaults": {
"__comment__": "Any settings in this section is used as default setting for all domains", "__comment__": "Any settings in this section is used as default setting for all domains",
"Title": "MyDefaultTitle", "title": "MyDefaultTitle",
"Footer": "Default page footer", "footer": "Default page footer",
"NewAccounts": false "newAccounts": false
}, },
"_domains": { "_domains": {
"": { "": {
"Title": "MyServer", "title": "MyServer",
"Title2": "Servername", "title2": "Servername",
"_TitlePicture": "title-sample.png", "_titlePicture": "title-sample.png",
"_UserQuota": 1048576, "_userQuota": 1048576,
"_MeshQuota": 248576, "_meshQuota": 248576,
"Minify": true, "minify": true,
"_NewAccounts": true, "_newAccounts": true,
"_NewAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
"_UserNameIsEmail": true, "_userNameIsEmail": true,
"_NewAccountEmailDomains": [ "sample.com" ], "_newAccountEmailDomains": [ "sample.com" ],
"_NewAccountsRights": [ "nonewgroups", "notools" ], "_newAccountsRights": [ "nonewgroups", "notools" ],
"_WelcomeText": "Sample Text on Login Page.", "_welcomeText": "Sample Text on Login Page.",
"_WelcomePicture": "mainwelcome.jpg", "_welcomePicture": "mainwelcome.jpg",
"___Hide__": "Sum of: 1 = Hide header, 2 = Hide tab, 4 = Hide footer, 8 = Hide title, 16 = Hide left bar", "___hide__": "Sum of: 1 = Hide header, 2 = Hide tab, 4 = Hide footer, 8 = Hide title, 16 = Hide left bar",
"_Hide": 4, "_hide": 4,
"_Footer": "<a href='https://twitter.com/mytwitter'>Twitter</a>", "_footer": "<a href='https://twitter.com/mytwitter'>Twitter</a>",
"_CertUrl": "https://192.168.2.106:443/", "_certUrl": "https://192.168.2.106:443/",
"_PasswordRequirements": { "_passwordRequirements": {
"min": 8, "min": 8,
"max": 128, "max": 128,
"upper": 1, "upper": 1,
@ -133,41 +133,41 @@
"force2factor": true, "force2factor": true,
"skip2factor": "127.0.0.1,192.168.2.0/24" "skip2factor": "127.0.0.1,192.168.2.0/24"
}, },
"_AgentInviteCodes": true, "_agentInviteCodes": true,
"_AgentNoProxy": true, "_agentNoProxy": true,
"_GeoLocation": true, "_geoLocation": true,
"_novnc": false, "_novnc": false,
"_mstsc": true, "_mstsc": true,
"_consentMessages": { "_consentMessages": {
"Title": "MeshCentral", "title": "MeshCentral",
"Desktop": "{0} requesting remote desktop access. Grant access?", "desktop": "{0} requesting remote desktop access. Grant access?",
"Terminal": "{0} requesting remote terminal access. Grant access?", "terminal": "{0} requesting remote terminal access. Grant access?",
"Files": "{0} requesting remote files access. Grant access?" "files": "{0} requesting remote files access. Grant access?"
}, },
"_notificationMessages": { "_notificationMessages": {
"Title": "MeshCentral", "title": "MeshCentral",
"Desktop": "{0} started a remote desktop session.", "desktop": "{0} started a remote desktop session.",
"Terminal": "{0} started a remote terminal session.", "terminal": "{0} started a remote terminal session.",
"Files": "{0} started a remote files session." "files": "{0} started a remote files session."
}, },
"_UserAllowedIP": "127.0.0.1,192.168.1.0/24", "_userAllowedIP": "127.0.0.1,192.168.1.0/24",
"_UserBlockedIP": "127.0.0.1,::1,192.168.0.100", "_userBlockedIP": "127.0.0.1,::1,192.168.0.100",
"_AgentAllowedIP": "192.168.0.100/24", "_agentAllowedIP": "192.168.0.100/24",
"_AgentBlockedIP": "127.0.0.1,::1", "_agentBlockedIP": "127.0.0.1,::1",
"___UserSessionIdleTimeout__": "Number of user idle minutes before auto-disconnect", "___userSessionIdleTimeout__": "Number of user idle minutes before auto-disconnect",
"_UserSessionIdleTimeout": 30, "_userSessionIdleTimeout": 30,
"__UserConsentFlags__": "Set to: 1 for desktop, 2 for terminal, 3 for files, 7 for all", "__userConsentFlags__": "Set to: 1 for desktop, 2 for terminal, 3 for files, 7 for all",
"_UserConsentFlags": 7, "_userConsentFlags": 7,
"_UrlSwitching": false, "_urlSwitching": false,
"_DesktopPrivacyBarText": "Your privacy bar message", "_desktopPrivacyBarText": "Your privacy bar message",
"_Limits": { "_limits": {
"_MaxDevices": 100, "_maxDevices": 100,
"_MaxUserAccounts": 100, "_maxUserAccounts": 100,
"_MaxUserSessions": 100, "_maxUserSessions": 100,
"_MaxAgentSessions": 100, "_maxAgentSessions": 100,
"MaxSingleUserSessions": 10 "maxSingleUserSessions": 10
}, },
"_AmtAcmActivation": { "_amtAcmActivation": {
"log": "amtactivation.log", "log": "amtactivation.log",
"certs": { "certs": {
"mycertname": { "mycertname": {
@ -176,7 +176,7 @@
} }
} }
}, },
"_Redirects": { "_redirects": {
"meshcommander": "https://www.meshcommander.com/" "meshcommander": "https://www.meshcommander.com/"
}, },
"_yubikey": { "_yubikey": {
@ -184,13 +184,13 @@
"secret": "xxxxxxxxxxxxxxxxxxxxx", "secret": "xxxxxxxxxxxxxxxxxxxxx",
"_proxy": "http://myproxy.domain.com:80" "_proxy": "http://myproxy.domain.com:80"
}, },
"_httpheaders": { "_httpHeaders": {
"Strict-Transport-Security": "max-age=360000", "Strict-Transport-Security": "max-age=360000",
"x-frame-options": "SAMEORIGIN", "x-frame-options": "SAMEORIGIN",
"Content-Security-Policy": "default-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; frame-src 'self'; media-src 'self'" "Content-Security-Policy": "default-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; frame-src 'self'; media-src 'self'"
}, },
"_agentConfig": [ "webSocketMaskOverride=1" ], "_agentConfig": [ "webSocketMaskOverride=1" ],
"_SessionRecording": { "_sessionRecording": {
"_filepath": "C:\\temp", "_filepath": "C:\\temp",
"_index": true, "_index": true,
"_maxRecordings": 10, "_maxRecordings": 10,
@ -257,17 +257,17 @@
} }
}, },
"_customer1": { "_customer1": {
"_DNS": "customer1.myserver.com", "_dns": "customer1.myserver.com",
"_Title": "Customer1", "_title": "Customer1",
"_Title2": "TestServer", "_title2": "TestServer",
"_NewAccounts": 1, "_newAccounts": 1,
"_Auth": "sspi", "_auth": "sspi",
"__Auth": "ldap", "__auth": "ldap",
"_LDAPUserName": "gecos", "_LDAPUserName": "gecos",
"_LDAPUserKey": "uid", "_LDAPUserKey": "uid",
"_LDAPUserEmail": "otherMail", "_LDAPUserEmail": "otherMail",
"_LDAPPptions": { "_LDAPPptions": {
"URL": "test", "url": "test",
"anne": { "anne": {
"gecos": "Anne O'Nyme", "gecos": "Anne O'Nyme",
"displayName": "O Nyme anne", "displayName": "O Nyme anne",
@ -292,8 +292,8 @@
"SearchBase": "DC=meshcentral,DC=local", "SearchBase": "DC=meshcentral,DC=local",
"SearchFilter": "(sAMAccountName={{username}})" "SearchFilter": "(sAMAccountName={{username}})"
}, },
"_Footer": "Test", "_footer": "Test",
"_CertUrl": "https://192.168.2.106:443/" "_certUrl": "https://192.168.2.106:443/"
}, },
"_info": { "_info": {
"_share": "C:\\ExtraWebSite" "_share": "C:\\ExtraWebSite"

View File

@ -3,22 +3,22 @@
"__comment1__": "This is a simple configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.", "__comment1__": "This is a simple configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.",
"__comment2__": "See node_modules/meshcentral/sample-config-advanced.json for a more advanced example.", "__comment2__": "See node_modules/meshcentral/sample-config-advanced.json for a more advanced example.",
"settings": { "settings": {
"_Cert": "myserver.mydomain.com", "_cert": "myserver.mydomain.com",
"_WANonly": true, "_WANonly": true,
"_LANonly": true, "_LANonly": true,
"_SessionKey": "MyReallySecretPassword1", "_sessionKey": "MyReallySecretPassword1",
"_Port": 443, "_port": 443,
"_AliasPort": 443, "_aliasPort": 443,
"_RedirPort": 80, "_redirPort": 80,
"_RedirAliasPort": 80 "_redirAliasPort": 80
}, },
"domains": { "domains": {
"": { "": {
"_Title": "MyServer", "_title": "MyServer",
"_Title2": "Servername", "_title2": "Servername",
"_Minify": true, "_minify": true,
"_NewAccounts": true, "_newAccounts": true,
"_UserNameIsEmail": true "_userNameIsEmail": true
} }
}, },
"_letsencrypt": { "_letsencrypt": {