Files
smth/meshcentral-config-schema.ru.json
T

4652 lines
251 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"id": "https://raw.githubusercontent.com/Ylianst/MeshCentral/master/meshcentral-config-schema.json",
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "Схема файла конфигурации MeshCentral",
"type": "object",
"required": [
"settings",
"domains"
],
"properties": {
"settings": {
"type": "object",
"properties": {
"cert": {
"type": "string",
"description": "Укажите здесь основное DNS-имя этого сервера MeshCentral."
},
"keepCerts": {
"type": "boolean",
"default": false,
"description": "Принудительно заставляет MeshCentral использовать сертификаты HTTPS и MPS, даже если имя не совпадает с ожидаемым DNS-значением."
},
"mongoDb": {
"type": "string",
"default": null,
"description": "Добавьте этот раздел для подключения MeshCentral к экземпляру базы данных MongoDB. Значение должно быть строкой подключения MongoDB. Например: 'mongodb://localhost:27017/meshcentral'."
},
"mongoDbName": {
"type": "string",
"description": "Имя используемой базы данных MongoDB."
},
"mongoDbChangeStream": {
"type": "boolean",
"default": false
},
"mongoDbBulkOperations": {
"type": "boolean",
"default": false
},
"mariaDB": {
"type": "object",
"description": "Добавьте этот раздел для подключения MeshCentral к экземпляру базы данных MariaDB.",
"properties": {
"host": {
"type": "string",
"description": "Имя хоста MariaDB"
},
"user": {
"type": "string",
"description": "Имя пользователя MariaDB"
},
"port": {
"type": "number",
"description": "Номер порта MariaDB"
},
"password": {
"type": "string",
"description": "Пароль MariaDB"
},
"connectionLimit": {
"type": "number",
"description": "Лимит подключений MariaDB"
},
"database": {
"type": "string",
"default": "meshcentral",
"description": "Имя используемой базы данных MariaDB"
},
"awsrds": {
"type": "boolean",
"default": false,
"description": "Установите true, чтобы устранить проблему с правами LOCK TABLE в AWS RDS."
},
"ssl": {
"type": "object",
"description": "Параметры SSL. Установите true (логическое значение) для использования параметров по умолчанию.",
"properties": {
"caCertPath": {
"type": "string",
"description": "Абсолютный путь к сертификату CA. Требуется для самоподписанных сертификатов"
},
"clientCertPath": {
"type": "string",
"description": "Абсолютный путь к клиентскому сертификату. Требуется для двусторонней SSL-аутентификации"
},
"clientKeyPath": {
"type": "string",
"description": "Абсолютный путь к клиентскому ключу. Требуется для двусторонней SSL-аутентификации"
},
"dontCheckServerIdentity": {
"type": "boolean",
"description": "Установите true, чтобы не проверять имя хоста сервера при верификации"
}
}
}
}
},
"sqlite3": {
"type": [
"boolean",
"string",
"object"
],
"default": false,
"description": "Установите логическое значение true, чтобы использовать SQLite3 как локальную базу данных MeshCentral с именем файла БД по умолчанию 'meshcentral', либо укажите строку с другим именем файла БД. Расширение .sqlite добавляется автоматически",
"properties": {
"name": {
"type": "string",
"default": "meshcentral",
"description": "Имя файла базы данных. '.sqlite' добавляется автоматически"
},
"journalMode": {
"type": "string",
"default": "delete",
"description": "DELETE, TRUNCATE, PERSIST, MEMORY, WAL. NONE не допускается. См.: https://www.sqlite.org/pragma.html#pragma_journal_mode"
},
"journalSize": {
"type": "integer",
"default": 4096000,
"description": "Максимальный размер файла журнала в байтах. При необходимости может увеличиваться, но затем будет уменьшен до этого размера. -1 означает неограниченный рост. См.: https://www.sqlite.org/pragma.html#pragma_journal_size_limit"
},
"autoVacuum": {
"type": "string",
"default": "incremental",
"description": "none, full, incremental. Удаляет неиспользуемые страницы и уменьшает файл базы данных во время обслуживания. См.: https://www.sqlite.org/pragma.html#pragma_auto_vacuum"
},
"incrementalVacuum": {
"type": "integer",
"default": 100,
"description": "Максимальное количество страниц, освобождаемых во время обслуживания. Размер страницы по умолчанию — 4 КБ, поэтому по умолчанию освобождается до 400 КБ из файла базы данных. См.: https://www.sqlite.org/pragma.html#pragma_incremental_vacuum"
},
"startupVacuum": {
"type": "boolean",
"default": false,
"description": "Выполнить полный VACUUM при запуске. Уменьшает файл БД и оптимизирует его. Для большой базы данных это может занять время и временно потребовать до двойного объёма базы на диске. См.: https://www.sqlite.org/lang_vacuum.html"
}
}
},
"mySQL": {
"type": "object",
"description": "Добавьте этот раздел для подключения MeshCentral к экземпляру базы данных MySQL.",
"properties": {
"host": {
"type": "string",
"description": "Имя хоста MySQL"
},
"port": {
"type": "number",
"description": "Номер порта MySQL"
},
"user": {
"type": "string",
"description": "Имя пользователя MySQL"
},
"password": {
"type": "string",
"description": "Пароль MySQL"
},
"database": {
"type": "string",
"default": "meshcentral",
"description": "Имя используемой базы данных MySQL"
},
"awsrds": {
"type": "boolean",
"default": false,
"description": "Установите true, чтобы устранить проблему с правами LOCK TABLE в AWS RDS."
},
"ssl": {
"type": "object",
"description": "Параметры SSL. Установите true (логическое значение) для использования параметров по умолчанию.",
"properties": {
"caCertPath": {
"type": "string",
"description": "Абсолютный путь к сертификату CA. Требуется для самоподписанных сертификатов"
},
"clientCertPath": {
"type": "string",
"description": "Абсолютный путь к клиентскому сертификату. Требуется для двусторонней SSL-аутентификации"
},
"clientKeyPath": {
"type": "string",
"description": "Абсолютный путь к клиентскому ключу. Требуется для двусторонней SSL-аутентификации"
},
"dontCheckServerIdentity": {
"type": "boolean",
"description": "Установите true, чтобы не проверять имя хоста сервера при верификации"
}
}
}
}
},
"postgres": {
"type": "object",
"description": "Добавьте этот раздел для подключения MeshCentral к экземпляру базы данных PostgreSQL.",
"properties": {
"host": {
"type": "string",
"description": "Имя хоста PostgreSQL"
},
"user": {
"type": "string",
"description": "Имя пользователя PostgreSQL"
},
"port": {
"type": "number",
"description": "Номер порта PostgreSQL"
},
"password": {
"type": "string",
"description": "Пароль PostgreSQL"
},
"database": {
"type": "string",
"default": "meshcentral",
"description": "Имя используемой базы данных PostgreSQL"
},
"createdatabase": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы пропустить проверку существования базы данных и её создание. Полезно, если подключённый пользователь не имеет права создавать базы данных."
}
}
},
"acebase": {
"type": "object",
"description": "Добавьте этот раздел, чтобы включить поддержку базы данных AceBase; это локальная система баз данных, во многом похожая на NeDB.",
"properties": {
"sponsor": {
"type": "boolean",
"default": false,
"description": "Установите true, чтобы убрать баннер AceBase при запуске."
}
}
},
"WANonly": {
"type": "boolean",
"default": false,
"description": "Если включено, активируются только WAN-функции MeshCentral, а агенты будут подключаться к серверу через известное DNS-имя."
},
"LANonly": {
"type": "boolean",
"default": false,
"description": "Если включено, активируются только LAN-функции MeshCentral, а агенты будут находить сервер с помощью multicast-пакетов LAN."
},
"maintenanceMode": {
"type": "boolean",
"default": false,
"description": "Если включено, сервер находится в режиме обслуживания; вход разрешён только администраторам. Для изменения используйте команду maintenance в консоли сервера."
},
"certificatePrivateKeyPassword": {
"type": "array",
"default": null,
"description": "Список паролей, используемых для расшифровки файлов PKCK#8 .key, находящихся в папке meshcentral-data."
},
"sessionTime": {
"type": "integer",
"default": 60,
"description": "Время действия cookie сеанса в минутах. Изменение влияет на частоту автоматического обновления сеанса."
},
"sessionKey": {
"type": "string",
"default": null,
"description": "Пароль для шифрования cookie веб-сеансов MeshCentral. Если null, при каждом запуске сервера генерируется случайный пароль."
},
"sessionSameSite": {
"type": "string",
"default": "lax",
"enum": [
"strict",
"lax",
"none"
]
},
"dbEncryptKey": {
"type": "string",
"default": null,
"description": "Это значение действительно только при использовании NeDB; задаёт ключ шифрования и расшифровки базы данных."
},
"dbRecordsEncryptKey": {
"type": "string",
"default": null,
"description": "Для любой базы данных: шифровать и расшифровывать чувствительную информацию в записях с помощью этого секретного ключа."
},
"dbRecordsDecryptKey": {
"type": "string",
"default": null,
"description": "Для любой базы данных: расшифровывать чувствительную информацию в записях с помощью этого секретного ключа; не используйте ключ для шифрования записей."
},
"dbExpire": {
"type": "object",
"description": "Время хранения различных событий в базе данных, в секундах. Ниже указаны значения по умолчанию",
"properties": {
"events": {
"type": "integer",
"default": 1728000,
"description": "Время в секундах, в течение которого события хранятся в базе данных."
},
"powerevents": {
"type": "integer",
"default": 864000,
"description": "Время в секундах, в течение которого события питания устройств хранятся в базе данных."
},
"statsevents": {
"type": "integer",
"default": 2592000,
"description": "Время в секундах, в течение которого статистика сервера хранится в базе данных."
}
}
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 443,
"description": "Порт основного HTTPS-сервера."
},
"portBind": {
"type": "string",
"description": "Если задано, привязывает основной HTTPS-порт к определённому сетевому адресу."
},
"aliasPort": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": null,
"description": "Фактический основной порт, видимый извне в Интернете; этот параметр часто используется при обратном прокси."
},
"redirPort": {
"type": "integer",
"minimum": 0,
"maximum": 65535,
"default": 80,
"description": "Это порт HTTP-веб-сервера, который в основном перенаправляет пользователей на HTTPS-порт, но также предоставляет некоторые другие сервисы; значение 0 отключает этот порт."
},
"redirPortBind": {
"type": "string",
"description": "Если задано, привязывает порт HTTP-перенаправления к определённому сетевому адресу."
},
"redirAliasPort": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "Фактический порт перенаправления, видимый извне в Интернете; этот параметр часто используется при обратном прокси."
},
"relayPort": {
"type": "integer",
"minimum": 0,
"maximum": 65535,
"default": 0,
"description": "Если задано, веб-сервер ретранслятора привязывается к этому порту и позволяет пользователю получать доступ к удалённым веб-сайтам."
},
"relayAliasPort": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": null,
"description": "Фактический порт ретранслятора, видимый извне в Интернете; этот параметр часто используется при обратном прокси."
},
"relayDNS": {
"type": "string",
"default": null,
"description": "Если задано, значение relayPort игнорируется. Укажите DNS-имя, указывающее на этот сервер. Когда доступ к серверу выполняется по этому DNS-имени, основной порт веб-сервера используется как порт веб-ретранслятора."
},
"agentPort": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "Если задано, включает новый HTTPS-порт сервера, который принимает только подключения агентов."
},
"agentPortBind": {
"type": "string",
"description": "Если задано, привязывает порт агента к определённому сетевому интерфейсу."
},
"agentAliasPort": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "Если задано, указывает фактический публично видимый порт только для агентов. Если не задано, используется значение AgentPort."
},
"agentAliasDNS": {
"type": "string",
"format": "hostname",
"description": "Если задано, указывает DNS-имя, используемое агентами для подключения к порту только для агентов."
},
"agentPortTls": {
"type": "boolean",
"default": true,
"description": "Указывает, должен ли порт только для агентов выполнять TLS. Следует установить false, если TLS выполняется перед этим сервером."
},
"agentLogDump": {
"type": "boolean",
"default": false,
"description": "Автоматически загружает все журналы ошибок агентов в meshcentral-data/agenterrorlogs.txt."
},
"agentCoreDump": {
"type": "boolean",
"default": false,
"description": "Автоматически активирует и передаёт на сервер любые файлы аварийных дампов агента в meshcentral-data/coredumps."
},
"agentCoreDumpUsers": {
"type": "array",
"description": "Список пользователей без прав администратора, имеющих доступ к аварийным дампам mesh-агента."
},
"agentSignLock": {
"type": "boolean",
"default": false,
"description": "При подписании кода агента с помощью Authenticode блокирует агент так, чтобы он мог подключаться только к этому серверу. (Функция тестируется; в будущем значение по умолчанию изменится на true)."
},
"agentTimeStampServer": {
"type": [
"boolean",
"string"
],
"default": "http://timestamp.comodoca.com/authenticode",
"description": "Сервер меток времени, используемый при подписании кода исполняемых файлов Windows. Если задано false, метки времени к исполняемым файлам не добавляются."
},
"agentTimeStampProxy": {
"type": [
"boolean",
"string"
],
"description": "HTTP-прокси для обращения к серверу меток времени; если false, прокси не используется. По умолчанию используется значение npmproxy."
},
"lockAgentDownload": {
"type": "boolean",
"default": false,
"description": "Если включено, MeshCentral заблокирует все загрузки MeshAgent, включая установочные скрипты, если пользователь не вошёл в систему"
},
"ignoreAgentHashCheck": {
"type": [
"boolean",
"string"
],
"default": false,
"description": "Если true, агент больше не проверяет TLS-сертификат сервера. Использовать только для отладки. Также можно указать список IP-адресов через запятую для игнорирования, например: \"192.168.2.100,192.168.1.0/24\"."
},
"exactPorts": {
"type": "boolean",
"default": false,
"description": "Если установлено true, MeshCentral будет занимать только требуемые TCP-порты прослушивания или завершится с ошибкой. Он не будет пытаться использовать следующий свободный порт, если нужный занят."
},
"allowLoginToken": {
"type": "boolean",
"default": false,
"description": "Если установлено true, MeshCentral разрешит использовать токены входа в URL вместо обычного входа пользователя. Это полезно вместе с опцией \"allowFraming\" для встраивания функций MeshCentral в другой веб-сайт"
},
"StrictTransportSecurity": {
"type": [
"boolean",
"string"
],
"default": null,
"description": "Управляет заголовком Strict-Transport-Security; значение по умолчанию — 1 год. Установите false для удаления, true для принудительного включения или строку для пользовательского значения. Если null, MeshCentral включит его при наличии доверенного сертификата."
},
"allowFraming": {
"type": "boolean",
"default": false,
"description": "Если включено, веб-сайт MeshCentral можно встраивать в iframe другого веб-сайта."
},
"allowedFramingOrigins": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"default": null,
"description": "Список источников, которым разрешено встраивать MeshCentral в iframe. Использует Content-Security-Policy frame-ancestors. 'self' всегда включён. Пример: [\"https://rmm.example.com\"]. Также поддерживается строка со значениями через запятую."
},
"cookieIpCheck": {
"type": [
"string",
"boolean"
],
"default": "lax",
"enum": [
"strict",
"lax",
"none"
]
},
"cookieEncoding": {
"type": "string",
"enum": [
"hex",
"base64"
],
"default": "base64",
"description": "Формат кодирования cookie в HTTP-заголовках; обычно это Base64, но некоторые обратные прокси требуют HEX."
},
"webRTC": {
"type": "boolean",
"default": false,
"description": "Если включено, разрешает использование WebRTC для прямого сетевого трафика между агентом и браузером."
},
"nice404": {
"type": "boolean",
"default": true,
"description": "По умолчанию при необходимости отображается красиво оформленная страница ошибки 404. Установите false, чтобы отключить её."
},
"selfUpdate": {
"type": [
"string",
"boolean"
],
"default": false,
"description": "Если установлено true, сервер будет проверять наличие новой версии и пытаться автоматически обновляться каждый день немного после полуночи по местному времени. Если указана конкретная версия, например \"1.1.21\", сервер немедленно обновится до неё при запуске, если уже не находится на этой версии."
},
"cleanNpmCacheOnUpdate": {
"type": "boolean",
"default": false,
"description": "Если true, выполнить \"npm cache clean --force\", чтобы освободить место на диске."
},
"browserPing": {
"type": "integer",
"minimum": 1,
"description": "Если указано, отправляет данные браузеру с интервалом x секунд и ожидает ответ от браузера."
},
"browserPong": {
"type": "integer",
"minimum": 1,
"description": "Если указано, отправляет данные браузеру с интервалом x секунд."
},
"agentsInRam": {
"type": "boolean",
"default": false,
"description": "Загружает все бинарные файлы агентов в ОЗУ для более быстрого обновления агентов."
},
"agentPing": {
"type": "integer",
"minimum": 1,
"description": "Если указано, отправляет данные агенту с интервалом x секунд и ожидает ответ от агента."
},
"agentPong": {
"type": "integer",
"minimum": 1,
"description": "Если указано, отправляет данные агенту с интервалом x секунд."
},
"amtManager": {
"type": "boolean",
"default": true,
"description": "Если включено, MeshCentral будет автоматически мониторить и управлять устройствами Intel AMT."
},
"agentIdleTimeout": {
"type": "integer",
"minimum": 1,
"default": 150,
"description": "Сколько времени в секундах без трафика от агента должно пройти, прежде чем соединение агента будет разорвано."
},
"webPageLengthRandomization": {
"type": "boolean",
"default": true,
"description": "Добавляет строку случайной длины в сгенерированные веб-страницы для снижения риска атаки BREACH."
},
"compression": {
"type": "boolean",
"default": false,
"description": "Включает GZIP-сжатие для веб-запросов. По умолчанию отключено."
},
"wsCompression": {
"type": "boolean",
"default": false,
"description": "Включает серверное сжатие websocket per-message deflate."
},
"agentWsCompression": {
"type": "boolean",
"default": false,
"description": "Включает агентское сжатие websocket per-message deflate. Для работы также должно быть включено wscompression."
},
"bitlockerKeyRetentionDays": {
"type": "integer",
"default": 0,
"description": "Сколько дней хранить ключ восстановления BitLocker после последнего считывания агентом, чтобы ключ оставался доступным, пока том заблокирован или отсоединён. Особенно полезно для устройств BitLocker To Go. 0 (по умолчанию) отключает перенос: сохраняются только ключи, прочитанные при последнем сканировании."
},
"noAgentUpdate": {
"type": "integer",
"default": 0,
"description": "Установите 1, чтобы запретить серверу обновлять любые агенты."
},
"agentUpdateSystem": {
"type": "integer",
"default": 1,
"description": "Если установлено 2, все агенты, требующие обновления, будут использовать систему обновления meshcore.js. При значении по умолчанию 1 используется нативная система обновления."
},
"temporaryAgentUpdate": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы не разрешать обновление временных агентов."
},
"amtScanner": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить сканирование Intel AMT в локальной сети; в WAN-режиме оно уже отключено."
},
"meshScanner": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить multicast-сканирование агентов в локальной сети; в WAN-режиме оно уже отключено."
},
"meshErrorLogPath": {
"type": "string",
"description": "Путь к файлу журнала ошибок MeshCentral."
},
"npmPath": {
"type": "string",
"description": "Путь к исполняемому файлу npm."
},
"npmProxy": {
"type": "string",
"format": "uri",
"description": "HTTP-прокси для загрузки пакетов npm."
},
"allowHighQualityDesktop": {
"type": "boolean",
"default": true,
"description": "Если false, пользователи смогут устанавливать качество изображения удалённого рабочего стола только до 60%; это может снизить использование пропускной способности сервера."
},
"webPush": {
"type": "object",
"description": "Если задан действительный адрес электронной почты, включает функцию веб-push-уведомлений MeshCentral. Позволяет администраторам отправлять браузерные уведомления пользователям, даже если они не просматривают веб-сайт MeshCentral.",
"properties": {
"email": {
"type": "string",
"description": "Адрес электронной почты администратора сервера, передаваемый службам push-уведомлений Firefox и Chrome."
}
},
"required": [
"email"
]
},
"RunOnServerStarted": {
"type": "boolean",
"default": null,
"description": "Выполнить это после завершения запуска сервера. Первым параметром будет версия сервера."
},
"RunOnServerUpdated": {
"type": "boolean",
"default": null,
"description": "Выполнить это после обновления сервера. Первым параметром будет версия сервера."
},
"RunOnServerError": {
"type": "boolean",
"default": null,
"description": "Выполнить это, когда сервер должен перезапуститься из-за ошибки. Первым параметром будет версия сервера."
},
"publicPushNotifications": {
"type": "boolean",
"default": false,
"description": "Если true, этот сервер использует MeshCentral.com как ретранслятор push-уведомлений для Android. Push-уведомления работают даже тогда, когда приложение Android не открыто."
},
"desktopMultiplex": {
"type": "boolean",
"default": false,
"description": "Если true, включает серверные модули, которые эффективно разделяют поток удалённого рабочего стола на несколько браузеров. Также позволяет медленным браузерам не замедлять сеанс для быстрых; за это требуется дополнительная память и обработка на сервере для всех сеансов удалённого рабочего стола."
},
"ipBlockedUserRedirect": {
"type": "string",
"default": null,
"description": "Если задано, пользователь с запрещённого IP-адреса будет перенаправлен на этот URL."
},
"userAllowedIP": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задано, к серверу смогут подключаться только пользователи из разрешённых диапазонов IP-адресов. Пример: \"192.168.2.100,192.168.1.0/24\" \"file:userAllowedIP.txt\""
},
"userBlockedIP": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задано, пользователи из этих запрещённых диапазонов IP-адресов не смогут подключаться к серверу. Пример: \"192.168.2.100,192.168.1.0/24\" \"file:userBlockedIP.txt\""
},
"agentAllowedIP": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задано, к серверу смогут подключаться только агенты из разрешённых диапазонов IP-адресов. Пример: \"192.168.2.100,192.168.1.0/24\" \"file:agentAllowedIP.txt\""
},
"agentBlockedIP": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задано, агенты из этих запрещённых диапазонов IP-адресов не смогут подключаться к серверу. Пример: \"192.168.2.100,192.168.1.0/24\" \"file:agentBlockedIP.txt\""
},
"authLog": {
"type": "string",
"default": null,
"description": "Путь и имя файла создаваемого журнала аутентификации. Этот журнал может анализироваться Fail2ban."
},
"InterUserMessaging": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Пользователям из этого списка разрешено отправлять и получать межпользовательские сообщения. Это можно использовать для реализации ботов или другого ПО, где MeshCentral используется как транспорт данных. См. команду websocket \"interuser\" в коде."
},
"manageAllDeviceGroups": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Пользователям или группам, участниками которых являются пользователи из этого списка, разрешено видеть и управлять всеми группами устройств в своём домене. Например, ['user//billybob','user//fred','ugrp//RA...'] позволит billybob, fred и участникам ugrp//RA управлять всеми группами устройств всех пользователей в их домене."
},
"manageCrossDomain": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Пользователям из этого списка разрешено управлять всеми пользователями во всех доменах. Например, ['user//billybob','user/subdomain/fred'] позволит billybob управлять всеми пользователями во всех доменах."
},
"localDiscovery": {
"type": "object",
"description": "Когда сервер находится в LAN-режиме, его можно обнаружить с помощью multicast-инструмента обнаружения. При обнаружении поля name и info отправляются обратно инструменту обнаружения.",
"properties": {
"name": {
"type": "string",
"description": "Имя сервера."
},
"info": {
"type": "string",
"description": "Информация о сервере."
},
"key": {
"type": "string",
"description": "Если задано, шифрует весь LAN-трафик обнаружения для агентов и инструментов с помощью этого ключа. Это полезно только в режиме LAN/Hybrid, когда агенты и инструменты используют multicast для поиска сервера."
}
},
"required": [
"name",
"info"
]
},
"tlsOffload": {
"type": [
"boolean",
"string"
],
"default": false,
"description": "Если true, указывает, что перед сервером MeshCentral находится TLS-терминатор. Чаще задают IP-адрес обратного прокси или TLS-терминатора, чтобы доверять заголовкам пересылки IP. Например: \"127.0.0.1,192.168.1.100\"."
},
"useNodeDefaultTLSCiphers": {
"type": "boolean",
"default": false,
"description": "Если true, получать шифры TLS по умолчанию из процесса Node, а не использовать рекомендованные наборы, настроенные MeshCentral."
},
"tlsCiphers": {
"type": [
"string",
"array"
],
"default": null,
"description": "Позволяет пользователю переопределить шифры TLS, используемые MeshCentral по умолчанию. Если задана строка, это должен быть список принимаемых шифров, разделённых ':'. Если задан массив, это должен быть массив строк, представляющих принимаемые шифры."
},
"trustedProxy": {
"type": "string",
"default": null,
"description": "Доверять пересылаемым заголовкам от этих IP-адресов или доменов. Специальная строка \"CloudFlare\" заставит сервер загружать список IP-адресов доверенных прокси CloudFlare напрямую из CloudFlare при каждом запуске сервера. Например: \"127.0.0.1,proxy.example.com,CloudFlare\"."
},
"mpsPort": {
"type": "integer",
"minimum": 0,
"maximum": 65535,
"default": 4433,
"description": "Management Presence Server (MPS) — это сервер, принимающий подключения Intel AMT Client Initiated Remote Access (CIRA)."
},
"mpsPortBind": {
"type": "string",
"default": null,
"description": "Если задано, привязывает порт MPS к определённому сетевому адресу."
},
"mpsAliasPort": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": null,
"description": "Фактический порт MPS, видимый извне в Интернете; этот параметр часто используется при обратном прокси."
},
"mpsAliasHost": {
"type": "string",
"default": null,
"description": "Если задано, порт MPS игнорируется, и доступ к MPS выполняется через это DNS-имя."
},
"mpsTlsOffload": {
"type": "boolean",
"default": false,
"description": "Если установлено true, указывает, что TLS выполняется устройством перед MeshCentral."
},
"mpsHighSecurity": {
"type": "boolean",
"default": false,
"description": "Если установлено true, сервер MPS будет принимать только подключения TLS 1.2 и 1.3. Старые устройства Intel AMT не смогут подключиться."
},
"prometheus": {
"type": [
"boolean",
"number"
],
"default": false,
"description": "Если установлено true, будет доступна конечная точка метрик Prometheus \"0.0.0.0:9464/metrics\". Если вместо этого указать число, метрики Prometheus будут слушать этот порт вместо стандартного 9464."
},
"no2FactorAuth": {
"type": "boolean",
"default": false,
"description": "Если установлено true, отключает двухфакторную аутентификацию для всех пользователей."
},
"debug": {
"type": "string",
"default": null,
"description": "Это значение можно задать в формате 'web,agent,relay', где значения разделяются запятыми. Каждое указанное значение будет выводить журналы в консоль MeshCentral. Значение '*' выведет все журналы."
},
"log": {
"type": "string",
"default": null,
"description": "Это значение можно задать в формате 'web,agent,relay', где значения разделяются запятыми. Каждое указанное значение будет выводить журналы в файл 'log.txt', расположенный в папке 'meshcentral-data'. Значение '*' выведет все журналы. Доступные значения: cookie,dispatch,main,peer,web,webrequest,relay,webrelaydata,webrelay,mps,mpscmd,swarm,swarmcmd,agentupdate,agent,cert,db,email,amt,httpheaders,websocket"
},
"syslog": {
"type": "string",
"default": null,
"description": "Отправлять события syslog на целевой hostname:port. Например: localhost:514"
},
"syslogauth": {
"type": "string",
"default": null,
"description": "Отправлять события syslog на целевой hostname:port с аутентификацией. Например: user:password@localhost:514"
},
"syslogjson": {
"type": "string",
"default": null,
"description": "Отправлять события syslog в формате JSON на целевой hostname:port. Например: localhost:514"
},
"syslogtcp": {
"type": "string",
"default": null,
"description": "Отправлять события syslog по сети (RFC3164) на целевой hostname:port. Например: localhost:514"
},
"webrtcConfig": {
"type": "object",
"description": "Серверы STUN/TURN, используемые для WebRTC. Если не указаны, используются STUN-серверы Google и Cloudflare, когда сервер не находится в LAN-режиме.",
"properties": {
"iceServers": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"urls": {
"type": "string",
"description": "URL-адреса STUN/TURN; примеры: stun:stun3.l.google.com:19302 или turn:openrelay.metered.ca:443"
}
},
"required": [
"urls"
]
}
}
},
"required": [
"iceServers"
]
},
"crowdsec": {
"type": "object",
"description": "Включает встроенный Crowdsec-bouncer MeshCentral. Этот раздел передаётся напрямую bouncer; все настройки документированы на https://www.npmjs.com/package/@crowdsec/express-bouncer",
"properties": {
"url": {
"type": "string",
"description": "URL вашего экземпляра LAPI. Пример: http://localhost:8080"
},
"apiKey": {
"type": "string",
"description": "Ключ bouncer (создаётся через cscli)."
},
"fallbackRemediation": {
"type": "string",
"default": "ban",
"enum": [
"bypass",
"captcha",
"ban"
],
"description": "Действие, выполняемое, если агент CrowdSec недоступен."
}
},
"required": [
"url",
"apiKey"
]
},
"autoBackup": {
"type": [
"boolean",
"object"
],
"description": "Включено по умолчанию или если установлено true. Отключено, если установлено false. Можно указать объект с дополнительными свойствами для настройки autobackup.",
"properties": {
"mongoDumpPath": {
"type": "string",
"default": "mongodump",
"description": "Путь к файлу, где расположен \"mongodump\". По умолчанию — \"mongodump\"."
},
"mongoDumpArgs": {
"type": "string",
"description": "Переопределяет стандартный mongodump --uri=<mongoDb>. Параметр --db= добавляется автоматически, если он пропущен. (например, --host=127.0.0.1 --username=someUser --password=PaSsWORD --authenticationDatabase=admin)"
},
"mysqlDumpPath": {
"type": "string",
"default": "mysqldump",
"description": "Путь к файлу, где расположен \"mysqldump\". По умолчанию — \"mysqldump\"."
},
"pgDumpPath": {
"type": "string",
"default": "pg_dump",
"description": "Путь к файлу, где расположен \"pg_dump\". По умолчанию — \"pg_dump\"."
},
"backupIntervalHours": {
"type": "integer",
"default": 24,
"description": "Как часто должен запускаться autobackup, в часах от момента запуска meshcentral? По умолчанию — каждые 24 часа"
},
"backupHour": {
"type": "integer",
"default": 0,
"description": "В какой час должен запускаться autobackup. Это принудительно задаёт ежедневную резервную копию и переопределяет пользовательский 'backupIntervalHours'."
},
"keepLastDaysBackup": {
"type": "integer",
"default": 10,
"description": "Сколько дней резервных копий должен хранить autobackup? По умолчанию — 10 дней"
},
"zipCompression": {
"type": "integer",
"default": "5",
"description": "Установить уровень сжатия ZIP: 1 = быстро/менее компактный файл, 9 = медленно/самый маленький файл."
},
"zipPassword": {
"type": "string",
"default": "",
"minLength": 1,
"description": "Если указано, ZIP-резервные копии будут защищены паролем zipPassword; пароль не может быть пустым"
},
"backupPath": {
"type": "string",
"default": "meshcentral-backups",
"description": "Путь к файлам резервных копий. По умолчанию используется \"meshcentral-backups\", расположенная рядом с \"meshcentral-data\"."
},
"backupName": {
"type": "string",
"default": "meshcentral-autobackup-",
"description": "Имя файла резервной копии. По умолчанию — \"meshcentral-autobackup-\"; к имени добавляется время создания копии."
},
"backupWebFolders": {
"type": "boolean",
"default": false,
"description": "Добавлять каталоги views, public и emails, если они переопределены"
},
"backupOtherFolders": {
"type": "boolean",
"default": false,
"description": "Также добавлять папки files и recordings в резервную копию"
},
"backupIgnoreFilesGlob": {
"type": "array",
"default": [],
"description": "Glob-шаблон для игнорирования файлов в каталоге данных. Например [\"**/*.log\"] !! Если передана строка вместо массива, она будет разделена по ','; поэтому *{.txt,.log} в этом случае не будет работать !! Не используйте строку..."
},
"backupSkipFoldersGlob": {
"type": "array",
"default": [],
"description": "Glob-шаблон для игнорирования каталогов в каталоге данных. Например [\"**/signedagents\"]"
},
"googleDrive": {
"type": "object",
"description": "Включает автоматическую загрузку резервных копий сервера в аккаунт Google Drive; после включения администратору нужно перейти на вкладку \"My Server\", чтобы связать аккаунт.",
"properties": {
"folderName": {
"type": "string",
"default": "MeshCentral-Backups",
"description": "Имя папки, создаваемой в аккаунте Google Drive."
},
"maxFiles": {
"type": "integer",
"default": null,
"description": "Максимальное количество файлов, сохраняемых в папке Google Drive; старые файлы будут удаляться при необходимости."
}
}
},
"webDAV": {
"type": "object",
"description": "Включает автоматическую загрузку резервных копий сервера в аккаунт WebDAV.",
"properties": {
"url": {
"type": "string",
"description": "URL аккаунта WebDAV."
},
"username": {
"type": "string",
"description": "Имя пользователя аккаунта WebDAV."
},
"password": {
"type": "string",
"description": "Пароль аккаунта WebDAV."
},
"folderName": {
"type": "string",
"default": "MeshCentral-Backups",
"description": "Имя папки, создаваемой в аккаунте WebDAV."
},
"maxFiles": {
"type": "integer",
"default": null,
"description": "Максимальное количество файлов, сохраняемых в папке WebDAV; старые файлы будут удаляться при необходимости."
}
}
},
"s3": {
"type": "object",
"description": "Включает автоматическую загрузку резервных копий сервера на S3-сервер.",
"required": [
"accessKey",
"secretKey",
"bucketName"
],
"properties": {
"endpoint": {
"type": "string",
"default": "s3.amazonaws.com",
"description": "Адрес S3 Endpoint, например myS3.myserver.com"
},
"accessKey": {
"type": "string",
"description": "S3 accessKey, обязательно"
},
"secretKey": {
"type": "string",
"description": "S3 secretKey, обязательно"
},
"port": {
"type": "integer",
"default": 443,
"description": "Номер порта S3 Endpoint; по умолчанию 443"
},
"ssl": {
"type": "boolean",
"default": true,
"description": "Если \"true\", S3 Endpoint будет использовать \"https\", иначе будет использовать \"http\"; по умолчанию true"
},
"bucketName": {
"type": "string",
"description": "Имя S3 Bucket, обязательно"
},
"folderName": {
"type": "string",
"default": "MeshCentral-Backups",
"description": "Имя папки, создаваемой в S3 Bucket. По умолчанию — \"MeshCentral-Backups\"."
},
"maxFiles": {
"type": "integer",
"default": 0,
"description": "Максимальное количество файлов, сохраняемых в папке S3; старые файлы будут удаляться при необходимости. По умолчанию 0, то есть хранить всё."
}
}
}
}
},
"rootCertCommonName": {
"type": "string",
"default": "MeshCentralRoot-XXXXXX",
"description": "Common Name корневого сертификата сервера MeshCentral. По умолчанию это 'MeshCentralRoot-' плюс первые 6 HEX-цифр отпечатка публичного ключа. Чтобы параметр вступил в силу, нужно удалить и пересоздать все сгенерированные сертификаты. Существующие агенты больше не смогут подключаться."
},
"redirects": {
"type": "object"
},
"maxInvalidLogin": {
"type": "object",
"description": "Этот раздел задаёт политику допустимого количества неверных попыток входа с одного IP-адреса. По умолчанию — 10 раз за 10 минут, но это можно изменить здесь.",
"properties": {
"exclude": {
"type": "string",
"default": null,
"description": "Диапазоны IP-адресов, на которые не распространяются ограничения неверных попыток входа. Например: 192.168.1.0/24,172.16.0.1"
},
"time": {
"type": "integer",
"default": 10,
"description": "Время в минутах, в течение которого с одного IP-адреса допускается максимальное число неверных попыток входа."
},
"count": {
"type": "integer",
"default": 10,
"description": "Максимальное количество неверных попыток входа с одного IP-адреса за период времени."
},
"coolofftime": {
"type": "integer",
"default": null,
"description": "Дополнительное время в минутах, в течение которого попытки входа будут запрещены после достижения лимита неверных попыток."
}
}
},
"maxInvalid2fa": {
"type": "object",
"description": "Этот раздел задаёт политику допустимого количества неверных попыток двухфакторной аутентификации (2FA) с одного IP-адреса. По умолчанию — 10 раз за 10 минут, но это можно изменить здесь.",
"properties": {
"exclude": {
"type": "string",
"default": null,
"description": "Диапазоны IP-адресов, на которые не распространяются ограничения неверных попыток 2FA. Например: 192.168.1.0/24,172.16.0.1"
},
"time": {
"type": "integer",
"default": 10,
"description": "Время в минутах, в течение которого с одного IP-адреса допускается максимальное число неверных попыток 2FA."
},
"count": {
"type": "integer",
"default": 10,
"description": "Максимальное количество неверных попыток 2FA с одного IP-адреса за период времени."
},
"coolofftime": {
"type": "integer",
"default": null,
"description": "Дополнительное время в минутах, в течение которого попытки 2FA будут запрещены после достижения лимита неверных попыток 2FA."
}
}
},
"amtProvisioningServer": {
"type": "object",
"required": [
"deviceGroup",
"newMebxPassword",
"trustedFqdn",
"ip"
],
"description": "Если присутствует, этот раздел включает сервер провижининга Intel AMT в локальной сети. Используется для bare-metal ACM-активации Intel AMT.",
"properties": {
"port": {
"type": "number",
"default": 9971,
"description": "Номер порта, который будет слушать сервер провижининга."
},
"deviceGroup": {
"type": "string",
"description": "Группа устройств без агента, в которую будут добавлены устройства Intel AMT после активации. Должна иметь формат: mesh/domain/id"
},
"newMebxPassword": {
"type": "string",
"description": "Пароль MEBX, задаваемый во время активации. Он должен быть не короче 8 символов и содержать 1 строчную, 1 заглавную, 1 буквенно-цифровую и 1 не буквенно-цифровую позицию."
},
"trustedFqdn": {
"type": "string",
"description": "Доверенный FQDN или значение сервера провижининга, которое будет иметь удалённое устройство. Это можно задать в MEBx или через DHCP option 15 в локальной сети."
},
"ip": {
"type": "string",
"description": "IP-адрес этого сервера. Он будет использоваться при создании USB-файла setup.bin, чтобы указать, на какой IP-адрес отправлять hello-данные."
}
}
},
"plugins": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
]
},
"watchdog": {
"type": "object",
"required": [
"interval",
"timeout"
],
"description": "Используется для контроля, корректно ли NodeJS обслуживает ввод-вывод или часто блокируется. Необходимо указать \"interval\" и \"timeout\".",
"properties": {
"interval": {
"type": "number",
"description": " Будет выполнять проверку каждые X мс"
},
"timeout": {
"type": "number",
"description": " Если таймер опоздает более чем на X мс, будет выведено предупреждение в консоль И в mesherrors.txt"
}
}
}
},
"patternProperties": {
"^_.*": {
"type": "null",
"x-disabled": true,
"x-enabled-name": "Удалите префикс подчёркивания, чтобы включить",
"errorMessage": "⚠️ ОТКЛЮЧЁННЫЙ ПАРАМЕТР — этот параметр сейчас отключён. Удалите префикс подчёркивания (_), чтобы включить его."
}
}
},
"domaindefaults": {
"$ref": "#/properties/domains/additionalProperties"
},
"domains": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"dns": {
"type": "string",
"default": null,
"description": "DNS-имя, используемое для доступа к этому домену вместо доступа через подпапку"
},
"siteStyle": {
"type": "integer",
"default": 2,
"description": "Допустимые числа: 1, 2 или 3. Меняет стиль страницы входа и некоторых вторичных страниц. 3 — новый стиль Bootstrap"
},
"showModernUIToggle": {
"type": "boolean",
"default": false,
"description": "Если установлено true, пользователь сможет переключаться между современным и классическим интерфейсом."
},
"title": {
"type": "string",
"default": "MeshCentral",
"description": "Заголовок этого веб-сайта. Все веб-страницы будут иметь этот заголовок."
},
"title2": {
"type": "string",
"default": null,
"description": "Вторичный текст заголовка, размещаемый справа вверху от заголовка на многих веб-страницах."
},
"titlePicture": {
"type": "string",
"default": null,
"description": "PNG-файл логотипа веб-сайта размером 450x66, размещённый в meshcentral-data и используемый в верхней части многих страниц."
},
"loginPicture": {
"type": "string",
"default": null,
"description": "PNG-файл логотипа веб-сайта, размещённый в meshcentral-data и используемый на странице входа, когда sitestyle равен 2."
},
"pwaLogo": {
"type": "string",
"default": null,
"description": "PNG-файл логотипа веб-сайта размером 512x512, размещённый в meshcentral-data и используемый для PWA-установок на iOS и Android."
},
"rootRedirect": {
"type": "string",
"default": null,
"description": "Перенаправляет HTTP-запросы к корню на этот URL. При использовании направляйте пользователей на /login, чтобы увидеть обычную страницу входа."
},
"mobileSite": {
"type": "boolean",
"default": true,
"description": "Если установлено false, этот параметр отключит мобильную версию сайта."
},
"orphanAgentUser": {
"type": "string",
"default": null,
"description": "Если агент пытается подключиться к неизвестной группе устройств, автоматически создаётся новая группа устройств и указанному пользователю предоставляется доступ. Пример: admin"
},
"manageAllDeviceGroups": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Пользователям из этого списка разрешено видеть и управлять всеми группами устройств в своём домене. Например, ['billybob','fred'] позволит billybob и fred управлять всеми группами устройств всех пользователей в их домене."
},
"maxDeviceView": {
"type": "integer",
"default": null,
"description": "Максимальное количество устройств, которое пользователь может одновременно видеть на странице устройств. По умолчанию показываются все устройства, но на серверах с большим числом устройств может потребоваться ограничение."
},
"unknownUserRootRedirect": {
"type": "string",
"default": null,
"description": "Перенаправляет HTTP-запросы к корню на этот URL только если пользователь ещё не вошёл в систему. При использовании направляйте пользователей на /login, чтобы увидеть обычную страницу входа."
},
"nightMode": {
"type": "integer",
"default": 0,
"description": "0 = пользователь выбирает режим день/ночь, 1 = всегда ночной режим, 2 = всегда дневной режим"
},
"scrollToTop": {
"type": "boolean",
"default": false,
"description": "Если true, на вкладке устройств отображается кнопка Scroll To Top."
},
"userQuota": {
"type": "integer",
"description": "Максимальный объём данных в килобайтах, который может быть размещён на вкладке “My Files” для учётной записи пользователя."
},
"meshQuota": {
"type": "integer",
"description": "Максимальный объём данных в килобайтах, который может быть размещён на вкладке “My Files” для заданного mesh."
},
"loginKey": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
},
"default": null,
"description": "Требует, чтобы пользователи добавляли значение ?key=xxx в URL, чтобы увидеть веб-сайт."
},
"agentKey": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
},
"default": null,
"description": "Требует, чтобы агенты добавляли значение ?key=xxx в URL для подключения. Это не выполняется автоматически и должно быть вручную добавлено в файл meshagent.msh."
},
"ipkvm": {
"type": "boolean",
"default": false,
"description": "Установите true, чтобы включить поддержку IP KVM-устройств в этом домене."
},
"minify": {
"type": "boolean",
"default": false,
"description": "Если включено, сервер будет отправлять веб-страницы уменьшенного размера."
},
"newAccounts": {
"type": "boolean",
"default": false,
"description": "Если установлено true, разрешает создавать новые учётные записи пользователей со страницы входа."
},
"newAccountsPass": {
"type": "string",
"default": null,
"description": "Если задано, этот пароль будет требоваться для создания новой учётной записи со страницы входа."
},
"newAccountsCaptcha": {
"type": "boolean",
"default": false,
"description": "Если установлено true, пользователи будут проходить CAPTCHA при создании новой учётной записи со страницы входа."
},
"newAccountsUserGroups": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Если задано, новые учётные записи будут добавляться в эти группы."
},
"userNameIsEmail": {
"type": "boolean",
"default": false,
"description": "Если включено, имя пользователя каждой учётной записи также является адресом электронной почты этой учётной записи."
},
"newAccountEmailDomains": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Если задано, новые учётные записи будут создаваться только для адресов электронной почты, соответствующих этим доменам."
},
"newAccountsRights": {
"type": [
"array",
"string"
],
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Права сервера по умолчанию, назначаемые вновь созданным учётным записям. Допустимые значения: fulladmin, manageusers, serverbackup, serverrestore, serverupdate, fileaccess, locked, nonewgroups, nonewdevices, notools, usergroups, recordings, locksettings, allevents"
},
"allowedOrigin": {
"type": [
"array",
"boolean"
],
"default": false,
"uniqueItems": true,
"description": "Список разрешённых имён хостов для HTTP-заголовка origin запроса. Если false, создаётся список по умолчанию; если true, разрешены все имена хостов.",
"items": {
"type": "string"
}
},
"welcomeText": {
"type": "string",
"description": "Текст, который будет показан на экране входа."
},
"welcomePicture": {
"type": "string",
"description": "Имя PNG- или JPEG-файла, который будет показан на экране входа. Поместите этот файл в папку meshcentral-data и укажите здесь имя файла."
},
"welcomePictureFullScreen": {
"type": "boolean",
"default": false,
"description": "Если включено, welcomePicture будет отображаться как полноэкранный фон на экране входа."
},
"meshMessengerTitle": {
"type": "string",
"default": "MeshMessenger",
"description": "Текст, отображаемый в верхней части окна мессенджера, когда не отображается имя пользователя или устройства."
},
"meshMessengerPicture": {
"type": "string",
"default": null,
"description": "Имя файла изображения .png, размещённого в meshcentral-data и отображаемого в верхней части веб-страницы мессенджера. Если null, отображается изображение по умолчанию."
},
"hide": {
"type": "integer",
"default": 0,
"description": "Сумма значений: 1 = скрыть заголовок, 2 = скрыть вкладку, 4 = скрыть нижний колонтитул, 8 = скрыть заголовок страницы, 16 = скрыть левую панель, 32 = скрыть кнопки «Назад»"
},
"footer": {
"type": "string",
"default": null,
"description": "HTML-строка, отображаемая внизу веб-страницы, когда пользователь вошёл в систему."
},
"loginfooter": {
"type": "string",
"default": null,
"description": "HTML-строка, отображаемая внизу веб-страницы, когда пользователь не вошёл в систему."
},
"allowSavingDeviceCredentials": {
"type": "boolean",
"default": true,
"description": "Разрешить пользователям сохранять на сервере учётные данные устройств SSH, RDP и VNC."
},
"trustedCert": {
"type": "boolean",
"default": "This value is normally auto-detected, when set to true, MeshCentral assumes that the TLS certificate comes from a trusted CA and will ensure download tools perform certificate checking."
},
"guestDeviceSharing": {
"type": [
"boolean",
"object"
],
"default": true,
"description": "Если установлено false, функция ссылки общего доступа к рабочему столу/терминалу недоступна.",
"properties": {
"maxSessionTime": {
"type": "number",
"description": "Если задано, ограничивает максимальную длительность гостевого сеанса в минутах."
}
}
},
"softwareInventory": {
"type": "boolean",
"default": false,
"description": "Если установлено true, включается функция инвентаризации программного обеспечения."
},
"autoRemoveInactiveDevices": {
"type": "integer",
"default": 0,
"minimum": 0,
"maximum": 2000,
"description": "Количество дней, в течение которых устройство может быть неактивным до удаления. 0 отключает эту функцию. Настройка группы устройств переопределит это значение."
},
"deviceSearchBarServerAndClientName": {
"type": "boolean",
"default": false,
"description": "Если установлено true, поле поиска устройств будет сопоставлять как серверное имя, так и клиентское имя устройства."
},
"deviceSearchBarGroupName": {
"type": "boolean",
"default": false,
"description": "Если установлено true, поле поиска устройств также будет сопоставлять имя группы."
},
"agentSelfGuestSharing": {
"type": [
"boolean",
"object"
],
"default": false,
"description": "Если установлено true, MeshCentral Assistant сможет создавать собственные гостевые ссылки общего доступа.",
"properties": {
"expire": {
"type": "number",
"description": "Если задано, ограничивает самостоятельно созданную гостевую ссылку общего доступа этим числом минут."
}
}
},
"PreconfiguredScripts": {
"type": "array",
"default": null,
"description": "Если задано, можно нажать кнопку запуска, чтобы выполнить один из этих скриптов на удалённом устройстве.",
"items": {
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"description": "Имя скрипта.",
"type": "string"
},
"type": {
"description": "Тип скрипта.",
"type": "string",
"enum": [
"bat",
"ps1",
"sh",
"agent"
]
},
"runas": {
"description": "Как запускать этот скрипт; не применяется к агентским скриптам.",
"type": "string",
"enum": [
"agent",
"userfirst",
"user"
]
},
"cmd": {
"description": "Команда или команды, разделённые \\r\\n, для выполнения. Если задано, не используйте ключ file.",
"type": "string"
},
"file": {
"description": "Путь и имя файла скрипта. Если задано, не используйте ключ cmd. Этот путь начинается в meshcentral-data.",
"type": "string"
}
}
}
},
"preConfiguredRemoteInput": {
"type": "array",
"default": null,
"description": "Если задано, можно щёлкнуть правой кнопкой по кнопке ввода на вкладке рабочего стола и мгновенно удалённо набрать одну из этих заранее настроенных строк.",
"items": {
"type": "object",
"required": [
"name",
"value"
],
"properties": {
"name": {
"description": "Имя текстовой строки.",
"type": "string"
},
"value": {
"description": "Текстовая строка, которая будет удалённо набрана при выборе.",
"type": "string"
}
}
}
},
"altMessenging": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Имя альтернативного сервиса обмена сообщениями, например: \"Jitsi\" "
},
"url": {
"type": "string",
"description": "URL альтернативного сервиса обмена сообщениями, например: \"https://meet.jit.si/myserver-{0}\"; для устройства {0}, {1}, {2}, {3} — это идентификатор устройства. Для пользователя {0} — userid, {1} — полный userid с дефисами, {2} — реальное имя без пробелов, {3} — реальное имя с дефисами вместо пробелов."
},
"localurl": {
"type": "string",
"description": "Если указано, это URL, используемый на стороне администратора, например: \"https://meet.jit.si/myserver-{0}\"; для устройства {0}, {1}, {2}, {3} — это идентификатор устройства. Для пользователя {0} — userid, {1} — полный userid с дефисами, {2} — реальное имя без пробелов, {3} — реальное имя с дефисами вместо пробелов."
},
"type": {
"type": "string",
"enum": [
null,
"user",
"device"
],
"default": null,
"description": "Указывает, должна ли эта кнопка отображаться для типа user или device. Если пропущено, она будет отображаться для обоих."
}
},
"required": [
"name",
"url"
]
}
},
"deviceMeshRouterLinks": {
"type": "object",
"properties": {
"rdp": {
"type": "boolean",
"default": true,
"description": "Отображать ссылку RDP на вкладке устройства, если поддерживается."
},
"ssh": {
"type": "boolean",
"default": true,
"description": "Отображать ссылку SSH на вкладке устройства, если поддерживается."
},
"scp": {
"type": "boolean",
"default": true,
"description": "Отображать ссылку SCP на вкладке устройства, если поддерживается."
},
"extralinks": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"protocol",
"port"
],
"properties": {
"name": {
"description": "Имя ссылки, отображаемой на веб-сайте.",
"type": "string"
},
"protocol": {
"description": "Протокол. Допустимые значения: custom,http,https,rdp,ssh,scp,mcrdesktop,mcrfiles.",
"type": "string"
},
"port": {
"description": "Порт на удалённом устройстве.",
"default": 0,
"minimum": 0,
"maximum": 65535,
"type": "integer"
},
"ip": {
"description": "Целевой IP-адрес. Если не указан, целью подключения является удалённое устройство, на котором работает MeshAgent.",
"type": "string"
},
"localport": {
"description": "Локальный порт, к которому должен привязаться MeshCentral Router. По умолчанию используется случайный свободный порт.",
"default": 0,
"minimum": 0,
"maximum": 65535,
"type": "integer"
},
"filter": {
"description": "Массив строк node/<domain>/<id>, mesh/<domain>/<id> или tag:<tag>. Если задано, ссылка будет отображаться только для указанных устройств, групп устройств или тега устройства.",
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
},
"assistantTypeAgentInvite": {
"type": "integer",
"default": 0,
"description": "0 = системный трей, подключение по запросу пользователя; 1 = системный трей, всегда подключено; 2 = приложение, подключение по запросу пользователя; 3 = приложение, всегда подключено; 4 = системный трей, только мониторинг"
},
"certUrl": {
"type": "string",
"format": "uri",
"description": "HTTPS URL, откуда получить TLS-сертификат, который будет видеть MeshAgent при подключении к этому серверу. Этот параметр используется, когда перед MeshCentral стоит обратный прокси, например NGINX. Можно указать file://, но после него должен следовать полный путь к файлу сертификата."
},
"myServer": {
"type": [
"object",
"boolean"
],
"properties": {
"Backup": {
"type": "boolean",
"default": true,
"description": "Разрешает администраторам создавать резервную копию сервера с вкладки My Server. Эта опция может быть включена только при использовании базы данных NeDB. Для других баз данных опция отключена, а настройка игнорируется."
},
"Restore": {
"type": "boolean",
"default": true,
"description": "Разрешает администраторам восстанавливать сервер с вкладки My Server. Эта опция может быть включена только при использовании базы данных NeDB. Для других баз данных опция отключена, а настройка игнорируется."
},
"Upgrade": {
"type": "boolean",
"default": true,
"description": "Разрешает администраторам обновлять сервер с вкладки My Server."
},
"ErrorLog": {
"type": "boolean",
"default": true,
"description": "Разрешает администраторам просматривать журнал аварий сервера с вкладки My Server."
},
"Console": {
"type": "boolean",
"default": true,
"description": "Разрешает администраторам получать доступ к консоли сервера с вкладки My Server."
},
"Trace": {
"type": "boolean",
"default": true,
"description": "Разрешает администраторам получать доступ к вкладке трассировки сервера с вкладки My Server."
},
"Config": {
"type": "boolean",
"default": true,
"description": "Разрешает администраторам удалённо просматривать конфигурацию сервера на вкладке My Server."
}
}
},
"passwordRequirements": {
"type": "object",
"properties": {
"min": {
"type": "integer",
"description": "Минимальное допустимое количество символов для пароля учётной записи."
},
"max": {
"type": "integer",
"description": "Максимальное допустимое количество символов для пароля учётной записи."
},
"upper": {
"type": "integer",
"description": "Минимальное количество заглавных букв, требуемых в пароле."
},
"lower": {
"type": "integer",
"description": "Минимальное количество строчных букв, требуемых в пароле."
},
"numeric": {
"type": "integer",
"description": "Минимальное количество цифр, требуемых в пароле."
},
"nonalpha": {
"type": "integer",
"description": "Минимальное количество не буквенно-цифровых символов, требуемых в пароле."
},
"reset": {
"type": "integer",
"description": "Количество дней, после которого пользователь обязан сменить пароль учётной записи."
},
"email2factor": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить 2FA по электронной почте."
},
"sms2factor": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить 2FA по SMS."
},
"duo2factor": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить Duo 2FA."
},
"push2factor": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить 2FA через push-уведомления."
},
"otp2factor": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить 2FA одноразовым паролем."
},
"msg2factor": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить 2FA через пользовательские сообщения."
},
"backupcode2factor": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить резервные коды 2FA."
},
"single2factorWarning": {
"type": "boolean",
"default": true,
"description": "Установите false, чтобы отключить предупреждение об одном способе 2FA."
},
"lock2factor": {
"type": "boolean",
"default": false,
"description": "Если установлено true, запрещает любые изменения 2FA."
},
"force2factor": {
"type": "boolean",
"default": false,
"description": "Требует, чтобы все учётные записи настроили 2FA."
},
"skip2factor": {
"type": "string",
"description": "IP-адреса, для которых 2FA при входе пропускается, например: 127.0.0.1,192.168.2.0/24"
},
"oldPasswordBan": {
"type": "integer",
"description": "Количество старых паролей, которое сервер должен помнить и не разрешать пользователю возвращаться к ним."
},
"banCommonPasswords": {
"type": "boolean",
"default": false,
"description": "Использует WildLeek для блокировки 10000 наиболее распространённых паролей."
},
"loginTokens": {
"type": [
"boolean",
"array"
],
"default": true,
"description": "Разрешает пользователям создавать альтернативные имена пользователя/пароли для своей учётной записи. Установите false, чтобы запретить всем пользователям, либо укажите массив userid или groupid, чтобы разрешить только некоторым пользователям."
},
"twoFactorTimeout": {
"type": "integer",
"default": 300,
"description": "Максимальное время ожидания токена 2FA на странице входа, в секундах."
},
"autofido2fa": {
"type": "boolean",
"default": false,
"description": "Если true и в учётной записи пользователя настроен FIDO-ключ, экран входа 2FA автоматически запросит FIDO 2FA."
},
"maxfidokeys": {
"type": "integer",
"default": null,
"description": "Максимальное количество аппаратных ключей 2FA FIDO/YubikeyOTP, которые можно настроить в учётной записи пользователя."
},
"fidopininput": {
"type": "string",
"default": "preferred",
"enum": [
"preferred",
"required",
"discouraged"
],
"description": "Управляет поведением запроса PIN FIDO: 'preferred' (запрашивает только если ключ требует PIN), 'required' (всегда запрашивает PIN) или 'discouraged' (никогда не запрашивает PIN). По умолчанию: 'preferred'."
},
"allowaccountreset": {
"type": "boolean",
"default": true,
"description": "Если установлено false, опция сброса учётной записи на экране входа будет недоступна пользователям."
}
}
},
"twoFactorCookieDurationDays": {
"type": "integer",
"default": 30,
"description": "Количество дней, в течение которых пользователю разрешено помнить это устройство при прохождении 2FA. Установите 0, чтобы убрать эту опцию."
},
"auth": {
"type": "string",
"default": null,
"enum": [
null,
"sspi",
"ldap"
],
"description": "Тип аутентификации пользователей; это может быть SSPI в Windows или LDAP. Если не задано, используется имя пользователя/пароль."
},
"ldapUserKey": {
"type": "string",
"default": null,
"description": "Значение LDAP, используемое как уникальный идентификатор учётной записи пользователя. Используйте \"ldapUserKey\" или \"ldapUserBinaryKey\"."
},
"ldapUserBinaryKey": {
"type": "string",
"default": "objectSid",
"description": "Значение LDAP, используемое как уникальный идентификатор учётной записи пользователя; если указано в этом поле, значения будут преобразованы в HEX."
},
"ldapUserName": {
"type": "string",
"default": "displayName",
"description": "Значение LDAP, используемое как имя пользователя. Имя также можно составить, задав это значение, например: \"{{{givenName}}} {{{sn}}}\""
},
"ldapUserEmail": {
"type": "string",
"default": "mail",
"description": "Значение LDAP, используемое как адрес электронной почты пользователя."
},
"ldapUserRealName": {
"type": "string",
"default": "name",
"description": "Значение LDAP, используемое как настоящее имя пользователя. Имя также можно составить, задав это значение, например: \"{{{givenName}}} {{{sn}}}\""
},
"ldapUserPhoneNumber": {
"type": "string",
"default": "telephoneNumber",
"description": "Значение LDAP, используемое как номер телефона пользователя."
},
"ldapUserImage": {
"type": "string",
"default": "thumbnailPhoto",
"description": "Значение LDAP, используемое как изображение пользователя."
},
"ldapSaveUserToFile": {
"type": "string",
"default": null,
"description": "Если задано имя файла, например c:\\temp\\ldapusers.txt, MeshCentral будет сохранять объект пользователя LDAP в этот файл при каждом входе пользователя. Используется для отладки проблем LDAP."
},
"ldapUserGroups": {
"type": "string",
"default": "memberOf",
"description": "Значение LDAP, используемое для членства пользователя в группах."
},
"ldapSyncWithUserGroups": {
"type": [
"boolean",
"object"
],
"default": false,
"description": "Если установлено true или задан объект, MeshCentral будет синхронизировать членство пользователей LDAP с группами пользователей MeshCentral.",
"properties": {
"filter": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задана строка или массив строк, только группы членства LDAP, содержащие одну из этих строк, будут синхронизированы с группами пользователей MeshCentral."
}
}
},
"ldapSiteAdminGroups": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задан список групп LDAP, пользователи, входящие в одну из этих групп, будут назначены администраторами сайта; в противном случае права администратора сайта будут удалены."
},
"ldapUserRequiredGroupMembership": {
"type": [
"string",
"array"
],
"default": null,
"description": "Список групп LDAP. Пользователи должны входить хотя бы в одну из этих групп, чтобы вход был разрешён. Если null, вход разрешён всем пользователям."
},
"ldapOptions": {
"type": "object",
"description": "Параметры LDAP, передаваемые в ldapauth-fork"
},
"hidePowerTimeline": {
"type": "boolean",
"default": false,
"description": "Если включено, скрывает timeline питания в веб-интерфейсе"
},
"showNotesPanel": {
"type": "boolean",
"default": false,
"description": "Если включено, показывает панель заметок в представлении устройства"
},
"collapseGroups": {
"type": "boolean",
"default": false,
"description": "Если включено, группы устройств будут по умолчанию свёрнуты на вкладке устройств."
},
"terminalUserVariable": {
"type": "string",
"enum": [
"realname",
"identifier",
"username"
],
"description": "Добавляет переменную окружения MESHCENTRAL_USER в терминальные сеансы Linux, используя 'realname', 'identifier' или 'username'."
},
"userSessionsSort": {
"type": "string",
"default": "SessionId",
"description": "Упорядочивает предлагаемые сеансы Connect при наличии нескольких терминальных сеансов по 'SessionId', 'StationName' или 'Username', где 'SessionId' является критерием сортировки по умолчанию."
},
"agentInviteCodes": {
"type": "boolean",
"default": false,
"description": "Включает функцию, позволяющую задавать один или несколько кодов приглашения в группе устройств. Затем можно дать пользователям ссылку-приглашение для загрузки агента."
},
"agentNoProxy": {
"type": "boolean",
"default": false,
"description": "Если включено, всем новым установленным MeshAgent будет указано не использовать HTTP/HTTPS-прокси, даже если он настроен в удалённой системе"
},
"agentTag": {
"type": "object",
"description": "Этот раздел используется для указания, должны ли части файла meshagent.tag применяться для задания серверных свойств устройства.",
"properties": {
"ServerName": {
"type": "integer",
"default": 0,
"description": "Действие, выполняемое, если одна из строк в meshagent.tag содержит ~ServerName:name. 0=Ignore, 1=Set."
},
"ServerDesc": {
"type": "integer",
"default": 0,
"description": "Действие, выполняемое, если одна из строк в meshagent.tag содержит ~ServerDesc:desc. 0=Ignore, 1=Set, 2=SetIfEmpty."
},
"ServerTags": {
"type": "integer",
"default": 0,
"description": "Действие, выполняемое, если одна из строк в meshagent.tag содержит ~ServerTags:tag1,tag2,tag3. 0=Ignore, 1=Set, 2=SetIfEmpty, 3=Append."
}
}
},
"lockAgentDownload": {
"type": "boolean",
"default": false,
"description": "Если включено, MeshCentral заблокирует все загрузки MeshAgent, включая установочные скрипты, если пользователь не вошёл в систему"
},
"geoLocation": {
"type": "boolean",
"default": false,
"description": "Включает функцию геолокации и карту местоположения устройств в пользовательском интерфейсе; эта функция сейчас не дорабатывается."
},
"ipLocation": {
"type": "boolean",
"default": false,
"description": "Если включено, удалённые агенты будут отправлять своё приблизительное местоположение в MeshCentral. Используйте совместно с \"geoLocation\"."
},
"novnc": {
"type": "boolean",
"default": true,
"description": "Если включено, активирует встроенный веб-клиент VNC."
},
"mstsc": {
"type": "boolean",
"default": true,
"description": "Если включено, активирует встроенный веб-клиент RDP."
},
"ssh": {
"type": "boolean",
"default": false,
"description": "Если включено, активирует встроенный веб-клиент SSH."
},
"webEmailsPath": {
"type": "string",
"description": "Путь, где искать пользовательские шаблоны электронной почты для этого домена."
},
"customUI": {
"type": "object"
},
"themePack": {
"type": "string",
"description": "Имя пакета темы, используемого для этого домена. Пример: \"Stylish-UI\""
},
"customFiles": {
"type": "object",
"description": "Расширенная система кастомизации, позволяющая задавать несколько конфигураций CSS- и JavaScript-файлов на домен. Каждая конфигурация определяется уникальным именем и может быть нацелена на конкретные шаблоны с помощью свойства 'scope', что даёт детальный контроль над тем, где загружаются пользовательские файлы. Все пользовательские файлы загружаются после стандартных файлов custom.css и custom.js.",
"properties": {
"example-config": {
"type": "object",
"description": "Пример конфигурации — замените 'example-config' на желаемое имя",
"properties": {
"css": {
"type": "array",
"items": {
"type": "string"
},
"description": "Упорядоченный список пользовательских CSS-файлов для загрузки. Файлы загружаются в указанном порядке после стандартного custom.css. Разместите файлы в каталоге meshcentral-web/public/styles/. Пример: [\"theme.css\", \"overrides.css\", \"mobile.css\"]"
},
"js": {
"type": "array",
"items": {
"type": "string"
},
"description": "Упорядоченный список пользовательских JavaScript-файлов для загрузки. Файлы загружаются в указанном порядке после стандартного custom.js. Разместите файлы в каталоге meshcentral-web/public/scripts/. Пример: [\"analytics.js\", \"custom-functions.js\", \"ui-enhancements.js\"]"
},
"scope": {
"type": "array",
"items": {
"type": "string"
},
"description": "Список имён шаблонов, где должны загружаться эти пользовательские файлы. Если не указано или пусто, файлы НЕ будут загружаться нигде. Используйте 'all' для загрузки во всех шаблонах. Доступные имена шаблонов: all, default, default3, default-mobile, login, login2, login-mobile, messenger, message, message2, invite, agentinvite, player, xterm, mstsc, ssh, sharing, sharing-mobile, download, download2, terms, terms-mobile, error404, error4042, error404-mobile. Пример: [\"default3\", \"login2\", \"player\"] или [\"all\"]"
}
}
}
},
"additionalProperties": {
"type": "object",
"description": "Конфигурация пользовательских файлов, определяемая уникальным именем",
"properties": {
"css": {
"type": "array",
"items": {
"type": "string"
},
"description": "Упорядоченный список пользовательских CSS-файлов для загрузки. Файлы загружаются в указанном порядке после стандартного custom.css. Разместите файлы в каталоге meshcentral-web/public/styles/. Пример: [\"theme.css\", \"overrides.css\", \"mobile.css\"]"
},
"js": {
"type": "array",
"items": {
"type": "string"
},
"description": "Упорядоченный список пользовательских JavaScript-файлов для загрузки. Файлы загружаются в указанном порядке после стандартного custom.js. Разместите файлы в каталоге meshcentral-web/public/scripts/. Пример: [\"analytics.js\", \"custom-functions.js\", \"ui-enhancements.js\"]"
},
"scope": {
"type": "array",
"items": {
"type": "string"
},
"description": "Список имён шаблонов, где должны загружаться эти пользовательские файлы. Если не указано или пусто, файлы НЕ будут загружаться нигде. Используйте 'all' для загрузки во всех шаблонах. Доступные имена шаблонов: all, default, default3, default-mobile, login, login2, login-mobile, messenger, message, message2, invite, agentinvite, player, xterm, mstsc, ssh, sharing, sharing-mobile, download, download2, terms, terms-mobile, error404, error4042, error404-mobile. Пример: [\"default3\", \"login2\", \"player\"] или [\"all\"]"
}
}
}
},
"consentMessages": {
"type": "object",
"description": "Этот раздел используется для настройки запросов согласия пользователя, которые появляются при запросе разрешения удалённого сеанса.",
"properties": {
"Title": {
"type": "string",
"description": "Заголовок сообщения согласия."
},
"Desktop": {
"type": "string",
"description": "Сообщение согласия, показываемое при подключении сеанса удалённого рабочего стола; можно использовать {0} для realname и {1} для username."
},
"Terminal": {
"type": "string",
"description": "Сообщение согласия, показываемое при подключении удалённого терминального сеанса; можно использовать {0} для realname и {1} для username."
},
"Files": {
"type": "string",
"description": "Сообщение согласия, показываемое при подключении удалённого файлового сеанса; можно использовать {0} для realname и {1} для username."
},
"consentTimeout": {
"type": "integer",
"default": 30,
"description": "Сколько секунд показывать диалоговое окно согласия пользователя."
},
"autoAcceptOnTimeout": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя принимается после истечения тайм-аута."
},
"autoAcceptIfNoUser": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя для рабочего стола, терминала и файлов принимается, если никто не вошёл в систему."
},
"autoAcceptIfDesktopNoUser": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя на доступ к рабочему столу принимается, если никто не вошёл в систему."
},
"autoAcceptIfTerminalNoUser": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя на доступ к терминалу принимается, если никто не вошёл в систему."
},
"autoAcceptIfFileNoUser": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя на доступ к файлам принимается, если никто не вошёл в систему."
},
"autoAcceptIfLocked": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя для рабочего стола, терминала и файлов принимается, если устройство заблокировано."
},
"autoAcceptIfDesktopLocked": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя на доступ к рабочему столу принимается, если устройство заблокировано."
},
"autoAcceptIfTerminalLocked": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя на доступ к терминалу принимается, если устройство заблокировано."
},
"autoAcceptIfFileLocked": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя на доступ к файлам принимается, если устройство заблокировано."
},
"oldStyle": {
"type": "boolean",
"default": false,
"description": "Если true, согласие пользователя будет показано в старом стиле prompt-окна, а не в новом стиле consent-box."
}
}
},
"notificationMessages": {
"type": "object",
"description": "Этот раздел используется для настройки уведомлений пользователя при подключении удалённого рабочего стола, терминала или файлового сеанса к удалённой системе.",
"properties": {
"Title": {
"type": "string",
"description": "Заголовок уведомления."
},
"Desktop": {
"type": "string",
"description": "Сообщение, показываемое при подключении сеанса удалённого рабочего стола; можно использовать {0} для realname и {1} для username."
},
"Terminal": {
"type": "string",
"description": "Сообщение, показываемое при подключении удалённого терминального сеанса; можно использовать {0} для realname и {1} для username."
},
"Files": {
"type": "string",
"description": "Сообщение, показываемое при подключении удалённого файлового сеанса; можно использовать {0} для realname и {1} для username."
}
}
},
"agentCustomization": {
"type": "object",
"description": "Используйте этот раздел для настройки брендинга агента.",
"properties": {
"displayName": {
"type": "string",
"default": "MeshCentral Agent",
"description": "Имя агента, отображаемое пользователю."
},
"description": {
"type": "string",
"default": "Mesh Agent background service",
"description": "Описание агента, отображаемое пользователю."
},
"companyName": {
"type": "string",
"default": "Mesh Agent",
"description": "Будет использоваться как путь установки агента; по умолчанию это 'Mesh Agent' в Windows и 'meshagent' в других ОС."
},
"serviceName": {
"type": "string",
"default": "Mesh Agent",
"description": "Имя фоновой службы; по умолчанию это 'Mesh Agent' в Windows и 'meshagent' в других ОС, но следует задать строку только в нижнем регистре и без пробелов."
},
"installText": {
"type": "string",
"default": null,
"description": "Текстовая строка для отображения в диалоговом окне установки агента."
},
"image": {
"type": "string",
"default": null,
"description": "Имя файла изображения в формате .png, расположенного в meshcentral-data, для отображения в диалоге установки MeshCentral Agent; изображение должно быть квадратным, от 64x64 до 200x200."
},
"macosinstallerimage": {
"type": "string",
"default": null,
"description": "Имя файла фонового изображения в формате .png, расположенного в meshcentral-data, для отображения в установщике macOS."
},
"fileName": {
"type": "string",
"default": "meshagent",
"description": "Имя файла агента."
},
"foregroundColor": {
"type": "string",
"default": null,
"description": "Цвет текста переднего плана; допустимые значения — RBG в формате 0,0,0 до 255,255,255 или формат #000000 до #FFFFFF."
},
"backgroundColor": {
"type": "string",
"default": null,
"description": "Цвет фона; допустимые значения — RBG в формате 0,0,0 до 255,255,255 или формат #000000 до #FFFFFF."
}
}
},
"agentFileInfo": {
"type": "object",
"description": "Используйте этот раздел для задания ресурсных метаданных Windows-агентов перед подписанием. В Windows эти значения можно увидеть, щёлкнув правой кнопкой мыши и выбрав свойства.",
"properties": {
"icon": {
"type": "string",
"description": "Задаёт значок агента; это имя файла .ico, размещённого в папке meshcentral-data."
},
"fileDescription": {
"type": "string",
"description": "Описание исполняемого файла."
},
"fileVersion": {
"type": "string",
"description": "Версия исполняемого файла в форме 'n.n.n.n', например: '1.2.3.4'."
},
"internalName": {
"type": "string",
"description": "Внутреннее имя исполняемого файла."
},
"legalCopyright": {
"type": "string",
"description": "Юридическое уведомление об авторских правах исполняемого файла."
},
"originalFilename": {
"type": "string",
"description": "Исходное имя исполняемого файла."
},
"productName": {
"type": "string",
"description": "Название продукта исполняемого файла."
},
"productVersion": {
"type": "string",
"description": "Версия продукта исполняемого файла. Подойдёт любой строковый формат, но для корректного отображения этого значения в окне свойств Windows требуется буквенный символ. Например, 'v1.2.3.4' будет работать, а '1.2.3.4' — нет."
}
}
},
"assistantCustomization": {
"type": "object",
"description": "Используйте этот раздел для настройки MeshCentral Assistant.",
"properties": {
"title": {
"type": "string",
"default": "MeshCentral Assistant",
"description": "Имя, отображаемое как заголовок диалогового окна MeshCentral Assistant."
},
"image": {
"type": "string",
"default": null,
"description": "Имя файла изображения в формате .png, расположенного в meshcentral-data, для отображения в MeshCentral Assistant; изображение должно быть квадратным, от 64x64 до 128x128."
},
"fileName": {
"type": "string",
"default": "meshagent",
"description": "Имя файла MeshCentral Assistant."
}
}
},
"androidCustomization": {
"type": "object",
"description": "Используйте этот раздел для настройки MeshCentral Agent для Android.",
"properties": {
"title": {
"type": "string",
"default": "MeshCentral Agent",
"description": "Отображается в верхней части MeshCentral Agent для Android."
},
"subtitle": {
"type": "string",
"default": null,
"description": "Подзаголовок, отображаемый под заголовком на панели инструментов."
},
"image": {
"type": "string",
"default": null,
"description": "Имя файла изображения в формате .png, расположенного в meshcentral-data, для отображения в MeshCentral Agent для Android; изображение должно быть квадратным, от 64x64 до 128x128."
}
}
},
"ipBlockedUserRedirect": {
"type": "string",
"default": null,
"description": "Если задано, пользователь с запрещённого IP-адреса будет перенаправлен на этот URL."
},
"userRequiredHttpHeader": {
"type": "object",
"default": null,
"description": "Если задано, требует, чтобы запрос браузера содержал указанный HTTP-заголовок для разрешения входа пользователя. Пример: \"{ \"Sec-Fetch-Dest\": \"iframe\" }\""
},
"userAllowedIP": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задано, к серверу смогут подключаться только пользователи из разрешённых диапазонов IP-адресов. Пример: \"192.168.2.100,192.168.1.0/24\" \"file:userAllowedIP.txt\""
},
"userBlockedIP": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задано, пользователи из этих запрещённых диапазонов IP-адресов не смогут подключаться к серверу. Пример: \"192.168.2.100,192.168.1.0/24\" \"file:userBlockedIP.txt\""
},
"agentAllowedIP": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задано, к серверу смогут подключаться только агенты из разрешённых диапазонов IP-адресов. Пример: \"192.168.2.100,192.168.1.0/24\" \"file:agentAllowedIP.txt\""
},
"agentBlockedIP": {
"type": [
"string",
"array"
],
"default": null,
"description": "Если задано, агенты из этих запрещённых диапазонов IP-адресов не смогут подключаться к серверу. Пример: \"192.168.2.100,192.168.1.0/24\" \"file:agentBlockedIP.txt\""
},
"userSessionIdleTimeout": {
"type": "integer",
"default": null,
"description": "Если задано, неактивные пользователи будут отключены через заданное количество минут."
},
"logoutOnIdleSessionTimeout": {
"type": "boolean",
"default": true,
"description": "Определяет, должен ли MeshCentral выполнять logout после истечения тайм-аута неактивного сеанса или только отключать удалённый рабочий стол, терминал и файлы."
},
"userConsentFlags": {
"type": "object",
"description": "Используйте этот раздел, чтобы требовать согласие пользователя для этого домена.",
"properties": {
"desktopnotify": {
"type": "boolean",
"default": false,
"description": "Включить уведомление рабочего стола для этого домена."
},
"terminalnotify": {
"type": "boolean",
"default": false,
"description": "Включить уведомление терминала для этого домена."
},
"filenotify": {
"type": "boolean",
"default": false,
"description": "Включить уведомление файлов для этого домена."
},
"desktopprompt": {
"type": "boolean",
"default": false,
"description": "Включить запрос рабочего стола для этого домена."
},
"terminalprompt": {
"type": "boolean",
"default": false,
"description": "Включить запрос пользователя терминала для этого домена."
},
"fileprompt": {
"type": "boolean",
"default": false,
"description": "Включить запрос файлов для этого домена."
},
"desktopprivacybar": {
"type": "boolean",
"default": false,
"description": "Включить панель приватности удалённого рабочего стола для этого домена."
}
}
},
"urlSwitching": {
"type": "boolean",
"default": true,
"description": "Когда пользователи перемещаются по веб-интерфейсу, URL вверху будет меняться, указывая на текущий экран. Это позволяет пользователю обновить страницу или добавить URL в закладки и вернуться к правильному экрану. Установка false отключит эту функцию."
},
"desktopPrivacyBarText": {
"type": "string",
"description": "Текст, который будет показан в панели приватности удалённого рабочего стола. В строке можно использовать {0} для отображения realname учётной записи или {1} для отображения идентификатора учётной записи."
},
"limits": {
"type": "object",
"properties": {
"MaxDevices": {
"type": "integer",
"default": null,
"description": "Максимальное количество устройств в этом домене."
},
"MaxUserAccounts": {
"type": "integer",
"default": null,
"description": "Максимальное количество устройств в этом домене."
},
"MaxUserSessions": {
"type": "integer",
"default": null,
"description": "Максимальное количество пользовательских сеансов, которые могут подключаться к этому серверу для данного домена."
},
"MaxAgentSessions": {
"type": "integer",
"default": null,
"description": "Максимальное количество агентов, которые могут подключаться к этому серверу для данного домена."
},
"MaxSingleUserSessions": {
"type": "integer",
"default": null,
"description": "Максимальное количество сеансов, которое может иметь один пользователь. Каждый раз, когда пользователь открывает новую вкладку браузера или новый браузер на другом компьютере, создаётся новый пользовательский сеанс."
}
}
},
"files": {
"type": "object",
"description": "Значения, влияющие на функцию файлов",
"properties": {
"sftpConnect": {
"type": "boolean",
"default": true,
"description": "Если false, удаляет кнопку 'SFTP Connect' с вкладки файлов, если это не единственно возможный вариант."
}
}
},
"terminal": {
"type": "object",
"description": "Значения, влияющие на функцию терминала",
"properties": {
"sshConnect": {
"type": "boolean",
"default": true,
"description": "Если false, удаляет кнопку 'SSH Connect' с вкладки терминала, если это не единственно возможный вариант."
},
"linuxShell": {
"type": "string",
"enum": [
"any",
"root",
"user",
"login"
],
"default": "any",
"description": "Указывает терминал Linux по умолчанию, который используется при нажатии пользователем кнопки подключения терминала, и отключает правую кнопку мыши на кнопке подключения терминала, когда это задано."
},
"launchCommand": {
"type": "object",
"description": "Указывает, какую строку агент должен записать в shell после запуска терминального сеанса",
"linux": {
"type": "string",
"default": " alias ls=\\'ls --color=auto\\';clear\\n",
"description": "Строка, которую нужно записать после открытия терминала Linux."
},
"darwin": {
"type": "string",
"default": null,
"description": "Строка, которую нужно записать после открытия терминала macOS."
},
"freebsd": {
"type": "string",
"default": null,
"description": "Строка, которую нужно записать после открытия терминала FreeBSD."
}
}
}
},
"desktop": {
"type": "object",
"description": "Значения, влияющие на функцию рабочего стола",
"properties": {
"viewonly": {
"type": "boolean",
"description": "Если установлено true, функция удалённого рабочего стола работает только в режиме просмотра.",
"default": "false"
},
"disableconnectall": {
"type": "boolean",
"description": "Если установлено true, кнопки 'Connect All', 'Disconnect All' и 'Auto' удаляются с вкладки рабочего стола.",
"default": "false"
}
}
},
"upninsteadofuser": {
"type": "boolean",
"default": false,
"description": "Если установлено true, UPN (User Principal Name) отображается вместо имени пользователя в списке активных пользователей на вкладке General устройства."
},
"amtScanOptions": {
"description": "Список вариантов сканирования Intel AMT в локальной сети, предлагаемых в пользовательском интерфейсе. Например [\"LabNetwork 192.168.15.0/23\", \"SalesNetwork 192.168.8.0/24\"].",
"type": "array",
"default": null,
"items": {
"type": "string"
}
},
"amtManager": {
"type": "object",
"description": "Информация, передаваемая модулю AMT manager, которая влияет на все устройства Intel AMT, управляемые в этом домене.",
"properties": {
"TlsConnections": {
"type": "boolean",
"default": true,
"description": "Если установлено false, MeshCentral НЕ будет использовать TLS для подключения к Intel AMT; это не рекомендуется."
},
"TlsAcmActivation": {
"type": "boolean",
"default": false,
"description": "Если установлено true, MeshCentral попытается выполнить TLS ACM-активацию на Intel AMT v14+."
},
"AdminAccounts": {
"description": "Список имён пользователей и паролей, которые нужно попробовать при подключении к Intel AMT.",
"type": "array",
"items": {
"type": "object",
"required": [
"pass"
],
"properties": {
"user": {
"description": "Имя пользователя администратора Intel AMT.",
"type": "string",
"default": "admin"
},
"pass": {
"description": "Пароль администратора Intel AMT.",
"type": "string"
}
}
}
},
"EnvironmentDetection": {
"description": "Список до 4 доменных суффиксов для настройки в Intel AMT при активации CIRA.",
"type": "array",
"items": {
"type": "string",
"minItems": 1,
"maxItems": 4,
"uniqueItems": true
}
},
"TlsRootCert": {
"description": "Указывает сертификат и закрытый ключ, используемые для выпуска TLS-сертификатов Intel AMT. По умолчанию используется самоподписанный корневой сертификат MeshCentral.",
"type": "object",
"properties": {
"certpfx": {
"description": "Имя файла сертификата в формате .p12 или .pfx в meshcentral-data; используйте вместе с certpfxpass.",
"type": "string"
},
"certpfxpass": {
"description": "Пароль для файла, указанного в certpfx.",
"type": "string"
},
"certfile": {
"description": "Имя файла сертификата в формате PEM, расположенного в meshcentral-data. Используется вместе с keyfile.",
"type": "string"
},
"keyfile": {
"description": "Имя файла закрытого ключа в формате PEM, расположенного в meshcentral-data. Используется вместе с certfile.",
"type": "string"
}
}
},
"WifiProfiles": {
"description": "Список WIFI-профилей для настройки на любом управляемом устройстве Intel AMT с сетевым интерфейсом WIFI.",
"type": "array",
"items": {
"type": "object",
"required": [
"ssid"
],
"properties": {
"name": {
"description": "Имя WIFI-профиля; если не указано, используется SSID.",
"type": "string"
},
"ssid": {
"description": "SSID WIFI-станции.",
"type": "string"
},
"authentication": {
"description": "Аутентификация WIFI.",
"type": "string",
"enum": [
"wpa-psk",
"wpa2-psk",
"wpa-8021x",
"wpa2-802.1x",
"wpa3-sae-802.1x",
"wpa3-owe-802.1x"
],
"default": "wpa2-psk"
},
"encryption": {
"description": "Шифрование WIFI.",
"type": "string",
"enum": [
"ccmp-aes",
"tkip-rc4"
],
"default": "ccmp-aes"
},
"password": {
"description": "Пароль WIFI-станции",
"type": "string",
"minLength": 8,
"maxLength": 63
},
"802.1x": {
"description": "Настройки 802.1x для этого WIFI-профиля. Требуется только если тип аутентификации WIFI содержит 802.1x",
"default": null,
"type": "object",
"required": [
"authenticationProtocol"
],
"properties": {
"authenticationProtocol": {
"description": "Определяет протокол аутентификации, используемый для проверки запрашивающего доступ к серверу AAA.",
"type": [
"integer",
"string"
],
"enum": [
"EAP-TLS",
"EAP-TTLS/MSCHAPv2",
"PEAPv0/EAP-MSCHAPv2",
"PEAPv1/EAP-GTC",
"EAP-FAST/MSCHAPv2",
"EAP-FAST/GTC",
"EAP-MD5",
"EAP-PSK",
"EAP-SIM",
"EAP-AKA",
"EAP-FAST/TLS",
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
]
},
"serverCertificateNameComparison": {
"type": [
"integer",
"string"
],
"default": "FullName",
"description": "Определяет алгоритм сравнения значения ServerCertificateName с полем имени субъекта сертификата, предоставленного сервером AAA.",
"enum": [
"FullName",
"DomainSuffix",
2,
3
]
},
"serverCertificateName": {
"type": "string",
"default": null,
"description": "Имя, сравниваемое с полем имени субъекта в сертификате, предоставленном сервером AAA.",
"maxLength": 80
},
"availableInS0": {
"type": "boolean",
"default": true,
"description": "Указывает настройку активности модуля 802.1X в состоянии H0"
},
"protectedAccessCredentialHex": {
"type": "string",
"default": null,
"description": "Учётные данные, используемые supplicant и сервером AAA для создания взаимно аутентифицированного зашифрованного туннеля для конфиденциальной аутентификации пользователя.",
"maxLength": 64
},
"pacPassword": {
"type": "string",
"default": null,
"description": "Необязательный пароль для извлечения информации PAC (Protected Access Credential) из PAC-данных.",
"maxLength": 256
},
"domain": {
"type": "string",
"default": null,
"description": "Домен, в пределах которого Username является уникальным.",
"maxLength": 128
},
"username": {
"type": "string",
"default": null,
"description": "В домене, указанном Domain, идентифицирует пользователя, запрашивающего доступ к сети.",
"maxLength": 128
},
"password": {
"type": "string",
"default": null,
"description": "Пароль, связанный с пользователем, идентифицированным Username и Domain.",
"maxLength": 32
},
"roamingIdentity": {
"type": "string",
"default": null,
"description": "Строка, передаваемая серверу аутентификации при обмене по протоколу 802.1x",
"maxLength": 80
},
"pxeTimeoutInSeconds": {
"type": "integer",
"default": 120,
"description": "Тайм-аут в секундах, в течение которого Intel(R) AMT будет удерживать аутентифицированный сеанс 802.1X."
}
}
}
}
}
},
"802.1x": {
"description": "Настройки 802.1x для проводного интерфейса Intel AMT. Если установлено false, существующий проводной профиль 802.1x будет удалён из Intel AMT.",
"default": null,
"type": [
"object",
"boolean"
],
"required": [
"authenticationProtocol"
],
"properties": {
"authenticationProtocol": {
"description": "Определяет протокол аутентификации, используемый для проверки запрашивающего доступ к серверу AAA.",
"type": [
"integer",
"string"
],
"enum": [
"EAP-TLS",
"EAP-TTLS/MSCHAPv2",
"PEAPv0/EAP-MSCHAPv2",
"PEAPv1/EAP-GTC",
"EAP-FAST/MSCHAPv2",
"EAP-FAST/GTC",
"EAP-MD5",
"EAP-PSK",
"EAP-SIM",
"EAP-AKA",
"EAP-FAST/TLS",
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
]
},
"serverCertificateNameComparison": {
"type": [
"integer",
"string"
],
"description": "Определяет алгоритм сравнения значения ServerCertificateName с полем имени субъекта сертификата, предоставленного сервером AAA.",
"enum": [
"FullName",
"DomainSuffix",
2,
3
]
},
"serverCertificateName": {
"type": "string",
"default": null,
"description": "Имя, сравниваемое с полем имени субъекта в сертификате, предоставленном сервером AAA.",
"maxLength": 80
},
"availableInS0": {
"type": "boolean",
"default": true,
"description": "Указывает настройку активности модуля 802.1X в состоянии H0"
},
"protectedAccessCredentialHex": {
"type": "string",
"default": null,
"description": "Учётные данные, используемые supplicant и сервером AAA для создания взаимно аутентифицированного зашифрованного туннеля для конфиденциальной аутентификации пользователя.",
"maxLength": 64
},
"pacPassword": {
"type": "string",
"default": null,
"description": "Необязательный пароль для извлечения информации PAC (Protected Access Credential) из PAC-данных.",
"maxLength": 256
},
"domain": {
"type": "string",
"default": null,
"description": "Домен, в пределах которого Username является уникальным.",
"maxLength": 128
},
"username": {
"type": "string",
"default": null,
"description": "В домене, указанном Domain, идентифицирует пользователя, запрашивающего доступ к сети.",
"maxLength": 128
},
"password": {
"type": "string",
"default": null,
"description": "Пароль, связанный с пользователем, идентифицированным Username и Domain.",
"maxLength": 32
},
"roamingIdentity": {
"type": "string",
"default": null,
"description": "Строка, передаваемая серверу аутентификации при обмене по протоколу 802.1x",
"maxLength": 80
},
"pxeTimeoutInSeconds": {
"type": "integer",
"default": 120,
"description": "Тайм-аут в секундах, в течение которого Intel(R) AMT будет удерживать аутентифицированный сеанс 802.1X."
}
}
}
}
},
"amtAcmActivation": {
"type": "object",
"properties": {
"log": {
"type": "string"
},
"strictCommonName": {
"type": "boolean",
"default": false,
"description": "Если установлено true, common name сертификата должен точно совпадать с доверенным FQDN Intel AMT или DHCP Option 15. Если false, при сопоставлении может допускаться некоторая гибкость."
},
"certs": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"certfiles": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
}
},
"keyfile": {
"type": "string"
}
},
"required": [
"certfiles",
"keyfile"
]
}
}
},
"required": [
"certs"
]
},
"redirects": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Используется для создания HTTP-перенаправлений. Например, настройка \"redirects\": { \"example\":\"https://example.com\" } приведёт к тому, что любой доступ к /example на сервере будет перенаправлен на указанный URL."
},
"duo2factor": {
"type": "object",
"properties": {
"integrationkey": {
"type": "string",
"default": "",
"description": "Integration key от Duo"
},
"secretkey": {
"type": "string",
"default": "",
"description": "Secret key от Duo"
},
"apihostname": {
"type": "string",
"default": "",
"description": "API Hostname от Duo"
}
}
},
"yubikey": {
"type": "object",
"description": "Конфигурация Yubikey OTP (получить API Key: https://upgrade.yubico.com/getapikey/)",
"properties": {
"id": {
"type": "string",
"description": "Client ID Yubikey"
},
"secret": {
"type": "string",
"description": "Secret key Yubikey"
}
},
"required": [
"id",
"secret"
]
},
"allowedFramingOrigins": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"default": null,
"description": "Переопределение для домена. Список источников, которым разрешено встраивать этот домен в iframe. Использует Content-Security-Policy frame-ancestors. При задании переопределяет settings.allowedFramingOrigins."
},
"httpHeaders": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Используется для добавления пользовательских HTTP-заголовков ко всем ответам. Например, настройка \"httpHeaders\": { \"X-Frame-Options\":\"DENY\" } добавит заголовок X-Frame-Options ко всем ответам."
},
"agentConfig": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"default": null,
"description": "Ключи и значения для добавления в файл MeshAgent .msh"
},
"assistantConfig": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"default": null,
"description": "Ключи и значения для добавления в файл MeshCentral Assistant .msh"
},
"clipboardGet": {
"type": "boolean",
"default": true,
"description": "Если false, пользователи не смогут задавать буфер обмена удалённого устройства."
},
"clipboardSet": {
"type": "boolean",
"default": true,
"description": "Если false, пользователи не смогут получать буфер обмена удалённого устройства."
},
"localSessionRecording": {
"type": "boolean",
"default": true,
"description": "Если false, удаляет функцию локальной записи удалённого рабочего стола."
},
"sessionRecording": {
"type": "object",
"description": "Значения, влияющие на функцию записи сеансов",
"properties": {
"onlySelectedUsers": {
"type": "boolean",
"default": false,
"description": "Если включено, будут записываться только пользователи устройств, у которых включена функция записи сеанса. Если false, записываются все пользователи."
},
"onlySelectedUserGroups": {
"type": "boolean",
"default": false,
"description": "Если включено, будут записываться только группы пользователей устройств, у которых включена функция записи сеанса. Если false, записываются все пользователи."
},
"onlySelectedDeviceGroups": {
"type": "boolean",
"default": false,
"description": "Если включено, будут записываться только группы устройств, у которых включена функция записи сеанса. Если false, записываются все устройства."
},
"filepath": {
"type": "string",
"default": "meshcentral-recordings",
"description": "Путь, где хранятся файлы записей. По умолчанию используется \"meshcentral-recordings\", расположенная рядом с \"meshcentral-data\"."
},
"index": {
"type": "boolean",
"default": false,
"description": "Если true, автоматически индексирует записи удалённого рабочего стола, чтобы воспроизведение могло переходить к любому месту в файле."
},
"maxRecordings": {
"type": "integer",
"default": null,
"description": "Максимальное количество файлов записей для хранения."
},
"maxRecordingDays": {
"type": "integer",
"default": null,
"description": "Максимальное количество дней хранения записи."
},
"maxRecordingSizeMegabytes": {
"type": "integer",
"default": null,
"description": "Максимальный объём записей в мегабайтах. При превышении удаляются самые старые записи."
},
"protocols": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "integer"
},
"description": "Это массив: 1 = Terminal, 2 = Desktop, 5 = Files, 6 = Admin Powershell, 8 = User Shell, 9 = User Powershell, 100 = Intel AMT WSMAN, 101 = Intel AMT Redirection, 200 = Messenger"
}
},
"required": [
"protocols"
]
},
"showPasswordLogin": {
"type": "boolean",
"default": true,
"description": "Если установлено false, скрывает запрос имени пользователя и пароля на экране входа."
},
"sendgrid": {
"title": "Почтовый сервер SendGrid.com",
"description": "Подключает MeshCentral к почтовому серверу SendGrid; позволяет MeshCentral отправлять email-сообщения для 2FA или уведомлений пользователей.",
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "email",
"description": "Адрес электронной почты, используемый в поле from сообщений."
},
"apikey": {
"type": "string",
"description": "API-ключ SendGrid."
},
"verifyemail": {
"type": "boolean",
"default": true,
"description": "Если установлено false, формат email и DNS MX-запись не проверяются."
},
"emailDelaySeconds": {
"type": "integer",
"default": 300,
"description": "Время ожидания перед отправкой email-уведомления о подключении/отключении устройства. Если произошло много событий, они будут объединены в одно письмо."
}
},
"required": [
"from",
"apikey"
]
},
"smtp": {
"title": "Почтовый SMTP-сервер",
"description": "Подключает MeshCentral к SMTP-почтовому серверу; позволяет MeshCentral отправлять email-сообщения для 2FA или уведомлений пользователей.",
"type": "object",
"properties": {
"name": {
"type": "string",
"format": "hostname",
"description": "Необязательное имя хоста клиента; по умолчанию используется имя хоста машины. Полезно для SMTP-реле. Также можно указать \"console\" для отладочного вывода в консоль."
},
"host": {
"type": "string",
"format": "hostname",
"description": "Имя хоста SMTP-сервера."
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 587,
"description": "Номер порта SMTP-сервера. По умолчанию 587, если \"tls\" равно false, или 465, если \"tls\" равно true)"
},
"from": {
"type": "string",
"format": "email",
"description": "Адрес электронной почты, используемый в поле from сообщений."
},
"user": {
"type": "string",
"description": "Имя пользователя SMTP."
},
"pass": {
"type": "string",
"description": "Пароль SMTP."
},
"tls": {
"type": "boolean",
"default": false,
"description": "Настроить SMTP на использование TLS для соединений; по умолчанию false"
},
"auth": {
"type": "object",
"description": "Используется для аутентификации OAuth2",
"properties": {
"clientId": {
"type": "string",
"description": "Client ID OAuth2"
},
"clientSecret": {
"type": "string",
"description": "Client secret OAuth2"
},
"refreshToken": {
"type": "string",
"description": "Refresh token OAuth2"
},
"type": {
"type": "string",
"default": "login",
"description": "Указание типа аутентификации: по умолчанию 'login' или 'oauth2'"
}
},
"required": [
"clientId",
"clientSecret",
"refreshToken"
]
},
"tlscertcheck": {
"type": "boolean",
"description": "Если установлено false, сертификат SMTP-сервера не проверяется."
},
"tlsstrict": {
"type": "boolean",
"description": "Если установлено true, сертификат SMTP-сервера должен быть действительным и подписанным доверенным CA."
},
"verifyemail": {
"type": "boolean",
"default": true,
"description": "Если установлено false, формат email и DNS MX-запись не проверяются."
},
"emailDelaySeconds": {
"type": "integer",
"default": 300,
"description": "Время ожидания перед отправкой email-уведомления о подключении/отключении устройства. Если произошло много событий, они будут объединены в одно письмо."
}
},
"required": [
"host",
"port",
"from",
"tls"
]
},
"sendmail": {
"title": "Отправка email с помощью команды sendmail",
"description": "Заставляет MeshCentral отправлять письма с помощью Unix-команды sendmail. Позволяет MeshCentral отправлять email-сообщения для 2FA или уведомлений пользователей.",
"type": "object",
"properties": {
"newline": {
"type": "string",
"default": "unix",
"description": "Возможные значения: unix или windows"
},
"path": {
"type": "string",
"default": "sendmail",
"description": "Путь к команде sendmail"
},
"args": {
"type": "array",
"items": {
"type": "string"
},
"default": null,
"description": "Массив аргументов для передачи sendmail"
},
"emailDelaySeconds": {
"type": "integer",
"default": 300,
"description": "Время ожидания перед отправкой email-уведомления о подключении/отключении устройства. Если произошло много событий, они будут объединены в одно письмо."
}
}
},
"authStrategies": {
"type": "object",
"description": "Стратегии аутентификации для MeshCentral",
"properties": {
"twitter": {
"type": "object",
"description": "Аутентификация Twitter",
"properties": {
"callbackurl": {
"type": "string",
"format": "uri",
"description": "URL, на который Twitter перенаправит после аутентификации."
},
"newAccounts": {
"type": "boolean",
"default": false,
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через Twitter."
},
"newAccountsUserGroups": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через Twitter, и добавляться в указанные группы."
},
"newAccountsRights": {
"type": [
"array",
"string"
],
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Права сервера по умолчанию, назначаемые вновь созданным учётным записям. Допустимые значения: fulladmin, manageusers, serverbackup, serverrestore, serverupdate, fileaccess, locked, nonewgroups, nonewdevices, notools, usergroups, recordings, locksettings, allevents"
},
"clientid": {
"type": "string",
"description": "Client ID Twitter."
},
"clientsecret": {
"type": "string",
"description": "Client secret Twitter."
},
"logouturl": {
"type": "string",
"format": "uri",
"description": "Если задано, пользователь будет перенаправлен на этот URL при нажатии ссылки выхода."
}
},
"required": [
"clientid",
"clientsecret"
]
},
"google": {
"type": "object",
"description": "Аутентификация Google",
"properties": {
"callbackurl": {
"type": "string",
"format": "uri",
"description": "URL, на который Google перенаправит после аутентификации."
},
"newAccounts": {
"type": "boolean",
"default": false,
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через Google."
},
"newAccountsUserGroups": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через Google, и добавляться в указанные группы."
},
"newAccountsRights": {
"type": [
"array",
"string"
],
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Права сервера по умолчанию, назначаемые вновь созданным учётным записям. Допустимые значения: fulladmin, manageusers, serverbackup, serverrestore, serverupdate, fileaccess, locked, nonewgroups, nonewdevices, notools, usergroups, recordings, locksettings, allevents"
},
"clientid": {
"type": "string",
"description": "Client ID Google."
},
"clientsecret": {
"type": "string",
"description": "Client secret Google."
},
"logouturl": {
"type": "string",
"format": "uri",
"description": "Если задано, пользователь будет перенаправлен на этот URL при нажатии ссылки выхода."
}
},
"required": [
"clientid",
"clientsecret"
]
},
"github": {
"type": "object",
"description": "Аутентификация GitHub",
"properties": {
"callbackurl": {
"type": "string",
"format": "uri",
"description": "URL, на который GitHub перенаправит после аутентификации."
},
"newAccounts": {
"type": "boolean",
"default": false,
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через GitHub."
},
"newAccountsUserGroups": {
"type": "array",
"uniqueItems": true,
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через GitHub, и добавляться в указанные группы.",
"items": {
"type": "string"
}
},
"newAccountsRights": {
"type": [
"array",
"string"
],
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Права сервера по умолчанию, назначаемые вновь созданным учётным записям. Допустимые значения: fulladmin, manageusers, serverbackup, serverrestore, serverupdate, fileaccess, locked, nonewgroups, nonewdevices, notools, usergroups, recordings, locksettings, allevents"
},
"clientid": {
"type": "string",
"description": "Client ID GitHub."
},
"clientsecret": {
"type": "string",
"description": "Client secret GitHub."
},
"authorizationurl": {
"type": "string",
"format": "uri",
"description": "URL, используемый для получения authorization grant от пользователя."
},
"tokenurl": {
"type": "string",
"format": "uri",
"description": "URL, используемый для обмена кода на access token."
},
"userprofileurl": {
"type": "string",
"format": "uri",
"description": "URL, используемый для получения информации профиля пользователя."
},
"useremailurl": {
"type": "string",
"format": "uri",
"description": "URL, используемый для получения информации об email пользователя."
},
"logouturl": {
"type": "string",
"format": "uri",
"description": "Если задано, пользователь будет перенаправлен на этот URL при нажатии ссылки выхода."
}
},
"required": [
"clientid",
"clientsecret"
]
},
"azure": {
"type": "object",
"description": "Аутентификация Azure",
"properties": {
"callbackurl": {
"type": "string",
"format": "uri",
"description": "URL, на который Azure перенаправит после аутентификации."
},
"newAccounts": {
"type": "boolean",
"default": false,
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через Azure."
},
"newAccountsUserGroups": {
"type": "array",
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через Azure, и добавляться в указанные группы.",
"uniqueItems": true,
"items": {
"type": "string"
}
},
"newAccountsRights": {
"type": [
"array",
"string"
],
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Права сервера по умолчанию, назначаемые вновь созданным учётным записям. Допустимые значения: fulladmin, manageusers, serverbackup, serverrestore, serverupdate, fileaccess, locked, nonewgroups, nonewdevices, notools, usergroups, recordings, locksettings, allevents"
},
"clientid": {
"type": "string",
"description": "Client ID Azure."
},
"clientsecret": {
"type": "string",
"description": "Client secret Azure."
},
"tenantid": {
"type": "string",
"description": "Tenant ID Azure."
},
"logouturl": {
"type": "string",
"format": "uri",
"description": "Если задано, пользователь будет перенаправлен на этот URL при нажатии ссылки выхода."
}
},
"required": [
"clientid",
"clientsecret",
"tenantid"
]
},
"jumpcloud": {
"type": "object",
"description": "Аутентификация JumpCloud",
"properties": {
"callbackurl": {
"type": "string",
"format": "uri",
"description": "URL, на который JumpCloud перенаправит после аутентификации."
},
"newAccounts": {
"type": "boolean",
"default": false,
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через JumpCloud."
},
"newAccountsUserGroups": {
"type": "array",
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через JumpCloud, и добавляться в указанные группы.",
"uniqueItems": true,
"items": {
"type": "string"
}
},
"newAccountsRights": {
"type": [
"array",
"string"
],
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Права сервера по умолчанию, назначаемые вновь созданным учётным записям. Допустимые значения: fulladmin, manageusers, serverbackup, serverrestore, serverupdate, fileaccess, locked, nonewgroups, nonewdevices, notools, usergroups, recordings, locksettings, allevents"
},
"entityid": {
"type": "string",
"description": "Entity ID JumpCloud."
},
"idpurl": {
"type": "string",
"format": "uri",
"description": "IDP URL JumpCloud."
},
"cert": {
"type": "string",
"description": "Сертификат JumpCloud."
},
"logouturl": {
"type": "string",
"format": "uri",
"description": "Если задано, пользователь будет перенаправлен на этот URL при нажатии ссылки выхода."
}
},
"required": [
"entityid",
"idpurl",
"cert"
]
},
"saml": {
"type": "object",
"description": "Аутентификация SAML",
"properties": {
"callbackurl": {
"type": "string",
"format": "uri",
"description": "URL, на который SAML перенаправит после аутентификации."
},
"disableRequestedAuthnContext": {
"type": "boolean",
"description": "Если задано, requestedAuthnContext будет отключён.",
"default": false
},
"newAccounts": {
"type": "boolean",
"default": false,
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через SAML."
},
"newAccountsUserGroups": {
"type": "array",
"uniqueItems": true,
"description": "Если задано, будут создаваться новые учётные записи для пользователей, прошедших аутентификацию через SAML, и добавляться в указанные группы.",
"items": {
"type": "string"
}
},
"newAccountsRights": {
"type": [
"array",
"string"
],
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Права сервера по умолчанию, назначаемые вновь созданным учётным записям. Допустимые значения: fulladmin, manageusers, serverbackup, serverrestore, serverupdate, fileaccess, locked, nonewgroups, nonewdevices, notools, usergroups, recordings, locksettings, allevents"
},
"entityid": {
"type": "string",
"description": "Entity ID SAML."
},
"idpurl": {
"type": "string",
"format": "uri",
"description": "IDP URL SAML."
},
"cert": {
"type": "string",
"description": "Сертификат SAML."
},
"logouturl": {
"type": "string",
"format": "uri",
"description": "Если задано, пользователь будет перенаправлен на этот URL при нажатии ссылки выхода."
}
},
"required": [
"entityid",
"idpurl",
"cert"
]
},
"oidc": {
"type": "object",
"description": "Включает использование SSO OpenID Connect",
"anyOf": [
{
"required": [
"client"
]
},
{
"required": [
"client",
"custom"
]
},
{
"required": [
"client",
"issuer"
]
},
{
"required": [
"clientid",
"clientsecret",
"issuer"
]
}
],
"properties": {
"newAccounts": {
"type": "boolean",
"description": "Включает создание новых учётных записей на основе авторизации IdP",
"default": true
},
"newAccountsUserGroups": {
"type": [
"string",
"array"
],
"description": "Добавлять всех новых пользователей в эти статические группы пользователей MeshCentral. Используйте это, если раздел новых групп не работает с вашим preset.",
"uniqueItems": true,
"items": {
"type": "string"
}
},
"newAccountsRights": {
"type": [
"array",
"string"
],
"uniqueItems": true,
"items": {
"type": "string"
},
"description": "Права сервера по умолчанию, назначаемые вновь созданным учётным записям. Допустимые значения: fulladmin, manageusers, serverbackup, serverrestore, serverupdate, fileaccess, locked, nonewgroups, nonewdevices, notools, usergroups, recordings, locksettings, allevents"
},
"clientid": {
"type": "string",
"depreciated": true,
"description": "ЗАМЕНЕНО НА 'client.client_id'"
},
"clientsecret": {
"type": "string",
"description": "ЗАМЕНЕНО НА 'client.client_secret'"
},
"authorizationURL": {
"type": "string",
"format": "uri",
"depreciated": true,
"description": "ЗАМЕНЕНО НА 'issuer.authorization_endpoint'"
},
"tokenURL": {
"type": "string",
"format": "uri",
"depreciated": true,
"description": "ЗАМЕНЕНО НА 'issuer.token_endpoint': если задано, будет использоваться как URL токена."
},
"userInfoURL": {
"type": "string",
"format": "uri",
"depreciated": true,
"description": "ЗАМЕНЕНО НА 'issuer.userinfo_endpoint': если задано, будет использоваться как URL информации о пользователе."
},
"scope": {
"type": [
"string",
"array"
],
"depreciated": true,
"description": "ЗАМЕНЕНО НА 'custom.scope': список scope, запрашиваемых у issuer."
},
"callbackURL": {
"type": "string",
"format": "uri",
"depreciated": true,
"description": "ЗАМЕНЕНО НА 'client.redirect_uri': URI, на который ваш IdP возвращает вас после успешной авторизации. Он должен совпадать с указанным у вашего IdP."
},
"logouturl": {
"type": "string",
"format": "uri",
"description": "Переопределяет значения по умолчанию ( [issuer.end_session_endpoint]?post_logout_redirect_uri=[post_logout_redirect_uri] ИЛИ [issuer.end_session_endpoint] )"
},
"client": {
"type": "object",
"description": "Параметры клиента OIDC",
"properties": {
"client_id": {
"type": "string",
"description": "ОБЯЗАТЕЛЬНО: client ID, предоставленный вашим Identity Provider (IdP)"
},
"client_secret": {
"type": "string",
"description": "ОБЯЗАТЕЛЬНО: client secret, предоставленный вашим Identity Provider (IdP)"
},
"id_token_signed_response_alg": {
"type": "string",
"default": "RS256",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"id_token_encrypted_response_alg": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"id_token_encrypted_response_enc": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"userinfo_signed_response_alg": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"userinfo_encrypted_response_alg": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"userinfo_encrypted_response_enc": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"redirect_uri": {
"type": "string",
"format": "uri",
"description": "URI, на который ваш IdP отправляет вас после успешной авторизации. Он должен совпадать с указанным у вашего IdP. (По умолчанию: https://[currentHost][currentPath]/auth-oidc-callback)"
},
"response_types": {
"type": [
"string",
"array"
],
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub",
"default": [
"code"
]
},
"post_logout_redirect_uri": {
"type": [
"string",
"boolean"
],
"format": "uri",
"description": "URI, на который ваш IdP отправляет вас после выхода из IdP через MeshCentral. (По умолчанию: https:[currentHost][currentPath]/login) ИЛИ задайте false, чтобы не отправлять post_logout_redirect_uri"
},
"default_max_age": {
"type": "number",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"require_auth_time": {
"type": "boolean",
"default": false,
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"request_object_signing_alg": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"request_object_encryption_alg": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"request_object_encryption_enc": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"token_endpoint_auth_method": {
"type": "string",
"default": "client_secret_basic",
"enum": [
"none",
"client_secret_basic",
"client_secret_post",
"client_secret_jwt",
"private_key_jwt"
],
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"introspection_endpoint_auth_method": {
"type": "string",
"default": "client_secret_basic",
"enum": [
"none",
"client_secret_basic",
"client_secret_post",
"client_secret_jwt",
"private_key_jwt"
],
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"revocation_endpoint_auth_method": {
"type": "string",
"default": "client_secret_basic",
"enum": [
"none",
"client_secret_basic",
"client_secret_post",
"client_secret_jwt",
"private_key_jwt"
],
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"token_endpoint_auth_signing_alg": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"introspection_endpoint_auth_signing_alg": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"revocation_endpoint_auth_signing_alg": {
"type": "string",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
},
"tls_client_certificate_bound_access_tokens": {
"type": "boolean",
"description": "РАСШИРЕННАЯ НАСТРОЙКА: подробности см. в node-openid-client на GitHub"
}
},
"required": [
"client_id",
"client_secret"
]
},
"issuer": {
"type": [
"string",
"object"
],
"format": "uri",
"description": "Параметры issuer. Требует URI issuer (issuer.issuer) для обнаружения отсутствующей информации, если не используется preset",
"properties": {
"issuer": {
"type": "string",
"format": "uri",
"description": "URI issuer."
},
"authorization_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при входе."
},
"token_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при запросе токенов."
},
"jwks_uri": {
"type": "string",
"format": "uri",
"description": "URI для получения JSON Web Key Set."
},
"userinfo_endpoint": {
"type": "string",
"format": "uri",
"description": "URI для получения информации о пользователе."
},
"revocation_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при отзыве токенов."
},
"introspection_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при introspection токенов."
},
"end_session_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при выходе из MeshCentral. (Пытается определить автоматически, по умолчанию '[issuer.issuer]/logout')"
},
"registration_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при регистрации нового клиента."
},
"token_endpoint_auth_methods_supported": {
"type": "string",
"description": "Поддерживаемые методы аутентификации token endpoint."
},
"token_endpoint_auth_signing_alg_values_supported": {
"type": "string",
"description": "Поддерживаемые алгоритмы подписи аутентификации token endpoint."
},
"introspection_endpoint_auth_methods_supported": {
"type": "string",
"description": "Поддерживаемые методы аутентификации introspection endpoint."
},
"introspection_endpoint_auth_signing_alg_values_supported": {
"type": "string",
"description": "Поддерживаемые алгоритмы подписи аутентификации introspection endpoint."
},
"revocation_endpoint_auth_methods_supported": {
"type": "string",
"description": "Поддерживаемые методы аутентификации revocation endpoint."
},
"revocation_endpoint_auth_signing_alg_values_supported": {
"type": "string",
"description": "Поддерживаемые алгоритмы подписи аутентификации revocation endpoint."
},
"request_object_signing_alg_values_supported": {
"type": "string",
"description": "Поддерживаемые алгоритмы подписи request object."
},
"mtls_endpoint_aliases": {
"type": "object",
"description": "Псевдонимы конечных точек MTLS.",
"properties": {
"token_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при запросе токенов."
},
"userinfo_endpoint": {
"type": "string",
"format": "uri",
"description": "URI для получения информации о пользователе."
},
"revocation_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при отзыве токенов."
},
"introspection_endpoint": {
"type": "string",
"format": "uri",
"description": "URI, на который направлять пользователей при introspection токенов."
}
}
}
}
},
"custom": {
"type": "object",
"properties": {
"scope": {
"type": [
"string",
"array"
],
"description": "Список scope, запрашиваемых у issuer.",
"default": "openid profile email",
"examples": [
"openid",
[
"openid",
"profile"
],
"openid profile email",
"openid profile email groups"
]
},
"claims": {
"type": "object",
"description": "Пользовательские claims для использования.",
"properties": {
"email": {
"type": "string",
"description": "Пользовательский claim, используемый для email."
},
"name": {
"type": "string",
"description": "Пользовательский claim, используемый для имени."
},
"uuid": {
"type": "string",
"description": "Пользовательский claim, используемый для uuid."
}
}
},
"preset": {
"type": "string",
"description": "Preset для конфигурации OIDC",
"enum": [
"azure",
"google"
]
},
"buttonText": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Пользовательский текст для кнопок входа OIDC, отображаемых на странице входа (только tooltip). Минимум 1 символ, максимум 128 символов."
},
"buttonIconUrl": {
"type": "string",
"description": "URL размещённой иконки для стандартных дисплеев (поддерживаются PNG, JPEG, WEBP, GIF, ICO, SVG). Сервер проверяет удалённые изображения перед использованием; если проверка не пройдена, интерфейс возвращается к локальным иконкам входа. Используется как для 1x, так и для 2x, если buttonIconUrl2x не задан.",
"format": "uri",
"pattern": "^[hH][tT][tT][pP][sS]?://"
},
"buttonIconUrl2x": {
"type": "string",
"description": "Необязательный URL иконки более высокого разрешения для дисплеев 2x/high-DPI. Если не задано, buttonIconUrl используется для обоих. Сервер проверяет удалённые изображения перед использованием.",
"format": "uri",
"pattern": "^[hH][tT][tT][pP][sS]?://"
},
"tenant_id": {
"type": "string",
"description": "ОБЯЗАТЕЛЬНО ДЛЯ AZURE PRESET: Tenantid для Azure"
},
"customer_id": {
"type": "string",
"description": "ОБЯЗАТЕЛЬНО ПРИ ИСПОЛЬЗОВАНИИ ГРУПП: Customer ID из Google Workspace Admin Console (https://admin.google.com/ac/accountsettings/profile)"
},
"authorities": {
"type": "array",
"description": "Значение по умолчанию — groups. Roles можно использовать в Azure для назначения разрешений приложения",
"items": {
"type": "string",
"enum": [
"groups",
"roles"
]
}
}
}
},
"groups": {
"type": "object",
"description": "Настройки групп для OIDC",
"properties": {
"recursive": {
"type": "boolean",
"default": false,
"description": "Если true, членство в группах будет сканироваться рекурсивно."
},
"required": {
"type": [
"array"
],
"description": "Доступ предоставляется только пользователям, которые являются участниками хотя бы одной из перечисленных обязательных групп."
},
"siteadmin": {
"type": [
"array"
],
"description": "Полные права администратора сайта будут предоставлены пользователям, которые являются участниками хотя бы одной из перечисленных административных групп."
},
"revokeAdmin": {
"type": "boolean",
"description": "Если true, права администратора будут отозваны у пользователей, которые НЕ являются участниками хотя бы одной из перечисленных административных групп."
},
"sync": {
"type": [
"boolean",
"object"
],
"default": false,
"description": "Если true, все группы, найденные при входе пользователя, зеркально создаются в группах пользователей MeshCentral.",
"properties": {
"filter": {
"type": [
"array"
],
"description": "Только перечисленные здесь группы зеркально создаются в группах пользователей MeshCentral."
}
}
},
"scope": {
"type": "string",
"default": "groups",
"description": "Пользовательский scope для использования."
},
"claim": {
"type": "string",
"default": "groups",
"description": "Пользовательский claim для использования."
}
}
},
"options": {
"type": "object",
"description": "Пользовательские параметры для передачи в OpenID Client"
}
}
}
}
},
"showLanguageSelect": {
"type": "string",
"default": null,
"description": "Показывать выбор языка на странице входа: \"top\" внутри блока входа или \"bottom\" внизу страницы",
"enum": [
null,
"top",
"bottom"
]
}
},
"patternProperties": {
"^_.*": {
"type": "null",
"x-disabled": true,
"x-enabled-name": "Удалите префикс подчёркивания, чтобы включить",
"errorMessage": "⚠️ ОТКЛЮЧЁННЫЙ ПАРАМЕТР — этот параметр сейчас отключён. Удалите префикс подчёркивания (_), чтобы включить его."
}
}
}
},
"letsEncrypt": {
"title": "Встроенная поддержка Let's Encrypt",
"description": "Если у вашего сервера есть корректное DNS-имя, он публично доступен в Интернете и имеет публично доступный HTTP-сервер на порту 80, вы можете получить бесплатный TLS-сертификат.",
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Адрес электронной почты администратора этого сервера. Убедитесь, что это действительный email, иначе запрос сертификата завершится ошибкой."
},
"names": {
"type": "string",
"description": "Список DNS-имён через запятую, которые будут включены в сертификат. Первое имя будет основным."
},
"skipChallengeVerification": {
"type": "boolean",
"default": false,
"description": "По умолчанию MeshCentral выполняет самопроверку, чтобы убедиться, что HTTP-порт 80 корректно отвечает, прежде чем отправлять запрос в Let's Encrypt. В некоторых случаях эта самопроверка не работает и её нужно пропустить."
},
"production": {
"type": "boolean",
"default": false,
"description": "По умолчанию будет получен тестовый сертификат Let's Encrypt. Установка \"zerossl\" игнорирует этот параметр. Всегда начинайте с получения тестового сертификата и убедитесь, что это работает, прежде чем устанавливать true и получать production-сертификат. Слишком много неудачных запросов production-сертификата может привести к длительной блокировке."
},
"rsaKeySize": {
"type": "integer",
"default": 2048,
"description": "Размер генерируемого RSA-ключа. По умолчанию 2048 бит."
},
"nochecks": {
"type": "boolean",
"default": false,
"description": "Если выбрать \"true\", MeshCentral не будет проверять, что \"email\" действителен, имеет действующую MX-запись, А ТАКЖЕ, если \"names\" не содержит wildcard, что он разрешается через DNS A/AAAA-запись."
},
"custom": {
"type": "object",
"description": "Если этот объект задан, для создания SSL мы будем использовать пользовательский ACME-сервер с пользовательскими kid и hmackey вместо Let's Encrypt",
"required": [
"server",
"kid",
"hmackey"
],
"properties": {
"server": {
"type": "string",
"description": "URL ACME-сервера, например https://acme.zerossl.com/v2/DV90",
"default": ""
},
"kid": {
"type": "string",
"description": "EAB KID",
"default": ""
},
"hmackey": {
"type": "string",
"description": "EAB HMAC KEY",
"default": ""
}
}
},
"zerossl": {
"type": "object",
"description": "Если этот объект задан, для создания SSL мы будем использовать ZeroSSL вместо Let's Encrypt",
"required": [
"kid",
"hmacKey"
],
"properties": {
"kid": {
"type": "string",
"description": "EAB KID",
"default": ""
},
"hmackey": {
"type": "string",
"description": "EAB HMAC KEY",
"default": ""
}
}
}
},
"required": [
"email",
"names"
]
},
"peers": {
"title": "Пиринговое объединение серверов",
"description": "Настроить peer-сервер для балансировки нагрузки между несколькими серверами.",
"type": "object",
"minProperties": 1,
"propertyNames": {
"pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
},
"properties": {
"serverId": {
"type": "string",
"description": "Уникальный идентификатор сервера; должен быть уникальным среди всех серверов."
},
"servers": {
"type": "object",
"description": "Список peer-серверов.",
"additionalProperties": {
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "URL peer-сервера."
}
},
"required": [
"url"
]
}
}
},
"required": [
"serverId",
"servers"
]
},
"sendgrid": {
"title": "Почтовый сервер SendGrid.com",
"description": "Подключает MeshCentral к почтовому серверу SendGrid; позволяет MeshCentral отправлять email-сообщения для 2FA или уведомлений пользователей.",
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "email",
"description": "Адрес электронной почты, используемый в поле from сообщений."
},
"apikey": {
"type": "string",
"description": "API-ключ SendGrid."
},
"verifyemail": {
"type": "boolean",
"default": true,
"description": "Если установлено false, формат email и DNS MX-запись не проверяются."
}
},
"required": [
"from",
"apikey"
]
},
"smtp": {
"title": "Почтовый SMTP-сервер",
"description": "Подключает MeshCentral к SMTP-почтовому серверу; позволяет MeshCentral отправлять email-сообщения для 2FA или уведомлений пользователей.",
"type": "object",
"properties": {
"name": {
"type": "string",
"format": "hostname",
"description": "Необязательное имя хоста клиента; по умолчанию используется имя хоста машины. Полезно для SMTP-реле. Также можно указать \"console\" для отладочного вывода в консоль."
},
"host": {
"type": "string",
"format": "hostname",
"description": "Имя хоста SMTP-сервера."
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 587,
"description": "Номер порта SMTP-сервера. По умолчанию 587, если \"tls\" равно false, или 465, если \"tls\" равно true)"
},
"from": {
"type": "string",
"format": "email",
"description": "Адрес электронной почты, используемый в поле from сообщений."
},
"user": {
"type": "string",
"description": "Имя пользователя SMTP."
},
"pass": {
"type": "string",
"description": "Пароль SMTP."
},
"tls": {
"type": "boolean",
"default": false,
"description": "Настроить SMTP на использование TLS для соединений; по умолчанию false"
},
"auth": {
"type": "object",
"description": "Используется для аутентификации OAuth2",
"properties": {
"clientId": {
"type": "string",
"description": "Client ID OAuth2"
},
"clientSecret": {
"type": "string",
"description": "Client secret OAuth2"
},
"refreshToken": {
"type": "string",
"description": "Refresh token OAuth2"
},
"type": {
"type": "string",
"default": "login",
"description": "Указание типа аутентификации: по умолчанию 'login' или 'oauth2'"
}
},
"required": [
"clientId",
"clientSecret",
"refreshToken"
]
},
"tlscertcheck": {
"type": "boolean",
"default": true,
"description": "Если установлено false, сертификат SMTP-сервера не проверяется."
},
"tlsstrict": {
"type": "boolean",
"default": false,
"description": "Если установлено true, сертификат SMTP-сервера должен быть действительным и подписанным доверенным CA."
},
"verifyemail": {
"type": "boolean",
"default": true,
"description": "Если установлено false, формат email и DNS MX-запись не проверяются."
},
"emailDelaySeconds": {
"type": "integer",
"default": 300,
"description": "Время ожидания перед отправкой email-уведомления о подключении/отключении устройства. Если произошло много событий, они будут объединены в одно письмо."
}
},
"required": [
"host",
"port",
"from",
"tls"
]
},
"sendmail": {
"title": "Отправка email с помощью команды sendmail",
"description": "Заставляет MeshCentral отправлять письма с помощью Unix-команды sendmail. Позволяет MeshCentral отправлять email-сообщения для 2FA или уведомлений пользователей.",
"type": "object",
"properties": {
"newline": {
"type": "string",
"default": "unix",
"description": "Возможные значения: unix или windows"
},
"path": {
"type": "string",
"default": "sendmail",
"description": "Путь к команде sendmail"
},
"args": {
"type": "array",
"items": {
"type": "string"
},
"default": null,
"description": "Массив аргументов для передачи sendmail"
},
"emailDelaySeconds": {
"type": "integer",
"default": 300,
"description": "Время ожидания перед отправкой email-уведомления о подключении/отключении устройства. Если произошло много событий, они будут объединены в одно письмо."
}
}
},
"sms": {
"title": "SMS-провайдер",
"description": "Подключает MeshCentral к провайдеру SMS-сообщений; позволяет MeshCentral отправлять SMS для 2FA или уведомлений пользователей.",
"oneOf": [
{
"type": "object",
"properties": {
"provider": {
"type": "string",
"description": "SMS-провайдер для использования",
"enum": [
"twilio"
]
},
"sid": {
"type": "string",
"description": "Twilio SID"
},
"auth": {
"type": "string",
"description": "Twilio Auth Token"
},
"from": {
"type": "string",
"description": "Номер телефона Twilio, с которого выполняется отправка"
}
},
"required": [
"provider",
"sid",
"auth",
"from"
]
},
{
"type": "object",
"properties": {
"provider": {
"description": "SMS-провайдер для использования",
"type": "string",
"enum": [
"plivo"
]
},
"id": {
"type": "string",
"description": "Plivo ID"
},
"token": {
"type": "string",
"description": "Plivo Auth Token"
},
"from": {
"type": "string",
"description": "Номер телефона Plivo, с которого выполняется отправка"
}
},
"required": [
"provider",
"id",
"token",
"from"
]
},
{
"type": "object",
"properties": {
"provider": {
"type": "string",
"description": "SMS-провайдер для использования",
"enum": [
"telnyx"
]
},
"apikey": {
"type": "string",
"description": "Telnyx API Key"
},
"from": {
"type": "string",
"description": "Номер телефона Telnyx, с которого выполняется отправка"
}
},
"required": [
"provider",
"apikey",
"from"
]
},
{
"type": "object",
"properties": {
"provider": {
"type": "string",
"description": "SMS-провайдер для использования",
"enum": [
"url"
]
},
"url": {
"type": "string",
"description": "HTTP- или HTTPS-URL со строками {{phone}} и {{message}}. Они будут заменены URL-кодированными целевым номером телефона и сообщением."
}
},
"required": [
"url"
]
}
]
},
"messaging": {
"title": "Сервер сообщений",
"description": "Этот раздел позволяет MeshCentral отправлять сообщения через пользовательские сети обмена сообщениями, такие как Telegram",
"type": "object",
"properties": {
"telegram": {
"type": "object",
"description": "Настроить систему сообщений Telegram",
"properties": {
"apiid": {
"type": "number",
"description": "Telegram API ID"
},
"apihash": {
"type": "string",
"description": "Telegram API Hash"
},
"session": {
"type": "string",
"description": "Путь к файлу сеанса Telegram"
},
"useWSS": {
"type": "boolean",
"description": "Пытаться ли подключаться через Wss (или порт 443) или нет"
},
"connectionRetries": {
"type": "number",
"description": "Сколько раз нужно повторять переподключение — при первичном соединении или когда Telegram отключает нас. Можно задать отрицательное значение для бесконечных попыток, но это не рекомендуется. По умолчанию 5"
}
}
},
"discord": {
"type": "object",
"description": "Настроить систему сообщений Discord",
"properties": {
"serverurl": {
"type": "string",
"format": "uri",
"description": "Необязательная HTTP-ссылка на сервер Discord, к которому пользователь должен присоединиться для получения уведомлений."
},
"token": {
"type": "string",
"description": "Токен Discord-бота, который MeshCentral будет использовать для входа в Discord."
}
},
"required": [
"token"
]
},
"xmpp": {
"type": "object",
"description": "Настроить систему сообщений XMPP",
"properties": {
"service": {
"type": "string",
"description": "Имя хоста XMPP-сервера."
},
"credentials": {
"type": "object",
"description": "Учётные данные для входа на XMPP-сервер.",
"properties": {
"username": {
"type": "string",
"description": "Имя пользователя XMPP."
},
"password": {
"type": "string",
"description": "Пароль XMPP."
}
}
}
},
"required": [
"credentials"
]
},
"callmebot": {
"type": "boolean",
"default": false,
"description": "Включает поддержку интеграции CallMeBot."
},
"slack": {
"type": "boolean",
"default": false,
"description": "Включает поддержку интеграции Slack."
},
"pushover": {
"type": "object",
"description": "Настроить систему сообщений Pushover",
"properties": {
"token": {
"type": "string",
"description": "Токен приложения Pushover, который MeshCentral будет использовать для входа."
}
},
"required": [
"token"
]
},
"ntfy": {
"type": [
"boolean",
"object"
],
"default": false,
"properties": {
"host": {
"type": "string",
"description": "Имя хоста ntfy-сервера."
},
"userurl": {
"type": "string",
"description": "URL, предоставляемый пользователям, чтобы помочь им настроить этот сервис."
},
"authorization": {
"type": "string",
"description": "Заголовок Authorization, включаемый в запрос"
}
},
"description": "Включает поддержку интеграции ntfy.sh."
},
"zulip": {
"type": "object",
"properties": {
"site": {
"type": "string",
"format": "uri",
"default": "https://api.zulip.com",
"description": "URL сервера Zulip"
},
"email": {
"type": "string",
"description": "Email-адрес бота для входа."
},
"api_key": {
"type": "string",
"description": "API-ключ бота."
}
},
"description": "Включает поддержку интеграции Zulip."
}
}
}
},
"patternProperties": {
"^_.*": {
"type": "null",
"x-disabled": true,
"x-enabled-name": "Удалите префикс подчёркивания, чтобы включить",
"errorMessage": "⚠️ ОТКЛЮЧЁННЫЙ РАЗДЕЛ — этот раздел сейчас отключён. Удалите префикс подчёркивания (_), чтобы включить его."
}
}
}