* create emqx creds for host on pull if not found

* create emqx creds for host on pull if not found.

* emqx creds creation changed to host authenticate function

* emqx creds creation changed to host authenticate function.

* added node acls update

* added node acls update.
This commit is contained in:
Farukh Khan 2023-11-27 17:54:21 +08:00 committed by GitHub
parent 1d7299cbb3
commit 99adc96f72
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -478,6 +478,27 @@ func authenticateHost(response http.ResponseWriter, request *http.Request) {
logic.ReturnErrorResponse(response, request, errorResponse)
return
}
// Create EMQX creds and ACLs if not found
if servercfg.GetBrokerType() == servercfg.EmqxBrokerType {
if err := mq.CreateEmqxUser(host.ID.String(), host.HostPass, false); err != nil {
slog.Error("failed to create host credentials for EMQX: ", err.Error())
} else {
if err := mq.CreateHostACL(host.ID.String(), servercfg.GetServerInfo().Server); err != nil {
slog.Error("failed to add host ACL rules to EMQX: ", err.Error())
}
for _, nodeID := range host.Nodes {
if node, err := logic.GetNodeByID(nodeID); err == nil {
if err = mq.AppendNodeUpdateACL(host.ID.String(), node.Network, node.ID.String(), servercfg.GetServer()); err != nil {
slog.Error("failed to add ACLs for EMQX node", "error", err)
}
} else {
slog.Error("failed to get node", "nodeid", nodeID, "error", err)
}
}
}
}
response.WriteHeader(http.StatusOK)
response.Header().Set("Content-Type", "application/json")
response.Write(successJSONResponse)