docs(schema): Fix typos in the schema files
This commit is contained in:
parent
4fe87b5e32
commit
052bd9081d
|
@ -387,7 +387,7 @@ after idling for 'Keepalive * backoff * 2'."""
|
||||||
, {"max_inflight",
|
, {"max_inflight",
|
||||||
sc(range(1, 65535),
|
sc(range(1, 65535),
|
||||||
#{ default => 32,
|
#{ default => 32,
|
||||||
desc => "Maximum size of the Inflight Window storing QoS1/2 messages delivered but unacked."
|
desc => "Maximum size of the Inflight Window storing QoS1/2 messages delivered but un-acked."
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
, {"retry_interval",
|
, {"retry_interval",
|
||||||
|
@ -550,7 +550,7 @@ fields("overload_protection") ->
|
||||||
})}
|
})}
|
||||||
, {"backoff_delay",
|
, {"backoff_delay",
|
||||||
sc(range(0, inf),
|
sc(range(0, inf),
|
||||||
#{ desc => "Some unimporant tasks could be delayed"
|
#{ desc => "Some unimportant tasks could be delayed "
|
||||||
"for execution, here set the delays in ms"
|
"for execution, here set the delays in ms"
|
||||||
, default => 1
|
, default => 1
|
||||||
})}
|
})}
|
||||||
|
@ -904,7 +904,7 @@ fields("broker") ->
|
||||||
})}
|
})}
|
||||||
, {"perf",
|
, {"perf",
|
||||||
sc(ref("broker_perf"),
|
sc(ref("broker_perf"),
|
||||||
#{ desc => "Broker performance tuning pamaters"
|
#{ desc => "Broker performance tuning parameters"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -1032,35 +1032,35 @@ in the VM exceeds this value"
|
||||||
, {"db_hostname",
|
, {"db_hostname",
|
||||||
sc(string(),
|
sc(string(),
|
||||||
#{ mapping => "system_monitor.db_hostname"
|
#{ mapping => "system_monitor.db_hostname"
|
||||||
, desc => "Hostname of the postgres database that collects the data points"
|
, desc => "Hostname of the PostgreSQL database that collects the data points"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
, {"db_port",
|
, {"db_port",
|
||||||
sc(integer(),
|
sc(integer(),
|
||||||
#{ mapping => "system_monitor.db_port"
|
#{ mapping => "system_monitor.db_port"
|
||||||
, default => 5432
|
, default => 5432
|
||||||
, desc => "Port of the postgres database that collects the data points"
|
, desc => "Port of the PostgreSQL database that collects the data points"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
, {"db_username",
|
, {"db_username",
|
||||||
sc(string(),
|
sc(string(),
|
||||||
#{ mapping => "system_monitor.db_username"
|
#{ mapping => "system_monitor.db_username"
|
||||||
, default => "system_monitor"
|
, default => "system_monitor"
|
||||||
, desc => "EMQX user name in the postgres database"
|
, desc => "EMQX user name in the PostgreSQL database"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
, {"db_password",
|
, {"db_password",
|
||||||
sc(binary(),
|
sc(binary(),
|
||||||
#{ mapping => "system_monitor.db_password"
|
#{ mapping => "system_monitor.db_password"
|
||||||
, default => "system_monitor_password"
|
, default => "system_monitor_password"
|
||||||
, desc => "EMQX user password in the postgres database"
|
, desc => "EMQX user password in the PostgreSQL database"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
, {"db_name",
|
, {"db_name",
|
||||||
sc(string(),
|
sc(string(),
|
||||||
#{ mapping => "system_monitor.db_name"
|
#{ mapping => "system_monitor.db_name"
|
||||||
, default => "postgres"
|
, default => "postgres"
|
||||||
, desc => "Postgres database name"
|
, desc => "PostgreSQL database name"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -1111,7 +1111,7 @@ fields("trace") ->
|
||||||
default => text,
|
default => text,
|
||||||
desc => """
|
desc => """
|
||||||
Determine the format of the payload format in the trace file.<br>
|
Determine the format of the payload format in the trace file.<br>
|
||||||
`text`: Text-based protocol or plain text protocol. It is recommended when payload is json encode.<br>
|
`text`: Text-based protocol or plain text protocol. It is recommended when payload is JSON encoded.<br>
|
||||||
`hex`: Binary hexadecimal encode. It is recommended when payload is a custom binary protocol.<br>
|
`hex`: Binary hexadecimal encode. It is recommended when payload is a custom binary protocol.<br>
|
||||||
`hidden`: payload is obfuscated as `******`
|
`hidden`: payload is obfuscated as `******`
|
||||||
"""
|
"""
|
||||||
|
@ -1264,7 +1264,7 @@ keyfile is password-protected."""
|
||||||
#{ default => default_tls_vsns(maps:get(versions, Defaults, tls_all_available))
|
#{ default => default_tls_vsns(maps:get(versions, Defaults, tls_all_available))
|
||||||
, desc =>
|
, desc =>
|
||||||
"""All TLS/DTLS versions to be supported.<br>
|
"""All TLS/DTLS versions to be supported.<br>
|
||||||
NOTE: PSK ciphers are suppresed by 'tlsv1.3' version config<br>
|
NOTE: PSK ciphers are suppressed by 'tlsv1.3' version config<br>
|
||||||
In case PSK cipher suites are intended, make sure to configured
|
In case PSK cipher suites are intended, make sure to configured
|
||||||
<code>['tlsv1.2', 'tlsv1.1']</code> here.
|
<code>['tlsv1.2', 'tlsv1.1']</code> here.
|
||||||
"""
|
"""
|
||||||
|
@ -1361,7 +1361,7 @@ client_ssl_opts_schema(Defaults) ->
|
||||||
, desc =>
|
, desc =>
|
||||||
"""Specify the host name to be used in TLS Server Name Indication extension.<br>
|
"""Specify the host name to be used in TLS Server Name Indication extension.<br>
|
||||||
For instance, when connecting to \"server.example.net\", the genuine server
|
For instance, when connecting to \"server.example.net\", the genuine server
|
||||||
which accedpts the connection and performs TLS handshake may differ from the
|
which accepts the connection and performs TLS handshake may differ from the
|
||||||
host the TLS client initially connects to, e.g. when connecting to an IP address
|
host the TLS client initially connects to, e.g. when connecting to an IP address
|
||||||
or when the host has multiple resolvable DNS records <br>
|
or when the host has multiple resolvable DNS records <br>
|
||||||
If not specified, it will default to the host name string which is used
|
If not specified, it will default to the host name string which is used
|
||||||
|
@ -1405,7 +1405,7 @@ Selecting a good cipher suite is critical for the
|
||||||
application's data security, confidentiality and performance.
|
application's data security, confidentiality and performance.
|
||||||
|
|
||||||
The names should be in OpenSSL string format (not RFC format).
|
The names should be in OpenSSL string format (not RFC format).
|
||||||
All default values and examples proveded by EMQ X config
|
All default values and examples provided by EMQ X config
|
||||||
documentation are all in OpenSSL format.<br>
|
documentation are all in OpenSSL format.<br>
|
||||||
|
|
||||||
NOTE: Certain cipher suites are only compatible with
|
NOTE: Certain cipher suites are only compatible with
|
||||||
|
@ -1415,7 +1415,7 @@ For instance, if only 'tlsv1.3' is given in the <code>versions</code>,
|
||||||
configuring cipher suites for other versions will have no effect.
|
configuring cipher suites for other versions will have no effect.
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
NOTE: PSK ciphers are suppresed by 'tlsv1.3' version config<br>
|
NOTE: PSK ciphers are suppressed by 'tlsv1.3' version config<br>
|
||||||
If PSK cipher suites are intended, 'tlsv1.3' should be disabled from <code>versions</code>.<br>
|
If PSK cipher suites are intended, 'tlsv1.3' should be disabled from <code>versions</code>.<br>
|
||||||
PSK cipher suites: <code>\"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384,
|
PSK cipher suites: <code>\"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384,
|
||||||
RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256,
|
RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256,
|
||||||
|
@ -1469,7 +1469,7 @@ ref(Module, Field) -> hoconsc:ref(Module, Field).
|
||||||
|
|
||||||
mk_duration(Desc, OverrideMeta) ->
|
mk_duration(Desc, OverrideMeta) ->
|
||||||
DefaultMeta = #{desc => Desc ++ " Time span. A text string with number followed by time units:
|
DefaultMeta = #{desc => Desc ++ " Time span. A text string with number followed by time units:
|
||||||
`ms` for milli-seconds,
|
`ms` for milliseconds,
|
||||||
`s` for seconds,
|
`s` for seconds,
|
||||||
`m` for minutes,
|
`m` for minutes,
|
||||||
`h` for hours;
|
`h` for hours;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Configure
|
## Configure
|
||||||
|
|
||||||
File: etc/pulgins/authz.conf
|
File: etc/plugins/authz.conf
|
||||||
|
|
||||||
```json
|
```json
|
||||||
authz:{
|
authz:{
|
||||||
|
@ -72,7 +72,7 @@ authz:{
|
||||||
|
|
||||||
## Database Management
|
## Database Management
|
||||||
|
|
||||||
#### Mysql
|
#### MySQL
|
||||||
|
|
||||||
Create Example Table
|
Create Example Table
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ HSET mqtt_authz:emqx '$SYS/#' subscribe
|
||||||
|
|
||||||
A rule of Redis AuthZ defines `publish`, `subscribe`, or `all `information. All lists in the rule are **allow** lists.
|
A rule of Redis AuthZ defines `publish`, `subscribe`, or `all `information. All lists in the rule are **allow** lists.
|
||||||
|
|
||||||
#### Mongo
|
#### MongoDB
|
||||||
|
|
||||||
Create Example BSON documents
|
Create Example BSON documents
|
||||||
```sql
|
```sql
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
?PH_CERT_SUBJECT]).
|
?PH_CERT_SUBJECT]).
|
||||||
|
|
||||||
description() ->
|
description() ->
|
||||||
"AuthZ with Postgresql".
|
"AuthZ with PostgreSQL".
|
||||||
|
|
||||||
init(#{query := SQL0} = Source) ->
|
init(#{query := SQL0} = Source) ->
|
||||||
{SQL, PlaceHolders} = emqx_authz_utils:parse_sql(
|
{SQL, PlaceHolders} = emqx_authz_utils:parse_sql(
|
||||||
|
|
|
@ -98,7 +98,7 @@ fields("metrics") ->
|
||||||
, {"rate", mk(float(), #{desc => "The rate of matched, times/second"})}
|
, {"rate", mk(float(), #{desc => "The rate of matched, times/second"})}
|
||||||
, {"rate_max", mk(float(), #{desc => "The max rate of matched, times/second"})}
|
, {"rate_max", mk(float(), #{desc => "The max rate of matched, times/second"})}
|
||||||
, {"rate_last5m", mk(float(),
|
, {"rate_last5m", mk(float(),
|
||||||
#{desc => "The average rate of matched in last 5 mins, times/second"})}
|
#{desc => "The average rate of matched in the last 5 minutes, times/second"})}
|
||||||
];
|
];
|
||||||
|
|
||||||
fields("node_metrics") ->
|
fields("node_metrics") ->
|
||||||
|
@ -113,7 +113,7 @@ fields("status") ->
|
||||||
, {"rate", mk(float(), #{desc => "The rate of matched, times/second"})}
|
, {"rate", mk(float(), #{desc => "The rate of matched, times/second"})}
|
||||||
, {"rate_max", mk(float(), #{desc => "The max rate of matched, times/second"})}
|
, {"rate_max", mk(float(), #{desc => "The max rate of matched, times/second"})}
|
||||||
, {"rate_last5m", mk(float(),
|
, {"rate_last5m", mk(float(),
|
||||||
#{desc => "The average rate of matched in last 5 mins, times/second"})}
|
#{desc => "The average rate of matched in the last 5 minutes, times/second"})}
|
||||||
];
|
];
|
||||||
|
|
||||||
fields("node_status") ->
|
fields("node_status") ->
|
||||||
|
|
|
@ -112,7 +112,7 @@ And a the `EMQX_` prefix is used as the namespace.
|
||||||
|
|
||||||
For example `node.name` can be represented as `EMQX_NODE__NAME`
|
For example `node.name` can be represented as `EMQX_NODE__NAME`
|
||||||
|
|
||||||
Environment variable values are parsed as hocon values, this allows users
|
Environment variable values are parsed as HOCON values, this allows users
|
||||||
to even set complex values from environment variables.
|
to even set complex values from environment variables.
|
||||||
|
|
||||||
For example, this environment variable sets an array value.
|
For example, this environment variable sets an array value.
|
||||||
|
|
|
@ -74,7 +74,7 @@ roots() ->
|
||||||
[ {"node",
|
[ {"node",
|
||||||
sc(hoconsc:ref("node"),
|
sc(hoconsc:ref("node"),
|
||||||
#{ desc => "Node name, cookie, config & data directories "
|
#{ desc => "Node name, cookie, config & data directories "
|
||||||
"and the Eralng virtual machine (beam) boot parameters."
|
"and the Erlang virtual machine (BEAM) boot parameters."
|
||||||
})}
|
})}
|
||||||
, {"cluster",
|
, {"cluster",
|
||||||
sc(hoconsc:ref("cluster"),
|
sc(hoconsc:ref("cluster"),
|
||||||
|
@ -840,9 +840,9 @@ In EMQ X, MQTT client access control is extremely flexible.<br>
|
||||||
An out of the box set of authorization data sources are supported.
|
An out of the box set of authorization data sources are supported.
|
||||||
For example,<br>
|
For example,<br>
|
||||||
'file' source is to support concise and yet generic ACL rules in a file;<br>
|
'file' source is to support concise and yet generic ACL rules in a file;<br>
|
||||||
'built-in-database' source can be used to store per-client customisable rule sets,
|
'built-in-database' source can be used to store per-client customizable rule sets,
|
||||||
natively in the EMQ X node;<br>
|
natively in the EMQ X node;<br>
|
||||||
'http' source to make EMQ X call an external HTTP API to make the decision;<br>
|
'http' source to make EMQ X call an external HTTP API to make the decision;<br>
|
||||||
'postgresql' etc. to look up clients or rules from external databases;<br>
|
'PostgreSQL' etc. to look up clients or rules from external databases;<br>
|
||||||
""" })},
|
""" })},
|
||||||
lists:keyreplace("authorization", 1, Roots, Authz).
|
lists:keyreplace("authorization", 1, Roots, Authz).
|
||||||
|
|
|
@ -6,10 +6,10 @@ A `connector` is a callback module of `emqx_resource` that maintains the data re
|
||||||
external resources. Put all resource related callback modules in a single application is good as
|
external resources. Put all resource related callback modules in a single application is good as
|
||||||
we can put some util functions/modules here for reusing purpose.
|
we can put some util functions/modules here for reusing purpose.
|
||||||
|
|
||||||
For example, a mysql connector is an emqx resource that maintains all the mysql connection
|
For example, a MySQL connector is an emqx resource that maintains all the MySQL connection
|
||||||
related parameters (configs) and the TCP connections to the mysql server.
|
related parameters (configs) and the TCP connections to the MySQL server.
|
||||||
|
|
||||||
An mysql connector can be used as following:
|
An MySQL connector can be used as following:
|
||||||
|
|
||||||
```
|
```
|
||||||
(emqx@127.0.0.1)5> emqx_resource:list_instances_verbose().
|
(emqx@127.0.0.1)5> emqx_resource:list_instances_verbose().
|
||||||
|
|
|
@ -130,7 +130,7 @@ Template with variables is allowed."""
|
||||||
, {hookpoint,
|
, {hookpoint,
|
||||||
sc(binary(),
|
sc(binary(),
|
||||||
#{ desc => """
|
#{ desc => """
|
||||||
The hookpoint will be triggered when there's any message received from the remote broker.
|
The hook point will be triggered when there's any message received from the remote broker.
|
||||||
"""
|
"""
|
||||||
})}
|
})}
|
||||||
] ++ common_inout_confs();
|
] ++ common_inout_confs();
|
||||||
|
|
|
@ -164,7 +164,7 @@ fields(coap) ->
|
||||||
sc(duration(),
|
sc(duration(),
|
||||||
#{ default => <<"30s">>
|
#{ default => <<"30s">>
|
||||||
, desc =>
|
, desc =>
|
||||||
"The gateway server required minimum hearbeat interval.<br>
|
"The gateway server required minimum heartbeat interval.<br>
|
||||||
When connection mode is enabled, this parameter is used to set the minimum
|
When connection mode is enabled, this parameter is used to set the minimum
|
||||||
heartbeat interval for the connection to be alive."
|
heartbeat interval for the connection to be alive."
|
||||||
})}
|
})}
|
||||||
|
@ -377,7 +377,7 @@ fields(udp_tcp_listeners) ->
|
||||||
];
|
];
|
||||||
|
|
||||||
fields(tcp_listener) ->
|
fields(tcp_listener) ->
|
||||||
[ %% some special confs for tcp listener
|
[ %% some special configs for tcp listener
|
||||||
{acceptors, sc(integer(), #{default => 16})}
|
{acceptors, sc(integer(), #{default => 16})}
|
||||||
] ++
|
] ++
|
||||||
tcp_opts() ++
|
tcp_opts() ++
|
||||||
|
@ -394,7 +394,7 @@ fields(ssl_listener) ->
|
||||||
|
|
||||||
fields(udp_listener) ->
|
fields(udp_listener) ->
|
||||||
[
|
[
|
||||||
%% some special confs for udp listener
|
%% some special configs for udp listener
|
||||||
] ++
|
] ++
|
||||||
udp_opts() ++
|
udp_opts() ++
|
||||||
common_listener_opts();
|
common_listener_opts();
|
||||||
|
|
|
@ -107,7 +107,7 @@ The MQTT message will be translated to an LwM2M DISCOVER command and sent to the
|
||||||
- "execute": LwM2M Execute
|
- "execute": LwM2M Execute
|
||||||
- "create": LwM2M Create
|
- "create": LwM2M Create
|
||||||
- "delete": LwM2M Delete
|
- "delete": LwM2M Delete
|
||||||
- {?Data}: Json Object, its value depends on the {?MsgType}:
|
- {?Data}: JSON Object, its value depends on the {?MsgType}:
|
||||||
- **If {?MsgType} = "read" or "discover"**:
|
- **If {?MsgType} = "read" or "discover"**:
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -212,7 +212,7 @@ The MQTT message will be translated to an LwM2M DISCOVER command and sent to the
|
||||||
- "create": LwM2M Create
|
- "create": LwM2M Create
|
||||||
- "delete": LwM2M Delete
|
- "delete": LwM2M Delete
|
||||||
- **"ack"**: [CoAP Empty ACK](https://tools.ietf.org/html/rfc7252#section-5.2.2)
|
- **"ack"**: [CoAP Empty ACK](https://tools.ietf.org/html/rfc7252#section-5.2.2)
|
||||||
- {?Data}: Json Object, its value depends on {?MsgType}:
|
- {?Data}: JSON Object, its value depends on {?MsgType}:
|
||||||
- **If {?MsgType} = "write", "write-attr", "execute", "create", "delete", or "read"(when response without content)**:
|
- **If {?MsgType} = "write", "write-attr", "execute", "create", "delete", or "read"(when response without content)**:
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
|
|
@ -90,10 +90,10 @@ fields("event_message") ->
|
||||||
#{fields => Fields,
|
#{fields => Fields,
|
||||||
desc => """
|
desc => """
|
||||||
Enable/Disable system event messages.
|
Enable/Disable system event messages.
|
||||||
The messages are plublished to '$event' prefixed topics.
|
The messages are published to '$event' prefixed topics.
|
||||||
For example, if `client_disconnected` is set to `true`,
|
For example, if `client_disconnected` is set to `true`,
|
||||||
a message is published to `$event/client_connected` topic
|
a message is published to `$event/client_connected` topic
|
||||||
whenver a client is connected.
|
whenever a client is connected.
|
||||||
"""};
|
"""};
|
||||||
|
|
||||||
fields("topic_metrics") ->
|
fields("topic_metrics") ->
|
||||||
|
|
|
@ -51,7 +51,7 @@ state_fields() ->
|
||||||
[ {name_vsn,
|
[ {name_vsn,
|
||||||
hoconsc:mk(string(),
|
hoconsc:mk(string(),
|
||||||
#{ desc => "The {name}-{version} of the plugin.<br>"
|
#{ desc => "The {name}-{version} of the plugin.<br>"
|
||||||
"It should match the plugin application name-vsn as the "
|
"It should match the plugin application name-version as the "
|
||||||
"for the plugin release package name<br>"
|
"for the plugin release package name<br>"
|
||||||
"For example: my_plugin-0.1.0."
|
"For example: my_plugin-0.1.0."
|
||||||
, nullable => false
|
, nullable => false
|
||||||
|
|
|
@ -49,7 +49,7 @@ fields() ->
|
||||||
].
|
].
|
||||||
|
|
||||||
enable(type) -> boolean();
|
enable(type) -> boolean();
|
||||||
enable(desc) -> <<"Whether to enable tls psk support">>;
|
enable(desc) -> <<"Whether to enable TLS PSK support">>;
|
||||||
enable(default) -> false;
|
enable(default) -> false;
|
||||||
enable(_) -> undefined.
|
enable(_) -> undefined.
|
||||||
|
|
||||||
|
@ -58,7 +58,8 @@ init_file(desc) ->
|
||||||
<<"If init_file is specified, emqx will import PSKs from the file ",
|
<<"If init_file is specified, emqx will import PSKs from the file ",
|
||||||
"into the built-in database at startup for use by the runtime. ",
|
"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 file has to be structured line-by-line, each line must be in ",
|
||||||
"the format of 'PSKIdentity:SharedSecret' for example: mydevice1:c2VjcmV0">>;
|
"the format of 'PSKIdentity:SharedSecret' for example: ",
|
||||||
|
"<code>mydevice1:c2VjcmV0</code>">>;
|
||||||
init_file(nullable) -> true;
|
init_file(nullable) -> true;
|
||||||
init_file(_) -> undefined.
|
init_file(_) -> undefined.
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ fields("metrics") ->
|
||||||
, {"sql.matched.rate", sc(float(), #{desc => "The rate of matched, times/second"})}
|
, {"sql.matched.rate", sc(float(), #{desc => "The rate of matched, times/second"})}
|
||||||
, {"sql.matched.rate.max", sc(float(), #{desc => "The max rate of matched, times/second"})}
|
, {"sql.matched.rate.max", sc(float(), #{desc => "The max rate of matched, times/second"})}
|
||||||
, {"sql.matched.rate.last5m", sc(float(),
|
, {"sql.matched.rate.last5m", sc(float(),
|
||||||
#{desc => "The average rate of matched in last 5 mins, times/second"})}
|
#{desc => "The average rate of matched in last 5 minutes, times/second"})}
|
||||||
, {"sql.passed", sc(integer(), #{desc => "How much times the SQL is passed"})}
|
, {"sql.passed", sc(integer(), #{desc => "How much times the SQL is passed"})}
|
||||||
, {"sql.failed", sc(integer(), #{desc => "How much times the SQL is failed"})}
|
, {"sql.failed", sc(integer(), #{desc => "How much times the SQL is failed"})}
|
||||||
, {"sql.failed.exception", sc(integer(), #{
|
, {"sql.failed.exception", sc(integer(), #{
|
||||||
|
|
|
@ -101,7 +101,7 @@ Then there are 3 variables available: <code>clientid</code>, <code>qos</code> an
|
||||||
}
|
}
|
||||||
</code>
|
</code>
|
||||||
When the rule is triggered by an MQTT message with payload = \"hello\", qos = 1,
|
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\",
|
clientid = \"Steve\", the rule will republish a new MQTT message to topic \"t/Steve\",
|
||||||
payload = \"msg: hello\", and qos = 1.
|
payload = \"msg: hello\", and qos = 1.
|
||||||
"""
|
"""
|
||||||
, default => #{}
|
, default => #{}
|
||||||
|
|
|
@ -26,7 +26,7 @@ fields("slow_subs") ->
|
||||||
sc(emqx_schema:duration_ms(),
|
sc(emqx_schema:duration_ms(),
|
||||||
"0s",
|
"0s",
|
||||||
"The interval for pushing statistics table records to the system topic. "
|
"The interval for pushing statistics table records to the system topic. "
|
||||||
"publish topk list to $SYS/brokers/${node}/slow_subs per notice_interval. "
|
"publish top-k list to $SYS/brokers/${node}/slow_subs per notice_interval. "
|
||||||
"publish is disabled if set to 0s."
|
"publish is disabled if set to 0s."
|
||||||
)}
|
)}
|
||||||
, {notice_qos,
|
, {notice_qos,
|
||||||
|
|
|
@ -0,0 +1,246 @@
|
||||||
|
personal_ws-1.1 en 254
|
||||||
|
ACL
|
||||||
|
AES
|
||||||
|
APIs
|
||||||
|
BPAPI
|
||||||
|
BSON
|
||||||
|
Backplane
|
||||||
|
CHACHA
|
||||||
|
CLI
|
||||||
|
CMD
|
||||||
|
CN
|
||||||
|
CONNACK
|
||||||
|
CoAP
|
||||||
|
Cygwin
|
||||||
|
DES
|
||||||
|
DN
|
||||||
|
DNS
|
||||||
|
DTLS
|
||||||
|
DevOps
|
||||||
|
Dialyzer
|
||||||
|
Diffie
|
||||||
|
EIP
|
||||||
|
EMQ
|
||||||
|
EPMD
|
||||||
|
ERL
|
||||||
|
ETS
|
||||||
|
FIXME
|
||||||
|
GCM
|
||||||
|
Gw
|
||||||
|
HOCON
|
||||||
|
HTTPS
|
||||||
|
JSON
|
||||||
|
Kubernetes
|
||||||
|
LwM
|
||||||
|
MQTT
|
||||||
|
Makefile
|
||||||
|
MitM
|
||||||
|
Multicast
|
||||||
|
NIF
|
||||||
|
OTP
|
||||||
|
PEM
|
||||||
|
PINGREQ
|
||||||
|
PSK
|
||||||
|
PUBREL
|
||||||
|
QoS
|
||||||
|
RESTful
|
||||||
|
ROADMAP
|
||||||
|
RSA
|
||||||
|
Req
|
||||||
|
Riak
|
||||||
|
SHA
|
||||||
|
SMS
|
||||||
|
Struct
|
||||||
|
TCP
|
||||||
|
TLS
|
||||||
|
TTL
|
||||||
|
UDP
|
||||||
|
URI
|
||||||
|
XMLs
|
||||||
|
acceptors
|
||||||
|
ack
|
||||||
|
acked
|
||||||
|
addr
|
||||||
|
api
|
||||||
|
apiserver
|
||||||
|
arg
|
||||||
|
args
|
||||||
|
async
|
||||||
|
attr
|
||||||
|
auth
|
||||||
|
authenticator
|
||||||
|
authenticators
|
||||||
|
authn
|
||||||
|
authz
|
||||||
|
autoclean
|
||||||
|
autoheal
|
||||||
|
backend
|
||||||
|
backends
|
||||||
|
backoff
|
||||||
|
backplane
|
||||||
|
backtrace
|
||||||
|
badarg
|
||||||
|
badkey
|
||||||
|
bcrypt
|
||||||
|
behaviour
|
||||||
|
bhvr
|
||||||
|
boolean
|
||||||
|
bytesize
|
||||||
|
cacert
|
||||||
|
cacertfile
|
||||||
|
certfile
|
||||||
|
ci
|
||||||
|
clientid
|
||||||
|
clientinfo
|
||||||
|
cmake
|
||||||
|
coap
|
||||||
|
conf
|
||||||
|
config
|
||||||
|
configs
|
||||||
|
confirmable
|
||||||
|
conn
|
||||||
|
connectionless
|
||||||
|
cors
|
||||||
|
cpu
|
||||||
|
ctx
|
||||||
|
customizable
|
||||||
|
desc
|
||||||
|
dir
|
||||||
|
dns
|
||||||
|
downlink
|
||||||
|
downlink
|
||||||
|
dtls
|
||||||
|
ekka
|
||||||
|
emqx
|
||||||
|
enablement
|
||||||
|
enqueue
|
||||||
|
enqueued
|
||||||
|
env
|
||||||
|
eof
|
||||||
|
epmd
|
||||||
|
erl
|
||||||
|
erts
|
||||||
|
escript
|
||||||
|
etcd
|
||||||
|
eval
|
||||||
|
exe
|
||||||
|
executables
|
||||||
|
exhook
|
||||||
|
exproto
|
||||||
|
extensibility
|
||||||
|
formatter
|
||||||
|
gRPC
|
||||||
|
github
|
||||||
|
goto
|
||||||
|
grpcbox
|
||||||
|
hocon
|
||||||
|
hoconsc
|
||||||
|
hostname
|
||||||
|
hrl
|
||||||
|
http
|
||||||
|
https
|
||||||
|
iface
|
||||||
|
img
|
||||||
|
impl
|
||||||
|
inet
|
||||||
|
inflight
|
||||||
|
ini
|
||||||
|
init
|
||||||
|
ip
|
||||||
|
ipv
|
||||||
|
jenkins
|
||||||
|
jq
|
||||||
|
kb
|
||||||
|
keepalive
|
||||||
|
libcoap
|
||||||
|
lifecycle
|
||||||
|
localhost
|
||||||
|
lwm
|
||||||
|
mnesia
|
||||||
|
mountpoint
|
||||||
|
mqueue
|
||||||
|
mria
|
||||||
|
msg
|
||||||
|
multicalls
|
||||||
|
multicasts
|
||||||
|
namespace
|
||||||
|
natively
|
||||||
|
nodelay
|
||||||
|
nodetool
|
||||||
|
nullable
|
||||||
|
num
|
||||||
|
os
|
||||||
|
params
|
||||||
|
peerhost
|
||||||
|
peername
|
||||||
|
perf
|
||||||
|
powershell
|
||||||
|
procmem
|
||||||
|
procs
|
||||||
|
progname
|
||||||
|
prometheus
|
||||||
|
proto
|
||||||
|
ps
|
||||||
|
psk
|
||||||
|
pubsub
|
||||||
|
qlen
|
||||||
|
qmode
|
||||||
|
qos
|
||||||
|
quic
|
||||||
|
ratelimit
|
||||||
|
rebar
|
||||||
|
recbuf
|
||||||
|
relup
|
||||||
|
replayq
|
||||||
|
replicant
|
||||||
|
repo
|
||||||
|
reuseaddr
|
||||||
|
rh
|
||||||
|
rlog
|
||||||
|
rootdir
|
||||||
|
rpc
|
||||||
|
runtime
|
||||||
|
sc
|
||||||
|
scalable
|
||||||
|
seg
|
||||||
|
setcookie
|
||||||
|
sharded
|
||||||
|
shareload
|
||||||
|
sn
|
||||||
|
sndbuf
|
||||||
|
sockname
|
||||||
|
sql
|
||||||
|
src
|
||||||
|
ssl
|
||||||
|
statsd
|
||||||
|
structs
|
||||||
|
subprotocol
|
||||||
|
subprotocols
|
||||||
|
superset
|
||||||
|
sys
|
||||||
|
sysmem
|
||||||
|
sysmon
|
||||||
|
tcp
|
||||||
|
ticktime
|
||||||
|
tlog
|
||||||
|
tls
|
||||||
|
tlsv
|
||||||
|
travis
|
||||||
|
trie
|
||||||
|
ttl
|
||||||
|
typerefl
|
||||||
|
udp
|
||||||
|
uid
|
||||||
|
unsub
|
||||||
|
uplink
|
||||||
|
url
|
||||||
|
utc
|
||||||
|
util
|
||||||
|
ver
|
||||||
|
vm
|
||||||
|
vsn
|
||||||
|
wakaama
|
||||||
|
websocket
|
||||||
|
ws
|
||||||
|
wss
|
||||||
|
xml
|
|
@ -0,0 +1,72 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# shellcheck disable=SC2015
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
aspell -v > /dev/null && [ "$#" -eq 1 ] || {
|
||||||
|
echo "Usage:
|
||||||
|
$(basename "$0") check
|
||||||
|
or
|
||||||
|
$(basename "$0") fix
|
||||||
|
|
||||||
|
Note: this script needs aspell to run"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
action=$1
|
||||||
|
|
||||||
|
dict_dir="$(git rev-parse --show-toplevel)/$(dirname "$0")/dict"
|
||||||
|
echo "${dict_dir}"
|
||||||
|
dict="${dict_dir}/.aspell.en"
|
||||||
|
|
||||||
|
export fail=0
|
||||||
|
|
||||||
|
aspellcmd() {
|
||||||
|
local mode
|
||||||
|
mode="${1}"
|
||||||
|
shift
|
||||||
|
aspell --mode "${mode}" --camel-case --add-filter html --add-html-skip code -p "$dict" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
local mode file typos ntypos
|
||||||
|
mode="$1"
|
||||||
|
file="$2"
|
||||||
|
|
||||||
|
echo "!! Spellchecking ${file}"
|
||||||
|
typos="$(mktemp)"
|
||||||
|
echo "!! Typos:"
|
||||||
|
aspellcmd "$mode" list < "$file" |
|
||||||
|
sort -u |
|
||||||
|
tee "$typos"
|
||||||
|
ntypos="$(wc -l "$typos")"
|
||||||
|
rm "$typos"
|
||||||
|
[ "$ntypos" = 0 ] || export fail=1
|
||||||
|
}
|
||||||
|
|
||||||
|
fix() {
|
||||||
|
local mode file
|
||||||
|
mode=$1
|
||||||
|
file=$2
|
||||||
|
|
||||||
|
aspellcmd "$mode" check "$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
case $action in
|
||||||
|
fix)
|
||||||
|
for i in $(git ls-tree -r --name-only HEAD | grep -E '_schema.erl$'); do
|
||||||
|
fix perl "$i"
|
||||||
|
done
|
||||||
|
# for i in $(git ls-tree -r --name-only HEAD | grep -E '.md$'); do
|
||||||
|
# fix markdown $i
|
||||||
|
# done
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
check markdown _build/emqx/lib/emqx_dashboard/priv/www/static/config.md
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if [ $fail -eq 1 ]; then
|
||||||
|
echo
|
||||||
|
echo "!! Bad spelling in the documentation. Run script in fix mode to resolve problems."
|
||||||
|
exit 1
|
||||||
|
fi
|
Loading…
Reference in New Issue