refactor: Split i18n files

This commit is contained in:
Zaiming (Stone) Shi 2023-04-17 13:35:33 +02:00
parent 334058eeec
commit b9a43ead39
200 changed files with 15283 additions and 14601 deletions

View File

@ -1,217 +1,96 @@
emqx_authn_api {
authentication_get {
desc {
en: """List authenticators for global authentication."""
zh: """列出全局认证链上的认证器。"""
}
}
authentication_get.desc:
"""List authenticators for global authentication."""
authentication_post {
desc {
en: """Create authenticator for global authentication."""
zh: """为全局认证链创建认证器。"""
}
}
authentication_id_delete.desc:
"""Delete authenticator from global authentication chain."""
authentication_id_get {
desc {
en: """Get authenticator from global authentication chain."""
zh: """获取全局认证链上的指定认证器。"""
}
}
authentication_id_get.desc:
"""Get authenticator from global authentication chain."""
authentication_id_put {
desc {
en: """Update authenticator from global authentication chain."""
zh: """更新全局认证链上的指定认证器。"""
}
}
authentication_id_position_put.desc:
"""Move authenticator in global authentication chain."""
authentication_id_delete {
desc {
en: """Delete authenticator from global authentication chain."""
zh: """删除全局认证链上的指定认证器。"""
}
}
authentication_id_put.desc:
"""Update authenticator from global authentication chain."""
authentication_id_status_get {
desc {
en: """Get authenticator status from global authentication chain."""
zh: """获取全局认证链上指定认证器的状态。"""
}
}
authentication_id_status_get.desc:
"""Get authenticator status from global authentication chain."""
listeners_listener_id_authentication_get {
desc {
en: """List authenticators for listener authentication."""
zh: """列出监听器认证链上的认证器。"""
}
}
authentication_id_users_get.desc:
"""List users in authenticator in global authentication chain."""
listeners_listener_id_authentication_post {
desc {
en: """Create authenticator for listener authentication."""
zh: """在监听器认证链上创建认证器。"""
}
}
authentication_id_users_post.desc:
"""Create users for authenticator in global authentication chain."""
listeners_listener_id_authentication_id_get {
desc {
en: """Get authenticator from listener authentication chain."""
zh: """获取监听器认证链上的指定认证器。"""
}
}
authentication_id_users_user_id_delete.desc:
"""Delete user in authenticator in global authentication chain."""
listeners_listener_id_authentication_id_put {
desc {
en: """Update authenticator from listener authentication chain."""
zh: """更新监听器认证链上的指定认证器。"""
}
}
authentication_id_users_user_id_get.desc:
"""Get user from authenticator in global authentication chain."""
listeners_listener_id_authentication_id_delete {
desc {
en: """Delete authenticator from listener authentication chain."""
zh: """删除监听器认证链上的指定认证器。"""
}
}
authentication_id_users_user_id_put.desc:
"""Update user in authenticator in global authentication chain."""
listeners_listener_id_authentication_id_status_get {
desc {
en: """Get authenticator status from listener authentication chain."""
zh: """获取监听器认证链上指定认证器的状态。"""
}
}
authentication_post.desc:
"""Create authenticator for global authentication."""
authentication_id_position_put {
desc {
en: """Move authenticator in global authentication chain."""
zh: """更改全局认证链上指定认证器的顺序。"""
}
}
is_superuser.desc:
"""Is superuser"""
listeners_listener_id_authentication_id_position_put {
desc {
en: """Move authenticator in listener authentication chain."""
zh: """更改监听器认证链上指定认证器的顺序。"""
}
}
like_user_id.desc:
"""Fuzzy search user_id (username or clientid)."""
authentication_id_users_post {
desc {
en: """Create users for authenticator in global authentication chain."""
zh: """为全局认证链上的指定认证器创建用户数据。"""
}
}
like_user_id.label:
"""like_user_id"""
authentication_id_users_get {
desc {
en: """List users in authenticator in global authentication chain."""
zh: """获取全局认证链上指定认证器中的用户数据。"""
}
}
listeners_listener_id_authentication_get.desc:
"""List authenticators for listener authentication."""
listeners_listener_id_authentication_id_users_post {
desc {
en: """Create users for authenticator in listener authentication chain."""
zh: """为监听器认证链上的指定认证器创建用户数据。"""
}
}
listeners_listener_id_authentication_id_delete.desc:
"""Delete authenticator from listener authentication chain."""
listeners_listener_id_authentication_id_users_get {
desc {
en: """List users in authenticator in listener authentication chain."""
zh: """列出监听器认证链上指定认证器中的用户数据。"""
}
}
listeners_listener_id_authentication_id_get.desc:
"""Get authenticator from listener authentication chain."""
authentication_id_users_user_id_get {
desc {
en: """Get user from authenticator in global authentication chain."""
zh: """获取全局认证链上指定认证器中的指定用户数据。"""
}
}
listeners_listener_id_authentication_id_position_put.desc:
"""Move authenticator in listener authentication chain."""
authentication_id_users_user_id_put {
desc {
en: """Update user in authenticator in global authentication chain."""
zh: """更新全局认证链上指定认证器中的指定用户数据。"""
}
}
listeners_listener_id_authentication_id_put.desc:
"""Update authenticator from listener authentication chain."""
authentication_id_users_user_id_delete {
desc {
en: """Delete user in authenticator in global authentication chain."""
zh: """删除全局认证链上指定认证器中的指定用户数据。"""
}
}
listeners_listener_id_authentication_id_status_get.desc:
"""Get authenticator status from listener authentication chain."""
listeners_listener_id_authentication_id_users_user_id_get {
desc {
en: """Get user from authenticator in listener authentication chain."""
zh: """获取监听器认证链上指定认证器中的指定用户数据。"""
}
}
listeners_listener_id_authentication_id_users_get.desc:
"""List users in authenticator in listener authentication chain."""
listeners_listener_id_authentication_id_users_user_id_put {
desc {
en: """Update user in authenticator in listener authentication chain."""
zh: """更新监听器认证链上指定认证器中的指定用户数据。"""
}
}
listeners_listener_id_authentication_id_users_post.desc:
"""Create users for authenticator in listener authentication chain."""
listeners_listener_id_authentication_id_users_user_id_delete {
desc {
en: """Delete user in authenticator in listener authentication chain."""
zh: """删除监听器认证链上指定认证器中的指定用户数据。"""
}
}
listeners_listener_id_authentication_id_users_user_id_delete.desc:
"""Delete user in authenticator in listener authentication chain."""
param_auth_id {
desc {
en: """Authenticator ID."""
zh: """认证器 ID。"""
}
}
listeners_listener_id_authentication_id_users_user_id_get.desc:
"""Get user from authenticator in listener authentication chain."""
param_listener_id {
desc {
en: """Listener ID."""
zh: """监听器 ID。"""
}
}
listeners_listener_id_authentication_id_users_user_id_put.desc:
"""Update user in authenticator in listener authentication chain."""
param_user_id {
desc {
en: """User ID."""
zh: """用户 ID。"""
}
}
listeners_listener_id_authentication_post.desc:
"""Create authenticator for listener authentication."""
param_position {
desc {
en: """Position of authenticator in chain. Possible values are 'front', 'rear', 'before:{other_authenticator}', 'after:{other_authenticator}'."""
zh: """认证者在链中的位置。可能的值是 'front', 'rear', 'before:{other_authenticator}', 'after:{other_authenticator}'"""
}
}
param_auth_id.desc:
"""Authenticator ID."""
like_user_id {
desc {
en: """Fuzzy search user_id (username or clientid)."""
zh: """使用用户 ID username 或 clientid模糊查询。"""
}
label {
en: """like_user_id"""
zh: """like_user_id"""
}
}
param_listener_id.desc:
"""Listener ID."""
is_superuser {
desc {
en: """Is superuser"""
zh: """是否是超级用户"""
}
}
param_position.desc:
"""Position of authenticator in chain. Possible values are 'front', 'rear', 'before:{other_authenticator}', 'after:{other_authenticator}'."""
param_user_id.desc:
"""User ID."""
}

View File

@ -1,81 +1,45 @@
emqx_authn_http {
get {
desc {
en: """Configuration of authenticator using HTTP Server as authentication service (Using GET request)."""
zh: """使用 HTTP Server 作为认证服务的认证器的配置项 (使用 GET 请求)。"""
}
}
post {
desc {
en: """Configuration of authenticator using HTTP Server as authentication service (Using POST request)."""
zh: """使用 HTTP Server 作为认证服务的认证器的配置项 (使用 POST 请求)。"""
}
}
body.desc:
"""HTTP request body."""
method {
desc {
en: """HTTP request method."""
zh: """HTTP 请求方法。"""
}
label {
en: """Request Method"""
zh: """请求方法"""
}
}
body.label:
"""Request Body"""
url {
desc {
en: """URL of the HTTP server."""
zh: """认证 HTTP 服务器地址。"""
}
label {
en: """URL"""
zh: """URL"""
}
}
get.desc:
"""Configuration of authenticator using HTTP Server as authentication service (Using GET request)."""
headers {
desc {
en: """List of HTTP Headers."""
zh: """HTTP Headers 列表"""
}
label {
en: """Headers"""
zh: """请求头"""
}
}
headers.desc:
"""List of HTTP Headers."""
headers_no_content_type {
desc {
en: """List of HTTP headers (without <code>content-type</code>)."""
zh: """HTTP Headers 列表 (无 <code>content-type</code>) 。"""
}
label {
en: """headers_no_content_type"""
zh: """请求头(无 content-type)"""
}
}
headers.label:
"""Headers"""
body {
desc {
en: """HTTP request body."""
zh: """HTTP request body。"""
}
label {
en: """Request Body"""
zh: """Request Body"""
}
}
headers_no_content_type.desc:
"""List of HTTP headers (without <code>content-type</code>)."""
headers_no_content_type.label:
"""headers_no_content_type"""
method.desc:
"""HTTP request method."""
method.label:
"""Request Method"""
post.desc:
"""Configuration of authenticator using HTTP Server as authentication service (Using POST request)."""
request_timeout.desc:
"""HTTP request timeout."""
request_timeout.label:
"""Request Timeout"""
url.desc:
"""URL of the HTTP server."""
url.label:
"""URL"""
request_timeout {
desc {
en: """HTTP request timeout."""
zh: """HTTP 请求超时时长。"""
}
label {
en: """Request Timeout"""
zh: """请求超时时间"""
}
}
}

View File

@ -1,219 +1,118 @@
emqx_authn_jwt {
use_jwks {
desc {
en: """Whether to use JWKS."""
zh: """是否使用 JWKS。"""
}
label {
en: """Whether to Use JWKS"""
zh: """是否使用 JWKS"""
}
}
algorithm {
desc {
en: """JWT signing algorithm, Supports HMAC (configured as <code>hmac-based</code>) and RSA, ECDSA (configured as <code>public-key</code>)."""
zh: """JWT 签名算法,支持 HMAC (配置为 <code>hmac-based</code>)和 RSA、ECDSA (配置为 <code>public-key</code>)。"""
}
label {
en: """JWT Signing Algorithm"""
zh: """JWT 签名算法"""
}
}
acl_claim_name.desc:
"""JWT claim name to use for getting ACL rules."""
public_key {
desc {
en: """The public key used to verify the JWT."""
zh: """用于验证 JWT 的公钥。"""
}
label {
en: """Public Key"""
zh: """公钥"""
}
}
acl_claim_name.label:
"""ACL claim name"""
secret_base64_encoded {
desc {
en: """Whether secret is base64 encoded."""
zh: """密钥是否为 Base64 编码。"""
}
label {
en: """Whether Secret is Base64 Encoded"""
zh: """密钥是否为 Base64 编码"""
}
}
algorithm.desc:
"""JWT signing algorithm, Supports HMAC (configured as <code>hmac-based</code>) and RSA, ECDSA (configured as <code>public-key</code>)."""
secret {
desc {
en: """The key to verify the JWT using HMAC algorithm."""
zh: """使用 HMAC 算法时用于验证 JWT 的密钥"""
}
label {
en: """Secret"""
zh: """Secret"""
}
}
algorithm.label:
"""JWT Signing Algorithm"""
endpoint {
desc {
en: """JWKS endpoint, it's a read-only endpoint that returns the server's public key set in the JWKS format."""
zh: """JWKS 端点, 它是一个以 JWKS 格式返回服务端的公钥集的只读端点。"""
}
label {
en: """JWKS Endpoint"""
zh: """JWKS Endpoint"""
}
}
cacertfile.desc:
"""Path to a file containing PEM-encoded CA certificates."""
refresh_interval {
desc {
en: """JWKS refresh interval."""
zh: """JWKS 刷新间隔。"""
}
label {
en: """JWKS Refresh Interval"""
zh: """JWKS 刷新间隔"""
}
}
cacertfile.label:
"""CA Certificate File"""
cacertfile {
desc {
en: """Path to a file containing PEM-encoded CA certificates."""
zh: """包含 PEM 编码的 CA 证书的文件的路径。"""
}
label {
en: """CA Certificate File"""
zh: """CA 证书文件"""
}
}
certfile.desc:
"""Path to a file containing the user certificate."""
certfile {
desc {
en: """Path to a file containing the user certificate."""
zh: """包含用户证书的文件的路径。"""
}
label {
en: """Certificate File"""
zh: """证书文件"""
}
}
certfile.label:
"""Certificate File"""
keyfile {
desc {
en: """Path to a file containing the user's private PEM-encoded key."""
zh: """包含 PEM 编码的用户私钥的文件的路径。"""
}
label {
en: """Key File"""
zh: """私钥文件"""
}
}
enable.desc:
"""Enable/disable SSL."""
verify {
desc {
en: """Enable or disable SSL peer verification."""
zh: """指定握手过程中是否校验对端证书。"""
}
label {
en: """Verify"""
zh: """Verify"""
}
}
enable.label:
"""Enable/disable SSL"""
server_name_indication {
desc {
en: """Server Name Indication (SNI)."""
zh: """服务器名称指示SNI。"""
}
label {
en: """Server Name Indication"""
zh: """服务器名称指示"""
}
}
endpoint.desc:
"""JWKS endpoint, it's a read-only endpoint that returns the server's public key set in the JWKS format."""
verify_claims {
desc {
en: """A list of custom claims to validate, which is a list of name/value pairs.
endpoint.label:
"""JWKS Endpoint"""
from.desc:
"""Field to take JWT from."""
from.label:
"""From Field"""
hmac-based.desc:
"""Configuration when the JWT for authentication is issued using the HMAC algorithm."""
jwks.desc:
"""Configuration when JWTs used for authentication need to be fetched from the JWKS endpoint."""
keyfile.desc:
"""Path to a file containing the user's private PEM-encoded key."""
keyfile.label:
"""Key File"""
public-key.desc:
"""Configuration when the JWT for authentication is issued using RSA or ECDSA algorithm."""
public_key.desc:
"""The public key used to verify the JWT."""
public_key.label:
"""Public Key"""
refresh_interval.desc:
"""JWKS refresh interval."""
refresh_interval.label:
"""JWKS Refresh Interval"""
secret.desc:
"""The key to verify the JWT using HMAC algorithm."""
secret.label:
"""Secret"""
secret_base64_encoded.desc:
"""Whether secret is base64 encoded."""
secret_base64_encoded.label:
"""Whether Secret is Base64 Encoded"""
server_name_indication.desc:
"""Server Name Indication (SNI)."""
server_name_indication.label:
"""Server Name Indication"""
ssl.desc:
"""SSL options."""
ssl.label:
"""SSL Options"""
use_jwks.desc:
"""Whether to use JWKS."""
use_jwks.label:
"""Whether to Use JWKS"""
verify.desc:
"""Enable or disable SSL peer verification."""
verify.label:
"""Verify"""
verify_claims.desc:
"""A list of custom claims to validate, which is a list of name/value pairs.
Values can use the following placeholders:
- <code>${username}</code>: Will be replaced at runtime with <code>Username</code> used by the client when connecting
- <code>${clientid}</code>: Will be replaced at runtime with <code>Client ID</code> used by the client when connecting
Authentication will verify that the value of claims in the JWT (taken from the Password field) matches what is required in <code>verify_claims</code>."""
zh: """需要验证的自定义声明列表,它是一个名称/值对列表。
值可以使用以下占位符:
- <code>${username}</code>: 将在运行时被替换为客户端连接时使用的用户名
- <code>${clientid}</code>: 将在运行时被替换为客户端连接时使用的客户端标识符
认证时将验证 JWT取自 Password 字段)中 claims 的值是否与 <code>verify_claims</code> 中要求的相匹配。"""
}
label {
en: """Verify Claims"""
zh: """Verify Claims"""
}
}
ssl {
desc {
en: """SSL options."""
zh: """SSL 选项。"""
}
label {
en: """SSL Options"""
zh: """SSL 选项"""
}
}
enable {
desc {
en: """Enable/disable SSL."""
zh: """启用/禁用 SSL。"""
}
label {
en: """Enable/disable SSL"""
zh: """启用/禁用 SSL"""
}
}
hmac-based {
desc {
en: """Configuration when the JWT for authentication is issued using the HMAC algorithm."""
zh: """用于认证的 JWT 使用 HMAC 算法签发时的配置。"""
}
}
public-key {
desc {
en: """Configuration when the JWT for authentication is issued using RSA or ECDSA algorithm."""
zh: """用于认证的 JWT 使用 RSA 或 ECDSA 算法签发时的配置。"""
}
}
jwks {
desc {
en: """Configuration when JWTs used for authentication need to be fetched from the JWKS endpoint."""
zh: """用于认证的 JWTs 需要从 JWKS 端点获取时的配置。"""
}
}
acl_claim_name {
desc {
en: """JWT claim name to use for getting ACL rules."""
zh: """JWT claim name to use for getting ACL rules."""
}
label {
en: """ACL claim name"""
zh: """ACL claim name"""
}
}
from {
desc {
en: """Field to take JWT from."""
zh: """要从中获取 JWT 的字段。"""
}
label {
en: """From Field"""
zh: """源字段"""
}
}
verify_claims.label:
"""Verify Claims"""
}

View File

@ -1,21 +1,12 @@
emqx_authn_mnesia {
authentication {
desc {
en: """Configuration of authenticator using built-in database as data source."""
zh: """使用内置数据库作为认证数据源的认证器的配置项。"""
}
}
user_id_type {
desc {
en: """Specify whether to use `clientid` or `username` for authentication."""
zh: """指定使用客户端ID `clientid` 还是用户名 `username` 进行认证。"""
}
authentication.desc:
"""Configuration of authenticator using built-in database as data source."""
label: {
en: """Authentication ID Type"""
zh: """认证 ID 类型"""
}
}
user_id_type.desc:
"""Specify whether to use `clientid` or `username` for authentication."""
user_id_type.label:
"""Authentication ID Type"""
}

View File

@ -1,83 +1,45 @@
emqx_authn_mongodb {
standalone {
desc {
en: """Configuration of authenticator using MongoDB (Standalone) as authentication data source."""
zh: """使用 MongoDB (Standalone) 作为认证数据源的认证器的配置项。"""
}
}
replica-set {
desc {
en: """Configuration of authenticator using MongoDB (Replica Set) as authentication data source."""
zh: """使用 MongoDB (Replica Set) 作为认证数据源的认证器的配置项。"""
}
}
collection.desc:
"""Collection used to store authentication data."""
sharded-cluster {
desc {
en: """Configuration of authenticator using MongoDB (Sharded Cluster) as authentication data source."""
zh: """使用 MongoDB (Sharded Cluster) 作为认证数据源的认证器的配置项。"""
}
}
collection.label:
"""Collection"""
collection {
desc {
en: """Collection used to store authentication data."""
zh: """存储认证数据的集合。"""
}
label: {
en: """Collection"""
zh: """集合"""
}
}
filter {
desc {
en: """Conditional expression that defines the filter condition in the query.
filter.desc:
"""Conditional expression that defines the filter condition in the query.
Filter supports the following placeholders:
- <code>${username}</code>: Will be replaced at runtime with <code>Username</code> used by the client when connecting
- <code>${clientid}</code>: Will be replaced at runtime with <code>Client ID</code> used by the client when connecting"""
zh: """在查询中定义过滤条件的条件表达式。
过滤器支持如下占位符:
- <code>${username}</code>: 将在运行时被替换为客户端连接时使用的用户名
- <code>${clientid}</code>: 将在运行时被替换为客户端连接时使用的客户端标识符"""
}
label: {
en: """Filter"""
zh: """过滤器"""
}
}
password_hash_field {
desc {
en: """Document field that contains password hash."""
zh: """文档中用于存放密码散列的字段。"""
}
label: {
en: """Password Hash Field"""
zh: """密码散列字段"""
}
}
filter.label:
"""Filter"""
salt_field {
desc {
en: """Document field that contains the password salt."""
zh: """文档中用于存放盐值的字段。"""
}
label: {
en: """Salt Field"""
zh: """盐值字段"""
}
}
is_superuser_field.desc:
"""Document field that defines if the user has superuser privileges."""
is_superuser_field.label:
"""Is Superuser Field"""
password_hash_field.desc:
"""Document field that contains password hash."""
password_hash_field.label:
"""Password Hash Field"""
replica-set.desc:
"""Configuration of authenticator using MongoDB (Replica Set) as authentication data source."""
salt_field.desc:
"""Document field that contains the password salt."""
salt_field.label:
"""Salt Field"""
sharded-cluster.desc:
"""Configuration of authenticator using MongoDB (Sharded Cluster) as authentication data source."""
standalone.desc:
"""Configuration of authenticator using MongoDB (Standalone) as authentication data source."""
is_superuser_field {
desc {
en: """Document field that defines if the user has superuser privileges."""
zh: """文档中用于定义用户是否具有超级用户权限的字段。"""
}
label: {
en: """Is Superuser Field"""
zh: """超级用户字段"""
}
}
}

View File

@ -1,30 +1,18 @@
emqx_authn_mysql {
authentication {
desc {
en: """Configuration of authenticator using MySQL as authentication data source."""
zh: """使用 MySQL 作为认证数据源的认证器的配置项。"""
}
}
query {
desc {
en: """SQL used to query data for authentication, such as password hash."""
zh: """用于查询密码散列等用于认证的数据的 SQL 语句。"""
}
label: {
en: """Query"""
zh: """查询语句"""
}
}
authentication.desc:
"""Configuration of authenticator using MySQL as authentication data source."""
query.desc:
"""SQL used to query data for authentication, such as password hash."""
query.label:
"""Query"""
query_timeout.desc:
"""Timeout for the SQL query."""
query_timeout.label:
"""Query Timeout"""
query_timeout {
desc {
en: """Timeout for the SQL query."""
zh: """SQL 查询的超时时间。"""
}
label: {
en: """Query Timeout"""
zh: """查询超时"""
}
}
}

View File

@ -1,19 +1,12 @@
emqx_authn_pgsql {
authentication {
desc {
en: """Configuration of authenticator using PostgreSQL as authentication data source."""
zh: """使用 PostgreSQL 作为认证数据源的认证器的配置项。"""
}
}
query {
desc {
en: """SQL used to query data for authentication, such as password hash."""
zh: """用于查询密码散列等用于认证的数据的 SQL 语句。"""
}
label: {
en: """Query"""
zh: """查询语句"""
}
}
authentication.desc:
"""Configuration of authenticator using PostgreSQL as authentication data source."""
query.desc:
"""SQL used to query data for authentication, such as password hash."""
query.label:
"""Query"""
}

View File

@ -1,33 +1,18 @@
emqx_authn_redis {
standalone {
desc {
en: """Configuration of authenticator using Redis (Standalone) as authentication data source."""
zh: """使用 Redis (Standalone) 作为认证数据源的认证器的配置项。"""
}
}
cluster {
desc {
en: """Configuration of authenticator using Redis (Cluster) as authentication data source."""
zh: """使用 Redis (Cluster) 作为认证数据源的认证器的配置项。"""
}
}
cluster.desc:
"""Configuration of authenticator using Redis (Cluster) as authentication data source."""
sentinel {
desc {
en: """Configuration of authenticator using Redis (Sentinel) as authentication data source."""
zh: """使用 Redis (Sentinel) 作为认证数据源的认证器的配置项。"""
}
}
cmd.desc:
"""The Redis Command used to query data for authentication such as password hash, currently only supports <code>HGET</code> and <code>HMGET</code>."""
cmd.label:
"""Command"""
sentinel.desc:
"""Configuration of authenticator using Redis (Sentinel) as authentication data source."""
standalone.desc:
"""Configuration of authenticator using Redis (Standalone) as authentication data source."""
cmd {
desc {
en: """The Redis Command used to query data for authentication such as password hash, currently only supports <code>HGET</code> and <code>HMGET</code>."""
zh: """用于查询密码散列等用于认证的数据的 Redis Command目前仅支持 <code>HGET</code> 与 <code>HMGET</code>。"""
}
label: {
en: """Command"""
zh: """Command"""
}
}
}

View File

@ -1,243 +1,135 @@
emqx_authn_schema {
enable {
desc {
en: """Set to <code>true</code> or <code>false</code> to disable this auth provider."""
zh: """设为 <code>true</code> 或 <code>false</code> 以启用或禁用此认证数据源。"""
}
label: {
en: """Enable"""
zh: """启用"""
}
}
mechanism {
desc {
en: """Authentication mechanism."""
zh: """认证机制。"""
}
label: {
en: """Authentication Mechanism"""
zh: """认证机制"""
}
}
backend.desc:
"""Backend type."""
backend {
desc {
en: """Backend type."""
zh: """后端类型。"""
}
label: {
en: """Backend Type"""
zh: """后端类型"""
}
}
backend.label:
"""Backend Type"""
metrics {
desc {
en: """The metrics of the resource."""
zh: """资源统计指标。"""
}
label: {
en: """Metrics"""
zh: """指标"""
}
}
enable.desc:
"""Set to <code>true</code> or <code>false</code> to disable this auth provider."""
node_metrics {
desc {
en: """The metrics of the resource for each node."""
zh: """每个节点上资源的统计指标。"""
}
label: {
en: """Resource Metrics in Node"""
zh: """节点资源指标"""
}
}
enable.label:
"""Enable"""
status {
desc {
en: """The status of the resource."""
zh: """资源状态。"""
}
label: {
en: """Status"""
zh: """状态"""
}
}
failed.desc:
"""Count of query failed."""
node_status {
desc {
en: """The status of the resource for each node."""
zh: """每个节点上资源的状态。"""
}
label: {
en: """Resource Status in Node"""
zh: """节点资源状态"""
}
}
failed.label:
"""Failed"""
node_error {
desc {
en: """The error of node."""
zh: """节点上产生的错误。"""
}
label: {
en: """Error in Node"""
zh: """节点产生的错误"""
}
}
matched.desc:
"""Count of this resource is queried."""
matched {
desc {
en: """Count of this resource is queried."""
zh: """请求命中次数。"""
}
label: {
en: """Matched"""
zh: """已命中"""
}
}
matched.label:
"""Matched"""
success {
desc {
en: """Count of query success."""
zh: """请求成功次数。"""
}
label: {
en: """Success"""
zh: """成功"""
}
}
mechanism.desc:
"""Authentication mechanism."""
failed {
desc {
en: """Count of query failed."""
zh: """请求失败次数。"""
}
label: {
en: """Failed"""
zh: """失败"""
}
}
mechanism.label:
"""Authentication Mechanism"""
rate {
desc {
en: """The rate of matched, times/second."""
zh: """命中速率,单位:次/秒。"""
}
label: {
en: """Rate"""
zh: """速率"""
}
}
metrics.desc:
"""The metrics of the resource."""
rate_max {
desc {
en: """The max rate of matched, times/second."""
zh: """最大命中速率,单位:次/秒。"""
}
label: {
en: """Max Rate"""
zh: """最大速率"""
}
}
metrics.label:
"""Metrics"""
rate_last5m {
desc {
en: """The average rate of matched in the last 5 minutes, times/second."""
zh: """5分钟内平均命中速率单位次/秒。"""
}
label: {
en: """Rate in Last 5min"""
zh: """5分钟内速率"""
}
}
metrics_failed.desc:
"""The required authentication information is found in the current instance, and the instance returns authentication failure."""
node {
desc {
en: """Node name."""
zh: """节点名称。"""
}
label: {
en: """Node Name."""
zh: """节点名称。"""
}
}
metrics_failed.label:
"""Authentication Failed Times"""
metrics_nomatch {
desc {
en: """The number of times the instance was ignored when the required authentication information was not found in the current instance."""
zh: """在当前实例中没有找到需要的认证信息,实例被忽略的次数。"""
}
label: {
en: """Nomatch Times"""
zh: """实例被忽略的次数"""
}
}
metrics_nomatch.desc:
"""The number of times the instance was ignored when the required authentication information was not found in the current instance."""
metrics_total {
desc {
en: """The total number of times the current instance was triggered."""
zh: """当前实例被触发的总次数。"""
}
label: {
en: """Total Triggered Times"""
zh: """当前实例被触发的总次数"""
}
}
metrics_nomatch.label:
"""Nomatch Times"""
metrics_success {
desc {
en: """The required authentication information is found in the current instance, and the instance returns authentication success."""
zh: """在当前实例中找到需要的认证信息,并且实例返回认证成功的次数。"""
}
label: {
en: """Authentication Success Times"""
zh: """实例认证成功的次数"""
}
}
metrics_rate.desc:
"""The total rate at which instances are triggered, times/second."""
metrics_failed {
desc {
en: """The required authentication information is found in the current instance, and the instance returns authentication failure."""
zh: """在当前实例中找到需要的认证信息,并且实例返回认证失败的次数。"""
}
label: {
en: """Authentication Failed Times"""
zh: """实例认证失败的次数"""
}
}
metrics_rate.label:
"""Total Triggered Rate"""
metrics_rate {
desc {
en: """The total rate at which instances are triggered, times/second."""
zh: """实例被触发的速率。触发速率等于匹配速率 + 忽略速率,单位:次/秒。"""
}
label: {
en: """Total Triggered Rate"""
zh: """实例被触发的速率"""
}
}
metrics_rate_last5m.desc:
"""The average trigger rate of the instance within 5 minutes, times/second."""
metrics_rate_max {
desc {
en: """The highest trigger rate the instance has ever reached, times/second."""
zh: """实例曾经达到的最高触发速率,单位:次/秒。"""
}
label: {
en: """Highest Triggered Rate"""
zh: """实例曾经达到的最高触发速率"""
}
}
metrics_rate_last5m.label:
"""Average Triggered Rate in Last 5min"""
metrics_rate_max.desc:
"""The highest trigger rate the instance has ever reached, times/second."""
metrics_rate_max.label:
"""Highest Triggered Rate"""
metrics_success.desc:
"""The required authentication information is found in the current instance, and the instance returns authentication success."""
metrics_success.label:
"""Authentication Success Times"""
metrics_total.desc:
"""The total number of times the current instance was triggered."""
metrics_total.label:
"""Total Triggered Times"""
node.desc:
"""Node name."""
node.label:
"""Node Name."""
node_error.desc:
"""The error of node."""
node_error.label:
"""Error in Node"""
node_metrics.desc:
"""The metrics of the resource for each node."""
node_metrics.label:
"""Resource Metrics in Node"""
node_status.desc:
"""The status of the resource for each node."""
node_status.label:
"""Resource Status in Node"""
rate.desc:
"""The rate of matched, times/second."""
rate.label:
"""Rate"""
rate_last5m.desc:
"""The average rate of matched in the last 5 minutes, times/second."""
rate_last5m.label:
"""Rate in Last 5min"""
rate_max.desc:
"""The max rate of matched, times/second."""
rate_max.label:
"""Max Rate"""
status.desc:
"""The status of the resource."""
status.label:
"""Status"""
success.desc:
"""Count of query success."""
success.label:
"""Success"""
metrics_rate_last5m {
desc {
en: """The average trigger rate of the instance within 5 minutes, times/second."""
zh: """实例5分钟内平均触发速率单位次/秒。"""
}
label: {
en: """Average Triggered Rate in Last 5min"""
zh: """实例5分钟内平均触发速率"""
}
}
}

View File

@ -1,17 +1,9 @@
emqx_authn_user_import_api {
authentication_id_import_users_post {
desc {
en: """Import users into authenticator in global authentication chain."""
zh: """为全局认证链上的指定认证器导入用户数据。"""
}
}
authentication_id_import_users_post.desc:
"""Import users into authenticator in global authentication chain."""
listeners_listener_id_authentication_id_import_users_post {
desc {
en: """Import users into authenticator in listener authentication chain."""
zh: """为监听器认证链上的指定认证器导入用户数据。"""
}
}
listeners_listener_id_authentication_id_import_users_post.desc:
"""Import users into authenticator in listener authentication chain."""
}

View File

@ -1,8 +1,6 @@
emqx_authz_api_cache {
authorization_cache_delete {
desc {
en: """Clean all authorization cache in the cluster."""
zh: """清除集群中所有授权数据缓存。"""
}
}
authorization_cache_delete.desc:
"""Clean all authorization cache in the cluster."""
}

View File

@ -1,177 +1,87 @@
emqx_authz_api_mnesia {
users_username_get {
desc {
en: """Show the list of rules for users"""
zh: """获取内置数据库中所有用户名类型的规则记录"""
}
}
users_username_post {
desc {
en: """Add new rule for 'username'"""
zh: """添加内置数据库中用户名类型的规则记录"""
}
}
action.desc:
"""Authorized action (pub/sub/all)"""
users_clientid_get {
desc {
en: """Show the list of rules for clients"""
zh: """获取内置数据库中所有客户端标识符类型的规则记录"""
}
}
action.label:
"""action"""
users_clientid_post {
desc {
en: """Add new rule for 'clientid'"""
zh: """添加内置数据库中客户端标识符类型的规则记录"""
}
}
clientid.desc:
"""ClientID"""
clientid.label:
"""clientid"""
user_username_get {
desc {
en: """Get rule for 'username'"""
zh: """获取内置数据库中指定用户名类型的规则记录"""
}
}
fuzzy_clientid.desc:
"""Fuzzy search `clientid` as substring"""
user_username_put {
desc {
en: """Set rule for 'username'"""
zh: """更新内置数据库中指定用户名类型的规则记录"""
}
}
fuzzy_clientid.label:
"""fuzzy_clientid"""
user_username_delete {
desc {
en: """Delete rule for 'username'"""
zh: """删除内置数据库中指定用户名类型的规则记录"""
}
}
fuzzy_username.desc:
"""Fuzzy search `username` as substring"""
user_clientid_get {
desc {
en: """Get rule for 'clientid'"""
zh: """获取内置数据库中指定客户端标识符类型的规则记录"""
}
}
fuzzy_username.label:
"""fuzzy_username"""
user_clientid_put {
desc {
en: """Set rule for 'clientid'"""
zh: """更新内置数据库中指定客户端标识符类型的规则记录"""
}
}
permission.desc:
"""Permission"""
user_clientid_delete {
desc {
en: """Delete rule for 'clientid'"""
zh: """删除内置数据库中指定客户端标识符类型的规则记录"""
}
}
permission.label:
"""permission"""
rules_all_get {
desc {
en: """Show the list of rules for 'all'"""
zh: """列出为所有客户端启用的规则列表"""
}
}
rules_all_delete.desc:
"""Delete rules for 'all'"""
rules_all_post {
desc {
en: """Create/Update the list of rules for 'all'."""
zh: """创建/更新 为所有客户端启用的规则列表。"""
}
}
rules_all_get.desc:
"""Show the list of rules for 'all'"""
rules_all_delete {
desc {
en: """Delete rules for 'all'"""
zh: """删除 `all` 规则"""
}
}
rules_all_post.desc:
"""Create/Update the list of rules for 'all'."""
rules_delete {
desc {
en: """Delete all rules for all 'users', 'clients' and 'all'"""
zh: """清除内置数据库中的所有类型('users' 、'clients' 、'all')的所有规则"""
}
}
rules_delete.desc:
"""Delete all rules for all 'users', 'clients' and 'all'"""
fuzzy_username {
desc {
en: """Fuzzy search `username` as substring"""
zh: """使用字串匹配模糊搜索用户名"""
}
label {
en: """fuzzy_username"""
zh: """用户名子串"""
}
}
topic.desc:
"""Rule on specific topic"""
fuzzy_clientid {
desc {
en: """Fuzzy search `clientid` as substring"""
zh: """使用字串匹配模糊搜索客户端标识符"""
}
label {
en: """fuzzy_clientid"""
zh: """客户端标识符子串"""
}
}
topic.label:
"""topic"""
topic {
desc {
en: """Rule on specific topic"""
zh: """在指定主题上的规则"""
}
label {
en: """topic"""
zh: """主题"""
}
}
user_clientid_delete.desc:
"""Delete rule for 'clientid'"""
permission {
desc {
en: """Permission"""
zh: """权限"""
}
label {
en: """permission"""
zh: """权限"""
}
}
user_clientid_get.desc:
"""Get rule for 'clientid'"""
action {
desc {
en: """Authorized action (pub/sub/all)"""
zh: """被授权的行为 (发布/订阅/所有)"""
}
label {
en: """action"""
zh: """行为"""
}
}
user_clientid_put.desc:
"""Set rule for 'clientid'"""
clientid {
desc {
en: """ClientID"""
zh: """客户端标识符"""
}
label {
en: """clientid"""
zh: """客户端标识符"""
}
}
user_username_delete.desc:
"""Delete rule for 'username'"""
user_username_get.desc:
"""Get rule for 'username'"""
user_username_put.desc:
"""Set rule for 'username'"""
username.desc:
"""Username"""
username.label:
"""username"""
users_clientid_get.desc:
"""Show the list of rules for clients"""
users_clientid_post.desc:
"""Add new rule for 'clientid'"""
users_username_get.desc:
"""Show the list of rules for users"""
users_username_post.desc:
"""Add new rule for 'username'"""
username {
desc {
en: """Username"""
zh: """用户名"""
}
label {
en: """username"""
zh: """用户名"""
}
}
}

View File

@ -1,185 +1,90 @@
emqx_authz_api_schema {
enable {
desc {
en: """Set to <code>true</code> or <code>false</code> to disable this ACL provider."""
zh: """设为 <code>true</code> 或 <code>false</code> 以启用或禁用此访问控制数据源。"""
}
label {
en: """enable"""
zh: """enable"""
}
}
type {
desc {
en: """Backend type."""
zh: """数据后端类型。"""
}
label {
en: """type"""
zh: """type"""
}
}
body.desc:
"""HTTP request body."""
#==== authz_file
body.label:
"""body"""
rules {
desc {
en: """Authorization static file rules."""
zh: """静态授权文件规则。"""
}
label {
en: """rules"""
zh: """规则"""
}
}
cmd.desc:
"""Database query used to retrieve authorization data."""
#==== authz_http
cmd.label:
"""cmd"""
method {
desc {
en: """HTTP method."""
zh: """HTTP 请求方法。"""
}
label {
en: """method"""
zh: """method"""
}
}
collection.desc:
"""`MongoDB` collection containing the authorization data."""
url {
desc {
en: """URL of the auth server."""
zh: """认证服务器 URL。"""
}
label {
en: """url"""
zh: """url"""
}
}
collection.label:
"""collection"""
headers {
desc {
en: """List of HTTP Headers."""
zh: """HTTP Headers 列表"""
}
label {
en: """Headers"""
zh: """请求头"""
}
}
enable.desc:
"""Set to <code>true</code> or <code>false</code> to disable this ACL provider."""
headers_no_content_type {
desc {
en: """List of HTTP headers (without <code>content-type</code>)."""
zh: """HTTP Headers 列表(无 <code>content-type</code>)。"""
}
label {
en: """headers_no_content_type"""
zh: """请求头(无 content-type)"""
}
}
enable.label:
"""enable"""
body {
desc {
en: """HTTP request body."""
zh: """HTTP 请求体。"""
}
label {
en: """body"""
zh: """请求体"""
}
}
request_timeout {
desc {
en: """Request timeout."""
zh: """请求超时时间。"""
}
label {
en: """request_timeout"""
zh: """请求超时"""
}
}
#==== authz_mnesia
# only common fields(`enable` and `type`)
#==== authz_mongo
collection {
desc {
en: """`MongoDB` collection containing the authorization data."""
zh: """`MongoDB` 授权数据集。"""
}
label {
en: """collection"""
zh: """数据集"""
}
}
filter {
desc {
en: """Conditional expression that defines the filter condition in the query.
filter.desc:
"""Conditional expression that defines the filter condition in the query.
Filter supports the following placeholders:
- <code>${username}</code>: Will be replaced at runtime with <code>Username</code> used by the client when connecting;
- <code>${clientid}</code>: Will be replaced at runtime with <code>Client ID</code> used by the client when connecting."""
zh: """在查询中定义过滤条件的条件表达式。
过滤器支持如下占位符:
- <code>${username}</code>: 将在运行时被替换为客户端连接时使用的用户名
- <code>${clientid}</code>: 将在运行时被替换为客户端连接时使用的客户端标识符"""
}
label {
en: """Filter"""
zh: """过滤器"""
}
}
#==== authz_mysql
filter.label:
"""Filter"""
# `query`, is common field
headers.desc:
"""List of HTTP Headers."""
#==== authz_pgsql
headers.label:
"""Headers"""
# `query`, is common field
headers_no_content_type.desc:
"""List of HTTP headers (without <code>content-type</code>)."""
#==== authz_redis
headers_no_content_type.label:
"""headers_no_content_type"""
cmd {
desc {
en: """Database query used to retrieve authorization data."""
zh: """访问控制数据查询命令。"""
}
label {
en: """cmd"""
zh: """查询命令"""
}
}
method.desc:
"""HTTP method."""
#==== common field for DBs (except mongodb and redis)
method.label:
"""method"""
query {
desc {
en: """Database query used to retrieve authorization data."""
zh: """访问控制数据查询语句。"""
}
label {
en: """query"""
zh: """查询语句"""
}
}
position.desc:
"""Where to place the source."""
#==== fields
position.label:
"""position"""
query.desc:
"""Database query used to retrieve authorization data."""
query.label:
"""query"""
request_timeout.desc:
"""Request timeout."""
request_timeout.label:
"""request_timeout"""
rules.desc:
"""Authorization static file rules."""
rules.label:
"""rules"""
type.desc:
"""Backend type."""
type.label:
"""type"""
url.desc:
"""URL of the auth server."""
url.label:
"""url"""
position {
desc {
en: """Where to place the source."""
zh: """认证数据源位置。"""
}
label {
en: """position"""
zh: """位置"""
}
}
}

View File

@ -1,15 +1,9 @@
emqx_authz_api_settings {
authorization_settings_get {
desc {
en: """Get authorization settings"""
zh: """获取授权配置"""
}
}
authorization_settings_put {
desc {
en: """Update authorization settings"""
zh: """更新授权配置"""
}
}
authorization_settings_get.desc:
"""Get authorization settings"""
authorization_settings_put.desc:
"""Update authorization settings"""
}

View File

@ -1,116 +1,48 @@
emqx_authz_api_sources {
authorization_sources_get {
desc {
en: """List all authorization sources"""
zh: """列出所有授权数据源"""
}
}
authorization_sources_post {
desc {
en: """Add a new source"""
zh: """添加授权数据源"""
}
}
authorization_sources_get.desc:
"""List all authorization sources"""
authorization_sources_type_get {
desc {
en: """Get a authorization source"""
zh: """获取指定类型的授权数据源"""
}
}
authorization_sources_post.desc:
"""Add a new source"""
authorization_sources_type_put {
desc {
en: """Update source"""
zh: """更新指定类型的授权数据源"""
}
}
authorization_sources_type_delete.desc:
"""Delete source"""
authorization_sources_type_delete {
desc {
en: """Delete source"""
zh: """删除指定类型的授权数据源"""
}
}
authorization_sources_type_get.desc:
"""Get a authorization source"""
authorization_sources_type_status_get {
desc {
en: """Get a authorization source"""
zh: """获取指定授权数据源的状态"""
}
}
authorization_sources_type_move_post.desc:
"""Change the exection order of sources"""
authorization_sources_type_move_post {
desc {
en: """Change the exection order of sources"""
zh: """更新授权数据源的优先执行顺序"""
}
}
authorization_sources_type_put.desc:
"""Update source"""
sources {
desc {
en: """Authorization source"""
zh: """授权数据源列表"""
}
label {
en: """sources"""
zh: """数据源列表"""
}
}
authorization_sources_type_status_get.desc:
"""Get a authorization source"""
sources {
desc {
en: """Authorization sources"""
zh: """授权数据源列表"""
}
label {
en: """sources"""
zh: """数据源列表"""
}
}
source.desc:
"""Authorization source"""
source_config {
desc {
en: """Source config"""
zh: """数据源配置"""
}
label {
en: """source_config"""
zh: """数据源配置"""
}
}
source.label:
"""source"""
source {
desc {
en: """Authorization source"""
zh: """授权数据源"""
}
label {
en: """source"""
zh: """数据源"""
}
}
source_config.desc:
"""Source config"""
source_config {
desc {
en: """Source config"""
zh: """数据源配置"""
}
label {
en: """source_config"""
zh: """数据源配置"""
}
}
source_config.label:
"""source_config"""
source_type.desc:
"""Authorization type"""
source_type.label:
"""source_type"""
sources.desc:
"""Authorization sources"""
sources.label:
"""sources"""
source_type {
desc {
en: """Authorization type"""
zh: """数据源类型"""
}
label {
en: """source_type"""
zh: """数据源类型"""
}
}
}

View File

@ -1,7 +1,251 @@
emqx_authz_schema {
sources {
desc {
en: """Authorization data sources.<br/>
deny.desc:
"""The number of authentication failures."""
deny.label:
"""The Number of Authentication Failures"""
redis_sentinel.desc:
"""Authorization using a Redis Sentinel."""
redis_sentinel.label:
"""redis_sentinel"""
rate.desc:
"""The rate of matched, times/second."""
rate.label:
"""Rate"""
status.desc:
"""The status of the resource."""
status.label:
"""Status"""
method.desc:
"""HTTP method."""
method.label:
"""method"""
query.desc:
"""Database query used to retrieve authorization data."""
query.label:
"""query"""
metrics_total.desc:
"""The total number of times the authorization rule was triggered."""
metrics_total.label:
"""The Total Number of Times the Authorization Rule was Triggered"""
redis_cluster.desc:
"""Authorization using a Redis cluster."""
redis_cluster.label:
"""redis_cluster"""
mysql.desc:
"""Authorization using a MySQL database."""
mysql.label:
"""mysql"""
postgresql.desc:
"""Authorization using a PostgreSQL database."""
postgresql.label:
"""postgresql"""
mongo_rs.desc:
"""Authorization using a MongoDB replica set."""
mongo_rs.label:
"""mongo_rs"""
type.desc:
"""Backend type."""
type.label:
"""type"""
mongo_sharded.desc:
"""Authorization using a sharded MongoDB cluster."""
mongo_sharded.label:
"""mongo_sharded"""
body.desc:
"""HTTP request body."""
body.label:
"""Request Body"""
url.desc:
"""URL of the auth server."""
url.label:
"""URL"""
node.desc:
"""Node name."""
node.label:
"""Node Name."""
headers.desc:
"""List of HTTP Headers."""
headers.label:
"""Headers"""
rate_last5m.desc:
"""The average rate of matched in the last 5 minutes, times/second."""
rate_last5m.label:
"""Rate in Last 5min"""
headers_no_content_type.desc:
"""List of HTTP headers (without <code>content-type</code>)."""
headers_no_content_type.label:
"""headers_no_content_type"""
node_error.desc:
"""The error of node."""
node_error.label:
"""Error in Node"""
mnesia.desc:
"""Authorization using a built-in database (mnesia)."""
mnesia.label:
"""mnesia"""
enable.desc:
"""Set to <code>true</code> or <code>false</code> to disable this ACL provider"""
enable.label:
"""enable"""
matched.desc:
"""Count of this resource is queried."""
matched.label:
"""Matched"""
node_status.desc:
"""The status of the resource for each node."""
node_status.label:
"""Resource Status in Node"""
rate_max.desc:
"""The max rate of matched, times/second."""
rate_max.label:
"""Max Rate"""
filter.desc:
"""Conditional expression that defines the filter condition in the query.
Filter supports the following placeholders<br/>
- <code>${username}</code>: Will be replaced at runtime with <code>Username</code> used by the client when connecting<br/>
- <code>${clientid}</code>: Will be replaced at runtime with <code>Client ID</code> used by the client when connecting"""
filter.label:
"""Filter"""
path.desc:
"""Path to the file which contains the ACL rules.
If the file provisioned before starting EMQX node,
it can be placed anywhere as long as EMQX has read access to it.
That is, EMQX will treat it as read only.
In case the rule-set is created or updated from EMQX Dashboard or HTTP API,
a new file will be created and placed in `authz` subdirectory inside EMQX's `data_dir`,
and the old file will not be used anymore."""
path.label:
"""path"""
redis_single.desc:
"""Authorization using a single Redis instance."""
redis_single.label:
"""redis_single"""
failed.desc:
"""Count of query failed."""
failed.label:
"""Failed"""
metrics.desc:
"""The metrics of the resource."""
metrics.label:
"""Metrics"""
authorization.desc:
"""Configuration related to the client authorization."""
authorization.label:
"""authorization"""
collection.desc:
"""`MongoDB` collection containing the authorization data."""
collection.label:
"""collection"""
mongo_single.desc:
"""Authorization using a single MongoDB instance."""
mongo_single.label:
"""mongo_single"""
file.desc:
"""Authorization using a static file."""
file.label:
"""file"""
http_post.desc:
"""Authorization using an external HTTP server (via POST requests)."""
http_post.label:
"""http_post"""
request_timeout.desc:
"""HTTP request timeout."""
request_timeout.label:
"""Request Timeout"""
allow.desc:
"""The number of times the authentication was successful."""
allow.label:
"""The Number of Times the Authentication was Successful"""
cmd.desc:
"""Database query used to retrieve authorization data."""
cmd.label:
"""cmd"""
nomatch.desc:
"""The number of times that no authorization rules were matched."""
nomatch.label:
"""The Number of Times that no Authorization Rules were Matched"""
sources.desc:
"""Authorization data sources.<br/>
An array of authorization (ACL) data providers.
It is designed as an array, not a hash-map, so the sources can be
ordered to form a chain of access controls.<br/>
@ -19,525 +263,25 @@ NOTE:
The source elements are identified by their 'type'.
It is NOT allowed to configure two or more sources of the same type."""
zh: """授权数据源。<br/>
授权ACL数据源的列表。
它被设计为一个数组,而不是一个散列映射,
所以可以作为链式访问控制。<br/>
sources.label:
"""sources"""
当授权一个 'publish' 或 'subscribe' 行为时,
该配置列表中的所有数据源将按顺序进行检查。
如果在某个客户端未找到时(使用 ClientID 或 Username)。
将会移动到下一个数据源。直至得到 'allow' 或 'deny' 的结果。<br/>
node_metrics.desc:
"""The metrics of the resource for each node."""
如果在任何数据源中都未找到对应的客户端信息。
配置的默认行为 ('authorization.no_match') 将生效。<br/>
node_metrics.label:
"""Resource Metrics in Node"""
注意:
数据源使用 'type' 进行标识。
使用同一类型的数据源多于一次不被允许。"""
}
label {
en: """sources"""
zh: """数据源"""
}
}
success.desc:
"""Count of query success."""
authorization {
desc {
en: """Configuration related to the client authorization."""
zh: """客户端授权相关配置"""
}
label {
en: """authorization"""
zh: """授权"""
}
}
success.label:
"""Success"""
enable {
desc {
en: """Set to <code>true</code> or <code>false</code> to disable this ACL provider"""
zh: """设为 <code>true</code> 或 <code>false</code> 以启用或禁用此访问控制数据源"""
}
label {
en: """enable"""
zh: """enable"""
}
}
http_get.desc:
"""Authorization using an external HTTP server (via GET requests)."""
type {
desc {
en: """Backend type."""
zh: """数据后端类型"""
}
label {
en: """type"""
zh: """type"""
}
}
http_get.label:
"""http_get"""
#==== authz_file
file {
desc {
en: """Authorization using a static file."""
zh: """使用静态文件授权"""
}
label {
en: """file"""
zh: """文件"""
}
}
path {
desc {
en: """Path to the file which contains the ACL rules.
If the file provisioned before starting EMQX node,
it can be placed anywhere as long as EMQX has read access to it.
That is, EMQX will treat it as read only.
In case the rule-set is created or updated from EMQX Dashboard or HTTP API,
a new file will be created and placed in `authz` subdirectory inside EMQX's `data_dir`,
and the old file will not be used anymore."""
zh: """包含 ACL 规则的文件路径。
如果在启动 EMQX 节点前预先配置该路径,
那么可以将该文件置于任何 EMQX 可以访问到的位置。
如果从 EMQX Dashboard 或 HTTP API 创建或修改了规则集,
那么EMQX将会生成一个新的文件并将它存放在 `data_dir` 下的 `authz` 子目录中,
并从此弃用旧的文件。"""
}
label {
en: """path"""
zh: """path"""
}
}
#==== authz_http
http_get {
desc {
en: """Authorization using an external HTTP server (via GET requests)."""
zh: """使用外部 HTTP 服务器授权(GET 请求)。"""
}
label {
en: """http_get"""
zh: """http_get"""
}
}
http_post {
desc {
en: """Authorization using an external HTTP server (via POST requests)."""
zh: """使用外部 HTTP 服务器授权(POST 请求)。"""
}
label {
en: """http_post"""
zh: """http_post"""
}
}
method {
desc {
en: """HTTP method."""
zh: """HTTP 请求方法"""
}
label {
en: """method"""
zh: """method"""
}
}
url {
desc {
en: """URL of the auth server."""
zh: """授权 HTTP 服务器地址。"""
}
label {
en: """URL"""
zh: """URL"""
}
}
headers {
desc {
en: """List of HTTP Headers."""
zh: """HTTP Headers 列表"""
}
label {
en: """Headers"""
zh: """请求头"""
}
}
headers_no_content_type {
desc {
en: """List of HTTP headers (without <code>content-type</code>)."""
zh: """HTTP Headers 列表 (无 <code>content-type</code>) 。"""
}
label {
en: """headers_no_content_type"""
zh: """请求头(无 content-type)"""
}
}
body {
desc {
en: """HTTP request body."""
zh: """HTTP request body。"""
}
label {
en: """Request Body"""
zh: """Request Body"""
}
}
request_timeout {
desc {
en: """HTTP request timeout."""
zh: """HTTP 请求超时时长。"""
}
label {
en: """Request Timeout"""
zh: """请求超时时间"""
}
}
#==== authz_mnesia
mnesia {
desc {
en: """Authorization using a built-in database (mnesia)."""
zh: """使用内部数据库授权mnesia。"""
}
label {
en: """mnesia"""
zh: """mnesia"""
}
}
#==== authz_mongo
mongo_single {
desc {
en: """Authorization using a single MongoDB instance."""
zh: """使用 MongoDB 授权(单实例)。"""
}
label {
en: """mongo_single"""
zh: """mongo_single"""
}
}
mongo_rs {
desc {
en: """Authorization using a MongoDB replica set."""
zh: """使用 MongoDB 授权(副本集模式)"""
}
label {
en: """mongo_rs"""
zh: """mongo_rs"""
}
}
mongo_sharded {
desc {
en: """Authorization using a sharded MongoDB cluster."""
zh: """使用 MongoDB 授权(分片集群模式)。"""
}
label {
en: """mongo_sharded"""
zh: """mongo_sharded"""
}
}
collection {
desc {
en: """`MongoDB` collection containing the authorization data."""
zh: """`MongoDB` 授权数据集。"""
}
label {
en: """collection"""
zh: """数据集"""
}
}
filter {
desc {
en: """Conditional expression that defines the filter condition in the query.
Filter supports the following placeholders<br/>
- <code>${username}</code>: Will be replaced at runtime with <code>Username</code> used by the client when connecting<br/>
- <code>${clientid}</code>: Will be replaced at runtime with <code>Client ID</code> used by the client when connecting"""
zh: """在查询中定义过滤条件的条件表达式。
过滤器支持如下占位符:<br/>
- <code>${username}</code>:将在运行时被替换为客户端连接时使用的用户名<br/>
- <code>${clientid}</code>:将在运行时被替换为客户端连接时使用的客户端标识符"""
}
label {
en: """Filter"""
zh: """过滤器"""
}
}
#==== authz_mysql
mysql {
desc {
en: """Authorization using a MySQL database."""
zh: """使用 MySOL 数据库授权"""
}
label {
en: """mysql"""
zh: """mysql"""
}
}
#==== authz_pgsql
postgresql {
desc {
en: """Authorization using a PostgreSQL database."""
zh: """使用 PostgreSQL 数据库授权"""
}
label {
en: """postgresql"""
zh: """postgresql"""
}
}
#==== authz_redis
redis_single {
desc {
en: """Authorization using a single Redis instance."""
zh: """使用 Redis 授权(单实例)。"""
}
label {
en: """redis_single"""
zh: """redis_single"""
}
}
redis_sentinel {
desc {
en: """Authorization using a Redis Sentinel."""
zh: """使用 Redis 授权(哨兵模式)。"""
}
label {
en: """redis_sentinel"""
zh: """redis_sentinel"""
}
}
redis_cluster {
desc {
en: """Authorization using a Redis cluster."""
zh: """使用 Redis 授权(集群模式)。"""
}
label {
en: """redis_cluster"""
zh: """redis_cluster"""
}
}
cmd {
desc {
en: """Database query used to retrieve authorization data."""
zh: """访问控制数据查查询命令"""
}
label {
en: """cmd"""
zh: """查询命令"""
}
}
#==== common field for DBs (except redis)
query {
desc {
en: """Database query used to retrieve authorization data."""
zh: """访问控制数据查询语句/查询命令。"""
}
label {
en: """query"""
zh: """查询语句"""
}
}
#==== metrics field
metrics {
desc {
en: """The metrics of the resource."""
zh: """资源统计指标。"""
}
label: {
en: """Metrics"""
zh: """指标"""
}
}
node_metrics {
desc {
en: """The metrics of the resource for each node."""
zh: """每个节点上资源的统计指标。"""
}
label: {
en: """Resource Metrics in Node"""
zh: """节点资源指标"""
}
}
status {
desc {
en: """The status of the resource."""
zh: """资源状态。"""
}
label: {
en: """Status"""
zh: """状态"""
}
}
node_status {
desc {
en: """The status of the resource for each node."""
zh: """每个节点上资源的状态。"""
}
label: {
en: """Resource Status in Node"""
zh: """节点资源状态"""
}
}
node_error {
desc {
en: """The error of node."""
zh: """节点上产生的错误。"""
}
label: {
en: """Error in Node"""
zh: """节点产生的错误"""
}
}
matched {
desc {
en: """Count of this resource is queried."""
zh: """请求命中次数。"""
}
label: {
en: """Matched"""
zh: """已命中"""
}
}
success {
desc {
en: """Count of query success."""
zh: """请求成功次数。"""
}
label: {
en: """Success"""
zh: """成功"""
}
}
failed {
desc {
en: """Count of query failed."""
zh: """请求失败次数。"""
}
label: {
en: """Failed"""
zh: """失败"""
}
}
rate {
desc {
en: """The rate of matched, times/second."""
zh: """命中速率,单位:次/秒。"""
}
label: {
en: """Rate"""
zh: """速率"""
}
}
rate_max {
desc {
en: """The max rate of matched, times/second."""
zh: """最大命中速率,单位:次/秒。"""
}
label: {
en: """Max Rate"""
zh: """最大速率"""
}
}
rate_last5m {
desc {
en: """The average rate of matched in the last 5 minutes, times/second."""
zh: """5分钟内平均命中速率单位次/秒。"""
}
label: {
en: """Rate in Last 5min"""
zh: """5分钟内速率"""
}
}
node {
desc {
en: """Node name."""
zh: """节点名称。"""
}
label: {
en: """Node Name."""
zh: """节点名称。"""
}
}
metrics_total {
desc {
en: """The total number of times the authorization rule was triggered."""
zh: """授权实例被触发的总次数。"""
}
label: {
en: """The Total Number of Times the Authorization Rule was Triggered"""
zh: """授权实例被触发的总次数"""
}
}
nomatch {
desc {
en: """The number of times that no authorization rules were matched."""
zh: """没有匹配到任何授权规则的次数。"""
}
label: {
en: """The Number of Times that no Authorization Rules were Matched"""
zh: """没有匹配到任何授权规则的次数"""
}
}
allow {
desc {
en: """The number of times the authentication was successful."""
zh: """授权成功的次数。"""
}
label: {
en: """The Number of Times the Authentication was Successful"""
zh: """授权成功次数"""
}
}
deny {
desc {
en: """The number of authentication failures."""
zh: """授权失败的次数。"""
}
label: {
en: """The Number of Authentication Failures"""
zh: """授权失败次数"""
}
}
}

View File

@ -1,23 +1,12 @@
emqx_auto_subscribe_api {
list_auto_subscribe_api {
desc {
en: """Get auto subscribe topic list"""
zh: """获取自动订阅主题列表"""
}
}
update_auto_subscribe_api {
desc {
en: """Update auto subscribe topic list"""
zh: """更新自动订阅主题列表"""
}
}
list_auto_subscribe_api.desc:
"""Get auto subscribe topic list"""
update_auto_subscribe_api_response409 {
desc {
en: """Auto Subscribe topics max limit"""
zh: """超出自定订阅主题列表长度限制"""
}
}
update_auto_subscribe_api.desc:
"""Update auto subscribe topic list"""
update_auto_subscribe_api_response409.desc:
"""Auto Subscribe topics max limit"""
}

View File

@ -1,85 +1,48 @@
emqx_auto_subscribe_schema {
auto_subscribe {
desc {
en: """After the device logs in successfully, the subscription is automatically completed for the device through the pre-defined subscription representation. Supports the use of placeholders."""
zh: """设备登录成功之后,通过预设的订阅表示符,为设备自动完成订阅。支持使用占位符。"""
}
label {
en: """Auto Subscribe"""
zh: """自动订阅"""
}
}
topic {
desc {
en: """Topic name, placeholders are supported. For example: client/${clientid}/username/${username}/host/${host}/port/${port}
Required field, and cannot be empty string"""
zh: """订阅标识符,支持使用占位符,例如 client/${clientid}/username/${username}/host/${host}/port/${port}
必填,且不可为空字符串"""
}
label {
en: """Topic"""
zh: """订阅标识符"""
}
}
auto_subscribe.desc:
"""After the device logs in successfully, the subscription is automatically completed for the device through the pre-defined subscription representation. Supports the use of placeholders."""
qos {
desc {
en: """Default value 0. Quality of service.
auto_subscribe.label:
"""Auto Subscribe"""
nl.desc:
"""Default value 0.
MQTT v3.1.1 if you subscribe to the topic published by yourself, you will receive all messages that you published.
MQTT v5: if you set this option as 1 when subscribing, the server will not forward the message you published to you."""
nl.label:
"""No Local"""
qos.desc:
"""Default value 0. Quality of service.
At most once (0)
At least once (1)
Exactly once (2)"""
zh: """缺省值为 0服务质量
QoS 0消息最多传递一次如果当时客户端不可用则会丢失该消息。
QoS 1消息传递至少 1 次。
QoS 2消息仅传送一次。"""
}
label {
en: """Quality of Service"""
zh: """服务质量"""
}
}
rh {
desc {
en: """Default value 0. This option is used to specify whether the server forwards the retained message to the client when establishing a subscription.
qos.label:
"""Quality of Service"""
rap.desc:
"""Default value 0. This option is used to specify whether the server retains the RETAIN mark when forwarding messages to the client, and this option does not affect the RETAIN mark in the retained message. Therefore, when the option Retain As Publish is set to 0, the client will directly distinguish whether this is a normal forwarded message or a retained message according to the RETAIN mark in the message, instead of judging whether this message is the first received after subscribing(the forwarded message may be sent before the retained message, which depends on the specific implementation of different brokers)."""
rap.label:
"""Retain As Publish"""
rh.desc:
"""Default value 0. This option is used to specify whether the server forwards the retained message to the client when establishing a subscription.
Retain Handling is equal to 0, as long as the client successfully subscribes, the server will send the retained message.
Retain Handling is equal to 1, if the client successfully subscribes and this subscription does not exist previously, the server sends the retained message. After all, sometimes the client re-initiate the subscription just to change the QoS, but it does not mean that it wants to receive the reserved messages again.
Retain Handling is equal to 2, even if the client successfully subscribes, the server does not send the retained message."""
zh: """指定订阅建立时服务端是否向客户端发送保留消息,
可选值 0只要客户端订阅成功服务端就发送保留消息。
可选值 1客户端订阅成功且该订阅此前不存在服务端才发送保留消息。毕竟有些时候客户端重新发起订阅可能只是为了改变一下 QoS并不意味着它想再次接收保留消息。
可选值 2即便客户订阅成功服务端也不会发送保留消息。"""
}
label {
en: """Retain Handling"""
zh: """Retain Handling"""
}
}
rap {
desc {
en: """Default value 0. This option is used to specify whether the server retains the RETAIN mark when forwarding messages to the client, and this option does not affect the RETAIN mark in the retained message. Therefore, when the option Retain As Publish is set to 0, the client will directly distinguish whether this is a normal forwarded message or a retained message according to the RETAIN mark in the message, instead of judging whether this message is the first received after subscribing(the forwarded message may be sent before the retained message, which depends on the specific implementation of different brokers)."""
zh: """缺省值为 0这一选项用来指定服务端向客户端转发消息时是否要保留其中的 RETAIN 标识,注意这一选项不会影响保留消息中的 RETAIN 标识。因此当 Retain As Publish 选项被设置为 0 时,客户端直接依靠消息中的 RETAIN 标识来区分这是一个正常的转发消息还是一个保留消息,而不是去判断消息是否是自己订阅后收到的第一个消息(转发消息甚至可能会先于保留消息被发送,视不同 Broker 的具体实现而定)。"""
}
label {
en: """Retain As Publish"""
zh: """Retain As Publish"""
}
}
rh.label:
"""Retain Handling"""
topic.desc:
"""Topic name, placeholders are supported. For example: client/${clientid}/username/${username}/host/${host}/port/${port}
Required field, and cannot be empty string"""
topic.label:
"""Topic"""
nl {
desc {
en: """Default value 0.
MQTT v3.1.1 if you subscribe to the topic published by yourself, you will receive all messages that you published.
MQTT v5: if you set this option as 1 when subscribing, the server will not forward the message you published to you."""
zh: """缺省值为0
MQTT v3.1.1:如果设备订阅了自己发布消息的主题,那么将收到自己发布的所有消息。
MQTT v5如果设备在订阅时将此选项设置为 1那么服务端将不会向设备转发自己发布的消息"""
}
label {
en: """No Local"""
zh: """No Local"""
}
}
}

View File

@ -1,180 +1,100 @@
emqx_bridge_api {
desc_param_path_operation_cluster {
desc {
en: """Operations can be one of: stop, restart"""
zh: """集群可用操作:停止、重新启动"""
}
label: {
en: "Cluster Operation"
zh: "集群可用操作"
}
}
desc_api1.desc:
"""List all created bridges"""
desc_param_path_operation_on_node {
desc {
en: """Operations can be one of: stop, restart"""
zh: """节点可用操作:停止、重新启动"""
}
label: {
en: "Node Operation "
zh: "节点可用操作"
}
}
desc_api1.label:
"""List All Bridges"""
desc_param_path_node {
desc {
en: """The node name, e.g. emqx@127.0.0.1"""
zh: """节点名,比如 emqx@127.0.0.1"""
}
label: {
en: "The node name"
zh: "节点名"
}
}
desc_api2.desc:
"""Create a new bridge by type and name"""
desc_param_path_id {
desc {
en: """The bridge Id. Must be of format {type}:{name}"""
zh: """Bridge ID 格式为 {type}:{name}"""
}
label: {
en: "Bridge ID"
zh: "Bridge ID"
}
}
desc_api2.label:
"""Create Bridge"""
desc_param_path_enable {
desc {
en: """Whether to enable this bridge"""
zh: """是否启用桥接"""
}
label: {
en: "Enable bridge"
zh: "启用桥接"
}
}
desc_api1 {
desc {
en: """List all created bridges"""
zh: """列出所有 Bridge"""
}
label: {
en: "List All Bridges"
zh: "列出所有 Bridge"
}
}
desc_api3.desc:
"""Get a bridge by Id"""
desc_api2 {
desc {
en: """Create a new bridge by type and name"""
zh: """通过类型和名字创建 Bridge"""
}
label: {
en: "Create Bridge"
zh: "创建 Bridge"
}
}
desc_api3.label:
"""Get Bridge"""
desc_api3 {
desc {
en: """Get a bridge by Id"""
zh: """通过 ID 获取 Bridge"""
}
label: {
en: "Get Bridge"
zh: "获取 Bridge"
}
}
desc_api4.desc:
"""Update a bridge by Id"""
desc_api4 {
desc {
en: """Update a bridge by Id"""
zh: """通过 ID 更新 Bridge"""
}
label: {
en: "Update Bridge"
zh: "更新 Bridge"
}
}
desc_api4.label:
"""Update Bridge"""
desc_api5 {
desc {
en: """Delete a bridge by Id"""
zh: """通过 ID 删除 Bridge"""
}
label: {
en: "Delete Bridge"
zh: "删除 Bridge"
}
}
desc_api5.desc:
"""Delete a bridge by Id"""
desc_api6 {
desc {
en: """Reset a bridge metrics by Id"""
zh: """通过 ID 重置 Bridge 的计数"""
}
label: {
en: "Reset Bridge Metrics"
zh: "重置 Bridge 计数"
}
}
desc_api5.label:
"""Delete Bridge"""
desc_api7 {
desc {
en: """Stop/Restart bridges on all nodes in the cluster."""
zh: """停止或启用所有节点上的桥接"""
}
label: {
en: "Cluster Bridge Operate"
zh: "集群 Bridge 操作"
}
}
desc_api6.desc:
"""Reset a bridge metrics by Id"""
desc_api8 {
desc {
en: """Stop/Restart bridges on a specific node."""
zh: """在某个节点上停止/重新启动 Bridge。"""
}
label: {
en: "Node Bridge Operate"
zh: "单节点 Bridge 操作"
}
}
desc_api6.label:
"""Reset Bridge Metrics"""
desc_api9 {
desc {
en: """Test creating a new bridge by given ID </br>
desc_api7.desc:
"""Stop/Restart bridges on all nodes in the cluster."""
desc_api7.label:
"""Cluster Bridge Operate"""
desc_api8.desc:
"""Stop/Restart bridges on a specific node."""
desc_api8.label:
"""Node Bridge Operate"""
desc_api9.desc:
"""Test creating a new bridge by given ID </br>
The ID must be of format '{type}:{name}'"""
zh: """通过给定的 ID 测试创建一个新的桥接。 </br>
ID 的格式必须为 {type}:{name}”"""
}
label: {
en: "Test Bridge Creation"
zh: "测试桥接创建"
}
}
desc_bridge_metrics {
desc {
en: """Get bridge metrics by Id"""
zh: """通过 Id 来获取桥接的指标信息"""
}
label: {
en: "Get Bridge Metrics"
zh: "获取桥接的指标"
}
}
desc_api9.label:
"""Test Bridge Creation"""
desc_enable_bridge {
desc {
en: """Enable or Disable bridges on all nodes in the cluster."""
zh: """启用或禁用所有节点上的桥接"""
}
label: {
en: "Cluster Bridge Enable"
zh: "是否启用集群内的桥接"
}
}
desc_bridge_metrics.desc:
"""Get bridge metrics by Id"""
desc_bridge_metrics.label:
"""Get Bridge Metrics"""
desc_enable_bridge.desc:
"""Enable or Disable bridges on all nodes in the cluster."""
desc_enable_bridge.label:
"""Cluster Bridge Enable"""
desc_param_path_enable.desc:
"""Whether to enable this bridge"""
desc_param_path_enable.label:
"""Enable bridge"""
desc_param_path_id.desc:
"""The bridge Id. Must be of format {type}:{name}"""
desc_param_path_id.label:
"""Bridge ID"""
desc_param_path_node.desc:
"""The node name, e.g. emqx@127.0.0.1"""
desc_param_path_node.label:
"""The node name"""
desc_param_path_operation_cluster.desc:
"""Operations can be one of: stop, restart"""
desc_param_path_operation_cluster.label:
"""Cluster Operation"""
desc_param_path_operation_on_node.desc:
"""Operations can be one of: stop, restart"""
desc_param_path_operation_on_node.label:
"""Node Operation """
}

File diff suppressed because it is too large Load Diff

View File

@ -1,34 +1,21 @@
emqx_bridge_mqtt_schema {
config {
desc {
en: """The config for MQTT Bridges."""
zh: """MQTT Bridge 的配置。"""
}
label: {
en: "Config"
zh: "配置"
}
}
desc_type {
desc {
en: """The bridge type."""
zh: """Bridge 的类型"""
}
label: {
en: "Bridge Type"
zh: "Bridge 类型"
}
}
desc_name {
desc {
en: """Bridge name, used as a human-readable description of the bridge."""
zh: """Bridge 名字Bridge 的可读描述"""
}
label: {
en: "Bridge Name"
zh: "Bridge 名字"
}
}
config.desc:
"""The config for MQTT Bridges."""
config.label:
"""Config"""
desc_name.desc:
"""Bridge name, used as a human-readable description of the bridge."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The bridge type."""
desc_type.label:
"""Bridge Type"""
}

View File

@ -1,324 +1,158 @@
emqx_bridge_schema {
desc_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用 Bridge"""
}
label: {
en: "Enable Or Disable Bridge"
zh: "启用/禁用 Bridge"
}
}
bridges_mqtt.desc:
"""MQTT bridges to/from another MQTT broker"""
desc_metrics {
desc {
en: """The metrics of the bridge"""
zh: """Bridge 的计数"""
}
label: {
en: "Bridge Metrics"
zh: "Bridge 计数"
}
}
bridges_mqtt.label:
"""MQTT Bridge"""
desc_node_metrics {
desc {
en: """The metrics of the bridge for each node"""
zh: """每个节点的 Bridge 计数"""
}
label: {
en: "Each Node Bridge Metircs"
zh: "每个节点的 Bridge 计数"
}
}
bridges_webhook.desc:
"""WebHook to an HTTP server."""
desc_status {
desc {
en: """The status of the bridge<br/>
bridges_webhook.label:
"""WebHook"""
desc_bridges.desc:
"""Configuration for MQTT bridges."""
desc_bridges.label:
"""MQTT Bridge Configuration"""
desc_enable.desc:
"""Enable or disable this bridge"""
desc_enable.label:
"""Enable Or Disable Bridge"""
desc_metrics.desc:
"""Bridge metrics."""
desc_metrics.label:
"""Bridge Metrics"""
desc_node_metrics.desc:
"""Node metrics."""
desc_node_metrics.label:
"""Node Metrics"""
desc_node_name.desc:
"""The node name."""
desc_node_name.label:
"""Node Name"""
desc_node_status.desc:
"""Node status."""
desc_node_status.label:
"""Node Status"""
desc_status.desc:
"""The status of the bridge<br/>
- <code>connecting</code>: the initial state before any health probes were made.<br/>
- <code>connected</code>: when the bridge passes the health probes.<br/>
- <code>disconnected</code>: when the bridge can not pass health probes.<br/>
- <code>stopped</code>: when the bridge resource is requested to be stopped.<br/>
- <code>inconsistent</code>: When not all the nodes are at the same status."""
zh: """Bridge 的连接状态<br/>
- <code>connecting</code>: 启动时的初始状态。<br/>
- <code>connected</code>: 桥接驱动健康检查正常。<br/>
- <code>disconnected</code>: 当桥接无法通过健康检查。<br/>
- <code>stopped</code>: 桥接处于停用状态。<br/>
- <code>inconsistent</code>: 集群中有各节点汇报的状态不一致。"""
}
label: {
en: "Bridge Status"
zh: "Bridge 状态"
}
}
desc_status_reason {
desc {
en: "This is the reason given in case a bridge is failing to connect."
zh: "桥接连接失败的原因。"
}
label: {
en: "Failure reason"
zh: "失败原因"
}
}
desc_status.label:
"""Bridge Status"""
desc_node_status {
desc {
en: """The status of the bridge for each node.
- <code>connecting</code>: the initial state before any health probes were made.<br/>
- <code>connected</code>: when the bridge passes the health probes.<br/>
- <code>disconnected</code>: when the bridge can not pass health probes.<br/>
- <code>stopped</code>: when the bridge resource is requested to be stopped."""
zh: """每个节点的 Bridge 状态
- <code>connecting</code>: 启动时的初始状态。<br/>
- <code>connected</code>: 桥接驱动健康检查正常。<br/>
- <code>disconnected</code>: 当桥接无法通过健康检查。<br/>
- <code>stopped</code>: 桥接处于停用状态。"""
}
label: {
en: "Node Bridge Status"
zh: "每个节点的 Bridge 状态"
}
}
desc_status_reason.desc:
"""This is the reason given in case a bridge is failing to connect."""
bridges_webhook {
desc {
en: """WebHook to an HTTP server."""
zh: """转发消息到 HTTP 服务器的 WebHook"""
}
label: {
en: "WebHook"
zh: "WebHook"
}
}
desc_status_reason.label:
"""Failure reason"""
metric_dropped.desc:
"""Count of messages dropped."""
bridges_mqtt {
desc {
en: """MQTT bridges to/from another MQTT broker"""
zh: """桥接到另一个 MQTT Broker 的 MQTT Bridge"""
}
label: {
en: "MQTT Bridge"
zh: "MQTT Bridge"
}
}
metric_dropped.label:
"""Dropped"""
metric_dropped {
desc {
en: """Count of messages dropped."""
zh: """被丢弃的消息个数。"""
}
label: {
en: "Dropped"
zh: "丢弃"
}
}
metric_dropped_other.desc:
"""Count of messages dropped due to other reasons."""
metric_dropped_other {
desc {
en: """Count of messages dropped due to other reasons."""
zh: """因为其他原因被丢弃的消息个数。"""
}
label: {
en: "Dropped Other"
zh: "其他丢弃"
}
}
metric_dropped_queue_full {
desc {
en: """Count of messages dropped due to the queue is full."""
zh: """因为队列已满被丢弃的消息个数。"""
}
label: {
en: "Dropped Queue Full"
zh: "队列已满被丢弃"
}
}
metric_dropped_resource_not_found {
desc {
en: """Count of messages dropped due to the resource is not found."""
zh: """因为资源不存在被丢弃的消息个数。"""
}
label: {
en: "Dropped Resource NotFound"
zh: "资源不存在被丢弃"
}
}
metric_dropped_resource_stopped {
desc {
en: """Count of messages dropped due to the resource is stopped."""
zh: """因为资源已停用被丢弃的消息个数。"""
}
label: {
en: "Dropped Resource Stopped"
zh: "资源停用被丢弃"
}
}
metric_matched {
desc {
en: """Count of this bridge is matched and queried."""
zh: """Bridge 被匹配到(被请求)的次数。"""
}
label: {
en: "Matched"
zh: "匹配次数"
}
}
metric_dropped_other.label:
"""Dropped Other"""
metric_queuing {
desc {
en: """Count of messages that are currently queuing."""
zh: """当前被缓存到磁盘队列的消息个数。"""
}
label: {
en: "Queued"
zh: "被缓存"
}
}
metric_retried {
desc {
en: """Times of retried."""
zh: """重试的次数。"""
}
label: {
en: "Retried"
zh: "已重试"
}
}
metric_dropped_queue_full.desc:
"""Count of messages dropped due to the queue is full."""
metric_sent_failed {
desc {
en: """Count of messages that sent failed."""
zh: """发送失败的消息个数。"""
}
label: {
en: "Sent Failed"
zh: "发送失败"
}
}
metric_dropped_queue_full.label:
"""Dropped Queue Full"""
metric_inflight {
desc {
en: """Count of messages that were sent asynchronously but ACKs are not yet received."""
zh: """已异步地发送但没有收到 ACK 的消息个数。"""
}
label: {
en: "Sent Inflight"
zh: "已发送未确认"
}
}
metric_sent_success {
desc {
en: """Count of messages that sent successfully."""
zh: """已经发送成功的消息个数。"""
}
label: {
en: "Sent Success"
zh: "发送成功"
}
}
metric_dropped_resource_not_found.desc:
"""Count of messages dropped due to the resource is not found."""
metric_rate {
desc {
en: """The rate of matched, times/second"""
zh: """执行操作的速率,次/秒"""
}
label: {
en: "Rate"
zh: "速率"
}
}
metric_dropped_resource_not_found.label:
"""Dropped Resource NotFound"""
metric_rate_max {
desc {
en: """The max rate of matched, times/second"""
zh: """执行操作的最大速率,次/秒"""
}
label: {
en: "Max Rate Of Matched"
zh: "执行操作的最大速率"
}
}
metric_dropped_resource_stopped.desc:
"""Count of messages dropped due to the resource is stopped."""
metric_rate_last5m {
desc {
en: """The average rate of matched in the last 5 minutes, times/second"""
zh: """5 分钟平均速率,次/秒"""
}
label: {
en: "Last 5 Minutes Rate"
zh: "5 分钟平均速率"
}
}
metric_dropped_resource_stopped.label:
"""Dropped Resource Stopped"""
metric_received {
desc {
en: """Count of messages that is received from the remote system."""
zh: """从远程系统收到的消息个数。"""
}
label: {
en: "Received"
zh: "已接收"
}
}
metric_inflight.desc:
"""Count of messages that were sent asynchronously but ACKs are not yet received."""
desc_bridges {
desc {
en: """Configuration for MQTT bridges."""
zh: """MQTT Bridge 配置"""
}
label: {
en: "MQTT Bridge Configuration"
zh: "MQTT Bridge 配置"
}
}
metric_inflight.label:
"""Sent Inflight"""
desc_metrics {
desc {
en: """Bridge metrics."""
zh: """Bridge 计数"""
}
label: {
en: "Bridge Metrics"
zh: "Bridge 计数"
}
}
metric_matched.desc:
"""Count of this bridge is matched and queried."""
desc_node_metrics {
desc {
en: """Node metrics."""
zh: """节点的计数器"""
}
label: {
en: "Node Metrics"
zh: "节点的计数器"
}
}
metric_matched.label:
"""Matched"""
desc_node_status {
desc {
en: """Node status."""
zh: """节点的状态"""
}
label: {
en: "Node Status"
zh: "节点的状态"
}
}
metric_queuing.desc:
"""Count of messages that are currently queuing."""
desc_node_name {
desc {
en: """The node name."""
zh: """节点的名字"""
}
label: {
en: "Node Name"
zh: "节点名字"
}
}
metric_queuing.label:
"""Queued"""
metric_rate.desc:
"""The rate of matched, times/second"""
metric_rate.label:
"""Rate"""
metric_rate_last5m.desc:
"""The average rate of matched in the last 5 minutes, times/second"""
metric_rate_last5m.label:
"""Last 5 Minutes Rate"""
metric_rate_max.desc:
"""The max rate of matched, times/second"""
metric_rate_max.label:
"""Max Rate Of Matched"""
metric_received.desc:
"""Count of messages that is received from the remote system."""
metric_received.label:
"""Received"""
metric_retried.desc:
"""Times of retried."""
metric_retried.label:
"""Retried"""
metric_sent_failed.desc:
"""Count of messages that sent failed."""
metric_sent_failed.label:
"""Sent Failed"""
metric_sent_success.desc:
"""Count of messages that sent successfully."""
metric_sent_success.label:
"""Sent Success"""
}

View File

@ -1,162 +1,92 @@
emqx_bridge_webhook_schema {
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用 Bridge"""
}
label: {
en: "Enable Or Disable Bridge"
zh: "启用/禁用 Bridge"
}
}
config_direction {
desc {
en: """Deprecated, The direction of this bridge, MUST be 'egress'"""
zh: """已废弃Bridge 的方向,必须是 egress"""
}
label: {
en: "Bridge Direction"
zh: "Bridge 方向"
}
}
config_url {
desc {
en: """The URL of the HTTP Bridge.<br/>
Template with variables is allowed in the path, but variables cannot be used in the scheme, host,
or port part.<br/>
For example, <code> http://localhost:9901/${topic} </code> is allowed, but
<code> http://${host}:9901/message </code> or <code> http://localhost:${port}/message </code>
is not allowed."""
zh: """HTTP Bridge 的 URL。<br/>
路径中允许使用带变量的模板,但是 host port 不允许使用变量模板。<br/>
例如,<code> http://localhost:9901/${topic} </code> 是允许的,
但是<code> http://${host}:9901/message </code>
或 <code> http://localhost:${port}/message </code>
不允许。"""
}
label: {
en: "HTTP Bridge"
zh: "HTTP Bridge"
}
}
config_local_topic {
desc {
en: """The MQTT topic filter to be forwarded to the HTTP server. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.<br/>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 HTTP 服务器。 <br/>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发到 HTTP 服务器。"""
}
label: {
en: "Local Topic"
zh: "本地 Topic"
}
}
config_method {
desc {
en: """The method of the HTTP request. All the available methods are: post, put, get, delete.<br/>
Template with variables is allowed."""
zh: """HTTP 请求的方法。 所有可用的方法包括post、put、get、delete。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "HTTP Method"
zh: "HTTP 请求方法"
}
}
config_headers {
desc {
en: """The headers of the HTTP request.<br/>
Template with variables is allowed."""
zh: """HTTP 请求的标头。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "HTTP Header"
zh: "HTTP 请求标头"
}
}
config_body {
desc {
en: """The body of the HTTP request.<br/>
config_body.desc:
"""The body of the HTTP request.<br/>
If not provided, the body will be a JSON object of all the available fields.<br/>
There, 'all the available fields' means the context of a MQTT message when
this webhook is triggered by receiving a MQTT message (the `local_topic` is set),
or the context of the event when this webhook is triggered by a rule (i.e. this
webhook is used as an action of a rule).<br/>
Template with variables is allowed."""
zh: """HTTP 请求的正文。<br/>
如果没有设置该字段,请求正文将是包含所有可用字段的 JSON object。<br/>
如果该 webhook 是由于收到 MQTT 消息触发的,'所有可用字段' 将是 MQTT 消息的
上下文信息;如果该 webhook 是由于规则触发的,'所有可用字段' 则为触发事件的上下文信息。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "HTTP Body"
zh: "HTTP 请求正文"
}
}
config_request_timeout {
desc {
en: """HTTP request timeout."""
zh: """HTTP 请求超时"""
}
label: {
en: "HTTP Request Timeout"
zh: "HTTP 请求超时"
}
}
config_body.label:
"""HTTP Body"""
config_max_retries {
desc {
en: """HTTP request max retry times if failed."""
zh: """HTTP 请求失败最大重试次数"""
}
label: {
en: "HTTP Request Max Retries"
zh: "HTTP 请求重试次数"
}
}
config_direction.desc:
"""Deprecated, The direction of this bridge, MUST be 'egress'"""
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label: {
en: "Bridge Type"
zh: "Bridge 类型"
}
}
config_direction.label:
"""Bridge Direction"""
desc_name {
desc {
en: """Bridge name, used as a human-readable description of the bridge."""
zh: """Bridge 名字Bridge 的可读描述"""
}
label: {
en: "Bridge Name"
zh: "Bridge 名字"
}
}
config_enable.desc:
"""Enable or disable this bridge"""
desc_config {
desc {
en: """Configuration for an HTTP bridge."""
zh: """HTTP Bridge 配置"""
}
label: {
en: "HTTP Bridge Configuration"
zh: "HTTP Bridge 配置"
}
}
config_enable.label:
"""Enable Or Disable Bridge"""
config_headers.desc:
"""The headers of the HTTP request.<br/>
Template with variables is allowed."""
config_headers.label:
"""HTTP Header"""
config_local_topic.desc:
"""The MQTT topic filter to be forwarded to the HTTP server. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.<br/>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
config_local_topic.label:
"""Local Topic"""
config_max_retries.desc:
"""HTTP request max retry times if failed."""
config_max_retries.label:
"""HTTP Request Max Retries"""
config_method.desc:
"""The method of the HTTP request. All the available methods are: post, put, get, delete.<br/>
Template with variables is allowed."""
config_method.label:
"""HTTP Method"""
config_request_timeout.desc:
"""HTTP request timeout."""
config_request_timeout.label:
"""HTTP Request Timeout"""
config_url.desc:
"""The URL of the HTTP Bridge.<br/>
Template with variables is allowed in the path, but variables cannot be used in the scheme, host,
or port part.<br/>
For example, <code> http://localhost:9901/${topic} </code> is allowed, but
<code> http://${host}:9901/message </code> or <code> http://localhost:${port}/message </code>
is not allowed."""
config_url.label:
"""HTTP Bridge"""
desc_config.desc:
"""Configuration for an HTTP bridge."""
desc_config.label:
"""HTTP Bridge Configuration"""
desc_name.desc:
"""Bridge name, used as a human-readable description of the bridge."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
}

View File

@ -1,58 +1,27 @@
emqx_coap_api {
send_coap_request {
desc {
en: """Send a CoAP request message to the client"""
zh: """发送 CoAP 消息到指定客户端"""
}
}
content_type.desc:
"""Payload type"""
token {
desc {
en: """Message token, can be empty"""
zh: """消息 Token, 可以为空"""
}
}
message_id.desc:
"""Message ID"""
method {
desc {
en: """Request method type"""
zh: """请求 Method 类型"""
}
}
method.desc:
"""Request method type"""
timeout {
desc {
en: """Timespan for response"""
zh: """请求超时时间"""
}
}
payload.desc:
"""The content of the payload"""
content_type {
desc {
en: """Payload type"""
zh: """Payload 类型"""
}
}
response_code.desc:
"""Response code"""
payload {
desc {
en: """The content of the payload"""
zh: """Payload 内容"""
}
}
send_coap_request.desc:
"""Send a CoAP request message to the client"""
message_id {
desc {
en: """Message ID"""
zh: """消息 ID"""
}
}
timeout.desc:
"""Timespan for response"""
token.desc:
"""Message token, can be empty"""
response_code {
desc {
en: """Response code"""
zh: """应答码"""
}
}
}

View File

@ -1,80 +1,38 @@
emqx_coap_schema {
coap {
desc {
en: """The CoAP Gateway configuration.
coap.desc:
"""The CoAP Gateway configuration.
This gateway is implemented based on RFC-7252 and https://core-wg.github.io/coap-pubsub/draft-ietf-core-pubsub.html"""
zh: """CoAP 网关配置。
该网关的实现基于 RFC-7252 和 https://core-wg.github.io/coap-pubsub/draft-ietf-core-pubsub.html"""
}
}
coap_heartbeat {
desc {
en: """The gateway server required minimum heartbeat interval.
When connection mode is enabled, this parameter is used to set the minimum heartbeat interval for the connection to be alive"""
zh: """CoAP 网关要求客户端的最小心跳间隔时间。
当 <code>connection_required</code> 开启后,该参数用于检查客户端连接是否存活"""
}
}
coap_connection_required {
desc {
en: """Enable or disable connection mode.
coap_connection_required.desc:
"""Enable or disable connection mode.
Connection mode is a feature of non-standard protocols. When connection mode is enabled, it is necessary to maintain the creation, authentication and alive of connection resources"""
zh: """是否开启连接模式。
连接模式是非标准协议的功能。它维护 CoAP 客户端上线、认证、和连接状态的保持"""
}
}
coap_notify_type {
desc {
en: """The Notification Message will be delivered to the CoAP client if a new message received on an observed topic.
coap_heartbeat.desc:
"""The gateway server required minimum heartbeat interval.
When connection mode is enabled, this parameter is used to set the minimum heartbeat interval for the connection to be alive"""
coap_notify_type.desc:
"""The Notification Message will be delivered to the CoAP client if a new message received on an observed topic.
The type of delivered coap message can be set to:<br/>
- non: Non-confirmable;<br/>
- con: Confirmable;<br/>
- qos: Mapping from QoS type of received message, QoS0 -> non, QoS1,2 -> con"""
zh: """投递给 CoAP 客户端的通知消息类型。当客户端 Observe 一个资源(或订阅某个主题)时,网关会向客户端推送新产生的消息。其消息类型可设置为:<br/>
- non: 不需要客户端返回确认消息;<br/>
- con: 需要客户端返回一个确认消息;<br/>
- qos: 取决于消息的 QoS 等级; QoS 0 会以 `non` 类型下发QoS 1/2 会以 `con` 类型下发"""
}
}
coap_subscribe_qos {
desc {
en: """The Default QoS Level indicator for subscribe request.
This option specifies the QoS level for the CoAP Client when establishing a subscription membership, if the subscribe request is not carried `qos` option. The indicator can be set to:<br/>
- qos0, qos1, qos2: Fixed default QoS level<br/>
- coap: Dynamic QoS level by the message type of subscribe request<br/>
* qos0: If the subscribe request is non-confirmable<br/>
* qos1: If the subscribe request is confirmable"""
zh: """客户端订阅请求的默认 QoS 等级。
当 CoAP 客户端发起订阅请求时,如果未携带 `qos` 参数则会使用该默认值。默认值可设置为:<br/>
- qos0、 qos1、qos2: 设置为固定的 QoS 等级<br/>
- coap: 依据订阅操作的 CoAP 报文类型来动态决定<br/>
* 当订阅请求为 `non-confirmable` 类型时,取值为 qos0<br/>
* 当订阅请求为 `confirmable` 类型时,取值为 qos1"""
}
}
coap_publish_qos {
desc {
en: """The Default QoS Level indicator for publish request.
coap_publish_qos.desc:
"""The Default QoS Level indicator for publish request.
This option specifies the QoS level for the CoAP Client when publishing a message to EMQX PUB/SUB system, if the publish request is not carried `qos` option. The indicator can be set to:<br/>
- qos0, qos1, qos2: Fixed default QoS level<br/>
- coap: Dynamic QoS level by the message type of publish request<br/>
* qos0: If the publish request is non-confirmable<br/>
* qos1: If the publish request is confirmable"""
zh: """客户端发布请求的默认 QoS 等级。
当 CoAP 客户端发起发布请求时,如果未携带 `qos` 参数则会使用该默认值。默认值可设置为:<br>
- qos0、qos1、qos2: 设置为固定的 QoS 等级<br/>
- coap: 依据发布操作的 CoAP 报文类型来动态决定<br/>
* 当发布请求为 `non-confirmable` 类型时,取值为 qos0<br/>
* 当发布请求为 `confirmable` 类型时,取值为 qos1"""
}
}
coap_subscribe_qos.desc:
"""The Default QoS Level indicator for subscribe request.
This option specifies the QoS level for the CoAP Client when establishing a subscription membership, if the subscribe request is not carried `qos` option. The indicator can be set to:<br/>
- qos0, qos1, qos2: Fixed default QoS level<br/>
- coap: Dynamic QoS level by the message type of subscribe request<br/>
* qos0: If the subscribe request is non-confirmable<br/>
* qos1: If the subscribe request is confirmable"""
}

File diff suppressed because it is too large Load Diff

View File

@ -1,82 +1,46 @@
emqx_connector_api {
id {
desc {
en: "The connector ID. Must be of format {type}:{name}"
zh: "连接器 ID 格式必须为 {type}:{name}"
}
label: {
en: "Connector ID"
zh: "连接器 ID"
}
}
conn_get.desc:
"""List all connectors"""
conn_test_post {
desc {
en: """Test creating a new connector by given ID <br/>
conn_get.label:
"""List All Connectors"""
conn_id_delete.desc:
"""Delete a connector by ID"""
conn_id_delete.label:
"""Delete Connector"""
conn_id_get.desc:
"""Get the connector by ID"""
conn_id_get.label:
"""Get Connector"""
conn_id_put.desc:
"""Update an existing connector by ID"""
conn_id_put.label:
"""Update Connector"""
conn_post.desc:
"""Create a new connector"""
conn_post.label:
"""Create Connector"""
conn_test_post.desc:
"""Test creating a new connector by given ID <br/>
The ID must be of format '{type}:{name}'"""
zh: """通过给定的 ID 测试创建一个新的连接器 <br/>
ID 的格式必须为“{type}:{name}”"""
}
label: {
en: "Create Test Connector"
zh: "创建测试连接器"
}
}
conn_get {
desc {
en: "List all connectors"
zh: "列出所有连接器"
}
label: {
en: "List All Connectors"
zh: "列出所有连接器"
}
}
conn_test_post.label:
"""Create Test Connector"""
conn_post {
desc {
en: "Create a new connector"
zh: "创建一个新的连接器"
}
label: {
en: "Create Connector"
zh: "创建连接器"
}
}
id.desc:
"""The connector ID. Must be of format {type}:{name}"""
conn_id_get {
desc {
en: "Get the connector by ID"
zh: "通过 ID 获取连接器"
}
label: {
en: "Get Connector"
zh: "获取连接器"
}
}
conn_id_put {
desc {
en: "Update an existing connector by ID"
zh: "通过 ID 更新一个连接器"
}
label: {
en: "Update Connector"
zh: "更新连接器"
}
}
conn_id_delete {
desc {
en: "Delete a connector by ID"
zh: "通过 ID 删除一个连接器"
}
label: {
en: "Delete Connector"
zh: "删除连接器"
}
}
id.label:
"""Connector ID"""
}

View File

@ -1,139 +1,78 @@
emqx_connector_http {
base_url {
desc {
en: """The base URL is the URL includes only the scheme, host and port.<br/>
base_url.desc:
"""The base URL is the URL includes only the scheme, host and port.<br/>
When send an HTTP request, the real URL to be used is the concatenation of the base URL and the
path parameter<br/>
For example: `http://localhost:9901/`"""
zh: """base URL 只包含host和port。<br/>
发送HTTP请求时真实的URL是由base URL 和 path parameter连接而成。<br/>
示例:`http://localhost:9901/`"""
}
label: {
en: "Base Url"
zh: "Base Url"
}
}
connect_timeout {
desc {
en: "The timeout when connecting to the HTTP server."
zh: "连接HTTP服务器的超时时间。"
}
label: {
en: "Connect Timeout"
zh: "连接超时"
}
}
base_url.label:
"""Base Url"""
max_retries {
desc {
en: "Max retry times if error on sending request."
zh: "请求出错时的最大重试次数。"
}
label: {
en: "Max Retries"
zh: "最大重试次数"
}
}
body.desc:
"""HTTP request body."""
pool_type {
desc {
en: "The type of the pool. Can be one of `random`, `hash`."
zh: "连接池的类型,可用类型有`random`, `hash`。"
}
label: {
en: "Pool Type"
zh: "连接池类型"
}
}
body.label:
"""HTTP Body"""
pool_size {
desc {
en: "The pool size."
zh: "连接池大小。"
}
label: {
en: "Pool Size"
zh: "连接池大小"
}
}
connect_timeout.desc:
"""The timeout when connecting to the HTTP server."""
enable_pipelining {
desc {
en: "A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request."
zh: "正整数,设置最大可发送的异步 HTTP 请求数量。当设置为 1 时,表示每次发送完成 HTTP 请求后都需要等待服务器返回,再继续发送下一个请求。"
}
label: {
en: "HTTP Pipelineing"
zh: "HTTP 管道"
}
}
connect_timeout.label:
"""Connect Timeout"""
request {
desc {
en: """Configure HTTP request parameters."""
zh: """设置 HTTP 请求的参数。"""
}
label: {
en: "Request"
zh: "HTTP 请求"
}
}
enable_pipelining.desc:
"""A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request."""
method {
desc {
en: "HTTP method."
zh: "HTTP 请求方法。"
}
label: {
en: "HTTP Method"
zh: "HTTP 请求方法"
}
}
enable_pipelining.label:
"""HTTP Pipelineing"""
path {
desc {
en: "URL path."
zh: "HTTP请求路径。"
}
label: {
en: "URL Path"
zh: "HTTP请求路径"
}
}
headers.desc:
"""List of HTTP headers."""
body {
desc {
en: "HTTP request body."
zh: "HTTP请求报文主体。"
}
label: {
en: "HTTP Body"
zh: "HTTP请求报文主体"
}
}
headers.label:
"""HTTP Headers"""
headers {
desc {
en: "List of HTTP headers."
zh: "HTTP 头字段列表。"
}
label: {
en: "HTTP Headers"
zh: "HTTP 头字段列表"
}
}
max_retries.desc:
"""Max retry times if error on sending request."""
request_timeout {
desc {
en: "HTTP request timeout."
zh: "HTTP 请求超时。"
}
label: {
en: "Request Timeout"
zh: "HTTP 请求超时"
}
}
max_retries.label:
"""Max Retries"""
method.desc:
"""HTTP method."""
method.label:
"""HTTP Method"""
path.desc:
"""URL path."""
path.label:
"""URL Path"""
pool_size.desc:
"""The pool size."""
pool_size.label:
"""Pool Size"""
pool_type.desc:
"""The type of the pool. Can be one of `random`, `hash`."""
pool_type.label:
"""Pool Type"""
request.desc:
"""Configure HTTP request parameters."""
request.label:
"""Request"""
request_timeout.desc:
"""HTTP request timeout."""
request_timeout.label:
"""Request Timeout"""
}

View File

@ -1,37 +1,21 @@
emqx_connector_ldap {
bind_dn {
desc {
en: """LDAP's Binding Distinguished Name (DN)"""
zh: """LDAP 绑定的 DN 的值"""
}
label: {
en: "Bind DN"
zh: "Bind DN"
}
}
bind_dn.desc:
"""LDAP's Binding Distinguished Name (DN)"""
port {
desc {
en: """LDAP Port"""
zh: """LDAP 端口"""
}
label: {
en: "Port"
zh: "端口"
}
}
bind_dn.label:
"""Bind DN"""
port.desc:
"""LDAP Port"""
timeout {
desc {
en: """LDAP's query timeout"""
zh: """LDAP 查询超时时间"""
}
label: {
en: "timeout"
zh: "超时时间"
}
}
port.label:
"""Port"""
timeout.desc:
"""LDAP's query timeout"""
timeout.label:
"""timeout"""
}

View File

@ -1,277 +1,152 @@
emqx_connector_mongo {
single_mongo_type {
desc {
en: "Standalone instance. Must be set to 'single' when MongoDB server is running in standalone mode."
zh: "Standalone 模式。当 MongoDB 服务运行在 standalone 模式下,该配置必须设置为 'single'。"
}
label: {
en: "Standalone instance"
zh: "Standalone 模式"
}
}
auth_source.desc:
"""Database name associated with the user's credentials."""
rs_mongo_type {
desc {
en: "Replica set. Must be set to 'rs' when MongoDB server is running in 'replica set' mode."
zh: "Replica set模式。当 MongoDB 服务运行在 replica-set 模式下,该配置必须设置为 'rs'。"
}
label: {
en: "Replica set"
zh: "Replica set 模式"
}
}
auth_source.label:
"""Auth Source"""
sharded_mongo_type {
desc {
en: "Sharded cluster. Must be set to 'sharded' when MongoDB server is running in 'sharded' mode."
zh: "Sharded cluster模式。当 MongoDB 服务运行在 sharded 模式下,该配置必须设置为 'sharded'。"
}
label: {
en: "Sharded cluster"
zh: "Sharded cluster 模式"
}
}
connect_timeout.desc:
"""The duration to attempt a connection before timing out."""
auth_source {
desc {
en: "Database name associated with the user's credentials."
zh: "与用户证书关联的数据库名称。"
}
label: {
en: "Auth Source"
zh: "认证源"
}
}
connect_timeout.label:
"""Connect Timeout"""
server {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.<br/>
desc_rs.desc:
"""Settings for replica set."""
desc_rs.label:
"""Setting Replica Set"""
desc_sharded.desc:
"""Settings for sharded cluster."""
desc_sharded.label:
"""Setting Sharded Cluster"""
desc_single.desc:
"""Settings for a single MongoDB instance."""
desc_single.label:
"""Setting Single MongoDB"""
desc_topology.desc:
"""Topology of MongoDB."""
desc_topology.label:
"""Setting Topology"""
heartbeat_period.desc:
"""Controls when the driver checks the state of the MongoDB deployment. Specify the interval between checks, counted from the end of the previous check until the beginning of the next one. If the number of connections is increased (which will happen, for example, if you increase the pool size), you may need to increase this period as well to avoid creating too many log entries in the MongoDB log file."""
heartbeat_period.label:
"""Heartbeat period"""
local_threshold.desc:
"""The size of the latency window for selecting among multiple suitable MongoDB instances."""
local_threshold.label:
"""Local Threshold"""
max_overflow.desc:
"""Max Overflow."""
max_overflow.label:
"""Max Overflow"""
min_heartbeat_period.desc:
"""Controls the minimum amount of time to wait between heartbeats."""
min_heartbeat_period.label:
"""Minimum Heartbeat Period"""
overflow_check_period.desc:
"""Period for checking if there are more workers than configured ("overflow")."""
overflow_check_period.label:
"""Overflow Check Period"""
overflow_ttl.desc:
"""Period of time before workers that exceed the configured pool size ("overflow") to be terminated."""
overflow_ttl.label:
"""Overflow TTL"""
r_mode.desc:
"""Read mode."""
r_mode.label:
"""Read Mode"""
replica_set_name.desc:
"""Name of the replica set."""
replica_set_name.label:
"""Replica Set Name"""
rs_mongo_type.desc:
"""Replica set. Must be set to 'rs' when MongoDB server is running in 'replica set' mode."""
rs_mongo_type.label:
"""Replica set"""
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.<br/>
A host entry has the following form: `Host[:Port]`.<br/>
The MongoDB default port 27017 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。<br/>
主机名具有以下形式:`Host[:Port]`。<br/>
如果未指定 `[:Port]`,则使用 MongoDB 默认端口 27017。"""
}
label: {
en: "Server Host"
zh: "服务器地址"
}
}
servers {
desc {
en: """A Node list for Cluster to connect to. The nodes should be separated with commas, such as: `Node[,Node].`
server.label:
"""Server Host"""
server_selection_timeout.desc:
"""Specifies how long to block for server selection before throwing an exception."""
server_selection_timeout.label:
"""Server Selection Timeout"""
servers.desc:
"""A Node list for Cluster to connect to. The nodes should be separated with commas, such as: `Node[,Node].`
For each Node should be: The IPv4 or IPv6 address or the hostname to connect to.
A host entry has the following form: `Host[:Port]`.
The MongoDB default port 27017 is used if `[:Port]` is not specified."""
zh: """集群将要连接的节点列表。 节点之间用逗号分隔,如:`Node[,Node].`
每个节点的配置为:将要连接的 IPv4 或 IPv6 地址或主机名。
主机名具有以下形式:`Host[:Port]`。
如果未指定 `[:Port]`,则使用 MongoDB 默认端口 27017。"""
}
label: {
en: "Servers"
zh: "服务器列表"
}
}
w_mode {
desc {
en: "Write mode."
zh: "写模式。"
}
label: {
en: "Write Mode"
zh: "写模式"
}
}
servers.label:
"""Servers"""
r_mode {
desc {
en: "Read mode."
zh: "读模式。"
}
label: {
en: "Read Mode"
zh: "读模式"
}
}
sharded_mongo_type.desc:
"""Sharded cluster. Must be set to 'sharded' when MongoDB server is running in 'sharded' mode."""
overflow_ttl {
desc {
en: "Period of time before workers that exceed the configured pool size (\"overflow\") to be terminated."
zh: "当池内工人太多时,等待多久清除多余工人。"
}
label {
en: "Overflow TTL"
zh: "溢出TTL"
}
}
sharded_mongo_type.label:
"""Sharded cluster"""
overflow_check_period {
desc {
en: "Period for checking if there are more workers than configured (\"overflow\")."
zh: "检查是否有超过配置的工人的周期(\"溢出\")。"
}
label {
en: "Overflow Check Period"
zh: "溢出检查周期"
}
}
single_mongo_type.desc:
"""Standalone instance. Must be set to 'single' when MongoDB server is running in standalone mode."""
local_threshold {
desc {
en: "The size of the latency window for selecting among multiple suitable MongoDB instances."
zh: "在多个合适的MongoDB实例中进行选择的延迟窗口的大小。"
}
label {
en: "Local Threshold"
zh: "本地阈值"
}
}
single_mongo_type.label:
"""Standalone instance"""
connect_timeout {
desc {
en: "The duration to attempt a connection before timing out."
zh: "超时重连的等待时间。"
}
label {
en: "Connect Timeout"
zh: "连接超时"
}
}
socket_timeout.desc:
"""The duration to attempt to send or to receive on a socket before the attempt times out."""
socket_timeout {
desc {
en: "The duration to attempt to send or to receive on a socket before the attempt times out."
zh: "在尝试超时之前,在套接字上尝试发送或接收的持续时间。"
}
label {
en: "Socket Timeout"
zh: "套接字操作超时"
}
}
socket_timeout.label:
"""Socket Timeout"""
server_selection_timeout {
desc {
en: "Specifies how long to block for server selection before throwing an exception."
zh: "指定在抛出异常之前为服务器选择阻断多长时间。"
}
label {
en: "Server Selection Timeout"
zh: "服务器选择超时"
}
}
srv_record.desc:
"""Use DNS SRV record."""
wait_queue_timeout {
desc {
en: "The maximum duration that a worker can wait for a connection to become available."
zh: "工作者等待连接可用的最长时间。"
}
label {
en: "Wait Queue Timeout"
zh: "等待队列超时"
}
}
srv_record.label:
"""Srv Record"""
heartbeat_period {
desc {
en: "Controls when the driver checks the state of the MongoDB deployment. Specify the interval between checks, counted from the end of the previous check until the beginning of the next one. If the number of connections is increased (which will happen, for example, if you increase the pool size), you may need to increase this period as well to avoid creating too many log entries in the MongoDB log file."
zh: "控制驱动程序何时检查MongoDB部署的状态。指定检查的间隔时间从上一次检查结束到下一次检查开始计算。如果连接数增加例如如果你增加池子的大小就会发生这种情况你可能也需要增加这个周期以避免在MongoDB日志文件中创建太多的日志条目。"
}
label {
en: "Heartbeat period"
zh: "心跳期"
}
}
w_mode.desc:
"""Write mode."""
min_heartbeat_period {
desc {
en: "Controls the minimum amount of time to wait between heartbeats."
zh: "心跳间的最小间隙"
}
label {
en: "Minimum Heartbeat Period"
zh: "最小心跳周期"
}
}
w_mode.label:
"""Write Mode"""
max_overflow {
desc {
en: "Max Overflow."
zh: "最大溢出。"
}
label: {
en: "Max Overflow"
zh: "最大溢出"
}
}
wait_queue_timeout.desc:
"""The maximum duration that a worker can wait for a connection to become available."""
replica_set_name {
desc {
en: "Name of the replica set."
zh: "副本集的名称。"
}
label: {
en: "Replica Set Name"
zh: "副本集名称"
}
}
srv_record {
desc {
en: "Use DNS SRV record."
zh: "使用 DNS SRV 记录。"
}
label: {
en: "Srv Record"
zh: "SRV 记录"
}
}
desc_single {
desc {
en: """Settings for a single MongoDB instance."""
zh: """配置 Single 模式"""
}
label: {
en: "Setting Single MongoDB"
zh: "配置 Single 模式"
}
}
desc_rs {
desc {
en: """Settings for replica set."""
zh: """配置 Replica Set"""
}
label: {
en: "Setting Replica Set"
zh: "配置 Replica Set"
}
}
desc_sharded {
desc {
en: """Settings for sharded cluster."""
zh: """配置 Sharded Cluster"""
}
label: {
en: "Setting Sharded Cluster"
zh: "配置 Sharded Cluster"
}
}
desc_topology {
desc {
en: """Topology of MongoDB."""
zh: """配置 Topology"""
}
label: {
en: "Setting Topology"
zh: "配置 Topology"
}
}
wait_queue_timeout.label:
"""Wait Queue Timeout"""
}

View File

@ -1,35 +1,21 @@
emqx_connector_mqtt {
num_of_bridges {
desc {
en: "The current number of bridges that are using this connector."
zh: "当前使用此连接器的网桥数量。"
}
label: {
en: "Num of Bridges"
zh: "网桥数量"
}
}
type {
desc {
en: "The Connector Type."
zh: "连接器类型。"
}
label: {
en: "Connector Type"
zh: "连接器类型"
}
}
name.desc:
"""Connector name, used as a human-readable description of the connector."""
name {
desc {
en: "Connector name, used as a human-readable description of the connector."
zh: "连接器名称,人类可读的连接器描述。"
}
label: {
en: "Connector Name"
zh: "连接器名称"
}
}
name.label:
"""Connector Name"""
num_of_bridges.desc:
"""The current number of bridges that are using this connector."""
num_of_bridges.label:
"""Num of Bridges"""
type.desc:
"""The Connector Type."""
type.label:
"""Connector Type"""
}

View File

@ -1,319 +1,178 @@
emqx_connector_mqtt_schema {
ingress_desc {
desc {
en: """The ingress config defines how this bridge receive messages from the remote MQTT broker, and then
bridge_mode.desc:
"""If enable bridge mode.
NOTE: This setting is only for MQTT protocol version older than 5.0, and the remote MQTT
broker MUST support this feature.
If bridge_mode is set to true, the bridge will indicate to the remote broker that it is a bridge not an ordinary client.
This means that loop detection will be more effective and that retained messages will be propagated correctly."""
bridge_mode.label:
"""Bridge Mode"""
clean_start.desc:
"""Whether to start a clean session when reconnecting a remote broker for ingress bridge"""
clean_start.label:
"""Clean Session"""
clientid_prefix.desc:
"""Optional prefix to prepend to the clientid used by egress bridges."""
clientid_prefix.label:
"""Clientid Prefix"""
egress_desc.desc:
"""The egress config defines how this bridge forwards messages from the local broker to the remote broker.<br/>
Template with variables is allowed in 'remote.topic', 'local.qos', 'local.retain', 'local.payload'.<br/>
NOTE: if this bridge is used as the action of a rule, and also 'local.topic'
is configured, then both the data got from the rule and the MQTT messages that matches
'local.topic' will be forwarded."""
egress_desc.label:
"""Egress Configs"""
egress_local.desc:
"""The configs about receiving messages from local broker."""
egress_local.label:
"""Local Configs"""
egress_local_topic.desc:
"""The local topic to be forwarded to the remote broker"""
egress_local_topic.label:
"""Local Topic"""
egress_remote.desc:
"""The configs about sending message to the remote broker."""
egress_remote.label:
"""Remote Configs"""
egress_remote_qos.desc:
"""The QoS of the MQTT message to be sent.<br/>
Template with variables is allowed."""
egress_remote_qos.label:
"""Remote QoS"""
egress_remote_topic.desc:
"""Forward to which topic of the remote broker.<br/>
Template with variables is allowed."""
egress_remote_topic.label:
"""Remote Topic"""
ingress_desc.desc:
"""The ingress config defines how this bridge receive messages from the remote MQTT broker, and then
send them to the local broker.<br/>
Template with variables is allowed in 'remote.qos', 'local.topic', 'local.qos', 'local.retain', 'local.payload'.<br/>
NOTE: if this bridge is used as the input of a rule, and also 'local.topic' is
configured, then messages got from the remote broker will be sent to both the 'local.topic' and
the rule."""
zh: """入口配置定义了该桥接如何从远程 MQTT Broker 接收消息,然后将消息发送到本地 Broker。<br/>
以下字段中允许使用带有变量的模板:'remote.qos', 'local.topic', 'local.qos', 'local.retain', 'local.payload'。<br/>
注意:如果此桥接被用作规则的输入,并且配置了 'local.topic',则从远程代理获取的消息将同时被发送到 'local.topic' 和规则。"""
}
label: {
en: "Ingress Configs"
zh: "入方向配置"
}
}
egress_desc {
desc {
en: """The egress config defines how this bridge forwards messages from the local broker to the remote broker.<br/>
Template with variables is allowed in 'remote.topic', 'local.qos', 'local.retain', 'local.payload'.<br/>
NOTE: if this bridge is used as the action of a rule, and also 'local.topic'
is configured, then both the data got from the rule and the MQTT messages that matches
'local.topic' will be forwarded."""
zh: """出口配置定义了该桥接如何将消息从本地 Broker 转发到远程 Broker。
以下字段中允许使用带有变量的模板:'remote.topic', 'local.qos', 'local.retain', 'local.payload'。<br/>
注意:如果此桥接被用作规则的动作,并且配置了 'local.topic',则从规则输出的数据以及匹配到 'local.topic' 的 MQTT 消息都会被转发。"""
}
label: {
en: "Egress Configs"
zh: "出方向配置"
}
}
ingress_desc.label:
"""Ingress Configs"""
ingress_remote {
desc {
en: """The configs about subscribing to the remote broker."""
zh: """订阅远程 Broker 相关的配置。"""
}
label: {
en: "Remote Configs"
zh: "远程配置"
}
}
ingress_local.desc:
"""The configs about sending message to the local broker."""
ingress_local {
desc {
en: """The configs about sending message to the local broker."""
zh: """发送消息到本地 Broker 相关的配置。"""
}
label: {
en: "Local Configs"
zh: "本地配置"
}
}
ingress_local.label:
"""Local Configs"""
egress_remote {
desc {
en: """The configs about sending message to the remote broker."""
zh: """发送消息到远程 Broker 相关的配置。"""
}
label: {
en: "Remote Configs"
zh: "远程配置"
}
}
ingress_local_qos.desc:
"""The QoS of the MQTT message to be sent.<br/>
Template with variables is allowed."""
egress_local {
desc {
en: """The configs about receiving messages from local broker."""
zh: """如何从本地 Broker 接收消息相关的配置。"""
}
label: {
en: "Local Configs"
zh: "本地配置"
}
}
ingress_local_qos.label:
"""Local QoS"""
mode {
desc {
en: """The mode of the MQTT Bridge.<br/>
ingress_local_topic.desc:
"""Send messages to which topic of the local broker.<br/>
Template with variables is allowed."""
ingress_local_topic.label:
"""Local Topic"""
ingress_remote.desc:
"""The configs about subscribing to the remote broker."""
ingress_remote.label:
"""Remote Configs"""
ingress_remote_qos.desc:
"""The QoS level to be used when subscribing to the remote broker"""
ingress_remote_qos.label:
"""Remote QoS"""
ingress_remote_topic.desc:
"""Receive messages from which topic of the remote broker"""
ingress_remote_topic.label:
"""Remote Topic"""
max_inflight.desc:
"""Max inflight (sent, but un-acked) messages of the MQTT protocol"""
max_inflight.label:
"""Max Inflight Message"""
mode.desc:
"""The mode of the MQTT Bridge.<br/>
- cluster_shareload: create an MQTT connection on each node in the emqx cluster.<br/>
In 'cluster_shareload' mode, the incoming load from the remote broker is shared by
using shared subscription.<br/>
Note that the 'clientid' is suffixed by the node name, this is to avoid
clientid conflicts between different nodes. And we can only use shared subscription
topic filters for <code>remote.topic</code> of ingress connections."""
zh: """MQTT 桥的模式。 <br/>
- cluster_shareload在 emqx 集群的每个节点上创建一个 MQTT 连接。<br/>
在“cluster_shareload”模式下来自远程代理的传入负载通过共享订阅的方式接收。<br/>
请注意,<code>clientid</code> 以节点名称为后缀,这是为了避免不同节点之间的 <code> clientid</code> 冲突。
而且对于入口连接的 <code>remote.topic</code>,我们只能使用共享订阅主题过滤器。"""
}
label: {
en: "MQTT Bridge Mode"
zh: "MQTT 桥接模式"
}
}
server {
desc {
en: "The host and port of the remote MQTT broker"
zh: "远程 MQTT Broker的主机和端口。"
}
label: {
en: "Broker IP And Port"
zh: "Broker主机和端口"
}
}
mode.label:
"""MQTT Bridge Mode"""
bridge_mode {
desc {
en: """If enable bridge mode.
NOTE: This setting is only for MQTT protocol version older than 5.0, and the remote MQTT
broker MUST support this feature.
If bridge_mode is set to true, the bridge will indicate to the remote broker that it is a bridge not an ordinary client.
This means that loop detection will be more effective and that retained messages will be propagated correctly."""
zh: """是否启用 Bridge Mode。
注意:此设置只针对 MQTT 协议版本 < 5.0 有效,并且需要远程 MQTT Broker 支持 Bridge Mode。
如果设置为 true ,桥接会告诉远端服务器当前连接是一个桥接而不是一个普通的客户端。
这意味着消息回环检测会更加高效,并且远端服务器收到的保留消息的标志位会透传给本地。"""
}
label {
en: "Bridge Mode"
zh: "Bridge 模式"
}
}
password.desc:
"""The password of the MQTT protocol"""
proto_ver {
desc {
en: "The MQTT protocol version"
zh: "MQTT 协议版本"
}
label: {
en: "Protocol Version"
zh: "协议版本"
}
}
password.label:
"""Password"""
username {
desc {
en: "The username of the MQTT protocol"
zh: "MQTT 协议的用户名"
}
label: {
en: "Username"
zh: "用户名"
}
}
password {
desc {
en: "The password of the MQTT protocol"
zh: "MQTT 协议的密码"
}
label: {
en: "Password"
zh: "密码"
}
}
clean_start {
desc {
en: "Whether to start a clean session when reconnecting a remote broker for ingress bridge"
zh: "与 ingress MQTT 桥的远程服务器重连时是否清除老的 MQTT 会话。"
}
label: {
en: "Clean Session"
zh: "清除会话"
}
}
max_inflight {
desc {
en: "Max inflight (sent, but un-acked) messages of the MQTT protocol"
zh: "MQTT 协议的最大飞行(已发送但未确认)消息"
}
label: {
en: "Max Inflight Message"
zh: "最大飞行消息"
}
}
ingress_remote_topic {
desc {
en: "Receive messages from which topic of the remote broker"
zh: "从远程broker的哪个topic接收消息"
}
label: {
en: "Remote Topic"
zh: "远程主题"
}
}
ingress_remote_qos {
desc {
en: "The QoS level to be used when subscribing to the remote broker"
zh: "订阅远程borker时要使用的 QoS 级别"
}
label: {
en: "Remote QoS"
zh: "远程 QoS"
}
}
ingress_local_topic {
desc {
en: """Send messages to which topic of the local broker.<br/>
payload.desc:
"""The payload of the MQTT message to be sent.<br/>
Template with variables is allowed."""
zh: """向本地broker的哪个topic发送消息。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "Local Topic"
zh: "本地主题"
}
}
ingress_local_qos {
desc {
en: """The QoS of the MQTT message to be sent.<br/>
payload.label:
"""Payload"""
proto_ver.desc:
"""The MQTT protocol version"""
proto_ver.label:
"""Protocol Version"""
retain.desc:
"""The 'retain' flag of the MQTT message to be sent.<br/>
Template with variables is allowed."""
zh: """待发送 MQTT 消息的 QoS。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "Local QoS"
zh: "本地 QoS"
}
}
egress_local_topic {
desc {
en: "The local topic to be forwarded to the remote broker"
zh: "要转发到远程broker的本地主题"
}
label: {
en: "Local Topic"
zh: "本地主题"
}
}
retain.label:
"""Retain Flag"""
egress_remote_topic {
desc {
en: """Forward to which topic of the remote broker.<br/>
Template with variables is allowed."""
zh: """转发到远程broker的哪个topic。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "Remote Topic"
zh: "远程主题"
}
}
server.desc:
"""The host and port of the remote MQTT broker"""
egress_remote_qos {
desc {
en: """The QoS of the MQTT message to be sent.<br/>
Template with variables is allowed."""
zh: """待发送 MQTT 消息的 QoS。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "Remote QoS"
zh: "远程 QoS"
}
}
server.label:
"""Broker IP And Port"""
retain {
desc {
en: """The 'retain' flag of the MQTT message to be sent.<br/>
Template with variables is allowed."""
zh: """要发送的 MQTT 消息的“保留”标志。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "Retain Flag"
zh: "保留消息标志"
}
}
server_configs.desc:
"""Configs related to the server."""
payload {
desc {
en: """The payload of the MQTT message to be sent.<br/>
Template with variables is allowed."""
zh: """要发送的 MQTT 消息的负载。<br/>
允许使用带有变量的模板。"""
}
label: {
en: "Payload"
zh: "消息负载"
}
}
server_configs.label:
"""Server Configs"""
server_configs {
desc {
en: """Configs related to the server."""
zh: """服务器相关的配置。"""
}
label: {
en: "Server Configs"
zh: "服务配置。"
}
}
username.desc:
"""The username of the MQTT protocol"""
clientid_prefix {
desc {
en: """Optional prefix to prepend to the clientid used by egress bridges."""
zh: """可选的前缀用于在出口网桥使用的clientid前加上前缀。"""
}
label: {
en: "Clientid Prefix"
zh: "客户ID前缀"
}
}
username.label:
"""Username"""
}

View File

@ -1,18 +1,11 @@
emqx_connector_mysql {
server {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.<br/>
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.<br/>
A host entry has the following form: `Host[:Port]`.<br/>
The MySQL default port 3306 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。<br/>
主机名具有以下形式:`Host[:Port]`。<br/>
如果未指定 `[:Port]`,则使用 MySQL 默认端口 3306。"""
}
label: {
en: "Server Host"
zh: "服务器地址"
}
}
server.label:
"""Server Host"""
}

View File

@ -1,18 +1,11 @@
emqx_connector_pgsql {
server {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.<br/>
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.<br/>
A host entry has the following form: `Host[:Port]`.<br/>
The PostgreSQL default port 5432 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。<br/>
主机名具有以下形式:`Host[:Port]`。<br/>
如果未指定 `[:Port]`,则使用 PostgreSQL 默认端口 5432。"""
}
label: {
en: "Server Host"
zh: "服务器地址"
}
}
server.label:
"""Server Host"""
}

View File

@ -1,90 +1,50 @@
emqx_connector_redis {
single {
desc {
en: "Single mode. Must be set to 'single' when Redis server is running in single mode."
zh: "单机模式。当 Redis 服务运行在单机模式下,该配置必须设置为 'single'。"
}
label: {
en: "Single Mode"
zh: "单机模式"
}
}
cluster.desc:
"""Cluster mode. Must be set to 'cluster' when Redis server is running in clustered mode."""
cluster {
desc {
en: "Cluster mode. Must be set to 'cluster' when Redis server is running in clustered mode."
zh: "集群模式。当 Redis 服务运行在集群模式下,该配置必须设置为 'cluster'。"
}
label: {
en: "Cluster Mode"
zh: "集群模式"
}
}
cluster.label:
"""Cluster Mode"""
sentinel {
desc {
en: "Sentinel mode. Must be set to 'sentinel' when Redis server is running in sentinel mode."
zh: "哨兵模式。当 Redis 服务运行在哨兵模式下,该配置必须设置为 'sentinel'。"
}
label: {
en: "Sentinel Mode"
zh: "哨兵模式"
}
}
database.desc:
"""Redis database ID."""
sentinel_desc {
desc {
en: "The cluster name in Redis sentinel mode."
zh: "Redis 哨兵模式下的集群名称。"
}
label: {
en: "Cluster Name"
zh: "集群名称"
}
}
database.label:
"""Database ID"""
server {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.<br/>
sentinel.desc:
"""Sentinel mode. Must be set to 'sentinel' when Redis server is running in sentinel mode."""
sentinel.label:
"""Sentinel Mode"""
sentinel_desc.desc:
"""The cluster name in Redis sentinel mode."""
sentinel_desc.label:
"""Cluster Name"""
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.<br/>
A host entry has the following form: `Host[:Port]`.<br/>
The Redis default port 6379 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。<br/>
主机名具有以下形式:`Host[:Port]`。<br/>
如果未指定 `[:Port]`,则使用 Redis 默认端口 6379。"""
}
label: {
en: "Server Host"
zh: "服务器地址"
}
}
servers {
desc {
en: """A Node list for Cluster to connect to. The nodes should be separated with commas, such as: `Node[,Node].`
server.label:
"""Server Host"""
servers.desc:
"""A Node list for Cluster to connect to. The nodes should be separated with commas, such as: `Node[,Node].`
For each Node should be: The IPv4 or IPv6 address or the hostname to connect to.
A host entry has the following form: `Host[:Port]`.
The Redis default port 6379 is used if `[:Port]` is not specified."""
zh: """集群将要连接的节点列表。 节点之间用逗号分隔,如:`Node[,Node].`
每个节点的配置为:将要连接的 IPv4 或 IPv6 地址或主机名。
主机名具有以下形式:`Host[:Port]`。
如果未指定 `[:Port]`,则使用 Redis 默认端口 6379。"""
}
label: {
en: "Servers"
zh: "服务器列表"
}
}
database {
desc {
en: "Redis database ID."
zh: "Redis 数据库 ID。"
}
label: {
en: "Database ID"
zh: "数据库 ID"
}
}
servers.label:
"""Servers"""
single.desc:
"""Single mode. Must be set to 'single' when Redis server is running in single mode."""
single.label:
"""Single Mode"""
}

View File

@ -1,80 +1,45 @@
emqx_connector_schema_lib {
ssl {
desc {
en: "SSL connection settings."
zh: "启用 SSL 连接。"
}
label: {
en: "Enable SSL"
zh: "启用SSL"
}
}
auto_reconnect.desc:
"""Deprecated. Enable automatic reconnect to the database."""
prepare_statement {
desc {
en: "Key-value list of SQL prepared statements."
zh: "SQL 预处理语句列表。"
}
label: {
en: "SQL Prepared Statements List"
zh: "SQL 预处理语句列表"
}
}
auto_reconnect.label:
"""Deprecated. Auto Reconnect Database"""
database_desc {
desc {
en: "Database name."
zh: "数据库名字。"
}
label: {
en: "Database Name"
zh: "数据库名字"
}
}
database_desc.desc:
"""Database name."""
pool_size {
desc {
en: "Size of the connection pool towards the bridge target service."
zh: "桥接远端服务时使用的连接池大小。"
}
label: {
en: "Connection Pool Size"
zh: "连接池大小"
}
}
database_desc.label:
"""Database Name"""
username {
desc {
en: "EMQX's username in the external database."
zh: "内部数据库的用户名。"
}
label: {
en: "Username"
zh: "用户名"
}
}
password.desc:
"""EMQX's password in the external database."""
password {
desc {
en: "EMQX's password in the external database."
zh: "内部数据库密码。"
}
label: {
en: "Password"
zh: "密码"
}
}
password.label:
"""Password"""
auto_reconnect {
desc {
en: "Deprecated. Enable automatic reconnect to the database."
zh: "已弃用。自动重连数据库。"
}
label: {
en: "Deprecated. Auto Reconnect Database"
zh: "已弃用。自动重连数据库"
}
}
pool_size.desc:
"""Size of the connection pool towards the bridge target service."""
pool_size.label:
"""Connection Pool Size"""
prepare_statement.desc:
"""Key-value list of SQL prepared statements."""
prepare_statement.label:
"""SQL Prepared Statements List"""
ssl.desc:
"""SSL connection settings."""
ssl.label:
"""Enable SSL"""
username.desc:
"""EMQX's username in the external database."""
username.label:
"""Username"""
}

View File

@ -1,150 +1,66 @@
emqx_dashboard_api {
token {
desc {
en: """Dashboard Auth Token"""
zh: """Dashboard 认证 Token"""
}
}
change_pwd_api.desc:
"""Change dashboard user password"""
username {
desc {
en: """Dashboard Username"""
zh: """Dashboard 用户名"""
}
}
create_user_api.desc:
"""Create dashboard user"""
user_description {
desc {
en: """Dashboard User Description"""
zh: """Dashboard 用户描述"""
}
}
create_user_api_success.desc:
"""Create dashboard user success"""
password {
desc {
en: """Dashboard Password"""
zh: """Dashboard 密码"""
}
}
delete_user_api.desc:
"""Delete dashboard user"""
license {
desc {
en: """EMQX License. opensource or enterprise"""
zh: """EMQX 许可类型。可为 opensource 或 enterprise"""
}
}
license.desc:
"""EMQX License. opensource or enterprise"""
version {
desc {
en: """EMQX Version"""
zh: """EMQX 版本"""
}
}
list_users_api.desc:
"""Dashboard list users"""
login_api {
desc {
en: """Get Dashboard Auth Token."""
zh: """获取 Dashboard 认证 Token。"""
}
}
login_api.desc:
"""Get Dashboard Auth Token."""
login_success {
desc {
en: """Dashboard Auth Success"""
zh: """Dashboard 认证成功"""
}
}
login_failed401.desc:
"""Login failed. Bad username or password"""
login_failed401 {
desc {
en: """Login failed. Bad username or password"""
zh: """登录失败。用户名或密码错误"""
}
}
login_failed_response400.desc:
"""Login failed. Bad username or password"""
logout_api {
desc {
en: """Dashboard user logout"""
zh: """Dashboard 用户登出"""
}
}
login_success.desc:
"""Dashboard Auth Success"""
list_users_api {
desc {
en: """Dashboard list users"""
zh: """Dashboard 用户列表"""
}
}
logout_api.desc:
"""Dashboard user logout"""
create_user_api {
desc {
en: """Create dashboard user"""
zh: """创建 Dashboard 用户"""
}
}
new_pwd.desc:
"""New password"""
create_user_api_success {
desc {
en: """Create dashboard user success"""
zh: """创建 Dashboard 用户成功"""
}
}
old_pwd.desc:
"""Old password"""
update_user_api {
desc {
en: """Update dashboard user description"""
zh: """更新 Dashboard 用户描述"""
}
}
password.desc:
"""Dashboard Password"""
update_user_api200 {
desc {
en: """Update dashboard user success"""
zh: """更新 Dashboard 用户成功"""
}
}
token.desc:
"""Dashboard Auth Token"""
delete_user_api {
desc {
en: """Delete dashboard user"""
zh: """删除 Dashboard 用户"""
}
}
update_user_api.desc:
"""Update dashboard user description"""
users_api404 {
desc {
en: """Dashboard user not found"""
zh: """Dashboard 用户不存在"""
}
}
update_user_api200.desc:
"""Update dashboard user success"""
change_pwd_api {
desc {
en: """Change dashboard user password"""
zh: """更改 Dashboard 用户密码"""
}
}
user_description.desc:
"""Dashboard User Description"""
old_pwd {
desc {
en: """Old password"""
zh: """旧密码"""
}
}
username.desc:
"""Dashboard Username"""
new_pwd {
desc {
en: """New password"""
zh: """新密码"""
}
}
users_api404.desc:
"""Dashboard user not found"""
login_failed_response400 {
desc {
en: """Login failed. Bad username or password"""
zh: """登录失败。用户名或密码错误"""
}
}
version.desc:
"""EMQX Version"""
}

View File

@ -1,225 +1,139 @@
emqx_dashboard_schema {
listeners {
desc {
en: """HTTP(s) listeners are identified by their protocol type and are
backlog.desc:
"""Defines the maximum length that the queue of pending connections can grow to."""
backlog.label:
"""Backlog"""
bind.desc:
"""Port without IP(18083) or port with specified IP(127.0.0.1:18083)."""
bind.label:
"""Bind"""
bootstrap_users_file.desc:
"""Deprecated, use api_key.bootstrap_file."""
bootstrap_users_file.label:
"""Deprecated"""
cors.desc:
"""Support Cross-Origin Resource Sharing (CORS).
Allows a server to indicate any origins (domain, scheme, or port) other than
its own from which a browser should permit loading resources."""
cors.label:
"""CORS"""
default_password.desc:
"""The initial default password for dashboard 'admin' user.
For safety, it should be changed as soon as possible.
This value is not valid when you log in to Dashboard for the first time via the web
and change to a complex password as prompted."""
default_password.label:
"""Default password"""
default_username.desc:
"""The default username of the automatically created dashboard user."""
default_username.label:
"""Default username"""
desc_dashboard.desc:
"""Configuration for EMQX dashboard."""
desc_dashboard.label:
"""Dashboard"""
desc_http.desc:
"""Configuration for the dashboard listener (plaintext)."""
desc_http.label:
"""HTTP"""
desc_https.desc:
"""Configuration for the dashboard listener (TLS)."""
desc_https.label:
"""HTTPS"""
desc_listeners.desc:
"""Configuration for the dashboard listener."""
desc_listeners.label:
"""Listeners"""
i18n_lang.desc:
"""Internationalization language support."""
i18n_lang.label:
"""I18n language"""
inet6.desc:
"""Enable IPv6 support, default is false, which means IPv4 only."""
inet6.label:
"""IPv6"""
ipv6_v6only.desc:
"""Disable IPv4-to-IPv6 mapping for the listener.
The configuration is only valid when the inet6 is true."""
ipv6_v6only.label:
"""IPv6 only"""
listener_enable.desc:
"""Ignore or enable this listener"""
listener_enable.label:
"""Enable"""
listeners.desc:
"""HTTP(s) listeners are identified by their protocol type and are
used to serve dashboard UI and restful HTTP API.
Listeners must have a unique combination of port number and IP address.
For example, an HTTP listener can listen on all configured IP addresses
on a given port for a machine by specifying the IP address 0.0.0.0.
Alternatively, the HTTP listener can specify a unique IP address for each listener,
but use the same port."""
zh: """Dashboard 监听器设置。监听器必须有唯一的端口号和IP地址的组合。
例如可以通过指定IP地址 0.0.0.0 来监听机器上给定端口上的所有配置的IP地址。
或者可以为每个监听器指定唯一的IP地址但使用相同的端口。"""
}
label {
en: "Listeners"
zh: "监听器"
}
}
sample_interval {
desc {
en: """How often to update metrics displayed in the dashboard.
listeners.label:
"""Listeners"""
max_connections.desc:
"""Maximum number of simultaneous connections."""
max_connections.label:
"""Maximum connections"""
num_acceptors.desc:
"""Socket acceptor pool size for TCP protocols. Default is the number of schedulers online"""
num_acceptors.label:
"""Number of acceptors"""
proxy_header.desc:
"""Enable support for `HAProxy` header. Be aware once enabled regular HTTP requests can't be handled anymore."""
proxy_header.label:
"""Enable support for HAProxy header"""
sample_interval.desc:
"""How often to update metrics displayed in the dashboard.
Note: `sample_interval` should be a divisor of 60, default is 10s."""
zh: """Dashboard 中图表指标的时间间隔。必须小于60且被60的整除默认设置 10s。"""
}
}
token_expired_time {
desc {
en: "JWT token expiration time. Default is 60 minutes"
zh: "JWT token 过期时间。默认设置为 60 分钟。"
}
label {
en: "Token expired time"
zh: "JWT 过期时间"
}
}
num_acceptors {
desc {
en: "Socket acceptor pool size for TCP protocols. Default is the number of schedulers online"
zh: "TCP协议的Socket acceptor池大小, 默认设置在线的调度器数量(通常为 CPU 核数)"
}
label {
en: "Number of acceptors"
zh: "Acceptor 数量"
}
}
max_connections {
desc {
en: "Maximum number of simultaneous connections."
zh: "同时处理的最大连接数。"
}
label {
en: "Maximum connections"
zh: "最大连接数"
}
}
backlog {
desc {
en: "Defines the maximum length that the queue of pending connections can grow to."
zh: "排队等待连接的队列的最大长度。"
}
label {
en: "Backlog"
zh: "排队长度"
}
}
send_timeout {
desc {
en: "Send timeout for the socket."
zh: "Socket发送超时时间。"
}
label {
en: "Send timeout"
zh: "发送超时时间"
}
}
inet6 {
desc {
en: "Enable IPv6 support, default is false, which means IPv4 only."
zh: "启用IPv6 如果机器不支持IPv6请关闭此选项否则会导致 Dashboard 无法使用。"
}
label {
en: "IPv6"
zh: "IPv6"
}
}
ipv6_v6only {
desc {
en: """Disable IPv4-to-IPv6 mapping for the listener.
The configuration is only valid when the inet6 is true."""
zh: "当开启 inet6 功能的同时禁用 IPv4-to-IPv6 映射。该配置仅在 inet6 功能开启时有效。"
}
label {
en: "IPv6 only"
zh: "IPv6 only"
}
}
proxy_header {
desc {
en: "Enable support for `HAProxy` header. Be aware once enabled regular HTTP requests can't be handled anymore."
zh: "开启对 `HAProxy` 的支持,注意:一旦开启了这个功能,就无法再处理普通的 HTTP 请求了。"
}
label: {
en: "Enable support for HAProxy header"
zh: "开启对 `HAProxy` 的支持"
}
}
desc_dashboard {
desc {
en: "Configuration for EMQX dashboard."
zh: "EMQX Dashboard 配置。"
}
label {
en: "Dashboard"
zh: "Dashboard"
}
}
desc_listeners {
desc {
en: "Configuration for the dashboard listener."
zh: "Dashboard 监听器配置。"
}
label {
en: "Listeners"
zh: "监听器"
}
}
desc_http {
desc {
en: "Configuration for the dashboard listener (plaintext)."
zh: "Dashboard 监听器(HTTP)配置。"
}
label {
en: "HTTP"
zh: "HTTP"
}
}
desc_https {
desc {
en: "Configuration for the dashboard listener (TLS)."
zh: "Dashboard 监听器(HTTPS)配置。"
}
label {
en: "HTTPS"
zh: "HTTPS"
}
}
listener_enable {
desc {
en: "Ignore or enable this listener"
zh: "忽略或启用该监听器。"
}
label {
en: "Enable"
zh: "启用"
}
}
bind {
desc {
en: "Port without IP(18083) or port with specified IP(127.0.0.1:18083)."
zh: "监听地址和端口,热更新此配置时,会重启 Dashboard 服务。"
}
label {
en: "Bind"
zh: "绑定端口"
}
}
default_username {
desc {
en: "The default username of the automatically created dashboard user."
zh: "Dashboard 的默认用户名。"
}
label {
en: "Default username"
zh: "默认用户名"
}
}
default_password {
desc {
en: """The initial default password for dashboard 'admin' user.
For safety, it should be changed as soon as possible.
This value is not valid when you log in to Dashboard for the first time via the web
and change to a complex password as prompted."""
zh: """Dashboard 的默认密码,为了安全,应该尽快修改密码。
当通过网页首次登录 Dashboard 并按提示修改成复杂密码后,此值就会失效。"""
}
label {
en: "Default password"
zh: "默认密码"
}
}
cors {
desc {
en: """Support Cross-Origin Resource Sharing (CORS).
Allows a server to indicate any origins (domain, scheme, or port) other than
its own from which a browser should permit loading resources."""
zh: """支持跨域资源共享(CORS)
允许服务器指示任何来源(域名、协议或端口),除了本服务器之外的任何浏览器应允许加载资源。"""
}
label {
en: "CORS"
zh: "跨域资源共享"
}
}
i18n_lang {
desc {
en: "Internationalization language support."
zh: "设置 Swagger 多语言的版本,可为 en 或 zh。"
}
label {
en: "I18n language"
zh: "多语言支持"
}
}
bootstrap_users_file {
desc {
en: "Deprecated, use api_key.bootstrap_file."
zh: "已废弃,请使用 api_key.bootstrap_file。"
}
label {
en: """Deprecated"""
zh: """已废弃"""
}
}
send_timeout.desc:
"""Send timeout for the socket."""
send_timeout.label:
"""Send timeout"""
token_expired_time.desc:
"""JWT token expiration time. Default is 60 minutes"""
token_expired_time.label:
"""Token expired time"""
}

View File

@ -1,164 +1,72 @@
emqx_delayed_api {
view_status_api {
desc {
en: "Get delayed status"
zh: "查看慢订阅状态"
}
}
bad_msgid_format.desc:
"""Bad Message ID format"""
update_api {
desc {
en: "Enable or disable delayed, set max delayed messages"
zh: "开启或者关闭功能,或者设置延迟消息数量上限"
}
}
count.desc:
"""Count of delayed messages"""
update_success {
desc {
en: "Enable or disable delayed successfully"
zh: "开启或者关闭功能操作成功"
}
}
delayed_interval.desc:
"""Delayed interval(second)"""
illegality_limit {
desc {
en: "Max limit illegality"
zh: "数量上限不合法"
}
}
delayed_remaining.desc:
"""Delayed remaining(second)"""
get_message_api {
desc {
en: "View delayed message"
zh: "查看延迟消息"
}
}
delete_api.desc:
"""Delete delayed message"""
node {
desc {
en: "The node where message from"
zh: "消息的来源节点"
}
}
expected_at.desc:
"""Expect publish time, in RFC 3339 format"""
msgid {
desc {
en: "Delayed Message ID"
zh: "延迟消息 ID"
}
}
from_clientid.desc:
"""From ClientID"""
bad_msgid_format {
desc {
en: "Bad Message ID format"
zh: "消息 ID 格式错误"
}
}
from_username.desc:
"""From Username"""
msgid_not_found {
desc {
en: "Message ID not found"
zh: "未找到对应消息"
}
}
get_message_api.desc:
"""View delayed message"""
delete_api {
desc {
en: "Delete delayed message"
zh: "删除延迟消息"
}
}
illegality_limit.desc:
"""Max limit illegality"""
list_api {
desc {
en: "List delayed messages"
zh: "查看延迟消息列表"
}
}
list_api.desc:
"""List delayed messages"""
view_page {
desc {
en: "View page"
zh: "查看的页数"
}
}
msgid.desc:
"""Delayed Message ID"""
view_limit {
desc {
en: "Page limit"
zh: "每页数量"
}
}
msgid_not_found.desc:
"""Message ID not found"""
count {
desc {
en: "Count of delayed messages"
zh: "延迟消息总数"
}
}
node.desc:
"""The node where message from"""
publish_at {
desc {
en: "Clinet publish message time, in RFC 3339 format"
zh: "客户端发送时间, RFC 3339 格式"
}
}
payload.desc:
"""Payload, base64 encoded. Payload will be set to 'PAYLOAD_TO_LARGE' if its length is larger than 2048 bytes"""
delayed_interval {
desc {
en: "Delayed interval(second)"
zh: "延迟时间(秒)"
}
}
publish_at.desc:
"""Clinet publish message time, in RFC 3339 format"""
delayed_remaining {
desc {
en: "Delayed remaining(second)"
zh: "剩余时间(秒)"
}
}
qos.desc:
"""QoS"""
expected_at {
desc {
en: "Expect publish time, in RFC 3339 format"
zh: "期望的发送时间, RFC 3339 格式"
}
}
topic.desc:
"""Topic"""
topic {
desc {
en: "Topic"
zh: "主题"
}
}
update_api.desc:
"""Enable or disable delayed, set max delayed messages"""
qos {
desc {
en: "QoS"
zh: "QoS"
}
}
update_success.desc:
"""Enable or disable delayed successfully"""
from_clientid {
desc {
en: "From ClientID"
zh: "消息的 ClientID"
}
}
view_limit.desc:
"""Page limit"""
from_username {
desc {
en: "From Username"
zh: "消息的 Username"
}
}
view_page.desc:
"""View page"""
payload {
desc {
en: "Payload, base64 encoded. Payload will be set to 'PAYLOAD_TO_LARGE' if its length is larger than 2048 bytes"
zh: "消息内容, base64 格式。如果消息的大小超过 2048 字节,则消息内容会被设置为 'PAYLOAD_TO_LARGE'"
}
}
view_status_api.desc:
"""Get delayed status"""
}

View File

@ -1,72 +1,43 @@
emqx_ee_bridge_cassa {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to Cassandra. All MQTT 'PUBLISH' messages with the topic
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
cql_template.desc:
"""CQL Template"""
cql_template.label:
"""CQL Template"""
desc_config.desc:
"""Configuration for a Cassandra bridge."""
desc_config.label:
"""Cassandra Bridge Configuration"""
desc_name.desc:
"""Bridge name."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to Cassandra. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 Cassandra。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
cql_template {
desc {
en: """CQL Template"""
zh: """CQL 模板"""
}
label {
en: "CQL Template"
zh: "CQL 模板"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
local_topic.label:
"""Local Topic"""
desc_config {
desc {
en: """Configuration for a Cassandra bridge."""
zh: """Cassandra 桥接配置"""
}
label: {
en: "Cassandra Bridge Configuration"
zh: "Cassandra 桥接配置"
}
}
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名字"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
}

View File

@ -1,81 +1,49 @@
emqx_ee_bridge_clickhouse {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to Clickhouse. All MQTT 'PUBLISH' messages with the topic
batch_value_separator.desc:
"""The default value ',' works for the VALUES format. You can also use other separator if other format is specified. See [INSERT INTO Statement](https://clickhouse.com/docs/en/sql-reference/statements/insert-into)."""
batch_value_separator.label:
"""Batch Value Separator"""
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for a Clickhouse bridge."""
desc_config.label:
"""Clickhouse Bridge Configuration"""
desc_name.desc:
"""Bridge name."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to Clickhouse. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 Clickhouse。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
sql_template {
desc {
en: """The template string can contain ${field} placeholders for message metadata and payload field. Make sure that the inserted values are formatted and escaped correctly. [Prepared Statement](https://docs.emqx.com/en/enterprise/v5.0/data-integration/data-bridges.html#Prepared-Statement) is not supported."""
zh: """可以使用 ${field} 占位符来引用消息与客户端上下文中的变量,请确保对应字段存在且数据格式符合预期。此处不支持 [SQL 预处理](https://docs.emqx.com/zh/enterprise/v5.0/data-integration/data-bridges.html#sql-预处理)。"""
}
label {
en: "SQL Template"
zh: "SQL 模板"
}
}
batch_value_separator {
desc {
en: """The default value ',' works for the VALUES format. You can also use other separator if other format is specified. See [INSERT INTO Statement](https://clickhouse.com/docs/en/sql-reference/statements/insert-into)."""
zh: """默认为逗号 ',',适用于 VALUE 格式。您也可以使用其他分隔符, 请参考 [INSERT INTO 语句](https://clickhouse.com/docs/en/sql-reference/statements/insert-into)。"""
}
label {
en: "Batch Value Separator"
zh: "分隔符"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
desc_config {
desc {
en: """Configuration for a Clickhouse bridge."""
zh: """Clickhouse 桥接配置"""
}
label: {
en: "Clickhouse Bridge Configuration"
zh: "Clickhouse 桥接配置"
}
}
local_topic.label:
"""Local Topic"""
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
sql_template.desc:
"""The template string can contain ${field} placeholders for message metadata and payload field. Make sure that the inserted values are formatted and escaped correctly. [Prepared Statement](https://docs.emqx.com/en/enterprise/v5.0/data-integration/data-bridges.html#Prepared-Statement) is not supported."""
sql_template.label:
"""SQL Template"""
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名字"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
}

View File

@ -1,72 +1,43 @@
emqx_ee_bridge_dynamo {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to DynamoDB. All MQTT `PUBLISH` messages with the topic
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for a DynamoDB bridge."""
desc_config.label:
"""DynamoDB Bridge Configuration"""
desc_name.desc:
"""Bridge name."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to DynamoDB. All MQTT `PUBLISH` messages with the topic
matching the `local_topic` will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also `local_topic` is
configured, then both the data got from the rule and the MQTT messages that match `local_topic`
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 DynamoDB。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
template {
desc {
en: """Template, the default value is empty. When this value is empty the whole message will be stored in the database"""
zh: """模板, 默认为空,为空时将会将整个消息存入数据库"""
}
label {
en: "Template"
zh: "模板"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
local_topic.label:
"""Local Topic"""
desc_config {
desc {
en: """Configuration for a DynamoDB bridge."""
zh: """DynamoDB 桥接配置"""
}
label: {
en: "DynamoDB Bridge Configuration"
zh: "DynamoDB 桥接配置"
}
}
template.desc:
"""Template, the default value is empty. When this value is empty the whole message will be stored in the database"""
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
template.label:
"""Template"""
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名字"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
}

View File

@ -1,145 +1,80 @@
emqx_ee_bridge_gcp_pubsub {
desc_config {
desc {
en: """Configuration for a GCP PubSub bridge."""
zh: """GCP PubSub 桥接配置"""
}
label {
en: "GCP PubSub Bridge Configuration"
zh: "GCP PubSub 桥接配置"
}
}
desc_type {
desc {
en: """The Bridge Type"""
zh: """桥接类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
desc_name {
desc {
en: """Bridge name, used as a human-readable description of the bridge."""
zh: """桥接名字,可读描述"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
connect_timeout.desc:
"""The timeout when connecting to the HTTP server."""
connect_timeout {
desc {
en: "The timeout when connecting to the HTTP server."
zh: "连接 HTTP 服务器的超时时间。"
}
label: {
en: "Connect Timeout"
zh: "连接超时"
}
}
connect_timeout.label:
"""Connect Timeout"""
max_retries {
desc {
en: "Max retry times if an error occurs when sending a request."
zh: "请求出错时的最大重试次数。"
}
label: {
en: "Max Retries"
zh: "最大重试次数"
}
}
desc_config.desc:
"""Configuration for a GCP PubSub bridge."""
pool_size {
desc {
en: "The pool size."
zh: "连接池大小。"
}
label: {
en: "Pool Size"
zh: "连接池大小"
}
}
desc_config.label:
"""GCP PubSub Bridge Configuration"""
pipelining {
desc {
en: "A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request."
zh: "正整数,设置最大可发送的异步 HTTP 请求数量。当设置为 1 时,表示每次发送完成 HTTP 请求后都需要等待服务器返回,再继续发送下一个请求。"
}
label: {
en: "HTTP Pipelineing"
zh: "HTTP 流水线"
}
}
desc_name.desc:
"""Bridge name, used as a human-readable description of the bridge."""
request_timeout {
desc {
en: "Deprecated: Configure the request timeout in the buffer settings."
zh: "废弃的。在缓冲区设置中配置请求超时。"
}
label: {
en: "Request Timeout"
zh: "HTTP 请求超时"
}
}
desc_name.label:
"""Bridge Name"""
payload_template {
desc {
en: "The template for formatting the outgoing messages. If undefined, will send all the available context in JSON format."
zh: "用于格式化外发信息的模板。 如果未定义将以JSON格式发送所有可用的上下文。"
}
label: {
en: "Payload template"
zh: "HTTP 请求消息体模板"
}
}
desc_type.desc:
"""The Bridge Type"""
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to GCP PubSub. All MQTT 'PUBLISH' messages with the topic
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to GCP PubSub. All MQTT 'PUBLISH' messages with the topic
matching `local_topic` will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 GCP PubSub。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发到 GCP PubSub。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
pubsub_topic {
desc {
en: "The GCP PubSub topic to publish messages to."
zh: "要发布消息的GCP PubSub主题。"
}
label: {
en: "GCP PubSub Topic"
zh: "GCP PubSub 主题"
}
}
local_topic.label:
"""Local Topic"""
service_account_json {
desc {
en: "JSON containing the GCP Service Account credentials to be used with PubSub.\n"
"When a GCP Service Account is created "
"(as described in https://developers.google.com/identity/protocols/oauth2/service-account#creatinganaccount), "
"you have the option of downloading the credentials in JSON form. That's the "
"file needed."
zh: "包含将与 PubSub 一起使用的 GCP 服务账户凭证的 JSON。\n"
"当创建GCP服务账户时"
"如https://developers.google.com/identity/protocols/oauth2/service-account#creatinganaccount"
"可以选择下载 JSON 形式的凭证,然后在该配置项中使用。"
}
label: {
en: "GCP Service Account Credentials"
zh: "GCP 服务账户凭证"
}
}
max_retries.desc:
"""Max retry times if an error occurs when sending a request."""
max_retries.label:
"""Max Retries"""
payload_template.desc:
"""The template for formatting the outgoing messages. If undefined, will send all the available context in JSON format."""
payload_template.label:
"""Payload template"""
pipelining.desc:
"""A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request."""
pipelining.label:
"""HTTP Pipelineing"""
pool_size.desc:
"""The pool size."""
pool_size.label:
"""Pool Size"""
pubsub_topic.desc:
"""The GCP PubSub topic to publish messages to."""
pubsub_topic.label:
"""GCP PubSub Topic"""
request_timeout.desc:
"""Deprecated: Configure the request timeout in the buffer settings."""
request_timeout.label:
"""Request Timeout"""
service_account_json.desc:
"""JSON containing the GCP Service Account credentials to be used with PubSub.
When a GCP Service Account is created (as described in https://developers.google.com/identity/protocols/oauth2/service-account#creatinganaccount), you have the option of downloading the credentials in JSON form. That's the file needed."""
service_account_json.label:
"""GCP Service Account Credentials"""
}

View File

@ -1,90 +1,55 @@
emqx_ee_bridge_hstreamdb {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to the HStreamDB. All MQTT 'PUBLISH' messages with the topic
config_direction.desc:
"""The direction of this bridge, MUST be 'egress'"""
config_direction.label:
"""Bridge Direction"""
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for an HStreamDB bridge."""
desc_config.label:
"""HStreamDB Bridge Configuration"""
desc_connector.desc:
"""Generic configuration for the connector."""
desc_connector.label:
"""Connector Generic Configuration"""
desc_name.desc:
"""Bridge name, used as a human-readable description of the bridge."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to the HStreamDB. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 HStreamDB。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发到 HStreamDB。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
payload {
desc {
en: """The payload to be forwarded to the HStreamDB. Placeholders supported."""
zh: """要转发到 HStreamDB 的数据内容,支持占位符"""
}
label {
en: "Payload"
zh: "消息内容"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
config_direction {
desc {
en: """The direction of this bridge, MUST be 'egress'"""
zh: """桥接的方向, 必须是 egress"""
}
label {
en: "Bridge Direction"
zh: "桥接方向"
}
}
desc_config {
desc {
en: """Configuration for an HStreamDB bridge."""
zh: """HStreamDB 桥接配置"""
}
label: {
en: "HStreamDB Bridge Configuration"
zh: "HStreamDB 桥接配置"
}
}
local_topic.label:
"""Local Topic"""
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
payload.desc:
"""The payload to be forwarded to the HStreamDB. Placeholders supported."""
payload.label:
"""Payload"""
desc_name {
desc {
en: """Bridge name, used as a human-readable description of the bridge."""
zh: """桥接名字,可读描述"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
desc_connector {
desc {
en: """Generic configuration for the connector."""
zh: """连接器的通用配置。"""
}
label: {
en: "Connector Generic Configuration"
zh: "连接器通用配置。"
}
}
}

View File

@ -1,22 +1,41 @@
emqx_ee_bridge_influxdb {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to the InfluxDB. All MQTT 'PUBLISH' messages with the topic
config_enable.desc:
"""Enable or disable this bridge."""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for an InfluxDB bridge."""
desc_config.label:
"""InfluxDB Bridge Configuration"""
desc_name.desc:
"""Bridge name."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type."""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to the InfluxDB. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 InfluxDB。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发到 InfluxDB。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
write_syntax {
desc {
en: """Conf of InfluxDB line protocol to write data points. It is a text-based format that provides the measurement, tag set, field set, and timestamp of a data point, and placeholder supported.
local_topic.label:
"""Local Topic"""
write_syntax.desc:
"""Conf of InfluxDB line protocol to write data points. It is a text-based format that provides the measurement, tag set, field set, and timestamp of a data point, and placeholder supported.
See also [InfluxDB 2.3 Line Protocol](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/line-protocol/) and
[InfluxDB 1.8 Line Protocol](https://docs.influxdata.com/influxdb/v1.8/write_protocols/line_protocol_tutorial/) </br>
TLDR:</br>
@ -24,62 +43,8 @@ TLDR:</br>
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
```
Please note that a placeholder for an integer value must be annotated with a suffix `i`. For example `${payload.int_value}i`."""
zh: """使用 InfluxDB API Line Protocol 写入 InfluxDB 的数据,支持占位符</br>
参考 [InfluxDB 2.3 Line Protocol](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/line-protocol/) 及
[InfluxDB 1.8 Line Protocol](https://docs.influxdata.com/influxdb/v1.8/write_protocols/line_protocol_tutorial/) </br>
TLDR: </br>
```
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
```
注意,整形数值占位符后需要添加一个字符 `i` 类型标识。例如 `${payload.int_value}i`"""
}
label {
en: "Write Syntax"
zh: "写语句"
}
}
config_enable {
desc {
en: """Enable or disable this bridge."""
zh: """启用/禁用桥接。"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
desc_config {
desc {
en: """Configuration for an InfluxDB bridge."""
zh: """InfluxDB 桥接配置。"""
}
label: {
en: "InfluxDB Bridge Configuration"
zh: "InfluxDB 桥接配置"
}
}
desc_type {
desc {
en: """The Bridge Type."""
zh: """桥接类型。"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名称。"""
}
label {
en: "Bridge Name"
zh: "桥接名称"
}
}
write_syntax.label:
"""Write Syntax"""
}

View File

@ -1,100 +1,57 @@
emqx_ee_bridge_mongodb {
desc_config {
desc {
en: "Configuration for MongoDB Bridge"
zh: "为MongoDB桥配置"
}
label {
en: "MongoDB Bridge Configuration"
zh: "MongoDB桥配置"
}
}
enable {
desc {
en: "Enable or disable this MongoDB Bridge"
zh: "启用或停用该MongoDB桥"
}
label {
en: "Enable or disable"
zh: "启用或禁用"
}
}
collection.desc:
"""The collection where data will be stored into"""
collection {
desc {
en: "The collection where data will be stored into"
zh: "数据将被存储到的集合"
}
label {
en: "Collection to be used"
zh: "将要使用的集合Collection"
}
}
collection.label:
"""Collection to be used"""
mongodb_rs_conf {
desc {
en: "MongoDB (Replica Set) configuration"
zh: "MongoDBReplica Set配置"
}
label {
en: "MongoDB (Replica Set) Configuration"
zh: "MongoDBReplica Set配置"
}
}
desc_config.desc:
"""Configuration for MongoDB Bridge"""
mongodb_sharded_conf {
desc {
en: "MongoDB (Sharded) configuration"
zh: "MongoDB (Sharded)配置"
}
label {
en: "MongoDB (Sharded) Configuration"
zh: "MongoDB (Sharded)配置"
}
}
desc_config.label:
"""MongoDB Bridge Configuration"""
mongodb_single_conf {
desc {
en: "MongoDB (Standalone) configuration"
zh: "MongoDB独立配置"
}
label {
en: "MongoDB (Standalone) Configuration"
zh: "MongoDB独立配置"
}
}
desc_name.desc:
"""Bridge name."""
desc_type {
desc {
en: """The Bridge Type."""
zh: """桥接类型。"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
desc_name.label:
"""Bridge Name"""
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名称。"""
}
label {
en: "Bridge Name"
zh: "桥接名称"
}
}
desc_type.desc:
"""The Bridge Type."""
desc_type.label:
"""Bridge Type"""
enable.desc:
"""Enable or disable this MongoDB Bridge"""
enable.label:
"""Enable or disable"""
mongodb_rs_conf.desc:
"""MongoDB (Replica Set) configuration"""
mongodb_rs_conf.label:
"""MongoDB (Replica Set) Configuration"""
mongodb_sharded_conf.desc:
"""MongoDB (Sharded) configuration"""
mongodb_sharded_conf.label:
"""MongoDB (Sharded) Configuration"""
mongodb_single_conf.desc:
"""MongoDB (Standalone) configuration"""
mongodb_single_conf.label:
"""MongoDB (Standalone) Configuration"""
payload_template.desc:
"""The template for formatting the outgoing messages. If undefined, rule engine will use JSON format to serialize all visible inputs, such as clientid, topic, payload etc."""
payload_template.label:
"""Payload template"""
payload_template {
desc {
en: "The template for formatting the outgoing messages. If undefined, rule engine will use JSON format to serialize all visible inputs, such as clientid, topic, payload etc."
zh: "用于格式化写入 MongoDB 的消息模板。 如果未定义,规则引擎会使用 JSON 格式序列化所有的可见输入,例如 clientid, topic, payload 等。"
}
label: {
en: "Payload template"
zh: "有效载荷模板"
}
}
}

View File

@ -1,72 +1,43 @@
emqx_ee_bridge_mysql {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to MySQL. All MQTT 'PUBLISH' messages with the topic
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for an HStreamDB bridge."""
desc_config.label:
"""HStreamDB Bridge Configuration"""
desc_name.desc:
"""Bridge name, used as a human-readable description of the bridge."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to MySQL. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 MySQL。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
sql_template {
desc {
en: """SQL Template"""
zh: """SQL 模板"""
}
label {
en: "SQL Template"
zh: "SQL 模板"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
local_topic.label:
"""Local Topic"""
desc_config {
desc {
en: """Configuration for an HStreamDB bridge."""
zh: """HStreamDB 桥接配置"""
}
label: {
en: "HStreamDB Bridge Configuration"
zh: "HStreamDB 桥接配置"
}
}
sql_template.desc:
"""SQL Template"""
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
sql_template.label:
"""SQL Template"""
desc_name {
desc {
en: """Bridge name, used as a human-readable description of the bridge."""
zh: """桥接名字,可读描述"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
}

View File

@ -1,72 +1,43 @@
emqx_ee_bridge_pgsql {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to PostgreSQL. All MQTT 'PUBLISH' messages with the topic
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for a PostgreSQL bridge."""
desc_config.label:
"""PostgreSQL Bridge Configuration"""
desc_name.desc:
"""Bridge name."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to PostgreSQL. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 PostgreSQL。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
sql_template {
desc {
en: """SQL Template"""
zh: """SQL 模板"""
}
label {
en: "SQL Template"
zh: "SQL 模板"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
local_topic.label:
"""Local Topic"""
desc_config {
desc {
en: """Configuration for a PostgreSQL bridge."""
zh: """PostgreSQL 桥接配置"""
}
label: {
en: "PostgreSQL Bridge Configuration"
zh: "PostgreSQL 桥接配置"
}
}
sql_template.desc:
"""SQL Template"""
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
sql_template.label:
"""SQL Template"""
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名字"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
}

View File

@ -1,74 +1,45 @@
emqx_ee_bridge_redis {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to Redis. All MQTT 'PUBLISH' messages with the topic
command_template.desc:
"""Redis command template used to export messages. Each list element stands for a command name or its argument.
For example, to push payloads in a Redis list by key `msgs`, the elements should be the following:
`rpush`, `msgs`, `${payload}`."""
command_template.label:
"""Redis Command Template"""
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for a Redis bridge."""
desc_config.label:
"""Redis Bridge Configuration"""
desc_name.desc:
"""Bridge name, used as a human-readable description of the bridge."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to Redis. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 Redis。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发到 Redis。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
command_template {
desc {
en: """Redis command template used to export messages. Each list element stands for a command name or its argument.
For example, to push payloads in a Redis list by key `msgs`, the elements should be the following:
`rpush`, `msgs`, `${payload}`."""
zh: """用于推送数据的 Redis 命令模板。 每个列表元素代表一个命令名称或其参数。
例如,要通过键值 `msgs` 将消息体推送到 Redis 列表中,数组元素应该是: `rpush`, `msgs`, `${payload}`。"""
}
label {
en: "Redis Command Template"
zh: "Redis Command 模板"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
local_topic.label:
"""Local Topic"""
desc_config {
desc {
en: """Configuration for a Redis bridge."""
zh: """Resis 桥接配置"""
}
label: {
en: "Redis Bridge Configuration"
zh: "Redis 桥接配置"
}
}
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
desc_name {
desc {
en: """Bridge name, used as a human-readable description of the bridge."""
zh: """桥接名字,可读描述"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
}

View File

@ -1,70 +1,41 @@
emqx_ee_bridge_rocketmq {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to RocketMQ. All MQTT `PUBLISH` messages with the topic
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for a RocketMQ bridge."""
desc_config.label:
"""RocketMQ Bridge Configuration"""
desc_name.desc:
"""Bridge name."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to RocketMQ. All MQTT `PUBLISH` messages with the topic
matching the `local_topic` will be forwarded.</br>
NOTE: if the bridge is used as a rule action, `local_topic` should be left empty otherwise the messages will be duplicated."""
zh: """发送到 'local_topic' 的消息都会转发到 RocketMQ。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
template {
desc {
en: """Template, the default value is empty. When this value is empty the whole message will be stored in the RocketMQ"""
zh: """模板, 默认为空,为空时将会将整个消息转发给 RocketMQ"""
}
label {
en: "Template"
zh: "模板"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
local_topic.label:
"""Local Topic"""
desc_config {
desc {
en: """Configuration for a RocketMQ bridge."""
zh: """RocketMQ 桥接配置"""
}
label: {
en: "RocketMQ Bridge Configuration"
zh: "RocketMQ 桥接配置"
}
}
template.desc:
"""Template, the default value is empty. When this value is empty the whole message will be stored in the RocketMQ"""
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
template.label:
"""Template"""
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名字"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
}

View File

@ -1,85 +1,49 @@
emqx_ee_bridge_sqlserver {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to Microsoft SQL Server. All MQTT 'PUBLISH' messages with the topic
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for a Microsoft SQL Server bridge."""
desc_config.label:
"""Microsoft SQL Server Bridge Configuration"""
desc_name.desc:
"""Bridge name."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
driver.desc:
"""SQL Server Driver Name"""
driver.label:
"""SQL Server Driver Name"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to Microsoft SQL Server. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 Microsoft SQL Server。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: """Local Topic"""
zh: """本地 Topic"""
}
}
sql_template {
desc {
en: """SQL Template"""
zh: """SQL 模板"""
}
label {
en: """SQL Template"""
zh: """SQL 模板"""
}
}
local_topic.label:
"""Local Topic"""
driver {
desc {
en: """SQL Server Driver Name"""
zh: """SQL Server Driver 名称"""
}
label {
en: """SQL Server Driver Name"""
zh: """SQL Server Driver 名称"""
}
}
sql_template.desc:
"""SQL Template"""
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: """Enable Or Disable Bridge"""
zh: """启用/禁用桥接"""
}
}
desc_config {
desc {
en: """Configuration for a Microsoft SQL Server bridge."""
zh: """Microsoft SQL Server 桥接配置"""
}
label: {
en: """Microsoft SQL Server Bridge Configuration"""
zh: """Microsoft SQL Server 桥接配置"""
}
}
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: """Bridge Type"""
zh: """桥接类型"""
}
}
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名字"""
}
label {
en: """Bridge Name"""
zh: """桥接名字"""
}
}
sql_template.label:
"""SQL Template"""
}

View File

@ -1,72 +1,43 @@
emqx_ee_bridge_tdengine {
local_topic {
desc {
en: """The MQTT topic filter to be forwarded to TDengine. All MQTT 'PUBLISH' messages with the topic
config_enable.desc:
"""Enable or disable this bridge"""
config_enable.label:
"""Enable Or Disable Bridge"""
desc_config.desc:
"""Configuration for a TDengine bridge."""
desc_config.label:
"""TDengine Bridge Configuration"""
desc_name.desc:
"""Bridge name."""
desc_name.label:
"""Bridge Name"""
desc_type.desc:
"""The Bridge Type"""
desc_type.label:
"""Bridge Type"""
local_topic.desc:
"""The MQTT topic filter to be forwarded to TDengine. All MQTT 'PUBLISH' messages with the topic
matching the local_topic will be forwarded.</br>
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 TDengine。 </br>
注意:如果这个 Bridge 被用作规则EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
zh: "本地 Topic"
}
}
sql_template {
desc {
en: """SQL Template"""
zh: """SQL 模板"""
}
label {
en: "SQL Template"
zh: "SQL 模板"
}
}
config_enable {
desc {
en: """Enable or disable this bridge"""
zh: """启用/禁用桥接"""
}
label {
en: "Enable Or Disable Bridge"
zh: "启用/禁用桥接"
}
}
local_topic.label:
"""Local Topic"""
desc_config {
desc {
en: """Configuration for a TDengine bridge."""
zh: """TDengine 桥接配置"""
}
label: {
en: "TDengine Bridge Configuration"
zh: "TDengine 桥接配置"
}
}
sql_template.desc:
"""SQL Template"""
desc_type {
desc {
en: """The Bridge Type"""
zh: """Bridge 类型"""
}
label {
en: "Bridge Type"
zh: "桥接类型"
}
}
sql_template.label:
"""SQL Template"""
desc_name {
desc {
en: """Bridge name."""
zh: """桥接名字"""
}
label {
en: "Bridge Name"
zh: "桥接名字"
}
}
}

View File

@ -1,28 +1,17 @@
emqx_ee_connector_cassa {
servers {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.<br/>
keyspace.desc:
"""Keyspace name to connect to."""
keyspace.label:
"""Keyspace"""
servers.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.<br/>
A host entry has the following form: `Host[:Port][,Host2:Port]`.<br/>
The Cassandra default port 9042 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。<br/>
主机名具有以下形式:`Host[:Port][,Host2:Port]`。<br/>
如果未指定 `[:Port]`,则使用 Cassandra 默认端口 9042。"""
}
label: {
en: "Servers"
zh: "Servers"
}
}
keyspace {
desc {
en: """Keyspace name to connect to."""
zh: """要连接到的 Keyspace 名称。"""
}
label: {
en: "Keyspace"
zh: "Keyspace"
}
}
servers.label:
"""Servers"""
}

View File

@ -1,25 +1,15 @@
emqx_ee_connector_clickhouse {
base_url {
desc {
en: """The HTTP URL to the Clickhouse server that you want to connect to (for example http://myhostname:8123)"""
zh: """你想连接到的Clickhouse服务器的HTTP URL例如http://myhostname:8123。"""
}
label: {
en: "Server URL"
zh: "服务器 URL"
}
}
base_url.desc:
"""The HTTP URL to the Clickhouse server that you want to connect to (for example http://myhostname:8123)"""
connect_timeout {
desc {
en: "The timeout when connecting to the Clickhouse server."
zh: "连接HTTP服务器的超时时间。"
}
label: {
en: "Clickhouse Timeout"
zh: "连接超时"
}
}
base_url.label:
"""Server URL"""
connect_timeout.desc:
"""The timeout when connecting to the Clickhouse server."""
connect_timeout.label:
"""Clickhouse Timeout"""
}

View File

@ -1,14 +1,9 @@
emqx_ee_connector_dynamo {
url {
desc {
en: """The url of DynamoDB endpoint."""
zh: """DynamoDB 的地址。"""
}
label: {
en: "DynamoDB Endpoint"
zh: "DynamoDB 地址"
}
}
url.desc:
"""The url of DynamoDB endpoint."""
url.label:
"""DynamoDB Endpoint"""
}

View File

@ -1,74 +1,45 @@
emqx_ee_connector_hstreamdb {
config {
desc {
en: "HStreamDB connection config"
zh: "HStreamDB 连接配置。"
}
label: {
en: "Connection config"
zh: "连接配置"
}
}
type {
desc {
en: "The Connector Type."
zh: "连接器类型。"
}
label: {
en: "Connector Type"
zh: "连接器类型"
}
}
config.desc:
"""HStreamDB connection config"""
config.label:
"""Connection config"""
name.desc:
"""Connector name, used as a human-readable description of the connector."""
name.label:
"""Connector Name"""
ordering_key.desc:
"""HStreamDB Ordering Key"""
ordering_key.label:
"""HStreamDB Ordering Key"""
pool_size.desc:
"""HStreamDB Pool Size"""
pool_size.label:
"""HStreamDB Pool Size"""
stream_name.desc:
"""HStreamDB Stream Name"""
stream_name.label:
"""HStreamDB Stream Name"""
type.desc:
"""The Connector Type."""
type.label:
"""Connector Type"""
url.desc:
"""HStreamDB Server URL"""
url.label:
"""HStreamDB Server URL"""
name {
desc {
en: "Connector name, used as a human-readable description of the connector."
zh: "连接器名称,人类可读的连接器描述。"
}
label: {
en: "Connector Name"
zh: "连接器名称"
}
}
url {
desc {
en: """HStreamDB Server URL"""
zh: """HStreamDB 服务器 URL"""
}
label {
en: """HStreamDB Server URL"""
zh: """HStreamDB 服务器 URL"""
}
}
stream_name {
desc {
en: """HStreamDB Stream Name"""
zh: """HStreamDB 流名称"""
}
label {
en: """HStreamDB Stream Name"""
zh: """HStreamDB 流名称"""
}
}
ordering_key {
desc {
en: """HStreamDB Ordering Key"""
zh: """HStreamDB 分区键"""
}
label {
en: """HStreamDB Ordering Key"""
zh: """HStreamDB 分区键"""
}
}
pool_size {
desc {
en: """HStreamDB Pool Size"""
zh: """HStreamDB 连接池大小"""
}
label {
en: """HStreamDB Pool Size"""
zh: """HStreamDB 连接池大小"""
}
}
}

View File

@ -1,118 +1,71 @@
emqx_ee_connector_influxdb {
server {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.</br>
bucket.desc:
"""InfluxDB bucket name."""
bucket.label:
"""Bucket"""
database.desc:
"""InfluxDB database."""
database.label:
"""Database"""
influxdb_api_v1.desc:
"""InfluxDB's protocol. Support InfluxDB v1.8 and before."""
influxdb_api_v1.label:
"""HTTP API Protocol"""
influxdb_api_v2.desc:
"""InfluxDB's protocol. Support InfluxDB v2.0 and after."""
influxdb_api_v2.label:
"""HTTP API V2 Protocol"""
org.desc:
"""Organization name of InfluxDB."""
org.label:
"""Organization"""
password.desc:
"""InfluxDB password."""
password.label:
"""Password"""
precision.desc:
"""InfluxDB time precision."""
precision.label:
"""Time Precision"""
protocol.desc:
"""InfluxDB's protocol. HTTP API or HTTP API V2."""
protocol.label:
"""Protocol"""
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.</br>
A host entry has the following form: `Host[:Port]`.</br>
The InfluxDB default port 8086 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。</br>
主机名具有以下形式:`Host[:Port]`。</br>
如果未指定 `[:Port]`,则使用 InfluxDB 默认端口 8086。"""
}
label {
en: "Server Host"
zh: "服务器地址"
}
}
precision {
desc {
en: """InfluxDB time precision."""
zh: """InfluxDB 时间精度。"""
}
label {
en: """Time Precision"""
zh: """时间精度"""
}
}
protocol {
desc {
en: """InfluxDB's protocol. HTTP API or HTTP API V2."""
zh: """InfluxDB 协议。HTTP API 或 HTTP API V2。"""
}
label {
en: """Protocol"""
zh: """协议"""
}
}
influxdb_api_v1 {
desc {
en: """InfluxDB's protocol. Support InfluxDB v1.8 and before."""
zh: """InfluxDB HTTP API 协议。支持 Influxdb v1.8 以及之前的版本。"""
}
label {
en: """HTTP API Protocol"""
zh: """HTTP API 协议"""
}
}
influxdb_api_v2 {
desc {
en: """InfluxDB's protocol. Support InfluxDB v2.0 and after."""
zh: """InfluxDB HTTP API V2 协议。支持 Influxdb v2.0 以及之后的版本。"""
}
label {
en: """HTTP API V2 Protocol"""
zh: """HTTP API V2 协议"""
}
}
database {
desc {
en: """InfluxDB database."""
zh: """InfluxDB 数据库。"""
}
label {
en: "Database"
zh: "数据库"
}
}
username {
desc {
en: "InfluxDB username."
zh: "InfluxDB 用户名。"
}
label {
en: "Username"
zh: "用户名"
}
}
password {
desc {
en: "InfluxDB password."
zh: "InfluxDB 密码。"
}
label {
en: "Password"
zh: "密码"
}
}
bucket {
desc {
en: "InfluxDB bucket name."
zh: "InfluxDB bucket 名称。"
}
label {
en: "Bucket"
zh: "Bucket"
}
}
org {
desc {
en: """Organization name of InfluxDB."""
zh: """InfluxDB 组织名称。"""
}
label {
en: """Organization"""
zh: """组织"""
}
}
token {
desc {
en: """InfluxDB token."""
zh: """InfluxDB token。"""
}
label {
en: """Token"""
zh: """Token"""
}
}
server.label:
"""Server Host"""
token.desc:
"""InfluxDB token."""
token.label:
"""Token"""
username.desc:
"""InfluxDB username."""
username.label:
"""Username"""
}

View File

@ -1,62 +1,35 @@
emqx_ee_connector_rocketmq {
server {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.<br/>
refresh_interval.desc:
"""RocketMQ Topic Route Refresh Interval."""
refresh_interval.label:
"""Topic Route Refresh Interval"""
security_token.desc:
"""RocketMQ Server Security Token"""
security_token.label:
"""Security Token"""
send_buffer.desc:
"""The socket send buffer size of the RocketMQ driver client."""
send_buffer.label:
"""Send Buffer Size"""
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.<br/>
A host entry has the following form: `Host[:Port]`.<br/>
The RocketMQ default port 9876 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。<br/>
主机名具有以下形式:`Host[:Port]`。<br/>
如果未指定 `[:Port]`,则使用 RocketMQ 默认端口 9876。"""
}
label: {
en: "Server Host"
zh: "服务器地址"
}
}
topic {
desc {
en: """RocketMQ Topic"""
zh: """RocketMQ 主题"""
}
label: {
en: "RocketMQ Topic"
zh: "RocketMQ 主题"
}
}
server.label:
"""Server Host"""
refresh_interval {
desc {
en: """RocketMQ Topic Route Refresh Interval."""
zh: """RocketMQ 主题路由更新间隔。"""
}
label: {
en: "Topic Route Refresh Interval"
zh: "主题路由更新间隔"
}
}
topic.desc:
"""RocketMQ Topic"""
send_buffer {
desc {
en: """The socket send buffer size of the RocketMQ driver client."""
zh: """RocketMQ 驱动的套字节发送消息的缓冲区大小"""
}
label: {
en: "Send Buffer Size"
zh: "发送消息的缓冲区大小"
}
}
security_token {
desc {
en: """RocketMQ Server Security Token"""
zh: """RocketMQ 服务器安全令牌"""
}
label: {
en: "Security Token"
zh: "安全令牌"
}
}
topic.label:
"""RocketMQ Topic"""
}

View File

@ -1,18 +1,11 @@
emqx_ee_connector_sqlserver {
server {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.<br/>
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.<br/>
A host entry has the following form: `Host[:Port]`.<br/>
The SQL Server default port 1433 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。<br/>
主机名具有以下形式:`Host[:Port]`。<br/>
如果未指定 `[:Port]`,则使用 SQL Server 默认端口 1433。"""
}
label: {
en: "Server Host"
zh: "服务器地址"
}
}
server.label:
"""Server Host"""
}

View File

@ -1,18 +1,11 @@
emqx_ee_connector_tdengine {
server {
desc {
en: """The IPv4 or IPv6 address or the hostname to connect to.<br/>
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.<br/>
A host entry has the following form: `Host[:Port]`.<br/>
The TDengine default port 6041 is used if `[:Port]` is not specified."""
zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。<br/>
主机名具有以下形式:`Host[:Port]`。<br/>
如果未指定 `[:Port]`,则使用 TDengine 默认端口 6041。"""
}
label: {
en: "Server Host"
zh: "服务器地址"
}
}
server.label:
"""Server Host"""
}

View File

@ -1,69 +1,39 @@
emqx_ee_schema_registry_http_api {
# apis
desc_schema_registry_api_list {
desc {
en: "List all registered schemas"
zh: "列出所有注册的模式"
}
label {
en: "List schemas"
zh: "列表模式"
}
}
desc_schema_registry_api_get {
desc {
en: "Get a schema by its name"
zh: "通过名称获取模式"
}
label {
en: "Get schema"
zh: "获取模式"
}
}
desc_param_path_schema_name.desc:
"""The schema name"""
desc_schema_registry_api_post {
desc {
en: "Register a new schema"
zh: "注册一个新的模式"
}
label {
en: "Register schema"
zh: "注册模式"
}
}
desc_param_path_schema_name.label:
"""Schema name"""
desc_schema_registry_api_put {
desc {
en: "Update an existing schema"
zh: "更新一个现有的模式"
}
label {
en: "Update schema"
zh: "更新模式"
}
}
desc_schema_registry_api_delete.desc:
"""Delete a schema"""
desc_schema_registry_api_delete {
desc {
en: "Delete a schema"
zh: "删除一个模式"
}
label {
en: "Delete schema"
zh: "删除模式"
}
}
desc_schema_registry_api_delete.label:
"""Delete schema"""
desc_schema_registry_api_get.desc:
"""Get a schema by its name"""
desc_schema_registry_api_get.label:
"""Get schema"""
desc_schema_registry_api_list.desc:
"""List all registered schemas"""
desc_schema_registry_api_list.label:
"""List schemas"""
desc_schema_registry_api_post.desc:
"""Register a new schema"""
desc_schema_registry_api_post.label:
"""Register schema"""
desc_schema_registry_api_put.desc:
"""Update an existing schema"""
desc_schema_registry_api_put.label:
"""Update schema"""
# params
desc_param_path_schema_name {
desc {
en: "The schema name"
zh: "模式名称"
}
label {
en: "Schema name"
zh: "模式名称"
}
}
}

View File

@ -1,78 +1,45 @@
emqx_ee_schema_registry_schema {
schema_registry_root {
desc {
en: "Schema registry configurations."
zh: "模式注册表的配置。"
}
label {
en: "Schema registry"
zh: "模式注册表"
}
}
schema_registry_schemas {
desc {
en: "Registered schemas."
zh: "注册的模式。"
}
label {
en: "Registered schemas"
zh: "注册的模式"
}
}
avro_type.desc:
"""[Apache Avro](https://avro.apache.org/) serialization format."""
schema_name {
desc {
en: "A name for the schema that will serve as its identifier."
zh: "模式的一个名称,将作为其标识符。"
}
label {
en: "Schema name"
zh: "模式名称"
}
}
avro_type.label:
"""Apache Avro"""
schema_type {
desc {
en: "Schema type."
zh: "模式类型。"
}
label {
en: "Schema type"
zh: "模式类型"
}
}
schema_description.desc:
"""A description for this schema."""
schema_source {
desc {
en: "Source text for the schema."
zh: "模式的源文本。"
}
label {
en: "Schema source"
zh: "模式来源"
}
}
schema_description.label:
"""Schema description"""
schema_description {
desc {
en: "A description for this schema."
zh: "对该模式的描述。"
}
label {
en: "Schema description"
zh: "模式描述"
}
}
schema_name.desc:
"""A name for the schema that will serve as its identifier."""
schema_name.label:
"""Schema name"""
schema_registry_root.desc:
"""Schema registry configurations."""
schema_registry_root.label:
"""Schema registry"""
schema_registry_schemas.desc:
"""Registered schemas."""
schema_registry_schemas.label:
"""Registered schemas"""
schema_source.desc:
"""Source text for the schema."""
schema_source.label:
"""Schema source"""
schema_type.desc:
"""Schema type."""
schema_type.label:
"""Schema type"""
avro_type {
desc {
en: "[Apache Avro](https://avro.apache.org/) serialization format."
zh: "[阿帕奇-阿夫罗](https://avro.apache.org/) 序列化格式。"
}
label {
en: "Apache Avro"
zh: "阿帕奇-阿夫罗"
}
}
}

View File

@ -1,180 +1,81 @@
emqx_exhook_api {
list_all_servers {
desc {
en: "List all servers"
zh: "查看ExHook 服务器列表"
}
}
add_server.desc:
"""Add a server"""
add_server {
desc {
en: "Add a server"
zh: "添加 ExHook 服务器"
}
}
delete_server.desc:
"""Delete the server"""
get_detail {
desc {
en: "Get the detail information of Exhook server"
zh: "查看 Exhook 服务器详细信息"
}
}
get_detail.desc:
"""Get the detail information of Exhook server"""
update_server {
desc {
en: "Update the server"
zh: "更新 Exhook 服务器"
}
}
get_hooks.desc:
"""Get the hooks information of server"""
delete_server {
desc {
en: "Delete the server"
zh: "删除 Exhook 服务器"
}
}
hook_metrics.desc:
"""Metrics information of this hook in the current node"""
get_hooks {
desc {
en: "Get the hooks information of server"
zh: "获取 Exhook 服务器的钩子信息"
}
}
hook_name.desc:
"""The hook's name"""
move_api {
desc {
en: """Move the server.
NOTE: The position should be \"front | rear | before:{name} | after:{name}"""
zh: """移动 Exhook 服务器顺序。
注意: 移动的参数只能是front | rear | before:{name} | after:{name}"""
}
label {
en: "Change order of execution for registered Exhook server"
zh: "改变已注册的Exhook服务器的执行顺序"
}
}
hook_params.desc:
"""The parameters used when the hook is registered"""
move_position {
desc {
en: "The target position to be moved"
zh: "移动的方向"
}
}
list_all_servers.desc:
"""List all servers"""
hook_name {
desc {
en: "The hook's name"
zh: "钩子的名称"
}
}
metric_failed.desc:
"""The number of times the hook execution failed"""
server_name {
desc {
en: "The Exhook server name"
zh: "Exhook 服务器的名称"
}
}
metric_max_rate.desc:
"""Maximum call rate of hooks"""
hook_params {
desc {
en: "The parameters used when the hook is registered"
zh: "钩子注册时使用的参数"
}
}
metric_rate.desc:
"""The call rate of hooks"""
server_metrics {
desc {
en: "Metrics information of this server in the current node"
zh: "当前节点中该服务器的指标信息"
}
}
metric_succeed.desc:
"""The number of times the hooks execution successful"""
node_metrics {
desc {
en: "Metrics information of this server in all nodes"
zh: "所有节点中该服务器的指标信息"
}
}
metrics.desc:
"""Metrics information"""
node_status {
desc {
en: "status of this server in all nodes"
zh: "所有节点中该服务器的状态信息"
}
}
move_api.desc:
"""Move the server.
NOTE: The position should be "front | rear | before:{name} | after:{name}"""
hook_metrics {
desc {
en: "Metrics information of this hook in the current node"
zh: "当前节点中该钩子的指标信息"
}
}
move_api.label:
"""Change order of execution for registered Exhook server"""
node_hook_metrics {
desc {
en: "Metrics information of this hook in all nodes"
zh: "所有节点中该钩子的指标信息"
}
}
move_position.desc:
"""The target position to be moved"""
node {
desc {
en: "Node name"
zh: "节点名称"
}
}
node.desc:
"""Node name"""
metrics {
desc {
en: "Metrics information"
zh: "指标信息"
}
}
node_hook_metrics.desc:
"""Metrics information of this hook in all nodes"""
status {
desc {
en: """The status of Exhook server.<br/>
node_metrics.desc:
"""Metrics information of this server in all nodes"""
node_status.desc:
"""status of this server in all nodes"""
server_metrics.desc:
"""Metrics information of this server in the current node"""
server_name.desc:
"""The Exhook server name"""
status.desc:
"""The status of Exhook server.<br/>
connected: connection succeeded<br/>
connecting: connection failed, reconnecting<br/>
disconnected: failed to connect and didn't reconnect<br/>
disabled: this server is disabled<br/>
error: failed to view the status of this server"""
zh: """Exhook 服务器的状态。<br/>
connected: 连接成功<br/>
connecting: 连接失败,重连中<br/>
disconnected: 连接失败,且未设置自动重连<br/>
disabled: 该服务器未开启<br/>
error: 查看该服务器状态时发生错误"""
}
}
metric_succeed {
desc {
en: "The number of times the hooks execution successful"
zh: "钩子执行成功的次数"
}
}
metric_failed {
desc {
en: "The number of times the hook execution failed"
zh: "钩子执行失败的次数"
}
}
metric_rate {
desc {
en: "The call rate of hooks"
zh: "钩子的调用速率"
}
}
metric_max_rate {
desc {
en: "Maximum call rate of hooks"
zh: "钩子的最大调用速率"
}
}
update_server.desc:
"""Update the server"""
}

View File

@ -1,97 +1,45 @@
emqx_exhook_schema {
servers {
desc {
en: "List of exhook servers"
zh: "ExHook 服务器列表"
}
}
name {
desc {
en: "Name of the exhook server"
zh: "ExHook 服务器名称"
}
}
enable {
desc {
en: "Enable this Exhook server"
zh: "开启这个 Exhook 服务器"
}
}
url {
desc {
en: "URL of the gRPC server"
zh: "gRPC 服务器地址"
}
}
request_timeout {
desc {
en: "The timeout of request gRPC server"
zh: "gRPC 服务器请求超时时间"
}
}
failed_action {
desc {
en: "The value that is returned when the request to the gRPC server fails for any reason"
zh: "当 gRPC 请求失败后的操作"
}
}
auto_reconnect {
desc {
en: """Whether to automatically reconnect (initialize) the gRPC server.
auto_reconnect.desc:
"""Whether to automatically reconnect (initialize) the gRPC server.
When gRPC is not available, Exhook tries to request the gRPC service at that interval and reinitialize the list of mounted hooks."""
zh: """自动重连到 gRPC 服务器的设置。
当 gRPC 服务器不可用时Exhook 将会按照这里设置的间隔时间进行重连,并重新初始化注册的钩子"""
}
}
pool_size {
desc {
en: "The process pool size for gRPC client"
zh: "gRPC 客户端进程池大小"
}
}
enable.desc:
"""Enable this Exhook server"""
socket_options {
desc {
en: "Connection socket options"
zh: "连接套接字设置"
}
}
failed_action.desc:
"""The value that is returned when the request to the gRPC server fails for any reason"""
keepalive {
desc {
en: """Enables/disables periodic transmission on a connected socket when no other data is exchanged.
keepalive.desc:
"""Enables/disables periodic transmission on a connected socket when no other data is exchanged.
If the other end does not respond, the connection is considered broken and an error message is sent to the controlling process."""
zh: """当没有其他数据交换时,是否向连接的对端套接字定期的发送探测包。如果另一端没有响应,则认为连接断开,并向控制进程发送错误消息"""
}
}
nodelay {
desc {
en: """If true, option TCP_NODELAY is turned on for the socket,
name.desc:
"""Name of the exhook server"""
nodelay.desc:
"""If true, option TCP_NODELAY is turned on for the socket,
which means that also small amounts of data are sent immediately"""
zh: "如果为 true则为套接字设置 TCP_NODELAY 选项,这意味着会立即发送数据包"
}
}
recbuf {
desc {
en: "The minimum size of receive buffer to use for the socket"
zh: "套接字的最小接收缓冲区大小"
}
}
pool_size.desc:
"""The process pool size for gRPC client"""
recbuf.desc:
"""The minimum size of receive buffer to use for the socket"""
request_timeout.desc:
"""The timeout of request gRPC server"""
servers.desc:
"""List of exhook servers"""
sndbuf.desc:
"""The minimum size of send buffer to use for the socket"""
socket_options.desc:
"""Connection socket options"""
url.desc:
"""URL of the gRPC server"""
sndbuf {
desc {
en: "The minimum size of send buffer to use for the socket"
zh: "套接字的最小发送缓冲区大小"
}
}
}

View File

@ -1,52 +1,24 @@
emqx_exproto_schema {
exproto {
desc {
en: """The Extension Protocol configuration"""
zh: """ExProto 网关"""
}
}
exproto_server {
desc {
en: """Configurations for starting the <code>ConnectionAdapter</code> service"""
zh: """配置 ExProto 网关需要启动的 <code>ConnectionAdapter</code> 服务。
该服务用于提供客户端的认证、发布、订阅和数据下行等功能。"""
}
}
exproto.desc:
"""The Extension Protocol configuration"""
exproto_grpc_server_bind {
desc {
en: """Listening address and port for the gRPC server."""
zh: """服务监听地址和端口。"""
}
}
exproto_grpc_handler_address.desc:
"""gRPC server address."""
exproto_grpc_server_ssl {
desc {
en: """SSL configuration for the gRPC server."""
zh: """服务 SSL 配置。"""
}
}
exproto_grpc_handler_ssl.desc:
"""SSL configuration for the gRPC client."""
exproto_handler {
desc {
en: """Configurations for request to <code>ConnectionHandler</code> service"""
zh: """配置 ExProto 网关需要请求的 <code>ConnectionHandler</code> 服务地址。
该服务用于给 ExProto 提供客户端的 Socket 事件处理、字节解码、订阅消息接收等功能。"""
}
}
exproto_grpc_server_bind.desc:
"""Listening address and port for the gRPC server."""
exproto_grpc_handler_address {
desc {
en: """gRPC server address."""
zh: """对端 gRPC 服务器地址。"""
}
}
exproto_grpc_server_ssl.desc:
"""SSL configuration for the gRPC server."""
exproto_handler.desc:
"""Configurations for request to <code>ConnectionHandler</code> service"""
exproto_server.desc:
"""Configurations for starting the <code>ConnectionAdapter</code> service"""
exproto_grpc_handler_ssl {
desc {
en: """SSL configuration for the gRPC client."""
zh: """gRPC 客户端的 SSL 配置。"""
}
}
}

View File

@ -1,166 +1,73 @@
emqx_gateway_api {
list_gateway {
desc {
en: """This API returns an overview info for the specified or all gateways.
including current running status, number of connections, listener status, etc."""
zh: """该接口会返回指定或所有网关的概览状态,
包括当前状态、连接数、监听器状态等。"""
}
}
delete_gateway.desc:
"""Unload the specified gateway"""
enable_gateway {
desc {
en: """Enable a gateway by confs."""
zh: """使用配置启动某一网关。"""
}
}
enable_gateway.desc:
"""Enable a gateway by confs."""
get_gateway {
desc {
en: """Get the gateway configurations"""
zh: """获取网关配置详情"""
}
}
gateway_created_at.desc:
"""The Gateway created datetime"""
delete_gateway {
desc {
en: """Unload the specified gateway"""
zh: """停用指定网关"""
}
}
gateway_current_connections.desc:
"""The Gateway current connected connections/clients"""
update_gateway {
desc {
en: """Update the gateway basic configurations and running status.<br/>
Note: The Authentication and Listener configurations should be updated by other special APIs."""
zh: """更新指定网关的基础配置、和启用的状态。<br/>
注:认证、和监听器的配置更新需参考对应的 API 接口。"""
}
}
gateway_enable_in_path.desc:
"""Whether to enable this gateway"""
gateway_name {
desc {
en: """Gateway Name"""
zh: """网关名称"""
}
}
gateway_listener_id.desc:
"""Listener ID"""
gateway_name_in_qs {
desc {
en: """Gateway Name.<br/>
gateway_listener_name.desc:
"""Listener Name"""
gateway_listener_running.desc:
"""Listener Running status"""
gateway_listener_type.desc:
"""Listener Type"""
gateway_listeners.desc:
"""The Gateway listeners overview"""
gateway_max_connections.desc:
"""The Gateway allowed maximum connections/clients"""
gateway_name.desc:
"""Gateway Name"""
gateway_name_in_qs.desc:
"""Gateway Name.<br/>
It's enum with `stomp`, `mqttsn`, `coap`, `lwm2m`, `exproto`"""
zh: """网关名称.<br/>
可取值为 `stomp`、`mqttsn`、`coap`、`lwm2m`、`exproto`"""
}
}
gateway_enable_in_path {
desc {
en: """Whether to enable this gateway"""
gateway_node_status.desc:
"""The status of the gateway on each node in the cluster"""
zh: """是否开启此网关"""
}
}
gateway_started_at.desc:
"""The Gateway started datetime"""
gateway_status {
desc {
en: """Gateway status"""
zh: """网关启用状态"""
}
}
gateway_status.desc:
"""Gateway status"""
gateway_status_in_qs {
desc {
en: """Filter gateways by status.<br/>
gateway_status_in_qs.desc:
"""Filter gateways by status.<br/>
It is enum with `running`, `stopped`, `unloaded`"""
zh: """通过网关状态筛选<br/>
可选值为 `running`、`stopped`、`unloaded`"""
}
}
gateway_created_at {
desc {
en: """The Gateway created datetime"""
zh: """网关创建时间"""
}
}
gateway_stopped_at.desc:
"""The Gateway stopped datetime"""
gateway_started_at {
desc {
en: """The Gateway started datetime"""
zh: """网关启用时间"""
}
}
get_gateway.desc:
"""Get the gateway configurations"""
gateway_stopped_at {
desc {
en: """The Gateway stopped datetime"""
zh: """网关停用时间"""
}
}
list_gateway.desc:
"""This API returns an overview info for the specified or all gateways.
including current running status, number of connections, listener status, etc."""
gateway_max_connections {
desc {
en: """The Gateway allowed maximum connections/clients"""
zh: """最大连接数"""
}
}
node.desc:
"""Node Name"""
gateway_current_connections {
desc {
en: """The Gateway current connected connections/clients"""
zh: """当前连接数"""
}
}
gateway_listeners {
desc {
en: """The Gateway listeners overview"""
zh: """网关监听器列表"""
}
}
gateway_listener_id {
desc {
en: """Listener ID"""
zh: """监听器 ID"""
}
}
gateway_listener_name {
desc {
en: """Listener Name"""
zh: """监听器名称"""
}
}
gateway_listener_running {
desc {
en: """Listener Running status"""
zh: """监听器运行状态"""
}
}
gateway_listener_type {
desc {
en: """Listener Type"""
zh: """监听器类型"""
}
}
gateway_node_status {
desc {
en: """The status of the gateway on each node in the cluster"""
zh: """网关在集群中每个节点上的状态"""
}
}
node {
desc {
en: """Node Name"""
zh: """节点名称"""
}
}
update_gateway.desc:
"""Update the gateway basic configurations and running status.<br/>
Note: The Authentication and Listener configurations should be updated by other special APIs."""
}

View File

@ -1,99 +1,45 @@
emqx_gateway_api_authn {
get_authn {
desc {
en: """Gets the configuration of the specified gateway authenticator.<br/>
Returns 404 when gateway or authentication is not enabled."""
zh: """获取指定网关认证器的配置
当网关或认证未启用时,返回 404。"""
}
}
update_authn {
desc {
en: """Update the configuration of the specified gateway authenticator, or disable the authenticator."""
zh: """更新指定网关认证器的配置,或停用认证器。"""
}
}
add_authn {
desc {
en: """Enables the authenticator for client authentication for the specified gateway. <br/>
add_authn.desc:
"""Enables the authenticator for client authentication for the specified gateway. <br/>
When the authenticator is not configured or turned off, all client connections are assumed to be allowed. <br/>
Note: Only one authenticator is allowed to be enabled at a time in the gateway, rather than allowing multiple authenticators to be configured to form an authentication chain as in MQTT."""
zh: """为指定网关开启认证器实现客户端认证的功能。<br/>
当未配置认证器或关闭认证器时,则认为允许所有客户端的连接。<br/>
注:在网关中仅支持添加一个认证器,而不是像 MQTT 一样允许配置多个认证器构成认证链。"""
}
}
delete_authn {
desc {
en: """Delete the authenticator of the specified gateway."""
zh: """删除指定网关的认证器。"""
}
}
add_user.desc:
"""Add user for the authenticator (only supports built_in_database)."""
list_users {
desc {
en: """Get the users for the authenticator (only supported by <code>built_in_database</code>)."""
zh: """获取用户列表(仅支持 built_in_database 类型的认证器)"""
}
}
delete_authn.desc:
"""Delete the authenticator of the specified gateway."""
add_user {
desc {
en: """Add user for the authenticator (only supports built_in_database)."""
zh: """添加用户(仅支持 built_in_database 类型的认证器)"""
}
}
delete_user.desc:
"""Delete the user for the gateway authenticator (only supports built_in_database)"""
get_user {
desc {
en: """Get user info from the gateway authenticator (only supports built_in_database)"""
zh: """获取用户信息(仅支持 built_in_database 类型的认证器)"""
}
}
get_authn.desc:
"""Gets the configuration of the specified gateway authenticator.<br/>
Returns 404 when gateway or authentication is not enabled."""
update_user {
desc {
en: """Update the user info for the gateway authenticator (only supports built_in_database)"""
zh: """更新用户信息(仅支持 built_in_database 类型的认证器)"""
}
}
get_user.desc:
"""Get user info from the gateway authenticator (only supports built_in_database)"""
delete_user {
desc {
en: """Delete the user for the gateway authenticator (only supports built_in_database)"""
zh: """删除用户(仅支持 built_in_database 类型的认证器)"""
}
}
import_users.desc:
"""Import users into the gateway authenticator (only supports built_in_database)"""
import_users {
desc {
en: """Import users into the gateway authenticator (only supports built_in_database)"""
zh: """导入用户(仅支持 built_in_database 类型的认证器)"""
}
}
is_superuser.desc:
"""Is superuser"""
user_id {
desc {
en: """User ID"""
zh: """用户 ID"""
}
}
like_user_id.desc:
"""Fuzzy search using user ID (username or clientid), only supports search by substring."""
like_user_id {
desc {
en: """Fuzzy search using user ID (username or clientid), only supports search by substring."""
zh: """使用用户 ID username 或 clientid模糊搜索仅支持按子串的方式进行搜索。"""
}
}
list_users.desc:
"""Get the users for the authenticator (only supported by <code>built_in_database</code>)."""
update_authn.desc:
"""Update the configuration of the specified gateway authenticator, or disable the authenticator."""
update_user.desc:
"""Update the user info for the gateway authenticator (only supports built_in_database)"""
user_id.desc:
"""User ID"""
is_superuser {
desc {
en: """Is superuser"""
zh: """是否是超级用户"""
}
}
}

View File

@ -1,478 +1,207 @@
emqx_gateway_api_clients {
list_clients {
desc {
en: """Get the gateway client list"""
zh: """获取指定网关的客户端列表"""
}
}
get_client {
desc {
en: """Get the gateway client information"""
zh: """获取客户端信息"""
}
}
kick_client {
desc {
en: """Kick out the gateway client"""
zh: """踢出指定客户端"""
}
}
list_subscriptions {
desc {
en: """Get the gateway client subscriptions"""
zh: """获取某客户端的主题订阅列表"""
}
}
add_subscription {
desc {
en: """Create a subscription membership"""
zh: """为某客户端新增订阅关系"""
}
}
delete_subscription {
desc {
en: """Delete a subscriptions membership"""
zh: """为某客户端删除某订阅关系"""
}
}
param_node {
desc {
en: """Match the client's node name"""
zh: """匹配客户端的节点名称"""
}
}
param_clientid {
desc {
en: """Match the client's ID"""
zh: """匹配客户端 ID"""
}
}
param_username {
desc {
en: """Match the client's Username"""
zh: """匹配客户端 Username"""
}
}
param_ip_address {
desc {
en: """Match the client's ip address"""
zh: """匹配客户端 IP 地址"""
}
}
param_conn_state {
desc {
en: """Match the client's connection state"""
zh: """匹配客户端连接状态"""
}
}
param_proto_ver {
desc {
en: """Match the client's protocol version"""
zh: """匹配客户端协议版本"""
}
}
param_clean_start {
desc {
en: """Match the client's clean start flag"""
zh: """匹配客户端 `clean_start` 标记"""
}
}
param_like_clientid {
desc {
en: """Use sub-string to match client's ID"""
zh: """子串匹配客户端 ID"""
}
}
param_like_username {
desc {
en: """Use sub-string to match client's username"""
zh: """子串匹配 客户端 Username"""
}
}
param_gte_created_at {
desc {
en: """Match the session created datetime greater than a certain value"""
zh: """匹配会话创建时间大于等于指定值的客户端"""
}
}
param_lte_created_at {
desc {
en: """Match the session created datetime less than a certain value"""
zh: """匹配会话创建时间小于等于指定值的客户端"""
}
}
param_gte_connected_at{
desc {
en: """Match the client socket connected datetime greater than a certain value"""
zh: """匹配连接创建时间大于等于指定值的客户端"""
}
}
param_lte_connected_at {
desc {
en: """Match the client socket connected datatime less than a certain value"""
zh: """匹配连接创建时间小于等于指定值的客户端"""
}
}
param_endpoint_name {
desc {
en: """Match the lwm2m client's endpoint name"""
zh: """匹配 LwM2M 客户端 Endpoint Name"""
}
}
param_like_endpoint_name {
desc {
en: """Use sub-string to match lwm2m client's endpoint name"""
zh: """子串匹配 LwM2M 客户端 Endpoint Name"""
}
}
param_gte_lifetime {
desc {
en: """Match the lwm2m client registered lifetime greater than a certain value"""
zh: """匹配心跳时间大于等于指定值的 LwM2M 客户端"""
}
}
param_lte_lifetime {
desc {
en: """Match the lwm2m client registered lifetime less than a certain value"""
zh: """匹配心跳时间小于等于指定值的 LwM2M 客户端"""
}
}
clientid {
desc {
en: """Client ID"""
zh: """客户端 ID"""
}
}
topic {
desc {
en: """Topic Filter/Name"""
zh: """主题过滤器或主题名称"""
}
}
endpoint_name {
desc {
en: """The LwM2M client endpoint name"""
zh: """LwM2M 客户端 Endpoint Name"""
}
}
lifetime {
desc {
en: """LwM2M Life time"""
zh: """LwM2M 客户端心跳周期"""
}
}
qos {
desc {
en: """QoS level, enum: 0, 1, 2"""
zh: """QoS 等级枚举012"""
}
}
nl {
desc {
en: """No Local option, enum: 0, 1"""
zh: """No Local 选项枚举01"""
}
}
rap {
desc {
en: """Retain as Published option, enum: 0, 1"""
zh: """Retain as Published 选项枚举01"""
}
}
rh {
desc {
en: """Retain Handling option, enum: 0, 1, 2"""
zh: """Retain Handling 选项枚举012"""
}
}
sub_props {
desc {
en: """Subscription properties"""
zh: """订阅属性"""
}
}
subid {
desc {
en: """Only stomp protocol, a unique identity for the subscription. range: 1-65535."""
zh: """订阅ID仅用于 Stomp 网关。用于创建订阅关系时指定订阅 ID。取值范围 1-65535。"""
}
}
node {
desc {
en: """Name of the node to which the client is connected"""
zh: """客户端连接到的节点名称"""
}
}
username {
desc {
en: """Username of client when connecting"""
zh: """客户端连接的用户名"""
}
}
mountpoint {
desc {
en: """Topic mountpoint"""
zh: """主题固定前缀"""
}
}
proto_name {
desc {
en: """Client protocol name"""
zh: """客户端使用的协议名称"""
}
}
proto_ver {
desc {
en: """Protocol version used by the client"""
zh: """客户端使用的协议版本"""
}
}
ip_address {
desc {
en: """Client's IP address"""
zh: """客户端 IP 地址"""
}
}
port {
desc {
en: """Client's port"""
zh: """客户端端口"""
}
}
is_bridge {
desc {
en: """Indicates whether the client is connected via bridge"""
zh: """标识客户端是否通过 is_bridge 标志连接"""
}
}
connected_at {
desc {
en: """Client connection time"""
zh: """客户端连接时间"""
}
}
disconnected_at {
desc {
en: """Client offline time, This field is only valid and returned when connected is false"""
zh: """客户端连接断开时间"""
}
}
connected {
desc {
en: """Whether the client is connected"""
zh: """标识客户端是否已连接到网关"""
}
}
keepalive {
desc {
en: """Keepalive time, with the unit of second"""
zh: """Keepalive 时间,单位:秒"""
}
}
clean_start {
desc {
en: """Indicate whether the client is using a brand new session"""
zh: """标识客户端是否以 clean_start 的标志连接到网关"""
}
}
expiry_interval {
desc {
en: """Session expiration interval, with the unit of second"""
zh: """会话超期时间,单位:秒"""
}
}
created_at {
desc {
en: """Session creation time"""
zh: """会话创建时间"""
}
}
subscriptions_cnt {
desc {
en: """Number of subscriptions established by this client"""
zh: """客户端已订阅主题数"""
}
}
subscriptions_max {
desc {
en: """Maximum number of subscriptions allowed by this client"""
zh: """客户端允许订阅的最大主题数"""
}
}
inflight_cnt {
desc {
en: """Current length of inflight"""
zh: """客户端当前飞行窗口大小"""
}
}
inflight_max {
desc {
en: """Maximum length of inflight"""
zh: """客户端允许的飞行窗口最大值"""
}
}
mqueue_len {
desc {
en: """Current length of message queue"""
zh: """客户端当前消息队列长度"""
}
}
mqueue_max {
desc {
en: """Maximum length of message queue"""
zh: """客户端允许的最大消息队列长度"""
}
}
mqueue_dropped {
desc {
en: """Number of messages dropped by the message queue due to exceeding the length"""
zh: """由于消息队列过程,客户端消息队列丢弃消息条数"""
}
}
awaiting_rel_cnt {
desc {
en: """Number of awaiting acknowledge packet"""
zh: """客户端当前等待 PUBREL 确认的 PUBREC 消息的条数"""
}
}
awaiting_rel_max {
desc {
en: """Maximum allowed number of awaiting PUBREC packet"""
zh: """客户端允许的最大 PUBREC 等待队列长度"""
}
}
recv_oct {
desc {
en: """Number of bytes received"""
zh: """已接收的字节数"""
}
}
recv_cnt {
desc {
en: """Number of socket packets received"""
zh: """已接收 Socket 报文次数"""
}
}
recv_pkt {
desc {
en: """Number of protocol packets received"""
zh: """已接收应用层协议控制报文数"""
}
}
recv_msg {
desc {
en: """Number of message packets received"""
zh: """已接收上行的消息条数"""
}
}
send_oct {
desc {
en: """Number of bytes sent"""
zh: """已发送字节数"""
}
}
send_cnt {
desc {
en: """Number of socket packets sent"""
zh: """已发送 Socket 报文次数"""
}
}
send_pkt {
desc {
en: """Number of protocol packets sent"""
zh: """已发送应用层协议控制报文数"""
}
}
send_msg {
desc {
en: """Number of message packets sent"""
zh: """已发送下行消息数条数"""
}
}
mailbox_len {
desc {
en: """Process mailbox size"""
zh: """进程邮箱大小"""
}
}
heap_size {
desc {
en: """Process heap size with the unit of byte"""
zh: """进程堆内存大小,单位:字节"""
}
}
reductions {
desc {
en: """Erlang reduction"""
zh: """进程已消耗 Reduction 数"""
}
}
disconnected_at.desc:
"""Client offline time, This field is only valid and returned when connected is false"""
heap_size.desc:
"""Process heap size with the unit of byte"""
send_oct.desc:
"""Number of bytes sent"""
get_client.desc:
"""Get the gateway client information"""
param_gte_created_at.desc:
"""Match the session created datetime greater than a certain value"""
param_conn_state.desc:
"""Match the client's connection state"""
send_pkt.desc:
"""Number of protocol packets sent"""
clean_start.desc:
"""Indicate whether the client is using a brand new session"""
inflight_cnt.desc:
"""Current length of inflight"""
delete_subscription.desc:
"""Delete a subscriptions membership"""
param_lte_connected_at.desc:
"""Match the client socket connected datatime less than a certain value"""
node.desc:
"""Name of the node to which the client is connected"""
awaiting_rel_cnt.desc:
"""Number of awaiting acknowledge packet"""
rap.desc:
"""Retain as Published option, enum: 0, 1"""
inflight_max.desc:
"""Maximum length of inflight"""
param_username.desc:
"""Match the client's Username"""
param_like_endpoint_name.desc:
"""Use sub-string to match lwm2m client's endpoint name"""
created_at.desc:
"""Session creation time"""
sub_props.desc:
"""Subscription properties"""
list_clients.desc:
"""Get the gateway client list"""
subscriptions_cnt.desc:
"""Number of subscriptions established by this client"""
mailbox_len.desc:
"""Process mailbox size"""
send_cnt.desc:
"""Number of socket packets sent"""
rh.desc:
"""Retain Handling option, enum: 0, 1, 2"""
connected.desc:
"""Whether the client is connected"""
qos.desc:
"""QoS level, enum: 0, 1, 2"""
ip_address.desc:
"""Client's IP address"""
param_gte_connected_at.desc:
"""Match the client socket connected datetime greater than a certain value"""
awaiting_rel_max.desc:
"""Maximum allowed number of awaiting PUBREC packet"""
param_like_username.desc:
"""Use sub-string to match client's username"""
nl.desc:
"""No Local option, enum: 0, 1"""
param_like_clientid.desc:
"""Use sub-string to match client's ID"""
param_lte_created_at.desc:
"""Match the session created datetime less than a certain value"""
topic.desc:
"""Topic Filter/Name"""
proto_ver.desc:
"""Protocol version used by the client"""
mountpoint.desc:
"""Topic mountpoint"""
proto_name.desc:
"""Client protocol name"""
param_lte_lifetime.desc:
"""Match the lwm2m client registered lifetime less than a certain value"""
port.desc:
"""Client's port"""
connected_at.desc:
"""Client connection time"""
expiry_interval.desc:
"""Session expiration interval, with the unit of second"""
username.desc:
"""Username of client when connecting"""
param_clean_start.desc:
"""Match the client's clean start flag"""
recv_msg.desc:
"""Number of message packets received"""
list_subscriptions.desc:
"""Get the gateway client subscriptions"""
recv_oct.desc:
"""Number of bytes received"""
keepalive.desc:
"""Keepalive time, with the unit of second"""
param_clientid.desc:
"""Match the client's ID"""
subscriptions_max.desc:
"""Maximum number of subscriptions allowed by this client"""
param_ip_address.desc:
"""Match the client's ip address"""
mqueue_max.desc:
"""Maximum length of message queue"""
mqueue_dropped.desc:
"""Number of messages dropped by the message queue due to exceeding the length"""
subid.desc:
"""Only stomp protocol, a unique identity for the subscription. range: 1-65535."""
clientid.desc:
"""Client ID"""
kick_client.desc:
"""Kick out the gateway client"""
is_bridge.desc:
"""Indicates whether the client is connected via bridge"""
lifetime.desc:
"""LwM2M Life time"""
send_msg.desc:
"""Number of message packets sent"""
add_subscription.desc:
"""Create a subscription membership"""
param_endpoint_name.desc:
"""Match the lwm2m client's endpoint name"""
param_node.desc:
"""Match the client's node name"""
recv_cnt.desc:
"""Number of socket packets received"""
recv_pkt.desc:
"""Number of protocol packets received"""
endpoint_name.desc:
"""The LwM2M client endpoint name"""
param_proto_ver.desc:
"""Match the client's protocol version"""
reductions.desc:
"""Erlang reduction"""
param_gte_lifetime.desc:
"""Match the lwm2m client registered lifetime greater than a certain value"""
mqueue_len.desc:
"""Current length of message queue"""
}

View File

@ -1,146 +1,65 @@
emqx_gateway_api_listeners {
list_listeners {
desc {
en: """Gets a list of gateway listeners. This interface returns all the configs of the listener (including the authenticator on that listener), as well as the status of that listener running in the cluster."""
zh: """获取网关监听器列表。该接口会返回监听器所有的配置(包括该监听器上的认证器),同时也会返回该监听器在集群中运行的状态。"""
}
}
add_listener {
desc {
en: """Create the gateway listener.<br/>
add_listener.desc:
"""Create the gateway listener.<br/>
Note: For listener types not supported by a gateway, this API returns `400: BAD_REQUEST`."""
zh: """为指定网关添加监听器。<br/>
注:对于某网关不支持的监听器类型,该接口会返回 `400: BAD_REQUEST`。"""
}
}
get_listener {
desc {
en: """Get the gateway listener configs"""
zh: """获取指定网关监听器的配置。"""
}
}
delete_listener {
desc {
en: """Delete the gateway listener. All connected clients under the deleted listener will be disconnected."""
zh: """删除指定监听器。被删除的监听器下所有已连接的客户端都会离线。"""
}
}
update_listener {
desc {
en: """Update the gateway listener. The listener being updated performs a restart and all clients connected to that listener will be disconnected."""
zh: """更新某网关监听器的配置。被更新的监听器会执行重启,所有已连接到该监听器上的客户端都会被断开。"""
}
}
get_listener_authn {
desc {
en: """Get the listener's authenticator configs."""
zh: """获取监听器的认证器配置。"""
}
}
add_listener_authn {
desc {
en: """Enable authenticator for specified listener for client authentication.<br/>
add_listener_authn.desc:
"""Enable authenticator for specified listener for client authentication.<br/>
When authenticator is enabled for a listener, all clients connecting to that listener will use that authenticator for authentication."""
zh: """为指定监听器开启认证器以实现客户端认证的能力。<br/>
当某一监听器开启认证后,所有连接到该监听器的客户端会使用该认证器进行认证。"""
}
}
update_listener_authn {
desc {
en: """Update authenticator configs for the listener, or disable/enable it."""
zh: """更新指定监听器的认证器配置,或停用/启用该认证器。"""
}
}
add_user.desc:
"""Add user for the authenticator (only supports built_in_database)"""
delete_listener_authn {
desc {
en: """Remove authenticator for the listener."""
zh: """移除指定监听器的认证器。"""
}
}
current_connections.desc:
"""Current Connections"""
list_users {
desc {
en: """Get the users for the authenticator (only supported by <code>built_in_database</code>)"""
zh: """获取用户列表(仅支持 built_in_database 类型的认证器)"""
}
}
delete_listener.desc:
"""Delete the gateway listener. All connected clients under the deleted listener will be disconnected."""
add_user {
desc {
en: """Add user for the authenticator (only supports built_in_database)"""
zh: """添加用户(仅支持 built_in_database 类型的认证器)"""
}
}
delete_listener_authn.desc:
"""Remove authenticator for the listener."""
get_user {
desc {
en: """Get user info from the gateway authenticator (only supports built_in_database)"""
zh: """获取用户信息(仅支持 built_in_database 类型的认证器)"""
}
}
delete_user.desc:
"""Delete the user for the gateway authenticator (only supports built_in_database)"""
update_user {
desc {
en: """Update the user info for the gateway authenticator (only supports built_in_database)"""
zh: """更新用户信息(仅支持 built_in_database 类型的认证器)"""
}
}
get_listener.desc:
"""Get the gateway listener configs"""
delete_user {
desc {
en: """Delete the user for the gateway authenticator (only supports built_in_database)"""
zh: """删除用户(仅支持 built_in_database 类型的认证器)"""
}
}
get_listener_authn.desc:
"""Get the listener's authenticator configs."""
import_users {
desc {
en: """Import users into the gateway authenticator (only supports built_in_database)"""
zh: """导入用户(仅支持 built_in_database 类型的认证器)"""
}
}
get_user.desc:
"""Get user info from the gateway authenticator (only supports built_in_database)"""
listener_id {
desc {
en: """Listener ID"""
zh: """监听器 ID"""
}
}
import_users.desc:
"""Import users into the gateway authenticator (only supports built_in_database)"""
listener_status {
desc {
en: """listener status"""
zh: """监听器状态"""
}
}
list_listeners.desc:
"""Gets a list of gateway listeners. This interface returns all the configs of the listener (including the authenticator on that listener), as well as the status of that listener running in the cluster."""
listener_node_status {
desc {
en: """listener status of each node in the cluster"""
zh: """监听器在集群中每个节点上的状态"""
}
}
list_users.desc:
"""Get the users for the authenticator (only supported by <code>built_in_database</code>)"""
node {
desc {
en: """Node Name"""
zh: """节点名称"""
}
}
listener_id.desc:
"""Listener ID"""
listener_node_status.desc:
"""listener status of each node in the cluster"""
listener_status.desc:
"""listener status"""
node.desc:
"""Node Name"""
update_listener.desc:
"""Update the gateway listener. The listener being updated performs a restart and all clients connected to that listener will be disconnected."""
update_listener_authn.desc:
"""Update authenticator configs for the listener, or disable/enable it."""
update_user.desc:
"""Update the user info for the gateway authenticator (only supports built_in_database)"""
current_connections {
desc {
en: """Current Connections"""
zh: """当前连接数"""
}
}
}

View File

@ -1,255 +1,117 @@
emqx_gateway_schema {
gateway_common_enable {
desc {
en: """Whether to enable this gateway"""
zh: """是否启用该网关"""
}
}
dtls_listener_acceptors.desc:
"""Size of the acceptor pool."""
gateway_common_enable_stats {
desc {
en: """Whether to enable client process statistic"""
zh: """是否开启客户端统计"""
}
}
dtls_listener_dtls_opts.desc:
"""DTLS socket options"""
gateway_common_idle_timeout {
desc {
en: """The idle time of the client connection process. It has two purposes:
gateway_common_authentication.desc:
"""Default authentication configs for all the gateway listeners. For per-listener overrides see <code>authentication</code>
in listener configs"""
gateway_common_clientinfo_override.desc:
"""ClientInfo override."""
gateway_common_clientinfo_override_clientid.desc:
"""Template for overriding clientid."""
gateway_common_clientinfo_override_password.desc:
"""Template for overriding password."""
gateway_common_clientinfo_override_username.desc:
"""Template for overriding username."""
gateway_common_enable.desc:
"""Whether to enable this gateway"""
gateway_common_enable_stats.desc:
"""Whether to enable client process statistic"""
gateway_common_idle_timeout.desc:
"""The idle time of the client connection process. It has two purposes:
1. A newly created client process that does not receive any client requests after that time will be closed directly.
2. A running client process that does not receive any client requests after this time will go into hibernation to save resources."""
zh: """客户端连接过程的空闲时间。该配置用于:
1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。"""
}
}
gateway_common_clientinfo_override {
desc {
en: """ClientInfo override."""
zh: """ClientInfo 重写。"""
}
}
gateway_common_listener_access_rules.desc:
"""The access control rules for this listener.
See: https://github.com/emqtt/esockd#allowdeny"""
gateway_common_clientinfo_override_username {
desc {
en: """Template for overriding username."""
zh: """username 重写模板"""
}
}
gateway_common_clientinfo_override_password {
desc {
en: """Template for overriding password."""
zh: """password 重写模板"""
}
}
gateway_common_clientinfo_override_clientid {
desc {
en: """Template for overriding clientid."""
zh: """clientid 重写模板"""
}
}
gateway_common_listener_bind.desc:
"""The IP address and port that the listener will bind."""
gateway_common_authentication {
desc {
en: """Default authentication configs for all the gateway listeners. For per-listener overrides see <code>authentication</code>\n in listener configs"""
zh: """网关的认证器配置,对该网关下所以的监听器生效。如果每个监听器需要配置不同的认证器,需要配置监听器下的 <code>authentication</code> 字段。"""
}
}
gateway_common_listener_enable.desc:
"""Enable the listener."""
tcp_udp_listeners {
desc {
en: """Settings for the listeners."""
zh: """监听器配置。"""
}
}
tcp_listeners {
desc {
en: """Settings for the TCP listeners."""
zh: """配置 TCP 类型的监听器。"""
}
}
udp_listeners {
desc {
en: """Settings for the UDP listeners."""
zh: """配置 UDP 类型的监听器。"""
}
}
listener_name_to_settings_map{
desc {
en: """A map from listener names to listener settings."""
zh: """从监听器名称到配置参数的映射。"""
}
}
tcp_listener_acceptors {
desc {
en: """Size of the acceptor pool."""
zh: """Acceptor 进程池大小。"""
}
}
tcp_listener_tcp_opts{
desc {
en: """Setting the TCP socket options."""
zh: """TCP Socket 配置。"""
}
}
tcp_listener_proxy_protocol {
desc {
en: """Enable the Proxy Protocol V1/2 if the EMQX cluster is deployed behind HAProxy or Nginx.
See: https://www.haproxy.com/blog/haproxy/proxy-protocol/"""
zh: """是否开启 Proxy Protocol V1/2。当 EMQX 集群部署在 HAProxy 或 Nginx 后需要获取客户端真实 IP 时常用到该选项。参考https://www.haproxy.com/blog/haproxy/proxy-protocol/"""
}
}
tcp_listener_proxy_protocol_timeout {
desc {
en: """Timeout for proxy protocol.
EMQX will close the TCP connection if proxy protocol packet is not received within the timeout."""
zh: """接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包EMQX 将关闭 TCP 连接。"""
}
}
ssl_listener_options {
desc {
en: """SSL Socket options."""
zh: """SSL Socket 配置。"""
}
}
udp_listener_udp_opts {
desc {
en: """Settings for the UDP sockets."""
zh: """UDP Socket 配置。"""
}
}
udp_listener_active_n {
desc {
en: """Specify the {active, N} option for the socket.
See: https://erlang.org/doc/man/inet.html#setopts-2"""
zh: """为 Socket 指定 {active, N} 选项。
参见https://erlang.org/doc/man/inet.html#setopts-2"""
}
}
udp_listener_recbuf {
desc {
en: """Size of the kernel-space receive buffer for the socket."""
zh: """Socket 在内核空间接收缓冲区的大小。"""
}
}
udp_listener_sndbuf {
desc {
en: """Size of the kernel-space send buffer for the socket."""
zh: """Socket 在内核空间发送缓冲区的大小。"""
}
}
udp_listener_buffer {
desc {
en: """Size of the user-space buffer for the socket."""
zh: """Socket 在用户空间的缓冲区大小。"""
}
}
udp_listener_reuseaddr {
desc {
en: """Allow local reuse of port numbers."""
zh: """允许重用本地处于 TIME_WAIT 的端口号。"""
}
}
dtls_listener_acceptors {
desc {
en: """Size of the acceptor pool."""
zh: """Acceptor 进程池大小。"""
}
}
dtls_listener_dtls_opts {
desc {
en: """DTLS socket options"""
zh: """DTLS Socket 配置"""
}
}
gateway_common_listener_enable {
desc {
en: """Enable the listener."""
zh: """是否启用该监听器。"""
}
}
gateway_common_listener_bind {
desc {
en: """The IP address and port that the listener will bind."""
zh: """监听器绑定的 IP 地址或端口。"""
}
}
gateway_common_listener_max_connections {
desc {
en: """Maximum number of concurrent connections."""
zh: """监听器支持的最大连接数。"""
}
}
gateway_common_listener_max_conn_rate {
desc {
en: """Maximum connections per second."""
zh: """监听器支持的最大连接速率。"""
}
}
gateway_common_listener_enable_authn {
desc {
en: """Set <code>true</code> (default) to enable client authentication on this listener.
gateway_common_listener_enable_authn.desc:
"""Set <code>true</code> (default) to enable client authentication on this listener.
When set to <code>false</code> clients will be allowed to connect without authentication."""
zh: """配置 <code>true</code> (默认值)启用客户端进行身份认证。
配置 <code>false</code> 时,将不对客户端做任何认证。"""
}
}
gateway_mountpoint {
desc {
en: """When publishing or subscribing, prefix all topics with a mountpoint string.
gateway_common_listener_max_conn_rate.desc:
"""Maximum connections per second."""
gateway_common_listener_max_connections.desc:
"""Maximum number of concurrent connections."""
gateway_mountpoint.desc:
"""When publishing or subscribing, prefix all topics with a mountpoint string.
The prefixed string will be removed from the topic name when the message is delivered to the subscriber.
The mountpoint is a way that users can use to implement isolation of message routing between different listeners.
For example if a client A subscribes to `t` with `listeners.tcp.\<name>.mountpoint` set to `some_tenant`,
then the client actually subscribes to the topic `some_tenant/t`.
Similarly, if another client B (connected to the same listener as the client A) sends a message to topic `t`,
the message is routed to all the clients subscribed `some_tenant/t`,
so client A will receive the message, with topic name `t`. Set to `\"\"` to disable the feature.
so client A will receive the message, with topic name `t`. Set to `""` to disable the feature.
Variables in mountpoint string:<br/>
- <code>${clientid}</code>: clientid<br/>
- <code>${username}</code>: username"""
zh: """发布或订阅时,在所有主题前增加前缀字符串。
当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。
例如,如果客户端 A 在 `listeners.tcp.\<name>.mountpoint` 设置为 `some_tenant` 的情况下订阅 `t`
则客户端实际上订阅了 `some_tenant/t` 主题。
类似地,如果另一个客户端 B连接到与客户端 A 相同的侦听器)向主题 `t` 发送消息,
则该消息被路由到所有订阅了 `some_tenant/t` 的客户端,因此客户端 A 将收到该消息,带有 主题名称`t`。 设置为 `\"\"` 以禁用该功能。
挂载点字符串中可用的变量:<br/>
- <code>${clientid}</code>clientid<br/>
- <code>${username}</code>:用户名"""
}
}
gateway_common_listener_access_rules {
desc {
en: """The access control rules for this listener.
See: https://github.com/emqtt/esockd#allowdeny"""
zh: """配置监听器的访问控制规则。
https://github.com/emqtt/esockd#allowdeny"""
}
}
listener_name_to_settings_map.desc:
"""A map from listener names to listener settings."""
ssl_listener_options.desc:
"""SSL Socket options."""
tcp_listener_acceptors.desc:
"""Size of the acceptor pool."""
tcp_listener_proxy_protocol.desc:
"""Enable the Proxy Protocol V1/2 if the EMQX cluster is deployed behind HAProxy or Nginx.
See: https://www.haproxy.com/blog/haproxy/proxy-protocol/"""
tcp_listener_proxy_protocol_timeout.desc:
"""Timeout for proxy protocol.
EMQX will close the TCP connection if proxy protocol packet is not received within the timeout."""
tcp_listener_tcp_opts.desc:
"""Setting the TCP socket options."""
tcp_listeners.desc:
"""Settings for the TCP listeners."""
tcp_udp_listeners.desc:
"""Settings for the listeners."""
udp_listener_active_n.desc:
"""Specify the {active, N} option for the socket.
See: https://erlang.org/doc/man/inet.html#setopts-2"""
udp_listener_buffer.desc:
"""Size of the user-space buffer for the socket."""
udp_listener_recbuf.desc:
"""Size of the kernel-space receive buffer for the socket."""
udp_listener_reuseaddr.desc:
"""Allow local reuse of port numbers."""
udp_listener_sndbuf.desc:
"""Size of the kernel-space send buffer for the socket."""
udp_listener_udp_opts.desc:
"""Settings for the UDP sockets."""
udp_listeners.desc:
"""Settings for the UDP listeners."""
}

View File

@ -1,23 +1,15 @@
emqx_license_http_api {
desc_license_info_api {
desc {
en: "Get license info"
zh: "获取许可证信息"
}
label: {
en: "License info"
zh: "许可证信息"
}
}
desc_license_key_api {
desc {
en: "Update a license key"
zh: "更新一个许可证密钥"
}
label: {
en: "Update license"
zh: "更新许可证"
}
}
desc_license_info_api.desc:
"""Get license info"""
desc_license_info_api.label:
"""License info"""
desc_license_key_api.desc:
"""Update a license key"""
desc_license_key_api.label:
"""Update license"""
}

View File

@ -1,55 +1,33 @@
emqx_license_schema {
license_root {
desc {
en: "Defines the EMQX Enterprise license. \n\n"
"\n"
"The default license has 100 connections limit, it is "
"issued on 2023-01-09 and valid for 5 years (1825 days).\n"
"\n"
"EMQX comes with a default trial license. For production use, please \n"
"visit https://www.emqx.com/apply-licenses/emqx to apply."
zh: "EMQX企业许可证。\n"
"EMQX 自带一个默认的试用许可证,"
"默认试用许可允许最多接入 100 个连接,签发时间是 2023年1月9日有效期是 5 年1825 天)。"
"若需要在生产环境部署,\n"
"请访问 https://www.emqx.com/apply-licenses/emqx 来申请。"
}
label {
en: "License"
zh: "许可证"
}
}
key_field {
desc {
en: "License string"
zh: "许可证字符串"
}
label {
en: "License string"
zh: "许可证字符串"
}
}
connection_high_watermark_field.desc:
"""High watermark limit above which license connection quota usage alarms are activated"""
connection_low_watermark_field {
desc {
en: "Low watermark limit below which license connection quota usage alarms are deactivated"
zh: "低水位限制,低于此水位线时系统会清除连接配额使用告警"
}
label {
en: "Connection low watermark"
zh: "连接低水位线"
}
}
connection_high_watermark_field.label:
"""Connection high watermark"""
connection_low_watermark_field.desc:
"""Low watermark limit below which license connection quota usage alarms are deactivated"""
connection_low_watermark_field.label:
"""Connection low watermark"""
key_field.desc:
"""License string"""
key_field.label:
"""License string"""
license_root.desc:
"""Defines the EMQX Enterprise license.
The default license has 100 connections limit, it is issued on 2023-01-09 and valid for 5 years (1825 days).
EMQX comes with a default trial license. For production use, please
visit https://www.emqx.com/apply-licenses/emqx to apply."""
license_root.label:
"""License"""
connection_high_watermark_field {
desc {
en: "High watermark limit above which license connection quota usage alarms are activated"
zh: "高水位线,连接数超过这个水位线时,系统会触发许可证连接配额使用告警"
}
label {
en: "Connection high watermark"
zh: "连接高水位"
}
}
}

View File

@ -1,168 +1,94 @@
emqx_limiter_schema {
failure_strategy {
desc {
en: """The strategy when all the retries failed."""
zh: """当所有的重试都失败后的处理策略"""
}
label: {
en: """Failure Strategy"""
zh: """失败策略"""
}
}
bucket_cfg.desc:
"""Bucket Configs"""
max_retry_time {
desc {
en: """The maximum retry time when acquire failed."""
zh: """申请失败后,尝试重新申请的时长最大值"""
}
label: {
en: """Max Retry Time"""
zh: """最大重试时间"""
}
}
bucket_cfg.label:
"""Buckets"""
divisible {
desc {
en: """Is it possible to split the number of requested tokens?"""
zh: """申请的令牌数是否可以被分割"""
}
label: {
en: """Divisible"""
zh: """是否可分割"""
}
}
low_watermark {
desc {
en: """If the remaining tokens are lower than this value,
the check/consume will succeed, but it will be forced to wait for a short period of time."""
zh: """当桶中剩余的令牌数低于这个值,即使令牌申请成功了,也会被强制暂停一会儿"""
}
label: {
en: """Low Watermark"""
zh: """低水位线"""
}
}
initial {
desc {
en: """The initial number of tokens for this bucket."""
zh: """桶中的初始令牌数"""
}
label: {
en: """Initial"""
zh: """初始令牌数"""
}
}
rate {
desc {
en: """Rate for this bucket."""
zh: """桶的令牌生成速率"""
}
label: {
en: """Rate"""
zh: """速率"""
}
}
client {
desc {
en: """The rate limit for each user of the bucket"""
zh: """对桶的每个使用者的速率控制设置"""
}
label: {
en: """Per Client"""
zh: """每个使用者的限制"""
}
}
bucket_cfg {
desc {
en: """Bucket Configs"""
zh: """桶的配置"""
}
label: {
en: """Buckets"""
zh: """桶的配置"""
}
}
burst {
desc {
en: """The burst, This value is based on rate.<br/>
burst.desc:
"""The burst, This value is based on rate.<br/>
This value + rate = the maximum limit that can be achieved when limiter burst."""
zh: """突发速率。
突发速率允许短时间内速率超过设置的速率值,突发速率 + 速率 = 当前桶能达到的最大速率值"""
}
label: {
en: """Burst"""
zh: """突发速率"""
}
}
message_routing {
desc {
en: """The message routing limiter.
This is used to limit the forwarding rate for this EMQX node.
Once the limit is reached, new publish will be refused"""
zh: """消息派发速率控制器。
这个用来控制当前节点内的消息派发速率,当达到最大速率后,新的推送将会被拒绝"""
}
label: {
en: """Message Routing"""
zh: """消息派发"""
}
}
burst.label:
"""Burst"""
connection {
desc {
en: """The connection limiter.
This is used to limit the connection rate for this EMQX node.
Once the limit is reached, new connections will be refused"""
zh: """连接速率控制器。
这个用来控制当前节点上的连接速率,当达到最大速率后,新的连接将会被拒绝"""
}
label: {
en: """Connection"""
zh: """连接速率"""
}
}
messages {
desc {
en: """The `messages` limiter.
This is used to limit the inbound message numbers for this EMQX node
Once the limit is reached, the restricted client will be slow down even be hung for a while."""
zh: """流入速率控制器。
这个用来控制当前节点上的消息流入速率,当达到最大速率后,会话将会被限速甚至被强制挂起一小段时间"""
}
label: {
en: """Messages"""
zh: """消息流入速率"""
}
}
bytes {
desc {
en: """The `bytes` limiter.
bytes.desc:
"""The `bytes` limiter.
This is used to limit the inbound bytes rate for this EMQX node.
Once the limit is reached, the restricted client will be slow down even be hung for a while."""
zh: """流入字节率控制器。
这个是用来控制当前节点上的数据流入的字节率,每条消息将会消耗和其二进制大小等量的令牌,当达到最大速率后,会话将会被限速甚至被强制挂起一小段时间"""
}
label: {
en: """Bytes"""
zh: """流入字节率"""
}
}
internal {
desc {
en: """Limiter for EMQX internal app."""
zh: """EMQX 内部功能所用限制器。"""
bytes.label:
"""Bytes"""
client.desc:
"""The rate limit for each user of the bucket"""
client.label:
"""Per Client"""
connection.desc:
"""The connection limiter.
This is used to limit the connection rate for this EMQX node.
Once the limit is reached, new connections will be refused"""
connection.label:
"""Connection"""
divisible.desc:
"""Is it possible to split the number of requested tokens?"""
divisible.label:
"""Divisible"""
failure_strategy.desc:
"""The strategy when all the retries failed."""
failure_strategy.label:
"""Failure Strategy"""
initial.desc:
"""The initial number of tokens for this bucket."""
initial.label:
"""Initial"""
internal.desc:
"""Limiter for EMQX internal app."""
low_watermark.desc:
"""If the remaining tokens are lower than this value,
the check/consume will succeed, but it will be forced to wait for a short period of time."""
low_watermark.label:
"""Low Watermark"""
max_retry_time.desc:
"""The maximum retry time when acquire failed."""
max_retry_time.label:
"""Max Retry Time"""
message_routing.desc:
"""The message routing limiter.
This is used to limit the forwarding rate for this EMQX node.
Once the limit is reached, new publish will be refused"""
message_routing.label:
"""Message Routing"""
messages.desc:
"""The `messages` limiter.
This is used to limit the inbound message numbers for this EMQX node
Once the limit is reached, the restricted client will be slow down even be hung for a while."""
messages.label:
"""Messages"""
rate.desc:
"""Rate for this bucket."""
rate.label:
"""Rate"""
}
}
}

View File

@ -1,58 +1,27 @@
emqx_lwm2m_api {
lookup_resource {
desc {
en: """Look up a resource"""
zh: """查看指定资源状态"""
}
}
dataType.desc:
"""Data Type"""
observe_resource {
desc {
en: """Observe or Cancel observe a resource"""
zh: """Observe/Un-Observe 指定资源"""
}
}
lookup_resource.desc:
"""Look up a resource"""
read_resource {
desc {
en: """Send a read command to a resource"""
zh: """发送读指令到某资源"""
}
}
name.desc:
"""Resource Name"""
write_resource {
desc {
en: """Send a write command to a resource"""
zh: """发送写指令到某资源"""
}
}
observe_resource.desc:
"""Observe or Cancel observe a resource"""
operations {
desc {
en: """Resource Operations"""
zh: """资源可用操作列表"""
}
}
operations.desc:
"""Resource Operations"""
dataType {
desc {
en: """Data Type"""
zh: """数据类型"""
}
}
path.desc:
"""Resource Path"""
path {
desc {
en: """Resource Path"""
zh: """资源路径"""
}
}
read_resource.desc:
"""Send a read command to a resource"""
write_resource.desc:
"""Send a write command to a resource"""
name {
desc {
en: """Resource Name"""
zh: """资源名称"""
}
}
}

View File

@ -1,127 +1,56 @@
emqx_lwm2m_schema {
lwm2m {
desc {
en: """The LwM2M Gateway configuration. This gateway only supports the v1.0.1 protocol."""
zh: """LwM2M 网关配置。仅支持 v1.0.1 协议。"""
}
}
lwm2m.desc:
"""The LwM2M Gateway configuration. This gateway only supports the v1.0.1 protocol."""
lwm2m_xml_dir {
desc {
en: """The Directory for LwM2M Resource definition."""
zh: """LwM2M Resource 定义的 XML 文件目录路径。"""
}
}
lwm2m_auto_observe.desc:
"""Automatically observe the object list of REGISTER packet."""
lwm2m_lifetime_min {
desc {
en: """Minimum value of lifetime allowed to be set by the LwM2M client."""
zh: """允许 LwM2M 客户端允许设置的心跳最小值。"""
}
}
lwm2m_lifetime_max.desc:
"""Maximum value of lifetime allowed to be set by the LwM2M client."""
lwm2m_lifetime_max {
desc {
en: """Maximum value of lifetime allowed to be set by the LwM2M client."""
zh: """允许 LwM2M 客户端允许设置的心跳最大值。"""
}
}
lwm2m_lifetime_min.desc:
"""Minimum value of lifetime allowed to be set by the LwM2M client."""
lwm2m_qmode_time_window {
desc {
en: """The value of the time window during which the network link is considered valid by the LwM2M Gateway in QMode mode.
lwm2m_qmode_time_window.desc:
"""The value of the time window during which the network link is considered valid by the LwM2M Gateway in QMode mode.
For example, after receiving an update message from a client, any messages within this time window are sent directly to the LwM2M client, and all messages beyond this time window are temporarily stored in memory."""
zh: """在QMode模式下LwM2M网关认为网络链接有效的时间窗口的值。
例如在收到客户端的更新信息后在这个时间窗口内的任何信息都会直接发送到LwM2M客户端而超过这个时间窗口的所有信息都会暂时储存在内存中。"""
}
}
lwm2m_translators.desc:
"""Topic configuration for LwM2M's gateway publishing and subscription."""
lwm2m_auto_observe {
desc {
en: """Automatically observe the object list of REGISTER packet."""
zh: """自动 Observe REGISTER 数据包的 Object 列表。"""
}
}
lwm2m_update_msg_publish_condition {
desc {
en: """Policy for publishing UPDATE event message.<br/>
- always: send update events as long as the UPDATE request is received.<br/>
- contains_object_list: send update events only if the UPDATE request carries any Object List"""
zh: """发布UPDATE事件消息的策略。<br/>
- always: 只要收到 UPDATE 请求,就发送更新事件。<br/>
- contains_object_list: 仅当 UPDATE 请求携带 Object 列表时才发送更新事件。"""
}
}
lwm2m_translators {
desc {
en: """Topic configuration for LwM2M's gateway publishing and subscription."""
zh: """LwM2M 网关订阅/发布消息的主题映射配置。"""
}
}
lwm2m_translators_command {
desc {
en: """The topic for receiving downstream commands.
lwm2m_translators_command.desc:
"""The topic for receiving downstream commands.
For each new LwM2M client that succeeds in going online, the gateway creates a subscription relationship to receive downstream commands and send it to the LwM2M client"""
zh: """下行命令主题。
对于每个成功上线的新 LwM2M 客户端,网关会创建一个订阅关系来接收下行消息并将其发送给客户端。"""
}
}
lwm2m_translators_response {
desc {
en: """The topic for gateway to publish the acknowledge events from LwM2M client"""
zh: """用于网关发布来自 LwM2M 客户端的确认事件的主题。"""
}
}
lwm2m_translators_notify {
desc {
en: """The topic for gateway to publish the notify events from LwM2M client.
lwm2m_translators_notify.desc:
"""The topic for gateway to publish the notify events from LwM2M client.
After succeed observe a resource of LwM2M client, Gateway will send the notify events via this topic, if the client reports any resource changes"""
zh: """用于发布来自 LwM2M 客户端的通知事件的主题。
在成功 Observe 到 LwM2M 客户端的资源后,如果客户端报告任何资源状态的变化,网关将通过该主题发送通知事件。"""
}
}
lwm2m_translators_register.desc:
"""The topic for gateway to publish the register events from LwM2M client."""
lwm2m_translators_register {
desc {
en: """The topic for gateway to publish the register events from LwM2M client."""
zh: """用于发布来自 LwM2M 客户端的注册事件的主题。"""
}
}
lwm2m_translators_response.desc:
"""The topic for gateway to publish the acknowledge events from LwM2M client"""
lwm2m_translators_update {
desc {
en: """The topic for gateway to publish the update events from LwM2M client"""
zh: """用于发布来自LwM2M客户端的更新事件的主题。"""
}
}
lwm2m_translators_update.desc:
"""The topic for gateway to publish the update events from LwM2M client"""
translator {
desc {
en: """MQTT topic that corresponds to a particular type of event."""
zh: """配置某网关客户端对于发布消息或订阅的主题和 QoS 等级。"""
}
}
lwm2m_update_msg_publish_condition.desc:
"""Policy for publishing UPDATE event message.<br/>
- always: send update events as long as the UPDATE request is received.<br/>
- contains_object_list: send update events only if the UPDATE request carries any Object List"""
translator_topic {
desc {
en: """Topic Name"""
zh: """主题名称"""
}
}
lwm2m_xml_dir.desc:
"""The Directory for LwM2M Resource definition."""
translator.desc:
"""MQTT topic that corresponds to a particular type of event."""
translator_qos.desc:
"""QoS Level"""
translator_topic.desc:
"""Topic Name"""
translator_qos {
desc {
en: """QoS Level"""
zh: """QoS 等级"""
}
}
}

View File

@ -1,84 +1,39 @@
emqx_mgmt_api_alarms {
list_alarms_api {
desc {
en: """List currently activated alarms or historical alarms, determined by query parameters."""
zh: """列出当前激活的告警或历史告警,由查询参数决定。"""
}
}
activate_at.desc:
"""Alarm start time, using rfc3339 standard time format."""
delete_alarms_api {
desc {
en: """Remove all historical alarms."""
zh: """删除所有历史告警。"""
}
}
deactivate_at.desc:
"""Alarm end time, using rfc3339 standard time format."""
delete_alarms_api_response204 {
desc {
en: """Historical alarms have been cleared successfully."""
zh: """历史告警已成功清除。"""
}
}
delete_alarms_api.desc:
"""Remove all historical alarms."""
get_alarms_qs_activated {
desc {
en: """It is used to specify the alarm type of the query.
delete_alarms_api_response204.desc:
"""Historical alarms have been cleared successfully."""
details.desc:
"""Alarm details, provides more alarm information, mainly for program processing."""
duration.desc:
"""Indicates how long the alarm has been active in milliseconds."""
get_alarms_qs_activated.desc:
"""It is used to specify the alarm type of the query.
When true, it returns the currently activated alarm,
and when it is false, it returns the historical alarm.
The default is false."""
zh: """用于指定查询的告警类型,
为 true 时返回当前激活的告警,为 false 时返回历史告警,默认为 false。"""
}
}
node {
desc {
en: """The name of the node that triggered this alarm."""
zh: """触发此告警的节点名称。"""
}
}
list_alarms_api.desc:
"""List currently activated alarms or historical alarms, determined by query parameters."""
name {
desc {
en: """Alarm name, used to distinguish different alarms."""
zh: """告警名称,用于区分不同的告警。"""
}
}
message.desc:
"""Alarm message, which describes the alarm content in a human-readable format."""
message {
desc {
en: """Alarm message, which describes the alarm content in a human-readable format."""
zh: """告警消息,以人类可读的方式描述告警内容。"""
}
}
name.desc:
"""Alarm name, used to distinguish different alarms."""
details {
desc {
en: """Alarm details, provides more alarm information, mainly for program processing."""
zh: """告警详情,提供了更多的告警信息,主要提供给程序处理。"""
}
}
duration {
desc {
en: """Indicates how long the alarm has been active in milliseconds."""
zh: """表明告警已经持续了多久,单位:毫秒。"""
}
}
activate_at {
desc {
en: """Alarm start time, using rfc3339 standard time format."""
zh: """告警开始时间,使用 rfc3339 标准时间格式。"""
}
}
deactivate_at {
desc {
en: """Alarm end time, using rfc3339 standard time format."""
zh: """告警结束时间,使用 rfc3339 标准时间格式。"""
}
}
node.desc:
"""The name of the node that triggered this alarm."""
}

View File

@ -1,98 +1,54 @@
emqx_mgmt_api_banned {
list_banned_api {
desc {
en: """List all currently banned client IDs, usernames and IP addresses."""
zh: """列出目前所有被封禁的客户端 ID、用户名和 IP 地址。"""
}
}
as.desc:
"""Ban method, which can be client ID, username or IP address."""
create_banned_api {
desc {
en: """Add a client ID, username or IP address to the blacklist."""
zh: """添加一个客户端 ID、用户名或者 IP 地址到黑名单。"""
}
}
as.label:
"""Ban Method"""
create_banned_api_response400 {
desc {
en: """Bad request, possibly due to wrong parameters or the existence of a banned object."""
zh: """错误的请求,可能是参数错误或封禁对象已存在等原因。"""
}
}
at.desc:
"""The start time of the ban, the format is rfc3339, the default is the time when the operation was initiated."""
delete_banned_api {
desc {
en: """Remove a client ID, username or IP address from the blacklist."""
zh: """将一个客户端 ID、用户名或者 IP 地址从黑名单中删除。"""
}
}
at.label:
"""Ban Time"""
delete_banned_api_response404 {
desc {
en: """The banned object was not found in the blacklist."""
zh: """未在黑名单中找到该封禁对象。"""
}
}
by.desc:
"""Initiator of the ban."""
by.label:
"""Ban Initiator"""
create_banned_api.desc:
"""Add a client ID, username or IP address to the blacklist."""
create_banned_api_response400.desc:
"""Bad request, possibly due to wrong parameters or the existence of a banned object."""
delete_banned_api.desc:
"""Remove a client ID, username or IP address from the blacklist."""
delete_banned_api_response404.desc:
"""The banned object was not found in the blacklist."""
list_banned_api.desc:
"""List all currently banned client IDs, usernames and IP addresses."""
reason.desc:
"""Ban reason, record the reason why the current object was banned."""
reason.label:
"""Ban Reason"""
until.desc:
"""The end time of the ban, the format is rfc3339, the default is the time when the operation was initiated + 1 year."""
until.label:
"""Ban End Time"""
who.desc:
"""Ban object, specific client ID, username or IP address."""
who.label:
"""Ban Object"""
as {
desc {
en: """Ban method, which can be client ID, username or IP address."""
zh: """封禁方式,可以通过客户端 ID、用户名或者 IP 地址等方式进行封禁。"""
}
label {
en: """Ban Method"""
zh: """封禁方式"""
}
}
who {
desc {
en: """Ban object, specific client ID, username or IP address."""
zh: """封禁对象,具体的客户端 ID、用户名或者 IP 地址。"""
}
label {
en: """Ban Object"""
zh: """封禁对象"""
}
}
by {
desc {
en: """Initiator of the ban."""
zh: """封禁的发起者。"""
}
label {
en: """Ban Initiator"""
zh: """封禁发起者"""
}
}
reason {
desc {
en: """Ban reason, record the reason why the current object was banned."""
zh: """封禁原因,记录当前对象被封禁的原因。"""
}
label {
en: """Ban Reason"""
zh: """封禁原因"""
}
}
at {
desc {
en: """The start time of the ban, the format is rfc3339, the default is the time when the operation was initiated."""
zh: """封禁的起始时间,格式为 rfc3339默认为发起操作的时间。"""
}
label {
en: """Ban Time"""
zh: """封禁时间"""
}
}
until {
desc {
en: """The end time of the ban, the format is rfc3339, the default is the time when the operation was initiated + 1 year."""
zh: """封禁的结束时间,格式为 rfc3339默认值为发起操作的时间 + 1 年。"""
}
label {
en: """Ban End Time"""
zh: """封禁结束时间"""
}
}
}

View File

@ -1,32 +1,20 @@
emqx_mgmt_api_key_schema {
api_key {
desc {
en: """API Key, can be used to request API other than the management API key and the Dashboard user management API"""
zh: """API 密钥, 可用于请求除管理 API 密钥及 Dashboard 用户管理 API 的其它接口"""
}
label {
en: "API Key"
zh: "API 密钥"
}
}
bootstrap_file {
desc {
en: """Bootstrap file is used to add an api_key when emqx is launched,
api_key.desc:
"""API Key, can be used to request API other than the management API key and the Dashboard user management API"""
api_key.label:
"""API Key"""
bootstrap_file.desc:
"""Bootstrap file is used to add an api_key when emqx is launched,
the format is:
```
7e729ae70d23144b:2QILI9AcQ9BYlVqLDHQNWN2saIjBV4egr1CZneTNKr9CpK
ec3907f865805db0:Ee3taYltUKtoBVD9C3XjQl9C6NXheip8Z9B69BpUv5JxVHL
```"""
zh: """用于在启动 emqx 时,添加 API 密钥,其格式为:
```
7e729ae70d23144b:2QILI9AcQ9BYlVqLDHQNWN2saIjBV4egr1CZneTNKr9CpK
ec3907f865805db0:Ee3taYltUKtoBVD9C3XjQl9C6NXheip8Z9B69BpUv5JxVHL
```"""
}
label {
en: "Initialize api_key file."
zh: "API 密钥初始化文件"
}
}
bootstrap_file.label:
"""Initialize api_key file."""
}

View File

@ -1,27 +1,51 @@
emqx_mgmt_api_publish {
publish_api {
desc {
en: """Possible HTTP status response codes are:<br/>
error_message.desc:
"""Describes the failure reason in detail."""
message_id.desc:
"""A globally unique message ID for correlation/tracing."""
message_properties.desc:
"""The Properties of the PUBLISH message."""
msg_content_type.desc:
"""The Content Type MUST be a UTF-8 Encoded String."""
msg_correlation_data.desc:
"""Identifier of the Correlation Data. The Server MUST send the Correlation Data unaltered to all subscribers receiving the Application Message."""
msg_message_expiry_interval.desc:
"""Identifier of the Message Expiry Interval. If the Message Expiry Interval has passed and the Server has not managed to start onward delivery to a matching subscriber, then it MUST delete the copy of the message for that subscriber."""
msg_payload_format_indicator.desc:
"""0 (0x00) Byte Indicates that the Payload is unspecified bytes, which is equivalent to not sending a Payload Format Indicator.
1 (0x01) Byte Indicates that the Payload is UTF-8 Encoded Character Data. The UTF-8 data in the Payload MUST be well-formed UTF-8 as defined by the Unicode specification and restated in RFC 3629."""
msg_response_topic.desc:
"""Identifier of the Response Topic.The Response Topic MUST be a UTF-8 Encoded, It MUST NOT contain wildcard characters."""
msg_user_properties.desc:
"""The User-Property key-value pairs. Note: in case there are duplicated keys, only the last one will be used."""
payload.desc:
"""The MQTT message payload."""
payload_encoding.desc:
"""MQTT Payload Encoding, <code>base64</code> or <code>plain</code>. When set to <code>base64</code>, the message is decoded before it is published."""
publish_api.desc:
"""Possible HTTP status response codes are:<br/>
<code>200</code>: The message is delivered to at least one subscriber;<br/>
<code>202</code>: No matched subscribers;<br/>
<code>400</code>: Message is invalid. for example bad topic name, or QoS is out of range;<br/>
<code>503</code>: Failed to deliver the message to subscriber(s)"""
zh: """发布一个消息。<br/>
可能的 HTTP 状态码如下:<br/>
200: 消息被成功发送到至少一个订阅。<br/>
202: 没有匹配到任何订阅。<br/>
400: 消息编码错误,如非法主题,或 QoS 超出范围等。<br/>
503: 服务重启等过程中导致转发失败。"""
}
label {
en: "Publish a message"
zh: "发布一条信息"
}
}
publish_bulk_api {
desc {
en: """Possible HTTP response status code are:<br/>
publish_api.label:
"""Publish a message"""
publish_bulk_api.desc:
"""Possible HTTP response status code are:<br/>
200: All messages are delivered to at least one subscriber;<br/>
202: At least one message was not delivered to any subscriber;<br/>
400: At least one message is invalid. For example bad topic name, or QoS is out of range;<br/>
@ -31,62 +55,15 @@ In case there is at lest one invalid message in the batch, the HTTP response bod
is the same as for <code>/publish</code> API.<br/>
Otherwise the HTTP response body is an array of JSON objects indicating the publish
result of each individual message in the batch."""
zh: """批量发布一组消息。<br/>
可能的 HTTP 状态码如下:<br/>
200: 所有的消息都被成功发送到至少一个订阅。<br/>
202: 至少有一个消息没有匹配到任何订阅。<br/>
400: 至少有一个消息编码错误,如非法主题,或 QoS 超出范围等。<br/>
503: 至少有一个小因为服务重启的原因导致转发失败。<br/>
请求的 Body 或者 Body 中包含的某个消息无法通过 API 规范的类型检查时HTTP 响应的消息与发布单个消息的 API
<code>/publish</code> 是一样的。
如果所有的消息都是合法的,那么 HTTP 返回的内容是一个 JSON 数组,每个元素代表了该消息转发的状态。"""
}
label {
en: "Publish a batch of messages"
zh: "发布一批信息"
}
}
publish_bulk_api.label:
"""Publish a batch of messages"""
topic_name {
desc {
en: "Topic Name"
zh: "主题名称"
}
}
qos {
desc {
en: "MQTT message QoS"
zh: "MQTT 消息的 QoS"
}
}
payload {
desc {
en: "The MQTT message payload."
zh: "MQTT 消息体。"
}
}
retain {
desc {
en: "A boolean field to indicate if this message should be retained."
zh: "布尔型字段,用于表示该消息是否保留消息。"
}
}
payload_encoding {
desc {
en: "MQTT Payload Encoding, <code>base64</code> or <code>plain</code>. When set to <code>base64</code>, the message is decoded before it is published."
zh: "MQTT 消息体的编码方式,可以是 <code>base64</code> 或 <code>plain</code>。当设置为 <code>base64</code> 时,消息在发布前会先被解码。"
}
}
message_id {
desc {
en: "A globally unique message ID for correlation/tracing."
zh: "全局唯一的一个消息 ID方便用于关联和追踪。"
}
}
reason_code {
desc {
en: """The MQTT reason code, as the same ones used in PUBACK packet.<br/>
qos.desc:
"""MQTT message QoS"""
reason_code.desc:
"""The MQTT reason code, as the same ones used in PUBACK packet.<br/>
Currently supported codes are:<br/>
16(0x10): No matching subscribers;<br/>
@ -95,63 +72,11 @@ Currently supported codes are:<br/>
151(0x97): Publish rate limited, or message size exceeded limit. The global size limit can be configured with <code>mqtt.max_packet_size</code><br/>
NOTE: The message size is estimated with the received topic and payload size, meaning the actual size of serialized bytes (when sent to MQTT subscriber)
might be slightly over the limit."""
zh: """MQTT 消息发布的错误码,这些错误码也是 MQTT 规范中 PUBACK 消息可能携带的错误码。<br/>
当前支持如下错误码:<br/>
16(0x10):没能匹配到任何订阅;<br/>
131(0x81):消息转发时发生错误,例如 EMQX 服务重启;<br/>
144(0x90):主题名称非法;<br/>
151(0x97):受到了速率限制,或者消息尺寸过大。全局消息大小限制可以通过配置项 <code>mqtt.max_packet_size</code> 来进行修改。<br/>
注意:消息尺寸的是通过主题和消息体的字节数进行估算的。具体发布时所占用的字节数可能会稍大于这个估算的值。"""
}
}
error_message {
desc {
en: "Describes the failure reason in detail."
zh: "失败的详细原因。"
}
}
message_properties {
desc {
en: "The Properties of the PUBLISH message."
zh: "PUBLISH 消息里的 Property 字段。"
}
}
msg_payload_format_indicator {
desc {
en: """0 (0x00) Byte Indicates that the Payload is unspecified bytes, which is equivalent to not sending a Payload Format Indicator.
1 (0x01) Byte Indicates that the Payload is UTF-8 Encoded Character Data. The UTF-8 data in the Payload MUST be well-formed UTF-8 as defined by the Unicode specification and restated in RFC 3629."""
zh: "载荷格式指示标识符0 表示载荷是未指定格式的数据相当于没有发送载荷格式指示1 表示载荷是 UTF-8 编码的字符数据,载荷中的 UTF-8 数据必须是按照 Unicode 的规范和 RFC 3629 的标准要求进行编码的。"
}
}
msg_message_expiry_interval {
desc {
en: "Identifier of the Message Expiry Interval. If the Message Expiry Interval has passed and the Server has not managed to start onward delivery to a matching subscriber, then it MUST delete the copy of the message for that subscriber."
zh: "消息过期间隔标识符,以秒为单位。当消失已经过期时,如果服务端还没有开始向匹配的订阅者投递该消息,则服务端会删除该订阅者的消息副本。如果不设置,则消息永远不会过期"
}
}
msg_response_topic {
desc {
en: "Identifier of the Response Topic.The Response Topic MUST be a UTF-8 Encoded, It MUST NOT contain wildcard characters."
zh: "响应主题标识符, UTF-8 编码的字符串,用作响应消息的主题名。响应主题不能包含通配符,也不能包含多个主题,否则将造成协议错误。当存在响应主题时,消息将被视作请求报文。服务端在收到应用消息时必须将响应主题原封不动的发送给所有的订阅者。"
}
}
msg_correlation_data {
desc {
en: "Identifier of the Correlation Data. The Server MUST send the Correlation Data unaltered to all subscribers receiving the Application Message."
zh: "对比数据标识符,服务端在收到应用消息时必须原封不动的把对比数据发送给所有的订阅者。对比数据只对请求消息(Request Message)的发送端和响应消息(Response Message)的接收端有意义。"
}
}
msg_user_properties {
desc {
en: "The User-Property key-value pairs. Note: in case there are duplicated keys, only the last one will be used."
zh: "指定 MQTT 消息的 User Property 键值对。注意,如果出现重复的键,只有最后一个会保留。"
}
}
msg_content_type {
desc {
en: "The Content Type MUST be a UTF-8 Encoded String."
zh: "内容类型标识符,以 UTF-8 格式编码的字符串,用来描述应用消息的内容,服务端必须把收到的应用消息中的内容类型原封不动的发送给所有的订阅者。"
}
}
retain.desc:
"""A boolean field to indicate if this message should be retained."""
topic_name.desc:
"""Topic Name"""
}

View File

@ -1,48 +1,21 @@
emqx_mgmt_api_status {
get_status_api {
desc {
en: "Serves as a health check for the node. Returns a plain text response"
" describing the status of the node. This endpoint requires no"
" authentication.\n"
"\n"
"Returns status code 200 if the EMQX application is up and running, "
"503 otherwise."
"\n"
"This API was introduced in v5.0.10."
"\n"
"The GET `/status` endpoint (without the `/api/...` prefix) is also an alias"
" to this endpoint and works in the same way. This alias has been available since"
" v5.0.0."
zh: "作为节点的健康检查。 返回一个纯文本的响应,描述节点的状态。\n"
"\n"
"如果 EMQX 应用程序已经启动并运行,返回状态代码 200否则返回 503。\n"
"\n"
"这个API是在v5.0.10中引入的。"
"\n"
"GET `/status`端点(没有`/api/...`前缀)也是这个端点的一个别名,工作方式相同。"
" 这个别名从v5.0.0开始就有了。"
}
label {
en: "Service health check"
zh: "服务健康检查"
}
}
get_status_response200 {
desc {
en: "Node emqx@127.0.0.1 is started\n"
"emqx is running"
zh: "Node emqx@127.0.0.1 is started\n"
"emqx is running"
}
}
get_status_api.desc:
"""Serves as a health check for the node. Returns a plain text response describing the status of the node. This endpoint requires no authentication.
Returns status code 200 if the EMQX application is up and running, 503 otherwise.
This API was introduced in v5.0.10.
The GET `/status` endpoint (without the `/api/...` prefix) is also an alias to this endpoint and works in the same way. This alias has been available since v5.0.0."""
get_status_api.label:
"""Service health check"""
get_status_response200.desc:
"""Node emqx@127.0.0.1 is started
emqx is running"""
get_status_response503.desc:
"""Node emqx@127.0.0.1 is stopped
emqx is not_running"""
get_status_response503 {
desc {
en: "Node emqx@127.0.0.1 is stopped\n"
"emqx is not_running"
zh: "Node emqx@127.0.0.1 is stopped\n"
"emqx is not_running"
}
}
}

View File

@ -1,8 +1,13 @@
emqx_modules_schema {
rewrite {
desc {
en: """The topic rewriting function of EMQX supports rewriting topic A to topic B when the client subscribes to topics, publishes messages, and cancels subscriptions according to user-configured rules.
enable.desc:
"""Enable this feature"""
max_delayed_messages.desc:
"""Maximum number of delayed messages (0 is no limit)."""
rewrite.desc:
"""The topic rewriting function of EMQX supports rewriting topic A to topic B when the client subscribes to topics, publishes messages, and cancels subscriptions according to user-configured rules.
Each rewrite rule consists of three parts: subject filter, regular expression, and target expression.
Under the premise that the subject rewriting function is enabled, when EMQX receives a subject-based MQTT message such as a `PUBLISH` message,
it will use the subject of the message to sequentially match the subject filter part of the rule in the configuration file. If the match is successful,
@ -13,78 +18,32 @@ It should be noted that EMQX uses reverse order to read the rewrite rules in the
When a topic can match the topic filter of multiple topic rewrite rules at the same time, EMQX will only use the first rule it matches. Rewrite.
If the regular expression in this rule does not match the subject of the MQTT message, the rewriting will fail, and no other rules will be attempted for rewriting.
Therefore, users need to carefully design MQTT message topics and topic rewriting rules when using them."""
zh: """EMQX 的主题重写功能支持根据用户配置的规则在客户端订阅主题、发布消息、取消订阅的时候将 A 主题重写为 B 主题。
重写规则分为 Pub 规则和 Sub 规则Pub 规则匹配 PUSHLISH 报文携带的主题Sub 规则匹配 SUBSCRIBE、UNSUBSCRIBE 报文携带的主题。
每条重写规则都由主题过滤器、正则表达式、目标表达式三部分组成。
在主题重写功能开启的前提下EMQX 在收到诸如 PUBLISH 报文等带有主题的 MQTT 报文时,将使用报文中的主题去依次匹配配置文件中规则的主题过滤器部分,一旦成功匹配,则使用正则表达式提取主题中的信息,然后替换至目标表达式以构成新的主题。
目标表达式中可以使用 `$N` 这种格式的变量匹配正则表达中提取出来的元素,`$N` 的值为正则表达式中提取出来的第 N 个元素,比如 `$1` 即为正则表达式提取的第一个元素。
需要注意的是EMQX 使用倒序读取配置文件中的重写规则当一条主题可以同时匹配多条主题重写规则的主题过滤器时EMQX 仅会使用它匹配到的第一条规则进行重写,如果该条规则中的正则表达式与 MQTT 报文主题不匹配,则重写失败,不会再尝试使用其他的规则进行重写。
因此用户在使用时需要谨慎的设计 MQTT 报文主题以及主题重写规则。"""
}
label {
en: """Topic Rewrite"""
zh: """主题重写"""
}
}
tr_source_topic {
desc {
en: """Source topic, specified by the client."""
zh: """源主题,客户端业务指定的主题"""
}
label {
en: """Source Topic"""
zh: """源主题"""
}
}
rewrite.label:
"""Topic Rewrite"""
tr_action {
desc {
en: """Topic rewriting takes effect on the type of operation:
tr_action.desc:
"""Topic rewriting takes effect on the type of operation:
- `subscribe`: Rewrite topic when client do subscribe.
- `publish`: Rewrite topic when client do publish.
- `all`: Both"""
zh: """主题重写在哪种操作上生效:
- `subscribe`:订阅时重写主题;
- `publish`:发布时重写主题;
-`all`:全部重写主题"""
}
label {
en: """Action"""
zh: """Action"""
}
}
tr_action.label:
"""Action"""
tr_re {
desc {
en: """Regular expressions"""
zh: """正则表达式"""
}
}
tr_dest_topic.desc:
"""Destination topic."""
tr_dest_topic {
desc {
en: """Destination topic."""
zh: """目标主题。"""
}
label {
en: """Destination Topic"""
zh: """目标主题"""
}
}
tr_dest_topic.label:
"""Destination Topic"""
enable {
desc {
en: "Enable this feature"
zh: "是否开启该功能"
}
}
tr_re.desc:
"""Regular expressions"""
tr_source_topic.desc:
"""Source topic, specified by the client."""
tr_source_topic.label:
"""Source Topic"""
max_delayed_messages {
desc {
en: "Maximum number of delayed messages (0 is no limit)."
zh: "延迟消息的数量上限(0 代表无限)"
}
}
}

View File

@ -1,64 +1,31 @@
emqx_mqttsn_schema {
mqttsn {
desc {
en: """The MQTT-SN Gateway configuration.
mqttsn.desc:
"""The MQTT-SN Gateway configuration.
This gateway only supports the v1.2 protocol"""
zh: """MQTT-SN 网关配置。当前实现仅支持 v1.2 版本"""
}
}
mqttsn_gateway_id {
desc {
en: """MQTT-SN Gateway ID.
When the <code>broadcast</code> option is enabled, the gateway will broadcast ADVERTISE message with this value"""
zh: """MQTT-SN 网关 ID。
当 <code>broadcast</code> 打开时MQTT-SN 网关会使用该 ID 来广播 ADVERTISE 消息"""
}
}
mqttsn_broadcast.desc:
"""Whether to periodically broadcast ADVERTISE messages"""
mqttsn_broadcast {
desc {
en: """Whether to periodically broadcast ADVERTISE messages"""
zh: """是否周期性广播 ADVERTISE 消息"""
}
}
mqttsn_enable_qos3 {
desc {
en: """Allows connectionless clients to publish messages with a Qos of -1.
mqttsn_enable_qos3.desc:
"""Allows connectionless clients to publish messages with a Qos of -1.
This feature is defined for very simple client implementations which do not support any other features except this one. There is no connection setup nor tear down, no registration nor subscription. The client just sends its 'PUBLISH' messages to a GW"""
zh: """是否允许无连接的客户端发送 QoS 等于 -1 的消息。
该功能主要用于支持轻量的 MQTT-SN 客户端实现,它不会向网关建立连接,注册主题,也不会发起订阅;它只使用 QoS 为 -1 来发布消息"""
}
}
mqttsn_subs_resume {
desc {
en: """Whether to initiate all subscribed topic name registration messages to the client after the Session has been taken over by a new channel"""
zh: """在会话被重用后,网关是否主动向客户端注册对已订阅主题名称"""
}
}
mqttsn_gateway_id.desc:
"""MQTT-SN Gateway ID.
When the <code>broadcast</code> option is enabled, the gateway will broadcast ADVERTISE message with this value"""
mqttsn_predefined {
desc {
en: """The pre-defined topic IDs and topic names.
mqttsn_predefined.desc:
"""The pre-defined topic IDs and topic names.
A 'pre-defined' topic ID is a topic ID whose mapping to a topic name is known in advance by both the client's application and the gateway"""
zh: """预定义主题列表。
预定义的主题列表,是一组 主题 ID 和 主题名称 的映射关系。使用预先定义的主题列表,可以减少 MQTT-SN 客户端和网关对于固定主题的注册请求"""
}
}
mqttsn_predefined_id {
desc {
en: """Topic ID. Range: 1-65535"""
zh: """主题 ID。范围1-65535"""
}
}
mqttsn_predefined_id.desc:
"""Topic ID. Range: 1-65535"""
mqttsn_predefined_topic.desc:
"""Topic Name"""
mqttsn_subs_resume.desc:
"""Whether to initiate all subscribed topic name registration messages to the client after the Session has been taken over by a new channel"""
mqttsn_predefined_topic {
desc {
en: """Topic Name"""
zh: """主题名称。注:不支持通配符"""
}
}
}

View File

@ -1,85 +1,55 @@
emqx_plugins_schema {
plugins {
desc {
en: """Manage EMQX plugins.<br/>
Plugins can be pre-built as a part of EMQX package,
or installed as a standalone package in a location specified by
<code>install_dir</code> config key<br/>
The standalone-installed plugins are referred to as 'external' plugins."""
zh: """管理EMQX插件。<br/>
插件可以是EMQX安装包中的一部分也可以是一个独立的安装包。<br/>
独立安装的插件称为“外部插件”。"""
}
label {
en: "Plugins"
zh: "插件"
}
}
state {
desc {
en: "A per-plugin config to describe the desired state of the plugin."
zh: "描述插件的状态"
}
label {
en: "State"
zh: "插件状态"
}
}
name_vsn {
desc {
en: """The {name}-{version} of the plugin.<br/>
It should match the plugin application name-version as the for the plugin release package name<br/>
For example: my_plugin-0.1.0."""
zh: """插件的名称{name}-{version}。<br/>
它应该与插件的发布包名称一致如my_plugin-0.1.0。"""
}
label {
en: "Name-Version"
zh: "名称-版本"
}
}
enable {
desc {
en: "Set to 'true' to enable this plugin"
zh: "设置为“true”以启用此插件"
}
label {
en: "Enable"
zh: "启用"
}
}
states {
desc {
en: """An array of plugins in the desired states.<br/>
The plugins are started in the defined order"""
zh: """一组插件的状态。插件将按照定义的顺序启动"""
}
label {
en: "States"
zh: "插件启动顺序及状态"
}
}
install_dir {
desc {
en: """The installation directory for the external plugins.
check_interval.desc:
"""Check interval: check if the status of the plugins in the cluster is consistent, <br/>
if the results of 3 consecutive checks are not consistent, then alarm."""
enable.desc:
"""Set to 'true' to enable this plugin"""
enable.label:
"""Enable"""
install_dir.desc:
"""The installation directory for the external plugins.
The plugin beam files and configuration files should reside in
the subdirectory named as <code>emqx_foo_bar-0.1.0</code>.
<br/>
NOTE: For security reasons, this directory should **NOT** be writable
by anyone except <code>emqx</code> (or any user which runs EMQX)."""
zh: "插件安装包的目录,出于安全考虑,该目录应该值允许 <code>emqx</code>,或用于运行 EMQX 服务的用户拥有写入权限。"
}
label {
en: "Install Directory"
zh: "安装目录"
}
}
check_interval {
desc {
en: """Check interval: check if the status of the plugins in the cluster is consistent, <br/>
if the results of 3 consecutive checks are not consistent, then alarm."""
zh: """检查间隔:检查集群中插件的状态是否一致,<br/>
如果连续3次检查结果不一致则报警。"""
}
}
install_dir.label:
"""Install Directory"""
name_vsn.desc:
"""The {name}-{version} of the plugin.<br/>
It should match the plugin application name-version as the for the plugin release package name<br/>
For example: my_plugin-0.1.0."""
name_vsn.label:
"""Name-Version"""
plugins.desc:
"""Manage EMQX plugins.<br/>
Plugins can be pre-built as a part of EMQX package,
or installed as a standalone package in a location specified by
<code>install_dir</code> config key<br/>
The standalone-installed plugins are referred to as 'external' plugins."""
plugins.label:
"""Plugins"""
state.desc:
"""A per-plugin config to describe the desired state of the plugin."""
state.label:
"""State"""
states.desc:
"""An array of plugins in the desired states.<br/>
The plugins are started in the defined order"""
states.label:
"""States"""
}

View File

@ -1,95 +1,47 @@
emqx_prometheus_schema {
prometheus {
desc {
en: """Settings for reporting metrics to Prometheus"""
zh: """Prometheus 监控数据推送"""
}
label {
en: """Prometheus"""
zh: """Prometheus"""
}
}
enable.desc:
"""Turn Prometheus data pushing on or off"""
push_gateway_server {
desc {
en: """URL of Prometheus server"""
zh: """Prometheus 服务器地址"""
}
}
interval {
desc {
en: """Data reporting interval"""
zh: """数据推送间隔"""
}
}
headers {
desc {
en: """A list of HTTP Headers when pushing to Push Gateway.<br/>
headers.desc:
"""A list of HTTP Headers when pushing to Push Gateway.<br/>
For example, <code> { Authorization = "some-authz-tokens"}</code>"""
zh: """推送到 Push Gateway 的 HTTP Headers 列表。<br/>
例如,<code> { Authorization = "some-authz-tokens"}</code>"""
}
}
job_name {
desc {
en: """Job Name that is pushed to the Push Gateway. Available variables:<br/>
interval.desc:
"""Data reporting interval"""
job_name.desc:
"""Job Name that is pushed to the Push Gateway. Available variables:<br/>
- ${name}: Name of EMQX node.<br/>
- ${host}: Host name of EMQX node.<br/>
For example, when the EMQX node name is <code>emqx@127.0.0.1</code> then the <code>name</code> variable takes value <code>emqx</code> and the <code>host</code> variable takes value <code>127.0.0.1</code>.<br/>
Default value is: <code>${name}/instance/${name}~${host}</code>"""
zh: """推送到 Push Gateway 的 Job 名称。可用变量为:<br/>
- ${name}: EMQX 节点的名称。
- ${host}: EMQX 节点主机名。
例如,当 EMQX 节点名为 <code>emqx@127.0.0.1</code> 则 name 变量的值为 <code>emqx</code>host 变量的值为 <code>127.0.0.1</code>。<br/>
默认值为: <code>${name}/instance/${name}~${host}</code>"""
}
}
enable {
desc {
en: """Turn Prometheus data pushing on or off"""
zh: """开启或关闭 Prometheus 数据推送"""
}
}
vm_dist_collector {
desc {
en: """Enable or disable VM distribution collector, collects information about the sockets and processes involved in the Erlang distribution mechanism."""
zh: """开启或关闭 VM 分布采集器,收集 Erlang 分布机制中涉及的套接字和进程的信息。"""
}
}
mnesia_collector {
desc {
en: """Enable or disable Mnesia collector, collects Mnesia metrics mainly using mnesia:system_info/1 ."""
zh: """开启或关闭 Mnesia 采集器, 使用 mnesia:system_info/1 收集 Mnesia 相关指标"""
}
}
vm_statistics_collector {
desc {
en: """Enable or disable VM statistics collector, collects Erlang VM metrics using erlang:statistics/1 ."""
zh: """开启或关闭 VM 统计采集器, 使用 erlang:statistics/1 收集 Erlang VM 相关指标"""
}
}
mnesia_collector.desc:
"""Enable or disable Mnesia collector, collects Mnesia metrics mainly using mnesia:system_info/1 ."""
prometheus.desc:
"""Settings for reporting metrics to Prometheus"""
prometheus.label:
"""Prometheus"""
push_gateway_server.desc:
"""URL of Prometheus server"""
vm_dist_collector.desc:
"""Enable or disable VM distribution collector, collects information about the sockets and processes involved in the Erlang distribution mechanism."""
vm_memory_collector.desc:
"""Enable or disable VM memory collector, collects information about memory dynamically allocated by the Erlang emulator using erlang:memory/0 , also provides basic (D)ETS statistics ."""
vm_msacc_collector.desc:
"""Enable or disable VM msacc collector, collects microstate accounting metrics using erlang:statistics(microstate_accounting) ."""
vm_statistics_collector.desc:
"""Enable or disable VM statistics collector, collects Erlang VM metrics using erlang:statistics/1 ."""
vm_system_info_collector.desc:
"""Enable or disable VM system info collector, collects Erlang VM metrics using erlang:system_info/1 ."""
vm_system_info_collector {
desc {
en: """Enable or disable VM system info collector, collects Erlang VM metrics using erlang:system_info/1 ."""
zh: """开启或关闭 VM 系统信息采集器, 使用 erlang:system_info/1 收集 Erlang VM 相关指标"""
}
}
vm_memory_collector {
desc {
en: """Enable or disable VM memory collector, collects information about memory dynamically allocated by the Erlang emulator using erlang:memory/0 , also provides basic (D)ETS statistics ."""
zh: """开启或关闭 VM 内存采集器, 使用 erlang:memory/0 收集 Erlang 虚拟机动态分配的内存信息,同时提供基本的 (D)ETS 统计信息"""
}
}
vm_msacc_collector {
desc {
en: """Enable or disable VM msacc collector, collects microstate accounting metrics using erlang:statistics(microstate_accounting) ."""
zh: """开启或关闭 VM msacc 采集器, 使用 erlang:statistics(microstate_accounting) 收集微状态计数指标"""
}
}
}

View File

@ -1,8 +1,18 @@
emqx_psk_schema {
psk_authentication {
desc {
en: """PSK stands for 'Pre-Shared Keys'.
chunk_size.desc:
"""The size of each chunk used to import to the built-in database from PSK file"""
enable.desc:
"""Whether to enable TLS PSK support"""
init_file.desc:
"""If init_file is specified, EMQX will import PSKs from the file into the built-in database at startup for use by the runtime.
The file has to be structured line-by-line, each line must be in the format of <code>PSKIdentity:SharedSecret</code>.
For example: <code>mydevice1:c2VjcmV0</code>"""
psk_authentication.desc:
"""PSK stands for 'Pre-Shared Keys'.
This config to enable TLS-PSK authentication.
Important! Make sure the SSL listener with only <code>tlsv1.2</code> enabled, and also PSK cipher suites
@ -11,49 +21,8 @@ configured, such as <code>RSA-PSK-AES256-GCM-SHA384</code>.
See listener SSL options config for more details.
The IDs and secrets can be provided from a file which is configurable by the <code>init_file</code> field."""
zh: """此配置用于启用 TLS-PSK 身份验证。
PSK 是 “Pre-Shared-Keys” 的缩写。
注意: 确保 SSL 监听器仅启用了 'tlsv1.2'并且配置了PSK 密码套件,例如 'RSA-PSK-AES256-GCM-SHA384'。
可以通过查看监听器中的 SSL 选项,了解更多详细信息。
可以通过配置 'init_file' 来设置初始化的 ID 和 密钥"""
}
}
enable {
desc {
en: "Whether to enable TLS PSK support"
zh: "是否开启 TLS PSK 支持"
}
}
init_file {
desc {
en: """If init_file is specified, EMQX will import PSKs from the file into the built-in database at startup for use by the runtime.
The file has to be structured line-by-line, each line must be in the format of <code>PSKIdentity:SharedSecret</code>.
For example: <code>mydevice1:c2VjcmV0</code>"""
zh: """如果设置了初始化文件EMQX 将在启动时从初始化文件中导入 PSK 信息到内建数据库中。
这个文件需要按行进行组织,每一行必须遵守如下格式: <code>PSKIdentity:SharedSecret</code>
例如: <code>mydevice1:c2VjcmV0</code>"""
}
}
separator {
desc {
en: "The separator between <code>PSKIdentity</code> and <code>SharedSecret</code> in the PSK file"
zh: "PSK 文件中 <code>PSKIdentity</code> 和 <code>SharedSecret</code> 之间的分隔符"
}
}
chunk_size {
desc {
en: "The size of each chunk used to import to the built-in database from PSK file"
zh: "将 PSK 文件导入到内建数据时每个块的大小"
}
}
separator.desc:
"""The separator between <code>PSKIdentity</code> and <code>SharedSecret</code> in the PSK file"""
}

View File

@ -1,214 +1,116 @@
emqx_resource_schema {
resource_opts {
desc {
en: """Resource options."""
zh: """资源相关的选项。"""
}
label {
en: """Resource Options"""
zh: """资源选项"""
}
}
auto_restart_interval.desc:
"""The auto restart interval after the resource is disconnected."""
creation_opts {
desc {
en: """Creation options."""
zh: """资源启动相关的选项。"""
}
label {
en: """Creation Options"""
zh: """资源启动选项"""
}
}
auto_restart_interval.label:
"""Auto Restart Interval"""
worker_pool_size {
desc {
en: """The number of buffer workers. Only applicable for egress type bridges.
For bridges only have ingress direction data flow, it can be set to 0 otherwise must be greater than 0."""
zh: """缓存队列 worker 数量。仅对 egress 类型的桥接有意义。当桥接仅有 ingress 方向时,可设置为 0否则必须大于 0。"""
}
label {
en: """Buffer Pool Size"""
zh: """缓存池大小"""
}
}
batch_size.desc:
"""Maximum batch count. If equal to 1, there's effectively no batching."""
health_check_interval {
desc {
en: """Health check interval."""
zh: """健康检查间隔。"""
}
label {
en: """Health Check Interval"""
zh: """健康检查间隔"""
}
}
batch_size.label:
"""Max batch size"""
resume_interval {
desc {
en: """The interval at which the buffer worker attempts to resend failed requests in the inflight window."""
zh: """在发送失败后尝试重传飞行窗口中的请求的时间间隔。"""
}
label {
en: """Resume Interval"""
zh: """重试时间间隔"""
}
}
batch_time.desc:
"""Maximum waiting interval when accumulating a batch at a low message rates for more efficient resource usage."""
start_after_created {
desc {
en: """Whether start the resource right after created."""
zh: """是否在创建资源后立即启动资源。"""
}
label {
en: """Start After Created"""
zh: """创建后立即启动"""
}
}
batch_time.label:
"""Max batch wait time"""
start_timeout {
desc {
en: """Time interval to wait for an auto-started resource to become healthy before responding resource creation requests."""
zh: """在回复资源创建请求前等待资源进入健康状态的时间。"""
}
label {
en: """Start Timeout"""
zh: """启动超时时间"""
}
}
buffer_mode.desc:
"""Buffer operation mode.
<code>memory_only</mode>: Buffer all messages in memory.<code>volatile_offload</code>: Buffer message in memory first, when up to certain limit (see <code>buffer_seg_bytes</code> config for more information), then start offloading messages to disk"""
auto_restart_interval {
desc {
en: """The auto restart interval after the resource is disconnected."""
zh: """资源断开以后,自动重连的时间间隔。"""
}
label {
en: """Auto Restart Interval"""
zh: """自动重连间隔"""
}
}
buffer_mode.label:
"""Buffer Mode"""
query_mode {
desc {
en: """Query mode. Optional 'sync/async', default 'async'."""
zh: """请求模式。可选 '同步/异步',默认为'异步'模式。"""
}
label {
en: """Query mode"""
zh: """请求模式"""
}
}
buffer_seg_bytes.desc:
"""Applicable when buffer mode is set to <code>volatile_offload</code>.
This value is to specify the size of each on-disk buffer file."""
request_timeout {
desc {
en: """Starting from the moment when the request enters the buffer, if the request remains in the buffer for the specified time or is sent but does not receive a response or acknowledgement in time, the request is considered expired."""
zh: """从请求进入缓冲区开始计时,如果请求在规定的时间内仍停留在缓冲区内或者已发送但未能及时收到响应或确认,该请求将被视为过期。"""
}
label {
en: """Request Expiry"""
zh: """请求超期"""
}
}
buffer_seg_bytes.label:
"""Segment File Bytes"""
enable_batch {
desc {
en: """Batch mode enabled."""
zh: """启用批量模式。"""
}
label {
en: """Enable batch"""
zh: """启用批量模式"""
}
}
creation_opts.desc:
"""Creation options."""
enable_queue {
desc {
en: """Enable disk buffer queue (only applicable for egress bridges).
creation_opts.label:
"""Creation Options"""
enable_batch.desc:
"""Batch mode enabled."""
enable_batch.label:
"""Enable batch"""
enable_queue.desc:
"""Enable disk buffer queue (only applicable for egress bridges).
When Enabled, messages will be buffered on disk when the bridge connection is down.
When disabled the messages are buffered in RAM only."""
zh: """启用磁盘缓存队列(仅对 egress 方向桥接有用)。"""
}
label {
en: """Enable disk buffer queue"""
zh: """启用磁盘缓存队列"""
}
}
inflight_window {
desc {
en: """Query inflight window. When query_mode is set to async, this config has to be set to 1 if messages from the same MQTT client have to be strictly ordered."""
zh: """请求飞行队列窗口大小。当请求模式为异步时,如果需要严格保证来自同一 MQTT 客户端的消息有序,则必须将此值设为 1。"""""
}
label {
en: """Inflight window"""
zh: """请求飞行队列窗口"""
}
}
enable_queue.label:
"""Enable disk buffer queue"""
batch_size {
desc {
en: """Maximum batch count. If equal to 1, there's effectively no batching."""
zh: """最大批量请求大小。如果设为1则无批处理。"""
}
label {
en: """Max batch size"""
zh: """最大批量请求大小"""
}
}
health_check_interval.desc:
"""Health check interval."""
batch_time {
desc {
en: """Maximum waiting interval when accumulating a batch at a low message rates for more efficient resource usage."""
zh: """在较低消息率情况下尝试累积批量输出时的最大等待间隔,以提高资源的利用率。"""
}
label {
en: """Max batch wait time"""
zh: """批量等待最大间隔"""
}
}
health_check_interval.label:
"""Health Check Interval"""
max_buffer_bytes {
desc {
en: """Maximum number of bytes to buffer for each buffer worker."""
zh: """每个缓存 worker 允许使用的最大字节数。"""
}
label {
en: """Max buffer queue size"""
zh: """缓存队列最大长度"""
}
}
inflight_window.desc:
"""Query inflight window. When query_mode is set to async, this config has to be set to 1 if messages from the same MQTT client have to be strictly ordered."""
buffer_seg_bytes {
desc {
en: "Applicable when buffer mode is set to <code>volatile_offload</code>.\n"
"This value is to specify the size of each on-disk buffer file."
zh: "当缓存模式是 <code>volatile_offload</code> 时适用。"
"该配置用于指定缓存到磁盘上的文件的大小。"
}
label {
en: "Segment File Bytes"
zh: "缓存文件大小"
}
}
inflight_window.label:
"""Inflight window"""
buffer_mode {
desc {
en: "Buffer operation mode.\n"
"<code>memory_only</mode>: Buffer all messages in memory."
"<code>volatile_offload</code>: Buffer message in memory first, when up to certain limit"
" (see <code>buffer_seg_bytes</code> config for more information), then start offloading messages to disk"
zh: "队列操作模式。\n"
"<code>memory_only</code>: 所有的消息都缓存在内存里。"
"<code>volatile_offload</code>: 先将消息缓存在内存中,当内存中的消息堆积超过一定限制"
"(配置项 <code>buffer_seg_bytes</code> 指定该限制)后,"
" 消息会开始缓存到磁盘上。"
}
label {
en: "Buffer Mode"
zh: "缓存模式"
}
}
max_buffer_bytes.desc:
"""Maximum number of bytes to buffer for each buffer worker."""
max_buffer_bytes.label:
"""Max buffer queue size"""
query_mode.desc:
"""Query mode. Optional 'sync/async', default 'async'."""
query_mode.label:
"""Query mode"""
request_timeout.desc:
"""Starting from the moment when the request enters the buffer, if the request remains in the buffer for the specified time or is sent but does not receive a response or acknowledgement in time, the request is considered expired."""
request_timeout.label:
"""Request Expiry"""
resource_opts.desc:
"""Resource options."""
resource_opts.label:
"""Resource Options"""
resume_interval.desc:
"""The interval at which the buffer worker attempts to resend failed requests in the inflight window."""
resume_interval.label:
"""Resume Interval"""
start_after_created.desc:
"""Whether start the resource right after created."""
start_after_created.label:
"""Start After Created"""
start_timeout.desc:
"""Time interval to wait for an auto-started resource to become healthy before responding resource creation requests."""
start_timeout.label:
"""Start Timeout"""
worker_pool_size.desc:
"""The number of buffer workers. Only applicable for egress type bridges.
For bridges only have ingress direction data flow, it can be set to 0 otherwise must be greater than 0."""
worker_pool_size.label:
"""Buffer Pool Size"""
}

View File

@ -1,143 +1,63 @@
emqx_retainer_api {
get_config_api {
desc {
en: "View config"
zh: "查看配置内容"
}
}
config_content.desc:
"""The config content"""
config_content {
desc {
en: "The config content"
zh: "配置内容"
}
}
config_not_found.desc:
"""Config not found."""
config_not_found {
desc {
en: "Config not found."
zh: "配置不存在"
}
}
delete_matching_api.desc:
"""Delete matching messages."""
update_retainer_api {
desc {
en: "Update retainer config."
zh: "更新配置"
}
}
from_clientid.desc:
"""The clientid of publisher."""
update_config_success {
desc {
en: "Update configs successfully."
zh: "配置更新成功"
}
}
from_username.desc:
"""The username of publisher."""
update_config_failed {
desc {
en: "Update config failed"
zh: "配置更新失败"
}
}
get_config_api.desc:
"""View config"""
list_retained_api {
desc {
en: "List retained messages."
zh: "查看保留消息列表"
}
}
list_retained_api.desc:
"""List retained messages."""
retained_list {
desc {
en: "Retained messages list."
zh: "保留消息列表"
}
}
lookup_api.desc:
"""Lookup a message by a topic without wildcards."""
unsupported_backend {
desc {
en: "Unsupported backend."
zh: "不支持的后端"
}
}
message_detail.desc:
"""Details of the message."""
lookup_api {
desc {
en: "Lookup a message by a topic without wildcards."
zh: "通过不带通配符的主题查看对应的保留消息"
}
}
message_not_exist.desc:
"""Viewed message doesn't exist."""
message_detail {
desc {
en: "Details of the message."
zh: "消息详情"
}
}
msgid.desc:
"""Message ID."""
message_not_exist {
desc {
en: "Viewed message doesn't exist."
zh: "消息不存在"
}
}
payload.desc:
"""Payload."""
delete_matching_api {
desc {
en: "Delete matching messages."
zh: "删除对应的消息"
}
}
publish_at.desc:
"""Message publish time, RFC 3339 format."""
topic {
desc {
en: "Topic."
zh: "主题"
}
}
qos.desc:
"""QoS."""
msgid {
desc {
en: "Message ID."
zh: "消息 ID"
}
}
retained_list.desc:
"""Retained messages list."""
qos {
desc {
en: "QoS."
zh: "QoS"
}
}
topic.desc:
"""Topic."""
publish_at {
desc {
en: "Message publish time, RFC 3339 format."
zh: "消息发送时间, RFC 3339 格式"
}
}
unsupported_backend.desc:
"""Unsupported backend."""
from_clientid {
desc {
en: "The clientid of publisher."
zh: "发布者的 ClientID"
}
}
update_config_failed.desc:
"""Update config failed"""
from_username {
desc {
en: "The username of publisher."
zh: "发布者的用户名"
}
}
update_config_success.desc:
"""Update configs successfully."""
payload {
desc {
en: "Payload."
zh: "消息内容"
}
}
update_retainer_api.desc:
"""Update retainer config."""
}

View File

@ -1,105 +1,49 @@
emqx_retainer_schema {
enable {
desc {
en: "Enable retainer feature"
zh: "是否开启消息保留功能"
}
}
backend.desc:
"""Settings for the database storing the retained messages."""
msg_expiry_interval {
desc {
en: "Message retention time. 0 means message will never be expired."
zh: "消息保留时间。0 代表永久保留"
}
}
flow_control {
desc {
en: "Flow control."
zh: "流控设置"
}
}
msg_clear_interval {
desc {
en: """Periodic interval for cleaning up expired messages.
Never clear if the value is 0."""
zh: "消息清理间隔。0 代表不进行清理"
}
}
max_payload_size {
desc {
en: "Maximum retained message size."
zh: "消息大小最大值"
}
}
stop_publish_clear_msg {
desc {
en: """When the retained flag of the `PUBLISH` message is set and Payload is empty,
whether to continue to publish the message.
See:
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718038"""
zh: """是否不发送保留消息的清理消息,在 MQTT 5.0 中如果一条保留消息的消息体为空,则会清除掉之前存储
的对应的保留消息,通过这个值控制是否停止发送清理消息"""
}
}
backend {
desc {
en: "Settings for the database storing the retained messages."
zh: "保留消息的存储后端"
}
}
mnesia_config_type {
desc {
en: "Backend type."
zh: "后端类型"
}
}
mnesia_config_storage_type {
desc {
en: "Specifies whether the messages are stored in RAM or persisted on disc."
zh: "选择消息是存放在磁盘还是内存中"
}
}
max_retained_messages {
desc {
en: "Maximum number of retained messages. 0 means no limit."
zh: "消息保留的数量上限。0 表示无限"
}
}
batch_read_number {
desc {
en: "Size of the batch when reading messages from storage. 0 means no limit."
zh: "从存储后端批量加载时的每批数量上限0 代表一次性读取"
}
}
batch_deliver_number {
desc {
en: "The number of retained messages can be delivered per batch."
zh: "批量派发时每批的数量。0 代表一次性全部派发"
}
}
batch_deliver_limiter {
desc {
en: """The rate limiter name for retained messages' delivery.
batch_deliver_limiter.desc:
"""The rate limiter name for retained messages' delivery.
Limiter helps to avoid delivering too many messages to the client at once, which may cause the client to block or crash, or drop messages due to exceeding the size of the message queue.
The names of the available rate limiters are taken from the existing rate limiters under `limiter.batch`.
If this field is empty, limiter is not used."""
zh: """批量发送的限流器的名称。
限流器可以用来防止短时间内向客户端发送太多的消息,从而避免过多的消息导致客户端队列堵塞甚至崩溃。
这个名称需要是指向 `limiter.batch` 下的一个真实存在的限流器。
如果这个字段为空,则不使用限流器。"""
}
}
batch_deliver_number.desc:
"""The number of retained messages can be delivered per batch."""
batch_read_number.desc:
"""Size of the batch when reading messages from storage. 0 means no limit."""
enable.desc:
"""Enable retainer feature"""
flow_control.desc:
"""Flow control."""
max_payload_size.desc:
"""Maximum retained message size."""
max_retained_messages.desc:
"""Maximum number of retained messages. 0 means no limit."""
mnesia_config_storage_type.desc:
"""Specifies whether the messages are stored in RAM or persisted on disc."""
mnesia_config_type.desc:
"""Backend type."""
msg_clear_interval.desc:
"""Periodic interval for cleaning up expired messages.
Never clear if the value is 0."""
msg_expiry_interval.desc:
"""Message retention time. 0 means message will never be expired."""
stop_publish_clear_msg.desc:
"""When the retained flag of the `PUBLISH` message is set and Payload is empty,
whether to continue to publish the message.
See:
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718038"""
}

View File

@ -1,25 +1,12 @@
emqx_rewrite_api {
list_topic_rewrite_api {
desc {
en: """List all rewrite rules"""
zh: """列出全部主题重写规则"""
}
}
list_topic_rewrite_api.desc:
"""List all rewrite rules"""
update_topic_rewrite_api {
desc {
en: """Update all rewrite rules"""
zh: """更新全部主题重写规则"""
}
}
update_topic_rewrite_api.desc:
"""Update all rewrite rules"""
update_topic_rewrite_api_response413 {
desc {
en: """Rules count exceed max limit"""
zh: """超出主题重写规则数量上限"""
}
}
update_topic_rewrite_api_response413.desc:
"""Rules count exceed max limit"""
}

File diff suppressed because it is too large Load Diff

View File

@ -1,168 +1,93 @@
emqx_rule_engine_api {
api1 {
desc {
en: "List all rules"
zh: "列出所有规则"
}
label: {
en: "List All Rules"
zh: "列出所有规则"
}
}
api1_enable {
desc {
en: "Filter enable/disable rules"
zh: "根据规则是否开启条件过滤"
}
}
api1.desc:
"""List all rules"""
api1_from {
desc {
en: "Filter rules by from(topic), exact match"
zh: "根据规则来源 Topic 过滤, 需要完全匹配"
}
}
api1.label:
"""List All Rules"""
api1_like_id {
desc {
en: "Filter rules by id, Substring matching"
zh: "根据规则 id 过滤, 使用子串模糊匹配"
}
}
api10.desc:
"""Update rule engine configuration."""
api1_like_from {
desc {
en: "Filter rules by from(topic), Substring matching"
zh: "根据规则来源 Topic 过滤, 使用子串模糊匹配"
}
}
api10.label:
"""Update configuration"""
api1_like_description {
desc {
en: "Filter rules by description, Substring matching"
zh: "根据规则描述过滤, 使用子串模糊匹配"
}
}
api1_match_from {
desc {
en: "Filter rules by from(topic), Mqtt topic matching"
zh: "根据规则来源 Topic 过滤, 使用 MQTT Topic 匹配"
}
}
api1_resp {
desc {
en: "List of rules"
zh: "规则列表"
}
label: {
en: "List Rules"
zh: "列出所有规则"
}
}
api2 {
desc {
en: "Create a new rule using given Id"
zh: "通过指定 ID 创建规则"
}
label: {
en: "Create Rule By ID"
zh: "通过指定 ID 创建规则"
}
}
api1_enable.desc:
"""Filter enable/disable rules"""
api3 {
desc {
en: "List all events can be used in rules"
zh: "列出所有能被规则使用的事件"
}
label: {
en: "List All Events Can Be Used In Rule"
zh: "列出所有能被规则使用的事件"
}
}
api1_from.desc:
"""Filter rules by from(topic), exact match"""
api4 {
desc {
en: "Get a rule by given Id"
zh: "通过 ID 查询规则"
}
label: {
en: "Get Rule"
zh: "查询规则"
}
}
api1_like_description.desc:
"""Filter rules by description, Substring matching"""
api4_1 {
desc {
en: "Get a rule's metrics by given Id"
zh: "通过给定的 Id 获得规则的指标数据"
}
label: {
en: "Get Metric"
zh: "获得指标数据"
}
}
api1_like_from.desc:
"""Filter rules by from(topic), Substring matching"""
api5 {
desc {
en: "Update a rule by given Id to all nodes in the cluster"
zh: "通过 ID 更新集群里所有节点上的规则"
}
label: {
en: "Update Cluster Rule"
zh: "更新集群规则"
}
}
api1_like_id.desc:
"""Filter rules by id, Substring matching"""
api1_match_from.desc:
"""Filter rules by from(topic), Mqtt topic matching"""
api1_resp.desc:
"""List of rules"""
api1_resp.label:
"""List Rules"""
api2.desc:
"""Create a new rule using given Id"""
api2.label:
"""Create Rule By ID"""
api3.desc:
"""List all events can be used in rules"""
api3.label:
"""List All Events Can Be Used In Rule"""
api4.desc:
"""Get a rule by given Id"""
api4.label:
"""Get Rule"""
api4_1.desc:
"""Get a rule's metrics by given Id"""
api4_1.label:
"""Get Metric"""
api5.desc:
"""Update a rule by given Id to all nodes in the cluster"""
api5.label:
"""Update Cluster Rule"""
api6.desc:
"""Delete a rule by given Id from all nodes in the cluster"""
api6.label:
"""Delete Cluster Rule"""
api7.desc:
"""Reset a rule metrics"""
api7.label:
"""Reset Rule Metrics"""
api8.desc:
"""Test a rule"""
api8.label:
"""Test Rule"""
api9.desc:
"""Get rule engine configuration."""
api9.label:
"""Get configuration"""
api6 {
desc {
en: "Delete a rule by given Id from all nodes in the cluster"
zh: "通过 ID 删除集群里所有节点上的规则"
}
label: {
en: "Delete Cluster Rule"
zh: "基于给定 ID 新建一条规则"
}
}
api7 {
desc {
en: "Reset a rule metrics"
zh: "重置规则计数"
}
label: {
en: "Reset Rule Metrics"
zh: "重置规则计数"
}
}
api8 {
desc {
en: "Test a rule"
zh: "测试一个规则"
}
label: {
en: "Test Rule"
zh: "测试规则"
}
}
api9 {
desc {
en: "Get rule engine configuration."
zh: "获取规则引擎配置。"
}
label {
en: "Get configuration"
zh: "获取配置"
}
}
api10 {
desc {
en: "Update rule engine configuration."
zh: "更新规则引擎配置。"
}
label {
en: "Update configuration"
zh: "更新配置"
}
}
}

View File

@ -1,326 +1,25 @@
emqx_rule_engine_schema {
rules_name {
desc {
en: "The name of the rule"
zh: "规则名字"
}
label: {
en: "Rule Name"
zh: "规则名字"
}
}
console_function.desc:
"""Print the actions to the console"""
rules_sql {
desc {
en: """SQL query to transform the messages.
Example: <code>SELECT * FROM "test/topic" WHERE payload.x = 1</code>"""
zh: """用于处理消息的 SQL 。
示例:<code>SELECT * FROM "test/topic" WHERE payload.x = 1</code>"""
}
label: {
en: "Rule SQL"
zh: "规则 SQL"
}
}
console_function.label:
"""Console Function"""
rules_actions {
desc {
en: """A list of actions of the rule.
An action can be a string that refers to the channel ID of an EMQX bridge, or an object
that refers to a function.
There a some built-in functions like "republish" and "console", and we also support user
provided functions in the format: "{module}:{function}".
The actions in the list are executed sequentially.
This means that if one of the action is executing slowly, all the following actions will not
be executed until it returns.
If one of the action crashed, all other actions come after it will still be executed, in the
original order.
If there's any error when running an action, there will be an error message, and the 'failure'
counter of the function action or the bridge channel will increase."""
desc_builtin_action_console.desc:
"""Configuration for a built-in action."""
zh: """规则的动作列表。
动作可以是指向 EMQX bridge 的引用,也可以是一个指向函数的对象。
我们支持一些内置函数如“republish”和“console”我们还支持用户提供的函数它的格式为“{module}:{function}”。
列表中的动作按顺序执行。这意味着如果其中一个动作执行缓慢,则以下所有动作都不会被执行直到它返回。
如果其中一个动作崩溃,在它之后的所有动作仍然会被按照原始顺序执行。
如果运行动作时出现任何错误,则会出现错误消息,并且相应的计数器会增加。"""
}
label: {
en: "Rule Action List"
zh: "动作列表"
}
}
desc_builtin_action_console.label:
"""Action Console Configuration"""
rules_enable {
desc {
en: "Enable or disable the rule"
zh: "启用或禁用规则引擎"
}
label: {
en: "Enable Or Disable Rule"
zh: "启用或禁用规则引擎"
}
}
desc_builtin_action_republish.desc:
"""Configuration for a built-in action."""
rules_metadata {
desc {
en: "Rule metadata, do not change manually"
zh: "规则的元数据,不要手动修改"
}
label: {
en: "Rule metadata"
zh: "规则的元数据"
}
}
desc_builtin_action_republish.label:
"""Republish Configuration"""
rules_description {
desc {
en: "The description of the rule"
zh: "规则的描述"
}
label: {
en: "Rule Description"
zh: "规则描述"
}
}
republish_function {
desc {
en: """Republish the message as a new MQTT message"""
zh: """将消息重新发布为新的 MQTT 消息"""
}
label: {
en: "Republish Function"
zh: "重新发布函数"
}
}
console_function {
desc {
en: """Print the actions to the console"""
zh: "将输出打印到控制台"
}
label: {
en: "Console Function"
zh: "控制台函数"
}
}
user_provided_function_function {
desc {
en: """The user provided function. Should be in the format: '{module}:{function}'.
Where {module} is the Erlang callback module and {function} is the Erlang function.
To write your own function, checkout the function <code>console</code> and
<code>republish</code> in the source file:
<code>apps/emqx_rule_engine/src/emqx_rule_actions.erl</code> as an example."""
zh: """用户提供的函数。 格式应为:'{module}:{function}'。
其中 {module} 是 Erlang 回调模块, {function} 是 Erlang 函数。
要编写自己的函数,请检查源文件:<code>apps/emqx_rule_engine/src/emqx_rule_actions.erl</code> 中的示例函数 <code>console</code> 和<code>republish</code> 。"""
}
label: {
en: "User Provided Function"
zh: "用户提供的函数"
}
}
user_provided_function_args {
desc {
en: """The args will be passed as the 3rd argument to module:function/3,
checkout the function <code>console</code> and <code>republish</code> in the source file:
<code>apps/emqx_rule_engine/src/emqx_rule_actions.erl</code> as an example."""
zh: """用户提供的参数将作为函数 module:function/3 的第三个参数,
请检查源文件:<code>apps/emqx_rule_engine/src/emqx_rule_actions.erl</code> 中的示例函数 <code>console</code> 和<code>republish</code> 。"""
}
label: {
en: "User Provided Function Args"
zh: "用户提供函数的参数"
}
}
republish_args_topic {
desc {
en: """The target topic of message to be re-published.
Template with variables is allowed, see description of the 'republish_args'."""
zh: """重新发布消息的目标主题。
允许使用带有变量的模板请参阅“republish_args”的描述。"""
}
label: {
en: "Target Topic"
zh: "目标主题"
}
}
republish_args_qos {
desc {
en: """The qos of the message to be re-published.
Template with variables is allowed, see description of the 'republish_args'.
Defaults to ${qos}. If variable ${qos} is not found from the selected result of the rule,
0 is used."""
zh: """要重新发布的消息的 qos。允许使用带有变量的模板请参阅“republish_args”的描述。
默认为 ${qos}。 如果从规则的选择结果中没有找到变量 ${qos},则使用 0。"""
}
label: {
en: "Message QoS"
zh: "消息 QoS 等级"
}
}
republish_args_retain {
desc {
en: """The 'retain' flag of the message to be re-published.
Template with variables is allowed, see description of the 'republish_args'.
Defaults to ${retain}. If variable ${retain} is not found from the selected result
of the rule, false is used."""
zh: """要重新发布的消息的“保留”标志。允许使用带有变量的模板请参阅“republish_args”的描述。
默认为 ${retain}。 如果从所选结果中未找到变量 ${retain},则使用 false。"""
}
label: {
en: "Retain Flag"
zh: "保留消息标志"
}
}
republish_args_payload {
desc {
en: """The payload of the message to be re-published.
Template with variables is allowed, see description of the 'republish_args'.
Defaults to ${payload}. If variable ${payload} is not found from the selected result
of the rule, then the string "undefined" is used."""
zh: """要重新发布的消息的有效负载。允许使用带有变量的模板请参阅“republish_args”的描述。
默认为 ${payload}。 如果从所选结果中未找到变量 ${payload},则使用字符串 "undefined"。"""
}
label: {
en: "Message Payload"
zh: "消息负载"
}
}
republish_args_user_properties {
desc {
en: """From which variable should the MQTT message's User-Property pairs be taken from.
The value must be a map.
You may configure it to <code>${pub_props.'User-Property'}</code> or
use <code>SELECT *,pub_props.'User-Property' as user_properties</code>
to forward the original user properties to the republished message.
You may also call <code>map_put</code> function like
<code>map_put('my-prop-name', 'my-prop-value', user_properties) as user_properties</code>
to inject user properties.
NOTE: MQTT spec allows duplicated user property names, but EMQX Rule-Engine does not."""
zh: """指定使用哪个变量来填充 MQTT 消息的 User-Property 列表。这个变量的值必须是一个 map 类型。
可以设置成 <code>${pub_props.'User-Property'}</code> 或者
使用 <code>SELECT *,pub_props.'User-Property' as user_properties</code> 来把源 MQTT 消息
的 User-Property 列表用于填充。
也可以使用 <code>map_put</code> 函数来添加新的 User-Property
<code>map_put('my-prop-name', 'my-prop-value', user_properties) as user_properties</code>
注意MQTT 协议允许一个消息中出现多次同一个 property 名,但是 EMQX 的规则引擎不允许。"""
}
}
rule_engine_ignore_sys_message {
desc {
en: "When set to 'true' (default), rule-engine will ignore messages published to $SYS topics."
zh: "当设置为“true”默认规则引擎将忽略发布到 $SYS 主题的消息。"
}
label: {
en: "Ignore Sys Message"
zh: "忽略系统消息"
}
}
rule_engine_rules {
desc {
en: """The rules"""
zh: "规则"
}
label: {
en: "Rules"
zh: "规则"
}
}
rule_engine_jq_function_default_timeout {
desc {
en: "Default timeout for the `jq` rule engine function"
zh: "规则引擎内建函数 `jq` 默认时间限制"
}
label: {
en: "Rule engine jq function default timeout"
zh: "规则引擎 jq 函数时间限制"
}
}
rule_engine_jq_implementation_module {
desc {
en: "The implementation module for the jq rule engine function. The two options are jq_nif and jq_port. With the jq_nif option an Erlang NIF library is used while with the jq_port option an implementation based on Erlang port programs is used. The jq_nif option (the default option) is the fastest implementation of the two but jq_port is safer as the jq programs will not execute in the same process as the Erlang VM."
zh: "jq 规则引擎功能的实现模块。可用的两个选项是 jq_nif 和 jq_port。jq_nif 使用 Erlang NIF 库访问 jq 库,而 jq_port 使用基于 Erlang Port 的实现。jq_nif 方式(默认选项)是这两个选项中最快的实现,但 jq_port 方式更安全,因为这种情况下 jq 程序不会在 Erlang VM 进程中执行。"
}
label: {
en: "JQ Implementation Module"
zh: "JQ 实现模块"
}
}
desc_rule_engine {
desc {
en: """Configuration for the EMQX Rule Engine."""
zh: """配置 EMQX 规则引擎。"""
}
label: {
en: "Rule Engine Configuration"
zh: "配置规则引擎"
}
}
desc_rules {
desc {
en: """Configuration for a rule."""
zh: """配置规则"""
}
label: {
en: "Rule Configuration"
zh: "配置规则"
}
}
desc_builtin_action_republish {
desc {
en: """Configuration for a built-in action."""
zh: """配置重新发布。"""
}
label: {
en: "Republish Configuration"
zh: "配置重新发布"
}
}
desc_builtin_action_console {
desc {
en: """Configuration for a built-in action."""
zh: """配置打印到控制台"""
}
label: {
en: "Action Console Configuration"
zh: "配置打印到控制台"
}
}
desc_user_provided_function {
desc {
en: """Configuration for a built-in action."""
zh: """配置用户函数"""
}
label: {
en: "User Provid Function Configuration"
zh: "配置用户函数"
}
}
desc_republish_args {
desc {
en: """The arguments of the built-in 'republish' action.One can use variables in the args.
desc_republish_args.desc:
"""The arguments of the built-in 'republish' action.One can use variables in the args.
The variables are selected by the rule. For example, if the rule SQL is defined as following:
<code>
SELECT clientid, qos, payload FROM "t/1"
@ -337,27 +36,168 @@ Then there are 3 variables available: <code>clientid</code>, <code>qos</code> an
When the rule is triggered by an MQTT message with payload = `hello`, qos = 1,
clientid = `Steve`, the rule will republish a new MQTT message to topic `t/Steve`,
payload = `msg: hello`, and `qos = 1`."""
zh: """内置 'republish' 动作的参数。
可以在参数中使用变量。
变量是规则中选择的字段。 例如规则 SQL 定义如下:
<code>
SELECT clientid, qos, payload FROM "t/1"
</code>
然后有 3 个变量可用:<code>clientid</code>、<code>qos</code> 和 <code>payload</code>。 如果我们将参数设置为:
<code>
{
topic = "t/${clientid}"
qos = "${qos}"
payload = "msg: ${payload}"
}
</code>
当收到一条消息 payload = `hello`, qos = 1, clientid = `Steve` 时,将重新发布一条新的 MQTT 消息到主题 `t/Steve`
消息内容为 payload = `msg: hello`, and `qos = 1"""
}
label: {
en: "Republish Args"
zh: "重新发布参数"
}
}
desc_republish_args.label:
"""Republish Args"""
desc_rule_engine.desc:
"""Configuration for the EMQX Rule Engine."""
desc_rule_engine.label:
"""Rule Engine Configuration"""
desc_rules.desc:
"""Configuration for a rule."""
desc_rules.label:
"""Rule Configuration"""
desc_user_provided_function.desc:
"""Configuration for a built-in action."""
desc_user_provided_function.label:
"""User Provid Function Configuration"""
republish_args_payload.desc:
"""The payload of the message to be re-published.
Template with variables is allowed, see description of the 'republish_args'.
Defaults to ${payload}. If variable ${payload} is not found from the selected result
of the rule, then the string "undefined" is used."""
republish_args_payload.label:
"""Message Payload"""
republish_args_qos.desc:
"""The qos of the message to be re-published.
Template with variables is allowed, see description of the 'republish_args'.
Defaults to ${qos}. If variable ${qos} is not found from the selected result of the rule,
0 is used."""
republish_args_qos.label:
"""Message QoS"""
republish_args_retain.desc:
"""The 'retain' flag of the message to be re-published.
Template with variables is allowed, see description of the 'republish_args'.
Defaults to ${retain}. If variable ${retain} is not found from the selected result
of the rule, false is used."""
republish_args_retain.label:
"""Retain Flag"""
republish_args_topic.desc:
"""The target topic of message to be re-published.
Template with variables is allowed, see description of the 'republish_args'."""
republish_args_topic.label:
"""Target Topic"""
republish_args_user_properties.desc:
"""From which variable should the MQTT message's User-Property pairs be taken from.
The value must be a map.
You may configure it to <code>${pub_props.'User-Property'}</code> or
use <code>SELECT *,pub_props.'User-Property' as user_properties</code>
to forward the original user properties to the republished message.
You may also call <code>map_put</code> function like
<code>map_put('my-prop-name', 'my-prop-value', user_properties) as user_properties</code>
to inject user properties.
NOTE: MQTT spec allows duplicated user property names, but EMQX Rule-Engine does not."""
republish_function.desc:
"""Republish the message as a new MQTT message"""
republish_function.label:
"""Republish Function"""
rule_engine_ignore_sys_message.desc:
"""When set to 'true' (default), rule-engine will ignore messages published to $SYS topics."""
rule_engine_ignore_sys_message.label:
"""Ignore Sys Message"""
rule_engine_jq_function_default_timeout.desc:
"""Default timeout for the `jq` rule engine function"""
rule_engine_jq_function_default_timeout.label:
"""Rule engine jq function default timeout"""
rule_engine_jq_implementation_module.desc:
"""The implementation module for the jq rule engine function. The two options are jq_nif and jq_port. With the jq_nif option an Erlang NIF library is used while with the jq_port option an implementation based on Erlang port programs is used. The jq_nif option (the default option) is the fastest implementation of the two but jq_port is safer as the jq programs will not execute in the same process as the Erlang VM."""
rule_engine_jq_implementation_module.label:
"""JQ Implementation Module"""
rule_engine_rules.desc:
"""The rules"""
rule_engine_rules.label:
"""Rules"""
rules_actions.desc:
"""A list of actions of the rule.
An action can be a string that refers to the channel ID of an EMQX bridge, or an object
that refers to a function.
There a some built-in functions like "republish" and "console", and we also support user
provided functions in the format: "{module}:{function}".
The actions in the list are executed sequentially.
This means that if one of the action is executing slowly, all the following actions will not
be executed until it returns.
If one of the action crashed, all other actions come after it will still be executed, in the
original order.
If there's any error when running an action, there will be an error message, and the 'failure'
counter of the function action or the bridge channel will increase."""
rules_actions.label:
"""Rule Action List"""
rules_description.desc:
"""The description of the rule"""
rules_description.label:
"""Rule Description"""
rules_enable.desc:
"""Enable or disable the rule"""
rules_enable.label:
"""Enable Or Disable Rule"""
rules_metadata.desc:
"""Rule metadata, do not change manually"""
rules_metadata.label:
"""Rule metadata"""
rules_name.desc:
"""The name of the rule"""
rules_name.label:
"""Rule Name"""
rules_sql.desc:
"""SQL query to transform the messages.
Example: <code>SELECT * FROM "test/topic" WHERE payload.x = 1</code>"""
rules_sql.label:
"""Rule SQL"""
user_provided_function_args.desc:
"""The args will be passed as the 3rd argument to module:function/3,
checkout the function <code>console</code> and <code>republish</code> in the source file:
<code>apps/emqx_rule_engine/src/emqx_rule_actions.erl</code> as an example."""
user_provided_function_args.label:
"""User Provided Function Args"""
user_provided_function_function.desc:
"""The user provided function. Should be in the format: '{module}:{function}'.
Where {module} is the Erlang callback module and {function} is the Erlang function.
To write your own function, checkout the function <code>console</code> and
<code>republish</code> in the source file:
<code>apps/emqx_rule_engine/src/emqx_rule_actions.erl</code> as an example."""
user_provided_function_function.label:
"""User Provided Function"""
}

File diff suppressed because it is too large Load Diff

View File

@ -1,66 +1,30 @@
emqx_slow_subs_api {
clear_records_api {
desc {
en: "Clear current data and re count slow topic"
zh: "清除当前记录,然后重新开始统计"
}
}
clear_records_api.desc:
"""Clear current data and re count slow topic"""
get_records_api {
desc {
en: "View slow topics statistics record data"
zh: "查看慢订阅的统计数据"
}
}
clientid.desc:
"""Message clientid"""
get_setting_api {
desc {
en: "View slow subs settings"
zh: "查看配置"
}
}
get_records_api.desc:
"""View slow topics statistics record data"""
update_setting_api {
desc {
en: "Update slow subs settings"
zh: "更新配置"
}
}
get_setting_api.desc:
"""View slow subs settings"""
clientid {
desc {
en: "Message clientid"
zh: "消息的客户端 ID"
}
}
last_update_time.desc:
"""The timestamp of last update"""
node {
desc {
en: "Message node name"
zh: "消息的节点名称"
}
}
node.desc:
"""Message node name"""
topic {
desc {
en: "Message topic"
zh: "消息的主题"
}
}
timespan.desc:
"""Timespan for message transmission"""
timespan {
desc {
en: "Timespan for message transmission"
zh: "消息的传输耗时"
}
}
topic.desc:
"""Message topic"""
last_update_time {
desc {
en: "The timestamp of last update"
zh: "记录的更新时间戳"
}
}
update_setting_api.desc:
"""Update slow subs settings"""
}

View File

@ -1,38 +1,18 @@
emqx_slow_subs_schema {
enable {
desc {
en: "Enable this feature"
zh: "开启慢订阅"
}
}
enable.desc:
"""Enable this feature"""
threshold {
desc {
en: "The latency threshold for statistics"
zh: "慢订阅统计的阈值"
}
}
expire_interval.desc:
"""The eviction time of the record, which in the statistics record table"""
expire_interval {
desc {
en: "The eviction time of the record, which in the statistics record table"
zh: "慢订阅记录的有效时间"
}
}
stats_type.desc:
"""The method to calculate the latency"""
top_k_num {
desc {
en: "The maximum number of records in the slow subscription statistics record table"
zh: "慢订阅统计表的记录数量上限"
}
}
threshold.desc:
"""The latency threshold for statistics"""
stats_type {
desc {
en: "The method to calculate the latency"
zh: "慢订阅的统计类型"
}
}
top_k_num.desc:
"""The maximum number of records in the slow subscription statistics record table"""
}

View File

@ -1,16 +1,9 @@
emqx_statsd_api {
get_statsd_config_api {
desc {
en: """List the configuration of StatsD metrics collection and push service."""
zh: """列出 StatsD 指标采集和推送服务的的配置。"""
}
}
get_statsd_config_api.desc:
"""List the configuration of StatsD metrics collection and push service."""
update_statsd_config_api.desc:
"""Update the configuration of StatsD metrics collection and push service."""
update_statsd_config_api {
desc {
en: """Update the configuration of StatsD metrics collection and push service."""
zh: """更新 StatsD 指标采集和推送服务的配置。"""
}
}
}

View File

@ -1,61 +1,30 @@
emqx_statsd_schema {
get_statsd_config_api {
desc {
en: """List the configuration of StatsD metrics collection and push service."""
zh: """列出 StatsD 指标采集和推送服务的的配置。"""
}
}
enable.desc:
"""Enable or disable StatsD metrics collection and push service."""
update_statsd_config_api {
desc {
en: """Update the configuration of StatsD metrics collection and push service."""
zh: """更新 StatsD 指标采集和推送服务的配置。"""
}
}
flush_interval.desc:
"""The push interval for metrics."""
statsd {
desc {
en: """StatsD metrics collection and push configuration."""
zh: """StatsD 指标采集与推送配置。"""
}
label {
en: """StatsD"""
zh: """StatsD"""
}
}
get_statsd_config_api.desc:
"""List the configuration of StatsD metrics collection and push service."""
server {
desc {
en: """StatsD server address."""
zh: """StatsD 服务器地址。"""
}
}
sample_interval.desc:
"""The sampling interval for metrics."""
sample_interval {
desc {
en: """The sampling interval for metrics."""
zh: """指标的采样间隔。"""
}
}
server.desc:
"""StatsD server address."""
flush_interval {
desc {
en: """The push interval for metrics."""
zh: """指标的推送间隔。"""
}
}
tags {
desc {
en: """The tags for metrics."""
zh: """指标的标签。"""
}
}
statsd.desc:
"""StatsD metrics collection and push configuration."""
statsd.label:
"""StatsD"""
tags.desc:
"""The tags for metrics."""
update_statsd_config_api.desc:
"""Update the configuration of StatsD metrics collection and push service."""
enable {
desc {
en: """Enable or disable StatsD metrics collection and push service."""
zh: """启用或禁用 StatsD 指标采集和推送服务。"""
}
}
}

View File

@ -1,32 +1,16 @@
emqx_stomp_schema {
stomp {
desc {
en: """The Stomp Gateway configuration.
stom_frame_max_body_length.desc:
"""Maximum number of bytes of Body allowed per Stomp packet"""
stom_frame_max_headers.desc:
"""The maximum number of Header"""
stomp.desc:
"""The Stomp Gateway configuration.
This gateway supports v1.2/1.1/1.0"""
zh: """Stomp 网关配置。当前实现支持 v1.2/1.1/1.0 协议版本"""
}
}
stom_frame_max_headers {
desc {
en: """The maximum number of Header"""
zh: """允许的 Header 最大数量"""
}
}
stomp_frame_max_headers_length {
desc {
en: """The maximum string length of the Header Value"""
zh: """允许的 Header 字符串的最大长度"""
}
}
stom_frame_max_body_length {
desc {
en: """Maximum number of bytes of Body allowed per Stomp packet"""
zh: """允许的 Stomp 报文 Body 的最大字节数"""
}
}
stomp_frame_max_headers_length.desc:
"""The maximum string length of the Header Value"""
}

View File

@ -1,121 +1,54 @@
emqx_telemetry_api {
get_telemetry_status_api {
desc {
en: """Get telemetry status"""
zh: """获取遥测状态"""
}
}
active_modules.desc:
"""Get active modules"""
update_telemetry_status_api {
desc {
en: """Enable or disable telemetry"""
zh: """更新遥测状态"""
}
}
active_plugins.desc:
"""Get active plugins"""
get_telemetry_data_api {
desc {
en: """Get telemetry data"""
zh: """获取遥测数据"""
}
}
emqx_version.desc:
"""Get emqx version"""
enable {
desc {
en: """Enable telemetry"""
zh: """启用遥测"""
}
}
enable.desc:
"""Enable telemetry"""
emqx_version {
desc {
en: """Get emqx version"""
zh: """获取 emqx 版本"""
}
}
get_telemetry_data_api.desc:
"""Get telemetry data"""
license {
desc {
en: """Get license information"""
zh: """获取 license 信息"""
}
}
get_telemetry_status_api.desc:
"""Get telemetry status"""
os_name {
desc {
en: """Get OS name"""
zh: """获取操作系统名称"""
}
}
license.desc:
"""Get license information"""
os_version {
desc {
en: """Get OS version"""
zh: """获取操作系统版本"""
}
}
messages_received.desc:
"""Get number of messages received"""
otp_version {
desc {
en: """Get Erlang OTP version"""
zh: """获取 OTP 版本"""
}
}
messages_sent.desc:
"""Get number of messages sent"""
up_time {
desc {
en: """Get uptime"""
zh: """获取运行时间"""
}
}
nodes_uuid.desc:
"""Get nodes UUID"""
uuid {
desc {
en: """Get UUID"""
zh: """获取 UUID"""
}
}
num_clients.desc:
"""Get number of clients"""
nodes_uuid {
desc {
en: """Get nodes UUID"""
zh: """获取节点 UUID"""
}
}
os_name.desc:
"""Get OS name"""
active_plugins {
desc {
en: """Get active plugins"""
zh: """获取活跃插件"""
}
}
os_version.desc:
"""Get OS version"""
active_modules {
desc {
en: """Get active modules"""
zh: """获取活跃模块"""
}
}
otp_version.desc:
"""Get Erlang OTP version"""
num_clients {
desc {
en: """Get number of clients"""
zh: """获取客户端数量"""
}
}
up_time.desc:
"""Get uptime"""
messages_received {
desc {
en: """Get number of messages received"""
zh: """获取接收到的消息数量"""
}
}
update_telemetry_status_api.desc:
"""Enable or disable telemetry"""
uuid.desc:
"""Get UUID"""
messages_sent {
desc {
en: """Get number of messages sent"""
zh: """获取发送的消息数量"""
}
}
}

View File

@ -1,240 +1,105 @@
emqx_topic_metrics_api {
get_topic_metrics_api {
desc {
en: """List topic metrics"""
zh: """获取主题监控数据"""
}
}
reset_topic_metrics_api{
desc {
en: """Reset telemetry status"""
zh: """重置主题监控状态"""
}
}
message_qos1_in_rate.desc:
"""QoS1 in messages rate"""
post_topic_metrics_api {
desc {
en: """Create topic metrics"""
zh: """创建主题监控数据"""
}
}
message_out_count.desc:
"""Out messages count"""
gat_topic_metrics_data_api {
desc {
en: """Get topic metrics"""
zh: """获取主题监控数据"""
}
}
message_qos2_out_rate.desc:
"""QoS2 out messages rate"""
delete_topic_metrics_data_api {
desc {
en: """Delete topic metrics"""
zh: """删除主题监控数据"""
}
}
message_qos0_in_rate.desc:
"""QoS0 in messages rate"""
topic_metrics_api_response409 {
desc {
en: """Conflict. Topic metrics exceeded max limit 512"""
zh: """冲突。主题监控数据超过最大限制512"""
}
}
get_topic_metrics_api.desc:
"""List topic metrics"""
topic_metrics_api_response400 {
desc {
en: """Bad request. Already exists or bad topic name"""
zh: """错误请求。已存在或错误的主题名称"""
}
}
reset_time.desc:
"""Reset time. In rfc3339. Nullable if never reset"""
topic_metrics_api_response404 {
desc {
en: """Not Found. Topic metrics not found"""
zh: """未找到。主题监控数据未找到"""
}
}
topic_metrics_api_response400.desc:
"""Bad request. Already exists or bad topic name"""
reset_topic_desc {
desc {
en: """Topic Name. If this parameter is not present,all created topic metrics will be reset."""
zh: """主题名称。如果此参数不存在,则所有创建的主题监控数据都将重置。"""
}
}
reset_topic_desc.desc:
"""Topic Name. If this parameter is not present,all created topic metrics will be reset."""
topic {
desc {
en: """Topic"""
zh: """主题"""
}
}
topic_metrics_api_response409.desc:
"""Conflict. Topic metrics exceeded max limit 512"""
topic_in_body {
desc {
en: """Raw topic string"""
zh: """主题字符串"""
}
}
post_topic_metrics_api.desc:
"""Create topic metrics"""
topic_in_path {
desc {
en: """Topic string. Notice: Topic string in url path must be encoded"""
zh: """主题字符串。注意主题字符串在url路径中必须编码"""
}
}
message_dropped_rate.desc:
"""Dropped messages rate"""
action {
desc {
en: """Action. Only support reset"""
zh: """操作,仅支持 reset"""
}
}
message_qos2_in_rate.desc:
"""QoS2 in messages rate"""
create_time {
desc {
en: """Create time"""
zh: """创建时间。标准 rfc3339 时间格式例如2018-01-01T12:00:00Z"""
}
}
message_in_rate.desc:
"""In messages rate"""
reset_time {
desc {
en: """Reset time. In rfc3339. Nullable if never reset"""
zh: """重置时间。标准 rfc3339 时间格式例如2018-01-01T12:00:00Z。如果从未重置则为空"""
}
}
message_qos0_out_rate.desc:
"""QoS0 out messages rate"""
metrics {
desc {
en: """Metrics"""
zh: """监控数据"""
}
}
message_qos2_in_count.desc:
"""QoS2 in messages count"""
message_dropped_count {
desc {
en: """Dropped messages count"""
zh: """丢弃消息数量"""
}
}
message_dropped_count.desc:
"""Dropped messages count"""
message_dropped_rate {
desc {
en: """Dropped messages rate"""
zh: """丢弃消息速率"""
}
}
topic_metrics_api_response404.desc:
"""Not Found. Topic metrics not found"""
message_in_count {
desc {
en: """In messages count"""
zh: """接收消息数量"""
}
}
topic_in_path.desc:
"""Topic string. Notice: Topic string in url path must be encoded"""
message_in_rate {
desc {
en: """In messages rate"""
zh: """接收消息速率"""
}
}
action.desc:
"""Action. Only support reset"""
message_out_count {
desc {
en: """Out messages count"""
zh: """发送消息数量"""
}
}
message_qos0_in_count.desc:
"""QoS0 in messages count"""
message_out_rate {
desc {
en: """Out messages rate"""
zh: """发送消息速率"""
}
}
message_qos1_out_rate.desc:
"""QoS1 out messages rate"""
message_qos0_in_count {
desc {
en: """QoS0 in messages count"""
zh: """QoS0 接收消息数量"""
}
}
topic.desc:
"""Topic"""
message_qos0_in_rate {
desc {
en: """QoS0 in messages rate"""
zh: """QoS0 接收消息速率"""
}
}
reset_topic_metrics_api.desc:
"""Reset telemetry status"""
message_qos0_out_count {
desc {
en: """QoS0 out messages count"""
zh: """QoS0 发送消息数量"""
}
}
create_time.desc:
"""Create time"""
message_qos0_out_rate {
desc {
en: """QoS0 out messages rate"""
zh: """QoS0 发送消息速率"""
}
}
metrics.desc:
"""Metrics"""
message_qos1_in_count {
desc {
en: """QoS1 in messages count"""
zh: """QoS1 接收消息数量"""
}
}
message_qos1_out_count.desc:
"""QoS1 out messages count"""
message_qos1_in_rate {
desc {
en: """QoS1 in messages rate"""
zh: """QoS1 接收消息速率"""
}
}
gat_topic_metrics_data_api.desc:
"""Get topic metrics"""
message_qos1_out_count {
desc {
en: """QoS1 out messages count"""
zh: """QoS1 发送消息数量"""
}
}
message_qos1_in_count.desc:
"""QoS1 in messages count"""
message_qos1_out_rate {
desc {
en: """QoS1 out messages rate"""
zh: """QoS1 发送消息速率"""
}
}
delete_topic_metrics_data_api.desc:
"""Delete topic metrics"""
message_qos2_in_count {
desc {
en: """QoS2 in messages count"""
zh: """QoS2 接收消息数量"""
}
}
message_qos0_out_count.desc:
"""QoS0 out messages count"""
message_qos2_in_rate {
desc {
en: """QoS2 in messages rate"""
zh: """QoS2 接收消息速率"""
}
}
topic_in_body.desc:
"""Raw topic string"""
message_qos2_out_count {
desc {
en: """QoS2 out messages count"""
zh: """QoS2 发送消息数量"""
}
}
message_in_count.desc:
"""In messages count"""
message_qos2_out_rate {
desc {
en: """QoS2 out messages rate"""
zh: """QoS2 发送消息速率"""
}
}
message_qos2_out_count.desc:
"""QoS2 out messages count"""
message_out_rate.desc:
"""Out messages rate"""
}

Some files were not shown because too many files have changed in this diff Show More