部署文件更新
@@ -89,7 +89,6 @@ services:
|
||||
volumes:
|
||||
- /var/data/nginx/vue:/usr/share/nginx/html
|
||||
- /var/data/nginx/h5:/usr/share/nginx/h5
|
||||
- /var/data/nginx/www:/usr/share/nginx/www
|
||||
- /var/data/nginx/ssl:/usr/share/nginx/ssl
|
||||
- /var/data/nginx/nginx.conf:/etc/nginx/nginx.conf
|
||||
- /var/data/nginx:/var/log/nginx
|
||||
|
||||
@@ -1,133 +0,0 @@
|
||||
##--------------------------------------------------------------------
|
||||
## HTTP Auth/ACL Plugin
|
||||
##--------------------------------------------------------------------
|
||||
|
||||
|
||||
##------------------------------------------------------------------------------
|
||||
## SSL options
|
||||
|
||||
## Path to the file containing PEM-encoded CA certificates. The CA certificates
|
||||
## are used during server authentication and when building the client certificate chain.
|
||||
##
|
||||
## Value: File
|
||||
## auth.http.ssl.cacertfile = /etc/emqx/certs/ca.pem
|
||||
|
||||
## The path to a file containing the client's certificate.
|
||||
##
|
||||
## Value: File
|
||||
## auth.http.ssl.certfile = /etc/emqx/certs/client-cert.pem
|
||||
|
||||
## Path to a file containing the client's private PEM-encoded key.
|
||||
##
|
||||
## Value: File
|
||||
## auth.http.ssl.keyfile = /etc/emqx/certs/client-key.pem
|
||||
|
||||
##--------------------------------------------------------------------
|
||||
## HTTP Request Headers
|
||||
##
|
||||
## Example: auth.http.header.Accept-Encoding = *
|
||||
##
|
||||
## Value: String
|
||||
## auth.http.header.Accept = */*
|
||||
|
||||
##--------------------------------------------------------------------
|
||||
## Authentication request.
|
||||
##
|
||||
## Variables:
|
||||
## - %u: username
|
||||
## - %c: clientid
|
||||
## - %a: ipaddress
|
||||
## - %r: protocol
|
||||
## - %P: password
|
||||
## - %p: sockport of server accepted
|
||||
## - %C: common name of client TLS cert
|
||||
## - %d: subject of client TLS cert
|
||||
##
|
||||
## Value: URL
|
||||
auth.http.auth_req = http://java:8080/iot/tool/mqtt/auth
|
||||
## Value: post | get | put
|
||||
auth.http.auth_req.method = post
|
||||
## Value: Params
|
||||
auth.http.auth_req.params = clientid=%c,username=%u,password=%P
|
||||
|
||||
##--------------------------------------------------------------------
|
||||
## Superuser request.
|
||||
##
|
||||
## Variables:
|
||||
## - %u: username
|
||||
## - %c: clientid
|
||||
## - %a: ipaddress
|
||||
## - %r: protocol
|
||||
## - %P: password
|
||||
## - %p: sockport of server accepted
|
||||
## - %C: common name of client TLS cert
|
||||
## - %d: subject of client TLS cert
|
||||
##
|
||||
## Value: URL
|
||||
# auth.http.super_req = http://127.0.0.1:8991/mqtt/superuser
|
||||
## Value: post | get | put
|
||||
# auth.http.super_req.method = post
|
||||
## Value: Params
|
||||
# auth.http.super_req.params = clientid=%c,username=%u
|
||||
|
||||
##--------------------------------------------------------------------
|
||||
## ACL request.
|
||||
##
|
||||
## Variables:
|
||||
## - %A: 1 | 2, 1 = sub, 2 = pub
|
||||
## - %u: username
|
||||
## - %c: clientid
|
||||
## - %a: ipaddress
|
||||
## - %r: protocol
|
||||
## - %m: mountpoint
|
||||
## - %t: topic
|
||||
##
|
||||
## Value: URL
|
||||
# auth.http.acl_req = http://127.0.0.1:8991/mqtt/acl
|
||||
## Value: post | get | put
|
||||
# auth.http.acl_req.method = get
|
||||
## Value: Params
|
||||
# auth.http.acl_req.params = access=%A,username=%u,clientid=%c,ipaddr=%a,topic=%t,mountpoint=%m
|
||||
|
||||
##------------------------------------------------------------------------------
|
||||
## Http Reqeust options
|
||||
|
||||
## Time-out time for the http request, 0 is never timeout.
|
||||
##
|
||||
## Value: Duration
|
||||
## -h: hour, e.g. '2h' for 2 hours
|
||||
## -m: minute, e.g. '5m' for 5 minutes
|
||||
## -s: second, e.g. '30s' for 30 seconds
|
||||
##
|
||||
## Default: 0
|
||||
## auth.http.request.timeout = 0
|
||||
|
||||
## Connection time-out time, used during the initial request
|
||||
## when the client is connecting to the server
|
||||
##
|
||||
## Value: Duration
|
||||
##
|
||||
## Default is same with the timeout option
|
||||
## auth.http.request.connect_timout = 0
|
||||
|
||||
## Re-send http reuqest times
|
||||
##
|
||||
## Value: integer
|
||||
##
|
||||
## Default: 3
|
||||
auth.http.request.retry_times = 3
|
||||
|
||||
## The interval for re-sending the http request
|
||||
##
|
||||
## Value: Duration
|
||||
##
|
||||
## Default: 1s
|
||||
auth.http.request.retry_interval = 1s
|
||||
|
||||
## The 'Exponential Backoff' mechanism for re-sending request. The actually
|
||||
## re-send time interval is `interval * backoff ^ times`
|
||||
##
|
||||
## Value: float
|
||||
##
|
||||
## Default: 2.0
|
||||
auth.http.request.retry_backoff = 2.0
|
||||
@@ -1,22 +0,0 @@
|
||||
|
||||
web.hook.api.url = http://java:8080/iot/tool/mqtt/webhook
|
||||
|
||||
## Encode message payload field
|
||||
##
|
||||
## Value: base64 | base62
|
||||
##
|
||||
## Default: undefined
|
||||
## web.hook.encode_payload = base64
|
||||
|
||||
# web.hook.rule.client.connect.1 = {"action": "on_client_connect"}
|
||||
# web.hook.rule.client.connack.1 = {"action": "on_client_connack"}
|
||||
web.hook.rule.client.connected.1 = {"action": "on_client_connected"}
|
||||
web.hook.rule.client.disconnected.1 = {"action": "on_client_disconnected"}
|
||||
# web.hook.rule.client.subscribe.1 = {"action": "on_client_subscribe"}
|
||||
# web.hook.rule.client.unsubscribe.1 = {"action": "on_client_unsubscribe"}
|
||||
# web.hook.rule.session.subscribed.1 = {"action": "on_session_subscribed"}
|
||||
# web.hook.rule.session.unsubscribed.1 = {"action": "on_session_unsubscribed"}
|
||||
# web.hook.rule.session.terminated.1 = {"action": "on_session_terminated"}
|
||||
# web.hook.rule.message.publish.1 = {"action": "on_message_publish"}
|
||||
# web.hook.rule.message.delivered.1 = {"action": "on_message_delivered"}
|
||||
# web.hook.rule.message.acked.1 = {"action": "on_message_acked"}
|
||||
@@ -1,8 +0,0 @@
|
||||
{emqx_management, true}.
|
||||
{emqx_recon, true}.
|
||||
{emqx_retainer, true}.
|
||||
{emqx_dashboard, true}.
|
||||
{emqx_rule_engine, true}.
|
||||
{emqx_auth_http,true}.
|
||||
{emqx_web_hook,true}.
|
||||
{emqx_bridge_mqtt, false}.
|
||||
@@ -1,32 +0,0 @@
|
||||
%%--------------------------------------------------------------------
|
||||
%% -type(ipaddr() :: {ipaddr, string()}).
|
||||
%%
|
||||
%% -type(ipaddrs() :: {ipaddrs, string()}).
|
||||
%%
|
||||
%% -type(username() :: {user | username, string()} | {user | username, {re, regex()}}).
|
||||
%%
|
||||
%% -type(clientid() :: {client | clientid, string()} | {client | clientid, {re, regex()}}).
|
||||
%%
|
||||
%% -type(who() :: ipaddr() | ipaddrs() |username() | clientid() |
|
||||
%% {'and', [ipaddr() | ipaddrs()| username() | clientid()]} |
|
||||
%% {'or', [ipaddr() | ipaddrs()| username() | clientid()]} |
|
||||
%% all).
|
||||
%%
|
||||
%% -type(action() :: subscribe | publish | all).
|
||||
%%
|
||||
%% -type(topic_filters() :: string()).
|
||||
%%
|
||||
%% -type(topics() :: [topic_filters() | {eq, topic_filters()}]).
|
||||
%%
|
||||
%% -type(permission() :: allow | deny).
|
||||
%%
|
||||
%% -type(rule() :: {permission(), who(), access(), topics()} | {permission(), all}).
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
{allow, {username, {re, "^dashboard$"}}, subscribe, ["$SYS/#"]}.
|
||||
|
||||
{allow, {ipaddr, "127.0.0.1"}, all, ["$SYS/#", "#"]}.
|
||||
|
||||
{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.
|
||||
|
||||
{allow, all}.
|
||||
@@ -1,92 +0,0 @@
|
||||
## NOTE:
|
||||
## This config file overrides data/configs/cluster.hocon,
|
||||
## and is merged with environment variables which start with 'EMQX_' prefix.
|
||||
##
|
||||
## Config changes made from EMQX dashboard UI, management HTTP API, or CLI
|
||||
## are stored in data/configs/cluster.hocon.
|
||||
## To avoid confusion, please do not store the same configs in both files.
|
||||
##
|
||||
## See https://docs.emqx.com/en/enterprise/v5.0/configuration/configuration.html
|
||||
## Configuration full example can be found in emqx.conf.example
|
||||
|
||||
node {
|
||||
name = "emqx@177.7.0.12"
|
||||
cookie = "emqxsecretcookie"
|
||||
data_dir = "data"
|
||||
}
|
||||
|
||||
cluster {
|
||||
name = emqxcl
|
||||
discovery_strategy = manual
|
||||
}
|
||||
|
||||
|
||||
dashboard {
|
||||
listeners.http {
|
||||
bind = 18083
|
||||
}
|
||||
default_username = "admin"
|
||||
default_password = "admin123"
|
||||
}
|
||||
|
||||
authorization {
|
||||
deny_action = ignore
|
||||
no_match = allow
|
||||
cache = { enable = true }
|
||||
}
|
||||
|
||||
|
||||
## http 认证
|
||||
authentication = [
|
||||
{
|
||||
mechanism = password_based
|
||||
backend = http
|
||||
enable = true
|
||||
method = post
|
||||
url = "http://java:8080/iot/tool/mqtt/authv5"
|
||||
body {
|
||||
clientid = "${clientid}"
|
||||
username = "${username}"
|
||||
password = "${password}"
|
||||
peerhost = "${peerhost}"
|
||||
}
|
||||
headers {
|
||||
"Content-Type" = "application/json"
|
||||
"X-Request-Source" = "EMQX"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
# WebHook(匹配上线和下线规则后触发)
|
||||
bridges {
|
||||
webhook.fastbee_hook =
|
||||
{
|
||||
enable = true
|
||||
connect_timeout = 15s
|
||||
retry_interval = 60s
|
||||
pool_type = random
|
||||
pool_size = 8
|
||||
enable_pipelining = 100
|
||||
max_retries = 2
|
||||
request_timeout = 15s
|
||||
method = post
|
||||
url = "http://java:8080/iot/tool/mqtt/webhookv5"
|
||||
body = "{\"clientid\" : \"${clientid}\",\"event\" : \"${event}\",\"peername\" : \"${peername}\"}"
|
||||
headers = { accept = "application/json" "cache-control" = "no-cache" connection = "keep-alive" "content-type" = "application/json" "keep-alive" = "timeout=5"}
|
||||
}
|
||||
}
|
||||
|
||||
# 规则(处理上线和下线)
|
||||
rule_engine {
|
||||
ignore_sys_message = true
|
||||
jq_function_default_timeout = 10s
|
||||
rules.fastbee_rule =
|
||||
{
|
||||
sql = "SELECT * FROM \"t/#\",\"$events/client_connected\", \"$events/client_disconnected\", \"$events/session_subscribed\""
|
||||
actions = ["webhook:fastbee_hook"]
|
||||
enable = true
|
||||
description = "处理设备上下线和订阅完主题的规则"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |