2020-06-15 09:37:53 -04:00
{
"id" : "http://info.meshcentral.com/download/meshcentral-config-schema.json" ,
"$schema" : "http://json-schema.org/draft-04/schema#" ,
"description" : "MeshCentral configuration file schema" ,
"type" : "object" ,
"properties" : {
"settings" : {
"type" : "object" ,
"properties" : {
"Cert" : { "type" : "string" } ,
"MongoDb" : { "type" : "string" } ,
"MongoDbName" : { "type" : "string" } ,
"MongoDbChangeStream" : { "type" : "boolean" } ,
"MongoDumpPath" : { "type" : "string" } ,
"WANonly" : { "type" : "boolean" , "default" : false } ,
"LANonly" : { "type" : "boolean" , "default" : false } ,
"SessionTime" : { "type" : "integer" } ,
"SessionKey" : { "type" : "string" } ,
"SessionSameSite" : { "type" : "string" } ,
"DbEncryptKey" : { "type" : "string" } ,
"DbRecordsEncryptKey" : { "type" : "string" } ,
"DbRecordsDecryptKey" : { "type" : "string" } ,
"DbExpire" : {
"type" : "object" ,
"properties" : {
"events" : { "type" : "integer" } ,
"powerevents" : { "type" : "integer" } ,
"statsevents" : { "type" : "integer" }
}
} ,
"Port" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 } ,
"PortBind" : { "type" : "string" } ,
"AliasPort" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 } ,
"RedirPort" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 } ,
"RedirPortBind" : { "type" : "string" } ,
"RedirAliasPort" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 } ,
2020-06-15 09:54:33 -04:00
"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" } ,
"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" } ,
"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" } ,
2020-06-15 09:37:53 -04:00
"ExactPorts" : { "type" : "boolean" , "default" : false } ,
"AllowLoginToken" : { "type" : "boolean" , "default" : false } ,
"AllowFraming" : { "type" : "boolean" , "default" : false } ,
"CookieIpCheck" : { "type" : "boolean" } ,
"CookieEncoding" : { "type" : "string" , "enum" : [ "hex" , "base64" ] , "default" : "base64" } ,
2020-06-15 09:54:33 -04:00
"WebRTC" : { "type" : "boolean" , "default" : false , "description" : "When enabled, allows use of WebRTC to allow direct network traffic between the agent and browser" } ,
2020-06-15 09:37:53 -04:00
"Nice404" : { "type" : "boolean" } ,
"ClickOnce" : { "type" : "boolean" } ,
"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." } ,
"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." } ,
"AgentPong" : { "type" : "integer" , "minimum" : 1 , "description" : "When specified, sends data to the agent at x seconds interval." } ,
"AgentIdleTimeout" : { "type" : "integer" , "minimum" : 1 } ,
"MeshErrorLogPath" : { "type" : "string" } ,
"NpmPath" : { "type" : "string" } ,
2020-06-15 09:54:33 -04:00
"NpmProxy" : { "type" : "string" , "format" : "uri" } ,
"AllowHighQualityDesktop" : { "type" : "boolean" , "default" : true } ,
"DesktopMultiplex" : { "type" : "boolean" , "default" : false } ,
"UserAllowedIP" : { "type" : [ "string" , "array" ] } ,
"UserBlockedIP" : { "type" : [ "string" , "array" ] } ,
"AgentAllowedIP" : { "type" : [ "string" , "array" ] } ,
"AgentBlockedIP" : { "type" : [ "string" , "array" ] } ,
2020-06-15 09:37:53 -04:00
"AuthLog" : { "type" : "string" } ,
"ManageAllDeviceGroups" : { "type" : "array" , "items" : [ { "type" : "string" } ] } ,
"ManageCrossDomain" : { "type" : "array" , "items" : [ { "type" : "string" } ] } ,
"LocalDiscovery" : {
"type" : "object" ,
"additionalProperties" : false ,
"properties" : {
"name" : { "type" : "string" } ,
"info" : { "type" : "string" }
} ,
"required" : [ "name" , "info" ]
} ,
2020-06-15 09:54:33 -04:00
"TlsOffload" : { "type" : [ "string" , "boolean" ] , "default" : false } ,
2020-06-15 09:37:53 -04:00
"TrustedProxy" : { "type" : "string" } ,
"MpsPort" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 } ,
"MpsPortBind" : { "type" : "string" } ,
"MpsAliasPort" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 } ,
"MpsAliasHost" : { "type" : "string" } ,
2020-06-15 09:54:33 -04:00
"MpsTlsOffload" : { "type" : "boolean" , "default" : false } ,
2020-06-15 09:37:53 -04:00
"No2FactorAuth" : { "type" : "boolean" } ,
"Log" : { "type" : "string" } ,
"syslog" : { "type" : "string" } ,
"syslogauth" : { "type" : "string" } ,
"syslogjson" : { "type" : "string" } ,
"WebRtConfig" : {
"type" : "object" ,
"properties" : {
"iceServers" : {
"type" : "array" ,
"items" : [ { "type" : "object" , "properties" : { "urls" : { "type" : "string" } } , "required" : [ "urls" ] } ]
}
} ,
"required" : [ "iceServers" ]
} ,
"AutoBackup" : {
"type" : "object" ,
"properties" : {
"backupIntervalHours" : { "type" : "integer" } ,
"keepLastDaysBackup" : { "type" : "integer" } ,
"zipPassword" : { "type" : "string" } ,
"backupPath" : { "type" : "string" }
}
} ,
"Redirects" : { "type" : "object" } ,
"MaxInvalidLogin" : {
"type" : "object" ,
"additionalProperties" : false ,
"properties" : {
"time" : { "type" : "integer" } ,
"count" : { "type" : "integer" } ,
"coolofftime" : { "type" : "integer" }
}
} ,
"Plugins" : {
"type" : "object" ,
"properties" : { "enabled" : { "type" : "boolean" } } ,
"required" : [ "enabled" ]
}
}
} ,
"domaindefaults" : { "type" : "object" } ,
"domains" : {
"type" : "object" ,
"properties" : {
"" : {
"type" : "object" ,
"properties" : {
"Title" : { "type" : "string" } ,
"Title2" : { "type" : "string" } ,
"TitlePicture" : { "type" : "string" } ,
"UserQuota" : { "type" : "integer" } ,
"MeshQuota" : { "type" : "integer" } ,
"Minify" : { "type" : "boolean" } ,
"NewAccounts" : { "type" : "boolean" } ,
"NewAccountsUserGroups" : { "type" : "array" , "items" : [ { "type" : "string" } ] } ,
"UserNameIsEmail" : { "type" : "boolean" } ,
"NewAccountEmailDomains" : { "type" : "array" , "items" : [ { "type" : "string" } ] } ,
"NewAccountsRights" : { "type" : "array" , "items" : [ { "type" : "string" } ] } ,
"WelcomeText" : { "type" : "string" } ,
"WelcomePicture" : { "type" : "string" } ,
"Hide" : { "type" : "integer" } ,
"Footer" : { "type" : "string" } ,
"CertUrl" : { "type" : "string" , "format" : "uri" } ,
"PasswordRequirements" : {
"type" : "object" ,
"properties" : {
"min" : { "type" : "integer" } ,
"max" : { "type" : "integer" } ,
"upper" : { "type" : "integer" } ,
"lower" : { "type" : "integer" } ,
"numeric" : { "type" : "integer" } ,
"nonalpha" : { "type" : "integer" } ,
"reset" : { "type" : "integer" } ,
"force2factor" : { "type" : "boolean" } ,
"skip2factor" : { "type" : "string" }
}
} ,
"AgentInviteCodes" : { "type" : "boolean" , "default" : false } ,
"AgentNoProxy" : { "type" : "boolean" , "default" : false } ,
"GeoLocation" : { "type" : "boolean" , "default" : false } ,
"novnc" : { "type" : "boolean" , "default" : true } ,
"mstsc" : {
"type" : "boolean" ,
"default" : false
} ,
"CustomUI" : { "type" : "object" } ,
"ConsentMessages" : {
"type" : "object" ,
"additionalProperties" : false ,
"properties" : {
"Title" : { "type" : "string" } ,
"Desktop" : { "type" : "string" } ,
"Terminal" : { "type" : "string" } ,
"Files" : { "type" : "string" }
}
} ,
"NotificationMessages" : {
"type" : "object" ,
"additionalProperties" : false ,
"properties" : {
"Title" : { "type" : "string" } ,
"Desktop" : { "type" : "string" } ,
"Terminal" : { "type" : "string" } ,
"Files" : { "type" : "string" }
}
} ,
"UserAllowedIP" : { "type" : "string" } ,
"UserBlockedIP" : { "type" : "string" } ,
"AgentAllowedIP" : { "type" : "string" } ,
"AgentBlockedIP" : { "type" : "string" } ,
"UserSessionIdleTimeout" : { "type" : "integer" } ,
"UserConsentFlags" : { "type" : "integer" } ,
"UrlSwitching" : { "type" : "boolean" } ,
"DesktopPrivacyBarText" : { "type" : "string" } ,
"Limits" : {
"type" : "object" ,
"properties" : {
"MaxDevices" : { "type" : "integer" } ,
"MaxUserAccounts" : { "type" : "integer" } ,
"MaxUserSessions" : { "type" : "integer" } ,
"MaxAgentSessions" : { "type" : "integer" } ,
"MaxSingleUserSessions" : { "type" : "integer" }
}
} ,
"AmtAcmActivation" : {
"type" : "object" ,
"properties" : {
"log" : { "type" : "string" } ,
"certs" : {
"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" ,
"additionalProperties" : false ,
"properties" : {
"callbackurl" : { "type" : "string" , "format" : "uri" } ,
"newAccounts" : { "type" : "boolean" } ,
"newAccountsUserGroups" : { "type" : "array" , "items" : [ { "type" : "string" } ] } ,
"clientid" : { "type" : "string" } ,
"clientsecret" : { "type" : "string" }
} ,
"required" : [ "clientid" , "clientsecret" ]
} ,
"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" ]
}
}
}
}
}
}
} ,
"letsencrypt" : {
"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." ,
"type" : "object" ,
"additionalProperties" : false ,
"properties" : {
"email" : { "type" : "string" , "format" : "email" } ,
"names" : { "type" : "string" } ,
2020-06-15 09:54:33 -04:00
"production" : { "type" : "boolean" , "default" : false }
2020-06-15 09:37:53 -04:00
} ,
2020-06-15 09:54:33 -04:00
"required" : [ "email" , "names" ]
2020-06-15 09:37:53 -04:00
} ,
"peers" : {
"title" : "Server peering" ,
"description" : "Setup peer server for load-balancing between many servers." ,
"type" : "object" ,
"minProperties" : 1 ,
"propertyNames" : { "pattern" : "^[A-Za-z_][A-Za-z0-9_]*$" } ,
"additionalProperties" : false ,
"properties" : {
"serverId" : { "type" : "string" } ,
"servers" : {
"type" : "object" ,
"additionalProperties" : {
"type" : "object" ,
"properties" : { "url" : { "type" : "string" , "format" : "uri" } } ,
"required" : [ "url" ]
}
}
} ,
"required" : [ "serverId" , "servers" ]
} ,
"smtp" : {
"title" : "Email server" ,
"description" : "Connects MeshCentral to a email server, allows MeshCentral to send email messages for 2FA or user notification" ,
"type" : "object" ,
"properties" : {
"host" : { "type" : "string" , "format" : "hostname" } ,
"port" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 } ,
"from" : { "type" : "string" , "format" : "email" } ,
"tls" : { "type" : "boolean" } ,
"tlscertcheck" : { "type" : "boolean" } ,
"tlsstrict" : { "type" : "boolean" }
} ,
"required" : [ "host" , "port" , "from" , "tls" ]
} ,
"sms" : {
"title" : "SMS provider" ,
"description" : "Connects MeshCentral to a SMS text messaging provider, allows MeshCentral to send SMS messages for 2FA or user notification" ,
"type" : "object" ,
"properties" : {
"provider" : { "type" : "string" , "enum" : [ "twilio" , "plivo" ] } ,
"id" : { "type" : "string" } ,
"sid" : { "type" : "string" } ,
"token" : { "type" : "string" } ,
"from" : { "type" : "string" }
} ,
"required" : [ "provider" , "token" , "from" ]
}
} ,
"required" : [ "settings" , "domains" ]
}