mirror of
https://github.com/eclipse-mosquitto/mosquitto.git
synced 2026-04-27 04:22:26 +02:00
Place client context in mosquitto_control_cmd for API simplicity
This commit is contained in:
parent
b113a041fc
commit
fe4fe0102f
|
|
@ -42,6 +42,7 @@ extern "C" {
|
|||
* ========================================================================= */
|
||||
|
||||
struct mosquitto_control_cmd{
|
||||
struct mosquitto *client;
|
||||
cJSON *j_responses;
|
||||
cJSON *j_command;
|
||||
char *correlation_data;
|
||||
|
|
@ -51,7 +52,7 @@ struct mosquitto_control_cmd{
|
|||
mosq_EXPORT void mosquitto_control_command_reply(struct mosquitto_control_cmd *cmd, const char *error);
|
||||
mosq_EXPORT void mosquitto_control_send_response(cJSON *tree, const char* topic);
|
||||
mosq_EXPORT int mosquitto_control_generic_callback(struct mosquitto_evt_control *event_data, const char *response_topic, void *userdata,
|
||||
int (*cmd_cb)(struct mosquitto_control_cmd *cmd, struct mosquitto *context, void *userdata));
|
||||
int (*cmd_cb)(struct mosquitto_control_cmd *cmd, void *userdata));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -308,7 +308,7 @@ int dynsec_clients__config_save(struct dynsec__data *data, cJSON *tree)
|
|||
}
|
||||
|
||||
|
||||
int dynsec_clients__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username, *password, *clientid = NULL;
|
||||
const char *text_name, *text_description;
|
||||
|
|
@ -450,8 +450,8 @@ int dynsec_clients__process_create(struct dynsec__data *data, struct mosquitto_c
|
|||
|
||||
mosquitto_control_command_reply(cmd, NULL);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | createClient | username=%s | password=%s",
|
||||
admin_clientid, admin_username, username, password?"*****":"no password");
|
||||
|
||||
|
|
@ -459,7 +459,7 @@ int dynsec_clients__process_create(struct dynsec__data *data, struct mosquitto_c
|
|||
}
|
||||
|
||||
|
||||
int dynsec_clients__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username;
|
||||
struct dynsec__client *client;
|
||||
|
|
@ -481,8 +481,8 @@ int dynsec_clients__process_delete(struct dynsec__data *data, struct mosquitto_c
|
|||
/* Enforce any changes */
|
||||
dynsec_kicklist__add(data, username);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | deleteClient | username=%s",
|
||||
admin_clientid, admin_username, username);
|
||||
|
||||
|
|
@ -493,7 +493,7 @@ int dynsec_clients__process_delete(struct dynsec__data *data, struct mosquitto_c
|
|||
}
|
||||
}
|
||||
|
||||
int dynsec_clients__process_disable(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_disable(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username;
|
||||
struct dynsec__client *client;
|
||||
|
|
@ -521,8 +521,8 @@ int dynsec_clients__process_disable(struct dynsec__data *data, struct mosquitto_
|
|||
dynsec__config_batch_save(data);
|
||||
mosquitto_control_command_reply(cmd, NULL);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | disableClient | username=%s",
|
||||
admin_clientid, admin_username, username);
|
||||
|
||||
|
|
@ -530,7 +530,7 @@ int dynsec_clients__process_disable(struct dynsec__data *data, struct mosquitto_
|
|||
}
|
||||
|
||||
|
||||
int dynsec_clients__process_enable(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_enable(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username;
|
||||
struct dynsec__client *client;
|
||||
|
|
@ -556,8 +556,8 @@ int dynsec_clients__process_enable(struct dynsec__data *data, struct mosquitto_c
|
|||
dynsec__config_batch_save(data);
|
||||
mosquitto_control_command_reply(cmd, NULL);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | enableClient | username=%s",
|
||||
admin_clientid, admin_username, username);
|
||||
|
||||
|
|
@ -565,7 +565,7 @@ int dynsec_clients__process_enable(struct dynsec__data *data, struct mosquitto_c
|
|||
}
|
||||
|
||||
|
||||
int dynsec_clients__process_set_id(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_set_id(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username, *clientid;
|
||||
char *clientid_heap = NULL;
|
||||
|
|
@ -619,8 +619,8 @@ int dynsec_clients__process_set_id(struct dynsec__data *data, struct mosquitto_c
|
|||
/* Enforce any changes */
|
||||
dynsec_kicklist__add(data, username);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | setClientId | username=%s | clientid=%s",
|
||||
admin_clientid, admin_username, username, client->clientid);
|
||||
|
||||
|
|
@ -641,7 +641,7 @@ static int client__set_password(struct dynsec__client *client, const char *passw
|
|||
}
|
||||
}
|
||||
|
||||
int dynsec_clients__process_set_password(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_set_password(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username, *password;
|
||||
struct dynsec__client *client;
|
||||
|
|
@ -679,8 +679,8 @@ int dynsec_clients__process_set_password(struct dynsec__data *data, struct mosqu
|
|||
/* Enforce any changes */
|
||||
dynsec_kicklist__add(data, username);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | setClientPassword | username=%s | password=******",
|
||||
admin_clientid, admin_username, username);
|
||||
}else{
|
||||
|
|
@ -708,7 +708,7 @@ static void client__remove_all_roles(struct dynsec__client *client)
|
|||
}
|
||||
}
|
||||
|
||||
int dynsec_clients__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username;
|
||||
char *clientid = NULL;
|
||||
|
|
@ -875,8 +875,8 @@ int dynsec_clients__process_modify(struct dynsec__data *data, struct mosquitto_c
|
|||
/* Enforce any changes */
|
||||
dynsec_kicklist__add(data, username);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | modifyClient | username=%s",
|
||||
admin_clientid, admin_username, username);
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
|
|
@ -1005,7 +1005,7 @@ static cJSON *add_client_to_json(struct dynsec__client *client, bool verbose)
|
|||
}
|
||||
|
||||
|
||||
int dynsec_clients__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username;
|
||||
struct dynsec__client *client;
|
||||
|
|
@ -1052,8 +1052,8 @@ int dynsec_clients__process_get(struct dynsec__data *data, struct mosquitto_cont
|
|||
cJSON_AddItemToObject(j_data, "client", j_client);
|
||||
cJSON_AddItemToArray(cmd->j_responses, tree);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | getClient | username=%s",
|
||||
admin_clientid, admin_username, username);
|
||||
|
||||
|
|
@ -1061,7 +1061,7 @@ int dynsec_clients__process_get(struct dynsec__data *data, struct mosquitto_cont
|
|||
}
|
||||
|
||||
|
||||
int dynsec_clients__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
bool verbose;
|
||||
struct dynsec__client *client, *client_tmp;
|
||||
|
|
@ -1113,8 +1113,8 @@ int dynsec_clients__process_list(struct dynsec__data *data, struct mosquitto_con
|
|||
}
|
||||
cJSON_AddItemToArray(cmd->j_responses, tree);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | listClients | verbose=%s | count=%d | offset=%d",
|
||||
admin_clientid, admin_username, verbose?"true":"false", count, offset);
|
||||
|
||||
|
|
@ -1122,7 +1122,7 @@ int dynsec_clients__process_list(struct dynsec__data *data, struct mosquitto_con
|
|||
}
|
||||
|
||||
|
||||
int dynsec_clients__process_add_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_add_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username, *rolename;
|
||||
struct dynsec__client *client;
|
||||
|
|
@ -1171,8 +1171,8 @@ int dynsec_clients__process_add_role(struct dynsec__data *data, struct mosquitto
|
|||
/* Enforce any changes */
|
||||
dynsec_kicklist__add(data, username);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | addClientRole | username=%s | rolename=%s | priority=%d",
|
||||
admin_clientid, admin_username, username, rolename, priority);
|
||||
|
||||
|
|
@ -1180,7 +1180,7 @@ int dynsec_clients__process_add_role(struct dynsec__data *data, struct mosquitto
|
|||
}
|
||||
|
||||
|
||||
int dynsec_clients__process_remove_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_clients__process_remove_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username, *rolename;
|
||||
struct dynsec__client *client;
|
||||
|
|
@ -1225,8 +1225,8 @@ int dynsec_clients__process_remove_role(struct dynsec__data *data, struct mosqui
|
|||
/* Enforce any changes */
|
||||
dynsec_kicklist__add(data, username);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | removeClientRole | username=%s | rolename=%s",
|
||||
admin_clientid, admin_username, username, rolename);
|
||||
|
||||
|
|
|
|||
|
|
@ -35,80 +35,80 @@ Contributors:
|
|||
|
||||
#define RESPONSE_TOPIC "$CONTROL/dynamic-security/v1/response"
|
||||
|
||||
static int dynsec__handle_command(struct mosquitto_control_cmd *cmd, struct mosquitto *context, void *userdata)
|
||||
static int dynsec__handle_command(struct mosquitto_control_cmd *cmd, void *userdata)
|
||||
{
|
||||
struct dynsec__data *data = userdata;
|
||||
int rc = MOSQ_ERR_SUCCESS;
|
||||
|
||||
/* Plugin */
|
||||
if(!strcasecmp(cmd->command_name, "setDefaultACLAccess")){
|
||||
rc = dynsec__process_set_default_acl_access(data, cmd, context);
|
||||
rc = dynsec__process_set_default_acl_access(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "getDefaultACLAccess")){
|
||||
rc = dynsec__process_get_default_acl_access(data, cmd, context);
|
||||
rc = dynsec__process_get_default_acl_access(data, cmd);
|
||||
|
||||
/* Clients */
|
||||
}else if(!strcasecmp(cmd->command_name, "createClient")){
|
||||
rc = dynsec_clients__process_create(data, cmd, context);
|
||||
rc = dynsec_clients__process_create(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "deleteClient")){
|
||||
rc = dynsec_clients__process_delete(data, cmd, context);
|
||||
rc = dynsec_clients__process_delete(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "getClient")){
|
||||
rc = dynsec_clients__process_get(data, cmd, context);
|
||||
rc = dynsec_clients__process_get(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "listClients")){
|
||||
rc = dynsec_clients__process_list(data, cmd, context);
|
||||
rc = dynsec_clients__process_list(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "modifyClient")){
|
||||
rc = dynsec_clients__process_modify(data, cmd, context);
|
||||
rc = dynsec_clients__process_modify(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "setClientPassword")){
|
||||
rc = dynsec_clients__process_set_password(data, cmd, context);
|
||||
rc = dynsec_clients__process_set_password(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "setClientId")){
|
||||
rc = dynsec_clients__process_set_id(data, cmd, context);
|
||||
rc = dynsec_clients__process_set_id(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "addClientRole")){
|
||||
rc = dynsec_clients__process_add_role(data, cmd, context);
|
||||
rc = dynsec_clients__process_add_role(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "removeClientRole")){
|
||||
rc = dynsec_clients__process_remove_role(data, cmd, context);
|
||||
rc = dynsec_clients__process_remove_role(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "enableClient")){
|
||||
rc = dynsec_clients__process_enable(data, cmd, context);
|
||||
rc = dynsec_clients__process_enable(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "disableClient")){
|
||||
rc = dynsec_clients__process_disable(data, cmd, context);
|
||||
rc = dynsec_clients__process_disable(data, cmd);
|
||||
|
||||
/* Groups */
|
||||
}else if(!strcasecmp(cmd->command_name, "addGroupClient")){
|
||||
rc = dynsec_groups__process_add_client(data, cmd, context);
|
||||
rc = dynsec_groups__process_add_client(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "createGroup")){
|
||||
rc = dynsec_groups__process_create(data, cmd, context);
|
||||
rc = dynsec_groups__process_create(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "deleteGroup")){
|
||||
rc = dynsec_groups__process_delete(data, cmd, context);
|
||||
rc = dynsec_groups__process_delete(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "getGroup")){
|
||||
rc = dynsec_groups__process_get(data, cmd, context);
|
||||
rc = dynsec_groups__process_get(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "listGroups")){
|
||||
rc = dynsec_groups__process_list(data, cmd, context);
|
||||
rc = dynsec_groups__process_list(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "modifyGroup")){
|
||||
rc = dynsec_groups__process_modify(data, cmd, context);
|
||||
rc = dynsec_groups__process_modify(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "removeGroupClient")){
|
||||
rc = dynsec_groups__process_remove_client(data, cmd, context);
|
||||
rc = dynsec_groups__process_remove_client(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "addGroupRole")){
|
||||
rc = dynsec_groups__process_add_role(data, cmd, context);
|
||||
rc = dynsec_groups__process_add_role(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "removeGroupRole")){
|
||||
rc = dynsec_groups__process_remove_role(data, cmd, context);
|
||||
rc = dynsec_groups__process_remove_role(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "setAnonymousGroup")){
|
||||
rc = dynsec_groups__process_set_anonymous_group(data, cmd, context);
|
||||
rc = dynsec_groups__process_set_anonymous_group(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "getAnonymousGroup")){
|
||||
rc = dynsec_groups__process_get_anonymous_group(data, cmd, context);
|
||||
rc = dynsec_groups__process_get_anonymous_group(data, cmd);
|
||||
|
||||
/* Roles */
|
||||
}else if(!strcasecmp(cmd->command_name, "createRole")){
|
||||
rc = dynsec_roles__process_create(data, cmd, context);
|
||||
rc = dynsec_roles__process_create(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "getRole")){
|
||||
rc = dynsec_roles__process_get(data, cmd, context);
|
||||
rc = dynsec_roles__process_get(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "listRoles")){
|
||||
rc = dynsec_roles__process_list(data, cmd, context);
|
||||
rc = dynsec_roles__process_list(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "modifyRole")){
|
||||
rc = dynsec_roles__process_modify(data, cmd, context);
|
||||
rc = dynsec_roles__process_modify(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "deleteRole")){
|
||||
rc = dynsec_roles__process_delete(data, cmd, context);
|
||||
rc = dynsec_roles__process_delete(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "addRoleACL")){
|
||||
rc = dynsec_roles__process_add_acl(data, cmd, context);
|
||||
rc = dynsec_roles__process_add_acl(data, cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "removeRoleACL")){
|
||||
rc = dynsec_roles__process_remove_acl(data, cmd, context);
|
||||
rc = dynsec_roles__process_remove_acl(data, cmd);
|
||||
|
||||
/* Unknown */
|
||||
}else{
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ Contributors:
|
|||
|
||||
#include "dynamic_security.h"
|
||||
|
||||
int dynsec__process_set_default_acl_access(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec__process_set_default_acl_access(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
cJSON *j_actions, *j_action;
|
||||
bool allow;
|
||||
|
|
@ -46,8 +46,8 @@ int dynsec__process_set_default_acl_access(struct dynsec__data *data, struct mos
|
|||
return MOSQ_ERR_INVAL;
|
||||
}
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
|
||||
cJSON_ArrayForEach(j_action, j_actions){
|
||||
if(json_get_string(j_action, "acltype", &acltype, false) == MOSQ_ERR_SUCCESS
|
||||
|
|
@ -73,7 +73,7 @@ int dynsec__process_set_default_acl_access(struct dynsec__data *data, struct mos
|
|||
}
|
||||
|
||||
|
||||
int dynsec__process_get_default_acl_access(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec__process_get_default_acl_access(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
cJSON *tree, *jtmp, *j_data, *j_acls, *j_acl;
|
||||
const char *admin_clientid, *admin_username;
|
||||
|
|
@ -84,8 +84,8 @@ int dynsec__process_get_default_acl_access(struct dynsec__data *data, struct mos
|
|||
return MOSQ_ERR_NOMEM;
|
||||
}
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | getDefaultACLAccess",
|
||||
admin_clientid, admin_username);
|
||||
|
||||
|
|
|
|||
|
|
@ -179,8 +179,8 @@ int dynsec_control_callback(int event, void *event_data, void *userdata);
|
|||
* ################################################################ */
|
||||
|
||||
int dynsec__acl_check_callback(int event, void *event_data, void *userdata);
|
||||
int dynsec__process_set_default_acl_access(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec__process_get_default_acl_access(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec__process_set_default_acl_access(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec__process_get_default_acl_access(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
|
||||
|
||||
/* ################################################################
|
||||
|
|
@ -202,17 +202,17 @@ int dynsec_auth__basic_auth_callback(int event, void *event_data, void *userdata
|
|||
void dynsec_clients__cleanup(struct dynsec__data *data);
|
||||
int dynsec_clients__config_load(struct dynsec__data *data, cJSON *tree);
|
||||
int dynsec_clients__config_save(struct dynsec__data *data, cJSON *tree);
|
||||
int dynsec_clients__process_add_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_disable(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_enable(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_remove_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_set_id(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_set_password(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_clients__process_add_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_disable(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_enable(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_remove_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_set_id(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_clients__process_set_password(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
struct dynsec__client *dynsec_clients__find(struct dynsec__data *data, const char *username);
|
||||
|
||||
|
||||
|
|
@ -239,17 +239,17 @@ void dynsec_groups__cleanup(struct dynsec__data *data);
|
|||
int dynsec_groups__config_load(struct dynsec__data *data, cJSON *tree);
|
||||
int dynsec_groups__add_client(struct dynsec__data *data, const char *username, const char *groupname, int priority, bool update_config);
|
||||
int dynsec_groups__config_save(struct dynsec__data *data, cJSON *tree);
|
||||
int dynsec_groups__process_add_client(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_add_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_remove_client(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_remove_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_get_anonymous_group(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_set_anonymous_group(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_groups__process_add_client(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_add_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_remove_client(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_remove_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_get_anonymous_group(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__process_set_anonymous_group(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_groups__remove_client(struct dynsec__data *data, const char *username, const char *groupname, bool update_config);
|
||||
struct dynsec__group *dynsec_groups__find(struct dynsec__data *data, const char *groupname);
|
||||
|
||||
|
|
@ -275,13 +275,13 @@ void dynsec_grouplist__remove(struct dynsec__grouplist **base_grouplist, struct
|
|||
void dynsec_roles__cleanup(struct dynsec__data *data);
|
||||
int dynsec_roles__config_load(struct dynsec__data *data, cJSON *tree);
|
||||
int dynsec_roles__config_save(struct dynsec__data *data, cJSON *tree);
|
||||
int dynsec_roles__process_add_acl(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_roles__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_roles__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_roles__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_roles__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_roles__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_roles__process_remove_acl(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context);
|
||||
int dynsec_roles__process_add_acl(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_roles__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_roles__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_roles__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_roles__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_roles__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
int dynsec_roles__process_remove_acl(struct dynsec__data *data, struct mosquitto_control_cmd *cmd);
|
||||
struct dynsec__role *dynsec_roles__find(struct dynsec__data *data, const char *rolename);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ static void group__free_item(struct dynsec__data *data, struct dynsec__group *gr
|
|||
mosquitto_free(group);
|
||||
}
|
||||
|
||||
int dynsec_groups__process_add_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_add_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *groupname, *rolename;
|
||||
struct dynsec__group *group;
|
||||
|
|
@ -142,8 +142,8 @@ int dynsec_groups__process_add_role(struct dynsec__data *data, struct mosquitto_
|
|||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
|
||||
rc = dynsec_rolelist__group_add(group, role, priority);
|
||||
if(rc == MOSQ_ERR_SUCCESS){
|
||||
|
|
@ -363,7 +363,7 @@ int dynsec_groups__config_save(struct dynsec__data *data, cJSON *tree)
|
|||
}
|
||||
|
||||
|
||||
int dynsec_groups__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *groupname, *text_name, *text_description;
|
||||
struct dynsec__group *group = NULL;
|
||||
|
|
@ -438,8 +438,8 @@ int dynsec_groups__process_create(struct dynsec__data *data, struct mosquitto_co
|
|||
|
||||
HASH_ADD_INORDER(hh, data->groups, groupname, groupname_len, group, group_cmp);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | createGroup | groupname=%s",
|
||||
admin_clientid, admin_username, groupname);
|
||||
|
||||
|
|
@ -449,7 +449,7 @@ int dynsec_groups__process_create(struct dynsec__data *data, struct mosquitto_co
|
|||
}
|
||||
|
||||
|
||||
int dynsec_groups__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *groupname;
|
||||
struct dynsec__group *group;
|
||||
|
|
@ -479,8 +479,8 @@ int dynsec_groups__process_delete(struct dynsec__data *data, struct mosquitto_co
|
|||
dynsec__config_batch_save(data);
|
||||
mosquitto_control_command_reply(cmd, NULL);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | deleteGroup | groupname=%s",
|
||||
admin_clientid, admin_username, groupname);
|
||||
|
||||
|
|
@ -533,7 +533,7 @@ int dynsec_groups__add_client(struct dynsec__data *data, const char *username, c
|
|||
}
|
||||
|
||||
|
||||
int dynsec_groups__process_add_client(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_add_client(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username, *groupname;
|
||||
int rc;
|
||||
|
|
@ -562,8 +562,8 @@ int dynsec_groups__process_add_client(struct dynsec__data *data, struct mosquitt
|
|||
|
||||
rc = dynsec_groups__add_client(data, username, groupname, priority, true);
|
||||
if(rc == MOSQ_ERR_SUCCESS){
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | addGroupClient | groupname=%s | username=%s | priority=%d",
|
||||
admin_clientid, admin_username, groupname, username, priority);
|
||||
|
||||
|
|
@ -635,7 +635,7 @@ int dynsec_groups__remove_client(struct dynsec__data *data, const char *username
|
|||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
int dynsec_groups__process_remove_client(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_remove_client(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *username, *groupname;
|
||||
int rc;
|
||||
|
|
@ -661,8 +661,8 @@ int dynsec_groups__process_remove_client(struct dynsec__data *data, struct mosqu
|
|||
|
||||
rc = dynsec_groups__remove_client(data, username, groupname, true);
|
||||
if(rc == MOSQ_ERR_SUCCESS){
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | removeGroupClient | groupname=%s | username=%s",
|
||||
admin_clientid, admin_username, groupname, username);
|
||||
|
||||
|
|
@ -729,7 +729,7 @@ static cJSON *add_group_to_json(struct dynsec__group *group)
|
|||
}
|
||||
|
||||
|
||||
int dynsec_groups__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
bool verbose;
|
||||
cJSON *tree, *j_groups, *j_group, *j_data;
|
||||
|
|
@ -794,8 +794,8 @@ int dynsec_groups__process_list(struct dynsec__data *data, struct mosquitto_cont
|
|||
|
||||
cJSON_AddItemToArray(cmd->j_responses, tree);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | listGroups | verbose=%s | count=%d | offset=%d",
|
||||
admin_clientid, admin_username, verbose?"true":"false", count, offset);
|
||||
|
||||
|
|
@ -803,7 +803,7 @@ int dynsec_groups__process_list(struct dynsec__data *data, struct mosquitto_cont
|
|||
}
|
||||
|
||||
|
||||
int dynsec_groups__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *groupname;
|
||||
cJSON *tree, *j_group, *j_data;
|
||||
|
|
@ -852,8 +852,8 @@ int dynsec_groups__process_get(struct dynsec__data *data, struct mosquitto_contr
|
|||
|
||||
cJSON_AddItemToArray(cmd->j_responses, tree);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | getGroup | groupname=%s",
|
||||
admin_clientid, admin_username, groupname);
|
||||
|
||||
|
|
@ -861,7 +861,7 @@ int dynsec_groups__process_get(struct dynsec__data *data, struct mosquitto_contr
|
|||
}
|
||||
|
||||
|
||||
int dynsec_groups__process_remove_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_remove_role(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *groupname, *rolename;
|
||||
struct dynsec__group *group;
|
||||
|
|
@ -905,8 +905,8 @@ int dynsec_groups__process_remove_role(struct dynsec__data *data, struct mosquit
|
|||
/* Enforce any changes */
|
||||
group__kick_all(data, group);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | removeGroupRole | groupname=%s | rolename=%s",
|
||||
admin_clientid, admin_username, groupname, rolename);
|
||||
|
||||
|
|
@ -914,7 +914,7 @@ int dynsec_groups__process_remove_role(struct dynsec__data *data, struct mosquit
|
|||
}
|
||||
|
||||
|
||||
int dynsec_groups__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *groupname = NULL;
|
||||
char *text_name = NULL, *text_description = NULL;
|
||||
|
|
@ -1045,8 +1045,8 @@ int dynsec_groups__process_modify(struct dynsec__data *data, struct mosquitto_co
|
|||
/* Enforce any changes - kick any clients in the *new* group */
|
||||
group__kick_all(data, group);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | modifyGroup | groupname=%s",
|
||||
admin_clientid, admin_username, groupname);
|
||||
|
||||
|
|
@ -1056,8 +1056,8 @@ error:
|
|||
mosquitto_free(text_description);
|
||||
dynsec_rolelist__cleanup(&rolelist);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | modifyGroup | groupname=%s",
|
||||
admin_clientid, admin_username, groupname);
|
||||
|
||||
|
|
@ -1065,7 +1065,7 @@ error:
|
|||
}
|
||||
|
||||
|
||||
int dynsec_groups__process_set_anonymous_group(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_set_anonymous_group(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *groupname;
|
||||
struct dynsec__group *group = NULL;
|
||||
|
|
@ -1094,15 +1094,15 @@ int dynsec_groups__process_set_anonymous_group(struct dynsec__data *data, struct
|
|||
/* Enforce any changes */
|
||||
dynsec_kicklist__add(data, NULL);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | setAnonymousGroup | groupname=%s",
|
||||
admin_clientid, admin_username, groupname);
|
||||
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
int dynsec_groups__process_get_anonymous_group(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_groups__process_get_anonymous_group(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
cJSON *tree, *j_data, *j_group;
|
||||
const char *groupname;
|
||||
|
|
@ -1134,8 +1134,8 @@ int dynsec_groups__process_get_anonymous_group(struct dynsec__data *data, struct
|
|||
|
||||
cJSON_AddItemToArray(cmd->j_responses, tree);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | getAnonymousGroup",
|
||||
admin_clientid, admin_username);
|
||||
|
||||
|
|
|
|||
|
|
@ -338,7 +338,7 @@ int dynsec_roles__config_load(struct dynsec__data *data, cJSON *tree)
|
|||
}
|
||||
|
||||
|
||||
int dynsec_roles__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_roles__process_create(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *rolename;
|
||||
const char *text_name, *text_description;
|
||||
|
|
@ -432,8 +432,8 @@ int dynsec_roles__process_create(struct dynsec__data *data, struct mosquitto_con
|
|||
|
||||
mosquitto_control_command_reply(cmd, NULL);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | createRole | rolename=%s",
|
||||
admin_clientid, admin_username, rolename);
|
||||
|
||||
|
|
@ -471,7 +471,7 @@ static void role__remove_all_groups(struct dynsec__data *data, struct dynsec__ro
|
|||
}
|
||||
}
|
||||
|
||||
int dynsec_roles__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_roles__process_delete(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *rolename;
|
||||
struct dynsec__role *role;
|
||||
|
|
@ -494,8 +494,8 @@ int dynsec_roles__process_delete(struct dynsec__data *data, struct mosquitto_con
|
|||
dynsec__config_batch_save(data);
|
||||
mosquitto_control_command_reply(cmd, NULL);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | deleteRole | rolename=%s",
|
||||
admin_clientid, admin_username, rolename);
|
||||
|
||||
|
|
@ -539,7 +539,7 @@ static cJSON *add_role_to_json(struct dynsec__role *role, bool verbose)
|
|||
return j_role;
|
||||
}
|
||||
|
||||
int dynsec_roles__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_roles__process_list(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
bool verbose;
|
||||
struct dynsec__role *role, *role_tmp = NULL;
|
||||
|
|
@ -592,8 +592,8 @@ int dynsec_roles__process_list(struct dynsec__data *data, struct mosquitto_contr
|
|||
|
||||
cJSON_AddItemToArray(cmd->j_responses, tree);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | listRoles | verbose=%s | count=%d | offset=%d",
|
||||
admin_clientid, admin_username, verbose?"true":"false", count, offset);
|
||||
|
||||
|
|
@ -601,7 +601,7 @@ int dynsec_roles__process_list(struct dynsec__data *data, struct mosquitto_contr
|
|||
}
|
||||
|
||||
|
||||
int dynsec_roles__process_add_acl(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_roles__process_add_acl(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *rolename;
|
||||
struct dynsec__role *role;
|
||||
|
|
@ -686,8 +686,8 @@ int dynsec_roles__process_add_acl(struct dynsec__data *data, struct mosquitto_co
|
|||
|
||||
role__kick_all(data, role);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | addRoleACL | rolename=%s | acltype=%s | topic=%s | priority=%d | allow=%s",
|
||||
admin_clientid, admin_username, rolename, acltype, topic, acl->priority, acl->allow?"true":"false");
|
||||
|
||||
|
|
@ -695,7 +695,7 @@ int dynsec_roles__process_add_acl(struct dynsec__data *data, struct mosquitto_co
|
|||
}
|
||||
|
||||
|
||||
int dynsec_roles__process_remove_acl(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_roles__process_remove_acl(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *rolename;
|
||||
struct dynsec__role *role;
|
||||
|
|
@ -763,8 +763,8 @@ int dynsec_roles__process_remove_acl(struct dynsec__data *data, struct mosquitto
|
|||
|
||||
role__kick_all(data, role);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | removeRoleACL | rolename=%s | acltype=%s | topic=%s",
|
||||
admin_clientid, admin_username, rolename, acltype, topic);
|
||||
|
||||
|
|
@ -776,7 +776,7 @@ int dynsec_roles__process_remove_acl(struct dynsec__data *data, struct mosquitto
|
|||
}
|
||||
|
||||
|
||||
int dynsec_roles__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_roles__process_get(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *rolename;
|
||||
struct dynsec__role *role;
|
||||
|
|
@ -823,8 +823,8 @@ int dynsec_roles__process_get(struct dynsec__data *data, struct mosquitto_contro
|
|||
cJSON_AddItemToObject(j_data, "role", j_role);
|
||||
cJSON_AddItemToArray(cmd->j_responses, tree);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | getRole | rolename=%s",
|
||||
admin_clientid, admin_username, rolename);
|
||||
|
||||
|
|
@ -832,7 +832,7 @@ int dynsec_roles__process_get(struct dynsec__data *data, struct mosquitto_contro
|
|||
}
|
||||
|
||||
|
||||
int dynsec_roles__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
int dynsec_roles__process_modify(struct dynsec__data *data, struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
const char *rolename;
|
||||
const char *text_name, *text_description;
|
||||
|
|
@ -932,8 +932,8 @@ int dynsec_roles__process_modify(struct dynsec__data *data, struct mosquitto_con
|
|||
|
||||
mosquitto_control_command_reply(cmd, NULL);
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "dynsec: %s/%s | modifyRole | rolename=%s",
|
||||
admin_clientid, admin_username, rolename);
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ Contributors:
|
|||
|
||||
static mosquitto_plugin_id_t plg_id;
|
||||
|
||||
static int broker__handle_control(struct mosquitto_control_cmd *cmd, struct mosquitto *context, void *userdata);
|
||||
static int broker__handle_control(struct mosquitto_control_cmd *cmd, void *userdata);
|
||||
|
||||
static int add_plugin_info(cJSON *j_plugins, mosquitto_plugin_id_t *pid)
|
||||
{
|
||||
|
|
@ -77,7 +77,7 @@ static int add_plugin_info(cJSON *j_plugins, mosquitto_plugin_id_t *pid)
|
|||
}
|
||||
|
||||
|
||||
static int broker__process_list_plugins(struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
static int broker__process_list_plugins(struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
cJSON *tree, *j_data, *j_plugins;
|
||||
const char *admin_clientid, *admin_username;
|
||||
|
|
@ -89,8 +89,8 @@ static int broker__process_list_plugins(struct mosquitto_control_cmd *cmd, struc
|
|||
return MOSQ_ERR_NOMEM;
|
||||
}
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "Broker: %s/%s | listPlugins",
|
||||
admin_clientid, admin_username);
|
||||
|
||||
|
|
@ -164,7 +164,7 @@ static int add_listener(cJSON *j_listeners, struct mosquitto__listener *listener
|
|||
}
|
||||
|
||||
|
||||
static int broker__process_list_listeners(struct mosquitto_control_cmd *cmd, struct mosquitto *context)
|
||||
static int broker__process_list_listeners(struct mosquitto_control_cmd *cmd)
|
||||
{
|
||||
cJSON *tree, *j_data, *j_listeners;
|
||||
const char *admin_clientid, *admin_username;
|
||||
|
|
@ -176,8 +176,8 @@ static int broker__process_list_listeners(struct mosquitto_control_cmd *cmd, str
|
|||
return MOSQ_ERR_NOMEM;
|
||||
}
|
||||
|
||||
admin_clientid = mosquitto_client_id(context);
|
||||
admin_username = mosquitto_client_username(context);
|
||||
admin_clientid = mosquitto_client_id(cmd->client);
|
||||
admin_username = mosquitto_client_username(cmd->client);
|
||||
mosquitto_log_printf(MOSQ_LOG_INFO, "Broker: %s/%s | listListeners",
|
||||
admin_clientid, admin_username);
|
||||
|
||||
|
|
@ -250,16 +250,16 @@ void broker_control__reload(void)
|
|||
* #
|
||||
* ################################################################ */
|
||||
|
||||
static int broker__handle_control(struct mosquitto_control_cmd *cmd, struct mosquitto *context, void *userdata)
|
||||
static int broker__handle_control(struct mosquitto_control_cmd *cmd, void *userdata)
|
||||
{
|
||||
int rc = MOSQ_ERR_SUCCESS;
|
||||
|
||||
UNUSED(userdata);
|
||||
|
||||
if(!strcasecmp(cmd->command_name, "listPlugins")){
|
||||
rc = broker__process_list_plugins(cmd, context);
|
||||
rc = broker__process_list_plugins(cmd);
|
||||
}else if(!strcasecmp(cmd->command_name, "listListeners")){
|
||||
rc = broker__process_list_listeners(cmd, context);
|
||||
rc = broker__process_list_listeners(cmd);
|
||||
|
||||
/* Unknown */
|
||||
}else{
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ void mosquitto_control_send_response(cJSON *tree, const char *topic)
|
|||
}
|
||||
|
||||
|
||||
static int control__generic_handle_commands(struct mosquitto_control_cmd *cmd, struct mosquitto *context, cJSON *commands, void *userdata, int (*cmd_cb)(struct mosquitto_control_cmd *cmd, struct mosquitto *context, void *userdata))
|
||||
static int control__generic_handle_commands(struct mosquitto_control_cmd *cmd, cJSON *commands, void *userdata, int (*cmd_cb)(struct mosquitto_control_cmd *cmd, void *userdata))
|
||||
{
|
||||
cJSON *aiter, *j_tmp;
|
||||
const char *command;
|
||||
|
|
@ -69,7 +69,7 @@ static int control__generic_handle_commands(struct mosquitto_control_cmd *cmd, s
|
|||
}
|
||||
}
|
||||
|
||||
cmd_cb(cmd, context, userdata);
|
||||
cmd_cb(cmd, userdata);
|
||||
}else{
|
||||
mosquitto_control_command_reply(cmd, "Missing command");
|
||||
return MOSQ_ERR_INVAL;
|
||||
|
|
@ -83,7 +83,7 @@ static int control__generic_handle_commands(struct mosquitto_control_cmd *cmd, s
|
|||
}
|
||||
|
||||
int mosquitto_control_generic_callback(struct mosquitto_evt_control *event_data, const char *response_topic, void *userdata,
|
||||
int (*cmd_cb)(struct mosquitto_control_cmd *cmd, struct mosquitto *context, void *userdata))
|
||||
int (*cmd_cb)(struct mosquitto_control_cmd *cmd, void *userdata))
|
||||
|
||||
{
|
||||
struct mosquitto_evt_control *ed = event_data;
|
||||
|
|
@ -97,6 +97,7 @@ int mosquitto_control_generic_callback(struct mosquitto_evt_control *event_data,
|
|||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.command_name = "Unknown command";
|
||||
cmd.client = ed->client;
|
||||
|
||||
/* Create object for responses */
|
||||
j_response_tree = cJSON_CreateObject();
|
||||
|
|
@ -132,7 +133,7 @@ int mosquitto_control_generic_callback(struct mosquitto_evt_control *event_data,
|
|||
}
|
||||
|
||||
/* Handle commands */
|
||||
control__generic_handle_commands(&cmd, ed->client, commands, userdata, cmd_cb);
|
||||
control__generic_handle_commands(&cmd, commands, userdata, cmd_cb);
|
||||
cJSON_Delete(tree);
|
||||
|
||||
mosquitto_control_send_response(j_response_tree, response_topic);
|
||||
|
|
|
|||
Loading…
Reference in a new issue