add descriptions to schema and fix sample-config-advanced.json

Signed-off-by: si458 <simonsmith5521@gmail.com>

si458 committed Mar 20, 2025 at 10:49 UTC 027e5b52c5d9760abb24abe3debd022ca342b3df
2 files changed +286 -142
meshcentral-config-schema.json
+259 -124
@@ -22,10 +22,12 @@
22 },
23 "mongoDb": {
24 "type": "string",
25 - "default": null
25 + "default": null,
26 + "description": "Add this section to connect MeshCentral to a MongoDB database instance. Set to the MongoDB connection string. For example 'mongodb://localhost:27017/meshcentral'."
27 },
28 "mongoDbName": {
28 - "type": "string"
29 + "type": "string",
30 + "description": "Name of the MongoDB database used."
31 },
32 "mongoDbChangeStream": {
33 "type": "boolean",
@@ -278,6 +280,7 @@
280 },
281 "dbExpire": {
282 "type": "object",
283 + "description": "Amount of time to keep various events in the database, in seconds. Below are the default values",
284 "properties": {
285 "events": {
286 "type": "integer",
@@ -572,14 +575,17 @@
575 "description": "Set to false to disable agent multicast scanning on the local network, this is already disabled in WAN mode."
576 },
577 "meshErrorLogPath": {
575 - "type": "string"
578 + "type": "string",
579 + "description": "Path to the MeshCentral error log file."
580 },
581 "npmPath": {
578 - "type": "string"
582 + "type": "string",
583 + "description": "Path to the npm executable."
584 },
585 "npmProxy": {
586 "type": "string",
582 - "format": "uri"
587 + "format": "uri",
588 + "description": "HTTP proxy to use when downloading npm packages."
589 },
590 "allowHighQualityDesktop": {
591 "type": "boolean",
@@ -680,7 +686,7 @@
686 "items": {
687 "type": "string"
688 },
683 - "description": "Users in this list are allowed to see and manage all device groups within their domain."
689 + "description": "Users in this list are allowed to see and manage all device groups within their domain. For example ['user//billybob','user//fred'] would allow billybob and fred to manage all device groups from all users in their domain."
690 },
691 "manageCrossDomain": {
692 "type": "array",
@@ -688,17 +694,19 @@
694 "items": {
695 "type": "string"
696 },
691 - "description": "Users in this list are allowed to manage all users in all domains."
697 + "description": "Users in this list are allowed to manage all users in all domains. For example ['user//billybob','user/subdomain/fred'] would allow billybob to manage all users in all domains."
698 },
699 "localDiscovery": {
700 "type": "object",
701 "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.",
702 "properties": {
703 "name": {
698 - "type": "string"
704 + "type": "string",
705 + "description": "The name of the server."
706 },
707 "info": {
701 - "type": "string"
708 + "type": "string",
709 + "description": "The information about the server."
710 },
711 "key": {
712 "type": "string",
@@ -745,17 +753,20 @@
753 },
754 "mpsPortBind": {
755 "type": "string",
748 - "default": null
756 + "default": null,
757 + "description": "When set, bind the MPS port to a specific network address."
758 },
759 "mpsAliasPort": {
760 "type": "integer",
761 "minimum": 1,
762 "maximum": 65535,
754 - "default": null
763 + "default": null,
764 + "description": "The actual MPS port as seen externally on the Internet, this setting is often used when a reverse-proxy is used."
765 },
766 "mpsAliasHost": {
767 "type": "string",
758 - "default": null
768 + "default": null,
769 + "description": "When set, the MPS port is ignored and the MPS is accessed using this DNS name."
770 },
771 "mpsTlsOffload": {
772 "type": "boolean",
@@ -777,7 +788,8 @@
788 },
789 "no2FactorAuth": {
790 "type": "boolean",
780 - "default": false
791 + "default": false,
792 + "description": "When set to true, disables two-factor authentication for all users."
793 },
794 "debug": {
795 "type": "string",
@@ -791,15 +803,18 @@
803 },
804 "syslog": {
805 "type": "string",
794 - "default": null
806 + "default": null,
807 + "description": "Send syslog events to a target hostname:port. For example: localhost:514"
808 },
809 "syslogauth": {
810 "type": "string",
798 - "default": null
811 + "default": null,
812 + "description": "Send syslog events to a target hostname:port with authentication. For example: user:password@localhost:514"
813 },
814 "syslogjson": {
815 "type": "string",
802 - "default": null
816 + "default": null,
817 + "description": "Send syslog events in JSON format to a target hostname:port. For example: localhost:514"
818 },
819 "syslogtcp": {
820 "type": "string",
@@ -1218,6 +1233,14 @@
1233 "default": null,
1234 "description": "If an agent attempts to connect to a unknown device group, automatically create a new device group and grant access to the specified user. Example: admin"
1235 },
1236 + "manageAllDeviceGroups": {
1237 + "type": "array",
1238 + "uniqueItems": true,
1239 + "items": {
1240 + "type": "string"
1241 + },
1242 + "description": "Users in this list are allowed to see and manage all device groups within their domain. For example ['billybob','fred'] would allow billybob and fred to manage all device groups from all users in their domain."
1243 + },
1244 "maxDeviceView": {
1245 "type": "integer",
1246 "default": null,
@@ -1239,10 +1262,12 @@
1262 "description": "If true, a Scroll To Top button in the devices tab."
1263 },
1264 "userQuota": {
1242 - "type": "integer"
1265 + "type": "integer",
1266 + "description": "This is the maximum amount of data in kilobytes that can be placed in the “My Files” tab for a user account."
1267 },
1268 "meshQuota": {
1245 - "type": "integer"
1269 + "type": "integer",
1270 + "description": "This is the maximum amount of data in kilobytes that can be placed in the “My Files” tab for a given mesh"
1271 },
1272 "loginKey": {
1273 "type": [
@@ -1296,7 +1321,8 @@
1321 "uniqueItems": true,
1322 "items": {
1323 "type": "string"
1299 - }
1324 + },
1325 + "description": "When set, new accounts will be added to these groups."
1326 },
1327 "userNameIsEmail": {
1328 "type": "boolean",
@@ -1308,14 +1334,19 @@
1334 "uniqueItems": true,
1335 "items": {
1336 "type": "string"
1311 - }
1337 + },
1338 + "description": "When set, new accounts will only be created for email addresses that match these domains."
1339 },
1340 "newAccountsRights": {
1314 - "type": "array",
1341 + "type": [
1342 + "array",
1343 + "string"
1344 + ],
1345 "uniqueItems": true,
1346 "items": {
1347 "type": "string"
1318 - }
1348 + },
1349 + "description": "When set, new accounts will be added to these siteadmin rights."
1350 },
1351 "allowedOrigin": {
1352 "type": [
@@ -1989,16 +2020,20 @@
2020 "description": "This section is user to customize user notifications when a remote desktop, terminal or file session is connected to a remote system.",
2021 "properties": {
2022 "Title": {
1992 - "type": "string"
2023 + "type": "string",
2024 + "description": "Title of the notification message."
2025 },
2026 "Desktop": {
1995 - "type": "string"
2027 + "type": "string",
2028 + "description": "Message to show when a remote desktop session is connected, you can use {0} to represent the realname and {1} to represent the username."
2029 },
2030 "Terminal": {
1998 - "type": "string"
2031 + "type": "string",
2032 + "description": "Message to show when a remote terminal session is connected, you can use {0} to represent the realname and {1} to represent the username."
2033 },
2034 "Files": {
2001 - "type": "string"
2035 + "type": "string",
2036 + "description": "Message to show when a remote file session is connected, you can use {0} to represent the realname and {1} to represent the username."
2037 }
2038 }
2039 },
@@ -2739,16 +2774,20 @@
2774 },
2775 "yubikey": {
2776 "type": "object",
2777 + "description": "Yubikey configuration",
2778 "properties": {
2779 "id": {
2744 - "type": "string"
2780 + "type": "string",
2781 + "description": "Yubikey client ID"
2782 },
2783 "secret": {
2747 - "type": "string"
2784 + "type": "string",
2785 + "description": "Yubikey secret key"
2786 },
2787 "proxy": {
2788 "type": "string",
2751 - "format": "uri"
2789 + "format": "uri",
2790 + "description": "Yubikey proxy URL"
2791 }
2792 },
2793 "required": [
@@ -2760,7 +2799,8 @@
2799 "type": "object",
2800 "additionalProperties": {
2801 "type": "string"
2763 - }
2802 + },
2803 + "description": "This is used to add custom HTTP headers to all responses. For example setting \"httpHeaders\": { \"X-Frame-Options\":\"DENY\" } will add the X-Frame-Options header to all responses."
2804 },
2805 "agentConfig": {
2806 "type": "array",
@@ -2797,6 +2837,7 @@
2837 },
2838 "sessionRecording": {
2839 "type": "object",
2840 + "description": "Values that affect the session recording feature",
2841 "properties": {
2842 "onlySelectedUsers": {
2843 "type": "boolean",
@@ -2931,13 +2972,16 @@
2972 "description": "This is used for OAuth2 authentication",
2973 "properties": {
2974 "clientId": {
2934 - "type": "string"
2975 + "type": "string",
2976 + "description": "OAuth2 client ID"
2977 },
2978 "clientSecret": {
2937 - "type": "string"
2979 + "type": "string",
2980 + "description": "OAuth2 client secret"
2981 },
2982 "refreshToken": {
2940 - "type": "string"
2983 + "type": "string",
2984 + "description": "OAuth2 refresh token"
2985 },
2986 "type": {
2987 "type": "string",
@@ -2952,10 +2996,12 @@
2996 ]
2997 },
2998 "tlscertcheck": {
2955 - "type": "boolean"
2999 + "type": "boolean",
3000 + "description": "When set to false, the SMTP server certificate is not checked."
3001 },
3002 "tlsstrict": {
2958 - "type": "boolean"
3003 + "type": "boolean",
3004 + "description": "When set to true, the SMTP server certificate must be valid and signed by a trusted CA."
3005 },
3006 "verifyemail": {
3007 "type": "boolean",
@@ -3007,30 +3053,48 @@
3053 },
3054 "authStrategies": {
3055 "type": "object",
3056 + "description": "Authentication strategies for MeshCentral",
3057 "properties": {
3058 "twitter": {
3059 "type": "object",
3060 + "description": "Twitter authentication",
3061 "properties": {
3062 "callbackurl": {
3063 "type": "string",
3016 - "format": "uri"
3064 + "format": "uri",
3065 + "description": "The URL that Twitter will redirect to after authentication."
3066 },
3067 "newAccounts": {
3068 "type": "boolean",
3020 - "default": false
3069 + "default": false,
3070 + "description": "When set, new accounts will be created for users that authenticate with Twitter."
3071 },
3072 "newAccountsUserGroups": {
3073 "type": "array",
3074 "uniqueItems": true,
3075 "items": {
3076 "type": "string"
3027 - }
3077 + },
3078 + "description": "When set, new accounts will be created for users that authenticate with Twitter and added to the specified groups."
3079 + },
3080 + "newAccountsRights": {
3081 + "type": [
3082 + "array",
3083 + "string"
3084 + ],
3085 + "uniqueItems": true,
3086 + "items": {
3087 + "type": "string"
3088 + },
3089 + "description": "When set, new accounts will be added to these siteadmin rights."
3090 },
3091 "clientid": {
3030 - "type": "string"
3092 + "type": "string",
3093 + "description": "Twitter client ID."
3094 },
3095 "clientsecret": {
3033 - "type": "string"
3096 + "type": "string",
3097 + "description": "Twitter client secret."
3098 },
3099 "logouturl": {
3100 "type": "string",
@@ -3045,27 +3109,33 @@
3109 },
3110 "google": {
3111 "type": "object",
3112 + "description": "Google authentication",
3113 "properties": {
3114 "callbackurl": {
3115 "type": "string",
3051 - "format": "uri"
3116 + "format": "uri",
3117 + "description": "The URL that Google will redirect to after authentication."
3118 },
3119 "newAccounts": {
3120 "type": "boolean",
3055 - "default": false
3121 + "default": false,
3122 + "description": "When set, new accounts will be created for users that authenticate with Google."
3123 },
3124 "newAccountsUserGroups": {
3125 "type": "array",
3126 "uniqueItems": true,
3127 "items": {
3128 "type": "string"
3062 - }
3129 + },
3130 + "description": "When set, new accounts will be created for users that authenticate with Google and added to the specified groups."
3131 },
3132 "clientid": {
3065 - "type": "string"
3133 + "type": "string",
3134 + "description": "Google client ID."
3135 },
3136 "clientsecret": {
3068 - "type": "string"
3137 + "type": "string",
3138 + "description": "Google client secret."
3139 },
3140 "logouturl": {
3141 "type": "string",
@@ -3080,27 +3150,33 @@
3150 },
3151 "github": {
3152 "type": "object",
3153 + "description": "GitHub authentication",
3154 "properties": {
3155 "callbackurl": {
3156 "type": "string",
3086 - "format": "uri"
3157 + "format": "uri",
3158 + "description": "The URL that GitHub will redirect to after authentication."
3159 },
3160 "newAccounts": {
3161 "type": "boolean",
3090 - "default": false
3162 + "default": false,
3163 + "description": "When set, new accounts will be created for users that authenticate with GitHub."
3164 },
3165 "newAccountsUserGroups": {
3166 "type": "array",
3167 "uniqueItems": true,
3168 + "description": "When set, new accounts will be created for users that authenticate with GitHub and added to the specified groups.",
3169 "items": {
3170 "type": "string"
3171 }
3172 },
3173 "clientid": {
3100 - "type": "string"
3174 + "type": "string",
3175 + "description": "GitHub client ID."
3176 },
3177 "clientsecret": {
3103 - "type": "string"
3178 + "type": "string",
3179 + "description": "GitHub client secret."
3180 },
3181 "logouturl": {
3182 "type": "string",
@@ -3115,30 +3191,37 @@
3191 },
3192 "azure": {
3193 "type": "object",
3194 + "description": "Azure authentication",
3195 "properties": {
3196 "callbackurl": {
3197 "type": "string",
3121 - "format": "uri"
3198 + "format": "uri",
3199 + "description": "The URL that Azure will redirect to after authentication."
3200 },
3201 "newAccounts": {
3202 "type": "boolean",
3125 - "default": false
3203 + "default": false,
3204 + "description": "When set, new accounts will be created for users that authenticate with Azure."
3205 },
3206 "newAccountsUserGroups": {
3207 "type": "array",
3208 + "description": "When set, new accounts will be created for users that authenticate with Azure and added to the specified groups.",
3209 "uniqueItems": true,
3210 "items": {
3211 "type": "string"
3212 }
3213 },
3214 "clientid": {
3135 - "type": "string"
3215 + "type": "string",
3216 + "description": "Azure client ID."
3217 },
3218 "clientsecret": {
3138 - "type": "string"
3219 + "type": "string",
3220 + "description": "Azure client secret."
3221 },
3222 "tenantid": {
3141 - "type": "string"
3223 + "type": "string",
3224 + "description": "Azure tenant ID."
3225 },
3226 "logouturl": {
3227 "type": "string",
@@ -3154,31 +3237,38 @@
3237 },
3238 "jumpcloud": {
3239 "type": "object",
3240 + "description": "JumpCloud authentication",
3241 "properties": {
3242 "callbackurl": {
3243 "type": "string",
3160 - "format": "uri"
3244 + "format": "uri",
3245 + "description": "The URL that JumpCloud will redirect to after authentication."
3246 },
3247 "newAccounts": {
3248 "type": "boolean",
3164 - "default": false
3249 + "default": false,
3250 + "description": "When set, new accounts will be created for users that authenticate with JumpCloud."
3251 },
3252 "newAccountsUserGroups": {
3253 "type": "array",
3254 + "description": "When set, new accounts will be created for users that authenticate with JumpCloud and added to the specified groups.",
3255 "uniqueItems": true,
3256 "items": {
3257 "type": "string"
3258 }
3259 },
3260 "entityid": {
3174 - "type": "string"
3261 + "type": "string",
3262 + "description": "JumpCloud entity ID."
3263 },
3264 "idpurl": {
3265 "type": "string",
3178 - "format": "uri"
3266 + "format": "uri",
3267 + "description": "JumpCloud IDP URL."
3268 },
3269 "cert": {
3181 - "type": "string"
3270 + "type": "string",
3271 + "description": "JumpCloud certificate."
3272 },
3273 "logouturl": {
3274 "type": "string",
@@ -3194,41 +3284,43 @@
3284 },
3285 "saml": {
3286 "type": "object",
3287 + "description": "SAML authentication",
3288 "properties": {
3289 "callbackurl": {
3290 "type": "string",
3200 - "format": "uri"
3291 + "format": "uri",
3292 + "description": "The URL that SAML will redirect to after authentication."
3293 },
3294 "disableRequestedAuthnContext": {
3203 - "type": "boolean"
3295 + "type": "boolean",
3296 + "description": "When set, the requestedAuthnContext will be disabled.",
3297 + "default": false
3298 },
3299 "newAccounts": {
3300 "type": "boolean",
3207 - "default": false
3301 + "default": false,
3302 + "description": "When set, new accounts will be created for users that authenticate with SAML."
3303 },
3304 "newAccountsUserGroups": {
3305 "type": "array",
3306 "uniqueItems": true,
3212 - "items": {
3213 - "type": "string"
3214 - }
3215 - },
3216 - "newAccountsRights": {
3217 - "type": "array",
3218 - "uniqueItems": true,
3307 + "description": "When set, new accounts will be created for users that authenticate with SAML and added to the specified groups.",
3308 "items": {
3309 "type": "string"
3310 }
3311 },
3312 "entityid": {
3224 - "type": "string"
3313 + "type": "string",
3314 + "description": "SAML entity ID."
3315 },
3316 "idpurl": {
3317 "type": "string",
3228 - "format": "uri"
3318 + "format": "uri",
3319 + "description": "SAML IDP URL."
3320 },
3321 "cert": {
3231 - "type": "string"
3322 + "type": "string",
3323 + "description": "SAML certificate."
3324 },
3325 "logouturl": {
3326 "type": "string",
@@ -3288,16 +3380,6 @@
3380 "type": "string"
3381 }
3382 },
3291 - "newAccountsRights": {
3292 - "type": [
3293 - "array",
3294 - "string"
3295 - ],
3296 - "uniqueItems": true,
3297 - "items": {
3298 - "type": "string"
3299 - }
3300 - },
3383 "clientid": {
3384 "type": "string",
3385 "depreciated": true,
@@ -3495,27 +3577,33 @@
3577 },
3578 "authorization_endpoint": {
3579 "type": "string",
3498 - "format": "uri"
3580 + "format": "uri",
3581 + "description": "URI to direct users to when logging in."
3582 },
3583 "token_endpoint": {
3584 "type": "string",
3502 - "format": "uri"
3585 + "format": "uri",
3586 + "description": "URI to direct users to when requesting tokens."
3587 },
3588 "jwks_uri": {
3589 "type": "string",
3506 - "format": "uri"
3590 + "format": "uri",
3591 + "description": "URI to retrieve the JSON Web Key Set."
3592 },
3593 "userinfo_endpoint": {
3594 "type": "string",
3510 - "format": "uri"
3595 + "format": "uri",
3596 + "description": "URI to retrieve user information."
3597 },
3598 "revocation_endpoint": {
3599 "type": "string",
3514 - "format": "uri"
3600 + "format": "uri",
3601 + "description": "URI to direct users to when revoking tokens."
3602 },
3603 "introspection_endpoint": {
3604 "type": "string",
3518 - "format": "uri"
3605 + "format": "uri",
3606 + "description": "URI to direct users to when introspecting tokens."
3607 },
3608 "end_session_endpoint": {
3609 "type": "string",
@@ -3524,47 +3612,60 @@
3612 },
3613 "registration_endpoint": {
3614 "type": "string",
3527 - "format": "uri"
3615 + "format": "uri",
3616 + "description": "URI to direct users to when registering a new client."
3617 },
3618 "token_endpoint_auth_methods_supported": {
3530 - "type": "string"
3619 + "type": "string",
3620 + "description": "Supported token endpoint authentication methods."
3621 },
3622 "token_endpoint_auth_signing_alg_values_supported": {
3533 - "type": "string"
3623 + "type": "string",
3624 + "description": "Supported token endpoint authentication signing algorithms."
3625 },
3626 "introspection_endpoint_auth_methods_supported": {
3536 - "type": "string"
3627 + "type": "string",
3628 + "description": "Supported introspection endpoint authentication methods."
3629 },
3630 "introspection_endpoint_auth_signing_alg_values_supported": {
3539 - "type": "string"
3631 + "type": "string",
3632 + "description": "Supported introspection endpoint authentication signing algorithms."
3633 },
3634 "revocation_endpoint_auth_methods_supported": {
3542 - "type": "string"
3635 + "type": "string",
3636 + "description": "Supported revocation endpoint authentication methods."
3637 },
3638 "revocation_endpoint_auth_signing_alg_values_supported": {
3545 - "type": "string"
3639 + "type": "string",
3640 + "description": "Supported revocation endpoint authentication signing algorithms."
3641 },
3642 "request_object_signing_alg_values_supported": {
3548 - "type": "string"
3643 + "type": "string",
3644 + "description": "Supported request object signing algorithms."
3645 },
3646 "mtls_endpoint_aliases": {
3647 "type": "object",
3648 + "description": "MTLS endpoint aliases.",
3649 "properties": {
3650 "token_endpoint": {
3651 "type": "string",
3555 - "format": "uri"
3652 + "format": "uri",
3653 + "description": "URI to direct users to when requesting tokens."
3654 },
3655 "userinfo_endpoint": {
3656 "type": "string",
3559 - "format": "uri"
3657 + "format": "uri",
3658 + "description": "URI to retrieve user information."
3659 },
3660 "revocation_endpoint": {
3661 "type": "string",
3563 - "format": "uri"
3662 + "format": "uri",
3663 + "description": "URI to direct users to when revoking tokens."
3664 },
3665 "introspection_endpoint": {
3666 "type": "string",
3567 - "format": "uri"
3667 + "format": "uri",
3668 + "description": "URI to direct users to when introspecting tokens."
3669 }
3670 }
3671 }
@@ -3592,20 +3693,25 @@
3693 },
3694 "claims": {
3695 "type": "object",
3696 + "description": "Custom claims to use.",
3697 "properties": {
3698 "email": {
3597 - "type": "string"
3699 + "type": "string",
3700 + "description": "Custom claim to use for email."
3701 },
3702 "name": {
3600 - "type": "string"
3703 + "type": "string",
3704 + "description": "Custom claim to use for name."
3705 },
3706 "uuid": {
3603 - "type": "string"
3707 + "type": "string",
3708 + "description": "Custom claim to use for uuid."
3709 }
3710 }
3711 },
3712 "preset": {
3713 "type": "string",
3714 + "description": "Preset to use for OIDC configuration",
3715 "enum": [
3716 "azure",
3717 "google"
@@ -3623,6 +3729,7 @@
3729 },
3730 "groups": {
3731 "type": "object",
3732 + "description": "Group settings for OIDC",
3733 "properties": {
3734 "recursive": {
3735 "type": "boolean",
@@ -3701,7 +3808,8 @@
3808 "description": "Email address of the administrator of this server. Make sure this is a valid email address otherwise the certificate request will fail."
3809 },
3810 "names": {
3704 - "type": "string"
3811 + "type": "string",
3812 + "description": "Comma separated list of DNS names that will be included in the certificate. The first name will be the primary name."
3813 },
3814 "skipChallengeVerification": {
3815 "type": "boolean",
@@ -3754,16 +3862,19 @@
3862 },
3863 "properties": {
3864 "serverId": {
3757 - "type": "string"
3865 + "type": "string",
3866 + "description": "Unique server identifier, must be unique across all servers."
3867 },
3868 "servers": {
3869 "type": "object",
3870 + "description": "List of peer servers.",
3871 "additionalProperties": {
3872 "type": "object",
3873 "properties": {
3874 "url": {
3875 "type": "string",
3766 - "format": "uri"
3876 + "format": "uri",
3877 + "description": "URL of the peer server."
3878 }
3879 },
3880 "required": [
@@ -3847,13 +3958,16 @@
3958 "description": "This is used for OAuth2 authentication",
3959 "properties": {
3960 "clientId": {
3850 - "type": "string"
3961 + "type": "string",
3962 + "description": "OAuth2 client ID"
3963 },
3964 "clientSecret": {
3853 - "type": "string"
3965 + "type": "string",
3966 + "description": "OAuth2 client secret"
3967 },
3968 "refreshToken": {
3856 - "type": "string"
3969 + "type": "string",
3970 + "description": "OAuth2 refresh token"
3971 },
3972 "type": {
3973 "type": "string",
@@ -3868,10 +3982,14 @@
3982 ]
3983 },
3984 "tlscertcheck": {
3871 - "type": "boolean"
3985 + "type": "boolean",
3986 + "default": true,
3987 + "description": "When set to false, the SMTP server certificate is not checked."
3988 },
3989 "tlsstrict": {
3874 - "type": "boolean"
3990 + "type": "boolean",
3991 + "default": false,
3992 + "description": "When set to true, the SMTP server certificate must be valid and signed by a trusted CA."
3993 },
3994 "verifyemail": {
3995 "type": "boolean",
@@ -3930,18 +4048,22 @@
4048 "properties": {
4049 "provider": {
4050 "type": "string",
4051 + "description": "The SMS provider to use",
4052 "enum": [
4053 "twilio"
4054 ]
4055 },
4056 "sid": {
3938 - "type": "string"
4057 + "type": "string",
4058 + "description": "Twilio SID"
4059 },
4060 "auth": {
3941 - "type": "string"
4061 + "type": "string",
4062 + "description": "Twilio Auth Token"
4063 },
4064 "from": {
3944 - "type": "string"
4065 + "type": "string",
4066 + "description": "Twilio phone number to send from"
4067 }
4068 },
4069 "required": [
@@ -3955,19 +4077,23 @@
4077 "type": "object",
4078 "properties": {
4079 "provider": {
4080 + "description": "The SMS provider to use",
4081 "type": "string",
4082 "enum": [
4083 "plivo"
4084 ]
4085 },
4086 "id": {
3964 - "type": "string"
4087 + "type": "string",
4088 + "description": "Plivo ID"
4089 },
4090 "token": {
3967 - "type": "string"
4091 + "type": "string",
4092 + "description": "Plivo Auth Token"
4093 },
4094 "from": {
3970 - "type": "string"
4095 + "type": "string",
4096 + "description": "Plivo phone number to send from"
4097 }
4098 },
4099 "required": [
@@ -3982,15 +4108,18 @@
4108 "properties": {
4109 "provider": {
4110 "type": "string",
4111 + "description": "The SMS provider to use",
4112 "enum": [
4113 "telnyx"
4114 ]
4115 },
4116 "apikey": {
3990 - "type": "string"
4117 + "type": "string",
4118 + "description": "Telnyx API Key"
4119 },
4120 "from": {
3993 - "type": "string"
4121 + "type": "string",
4122 + "description": "Telnyx phone number to send from"
4123 }
4124 },
4125 "required": [
@@ -4004,6 +4133,7 @@
4133 "properties": {
4134 "provider": {
4135 "type": "string",
4136 + "description": "The SMS provider to use",
4137 "enum": [
4138 "url"
4139 ]
@@ -4029,13 +4159,16 @@
4159 "description": "Configure Telegram messaging system",
4160 "properties": {
4161 "apiid": {
4032 - "type": "number"
4162 + "type": "number",
4163 + "description": "Telegram API ID"
4164 },
4165 "apihash": {
4035 - "type": "string"
4166 + "type": "string",
4167 + "description": "Telegram API Hash"
4168 },
4169 "session": {
4038 - "type": "string"
4170 + "type": "string",
4171 + "description": "Path to the Telegram session file"
4172 },
4173 "useWSS": {
4174 "type": "boolean",
@@ -4078,10 +4211,12 @@
4211 "description": "Login credentials for the XMPP server.",
4212 "properties": {
4213 "username": {
4081 - "type": "string"
4214 + "type": "string",
4215 + "description": "XMPP username."
4216 },
4217 "password": {
4084 - "type": "string"
4218 + "type": "string",
4219 + "description": "XMPP password."
4220 }
4221 }
4222 }
sample-config-advanced.json
+27 -18
@@ -1,8 +1,8 @@
1 {
2 "$schema": "https://raw.githubusercontent.com/Ylianst/MeshCentral/master/meshcentral-config-schema.json",
3 - "__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.",
3 + "__comment__": "This is a sample advanced 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.",
4 "settings": {
5 - "_cert": "myserver.mydomain.com",
5 + "cert": "myserver.mydomain.com",
6 "_SQLite3": true,
7 "_acebase": { "_sponsor": true },
8 "_mongoDb": "mongodb://127.0.0.1:27017",
@@ -119,15 +119,15 @@
119 },
120 "_autoBackup": {
121 "_mongoDumpPath": "C:\\Program Files\\MongoDB\\Server\\4.2\\bin\\mongodump.exe",
122 - "backupIntervalHours": 24,
123 - "keepLastDaysBackup": 10,
124 - "zipPassword": "MyReallySecretPassword3",
122 + "_backupIntervalHours": 24,
123 + "_keepLastDaysBackup": 10,
124 + "_zipPassword": "MyReallySecretPassword3",
125 "_backupPath": "C:\\backups",
126 "_googleDrive": {
127 "folderName": "MeshCentral-Backups",
128 "maxFiles": 10
129 },
130 - "webdav": {
130 + "_webdav": {
131 "url": "https://server/remote.php/dav/files/xxxxx@server.com/",
132 "username": "user",
133 "password": "pass",
@@ -160,7 +160,7 @@
160 "count": 10,
161 "coolofftime": 10
162 },
163 - "watchDog": {
163 + "_watchDog": {
164 "interval": 100,
165 "timeout": 400
166 },
@@ -179,16 +179,16 @@
179 },
180 "_domaindefaults": {
181 "__comment__": "Any settings in this section is used as default setting for all domains",
182 - "title": "MyDefaultTitle",
183 - "footer": "Default page footer",
184 - "newAccounts": false
182 + "_title": "MyDefaultTitle",
183 + "_footer": "Default page footer",
184 + "_newAccounts": false
185 },
186 "domains": {
187 "": {
188 "_siteStyle": 2,
189 "_showModernUIToggle": true,
190 - "title": "MyServer",
191 - "title2": "Servername",
190 + "_title": "MyServer",
191 + "_title2": "Servername",
192 "_titlePicture": "title-sample.png",
193 "_loginPicture": "title-sample.png",
194 "_pwaLogo": "title-sample.png",
@@ -203,12 +203,13 @@
203 "_loginKey": [ "abc", "123" ],
204 "_agentKey": [ "abc", "123" ],
205 "_ipkvm": false,
206 - "minify": true,
206 + "_minify": true,
207 "_hidePowerTimeline": true,
208 "_showNotesPanel": true,
209 "_userSessionsSort": "Username",
210 "_newAccounts": true,
211 "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
212 + "_manageAllDeviceGroups": [ "admin" ],
213 "_userNameIsEmail": true,
214 "_newAccountEmailDomains": [ "sample.com" ],
215 "_newAccountsRights": [ "nonewgroups", "notools" ],
@@ -263,7 +264,7 @@
264 ]
265 },
266 "_assistantTypeAgentInvite": 2,
266 - "PreconfiguredScripts": [
267 + "_PreconfiguredScripts": [
268 {
269 "name": "Run NotePad as user",
270 "file": "scripts/notepad.bat",
@@ -288,7 +289,7 @@
289 "type": "agent"
290 }
291 ],
291 - "PreconfiguredRemoteInput": [
292 + "_PreconfiguredRemoteInput": [
293 {
294 "name": "CompanyUrl",
295 "value": "https://help.mycompany.com/"
@@ -302,7 +303,7 @@
303 "value": "Default welcome text"
304 }
305 ],
305 - "myServer": {
306 + "_myServer": {
307 "Backup": false,
308 "Restore": false,
309 "Upgrade": false,
@@ -388,7 +389,7 @@
389 "_userSessionIdleTimeout": 30,
390 "___logoutOnIdleSessionTimeout": "Determines whether MeshCentral should logout after the session idle timeout elapsed or should just disconnect remote desktop, terminal and files.",
391 "_logoutOnIdleSessionTimeout": false,
391 - "userConsentFlags": {
392 + "_userConsentFlags": {
393 "desktopnotify": true,
394 "terminalnotify": true,
395 "filenotify": true,
@@ -493,6 +494,7 @@
494 "_callbackurl": "https://server/auth-twitter-callback",
495 "newAccounts": true,
496 "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
497 + "_newAccountsRights": [ "nonewgroups", "notools" ],
498 "clientid": "xxxxxxxxxxxxxxxxxxxxxxx",
499 "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
500 },
@@ -500,6 +502,7 @@
502 "_callbackurl": "https://server/auth-google-callback",
503 "newAccounts": true,
504 "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
505 + "_newAccountsRights": [ "nonewgroups", "notools" ],
506 "clientid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
507 "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxx"
508 },
@@ -507,6 +510,7 @@
510 "_callbackurl": "https://server/auth-github-callback",
511 "newAccounts": true,
512 "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
513 + "_newAccountsRights": [ "nonewgroups", "notools" ],
514 "clientid": "xxxxxxxxxxxxxxxxxxxxxxx",
515 "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
516 },
@@ -514,6 +518,7 @@
518 "_callbackurl": "https://server/auth-azure-callback",
519 "newAccounts": true,
520 "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
521 + "_newAccountsRights": [ "nonewgroups", "notools" ],
522 "clientid": "00000000-0000-0000-0000-000000000000",
523 "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
524 "tenantid": "00000000-0000-0000-0000-000000000000"
@@ -522,6 +527,7 @@
527 "_callbackurl": "https://server/auth-jumpcloud-callback",
528 "newAccounts": true,
529 "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
530 + "_newAccountsRights": [ "nonewgroups", "notools" ],
531 "entityid": "meshcentral",
532 "idpurl": "https://sso.jumpcloud.com/saml2/saml2",
533 "cert": "jumpcloud-saml.pem"
@@ -553,7 +559,10 @@
559 "filter": [ "groupB", "groupC" ]
560 }
561 },
556 - "newAccounts": true
562 + "newAccounts": true,
563 + "_newAccountsRights": [ "nonewgroups", "notools" ],
564 + "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ]
565 +
566 }
567 }
568 },