mirror of
https://github.com/eclipse-mosquitto/mosquitto.git
synced 2026-09-24 00:54:01 +08:00
Rename auth_plugin -> plugin.
This commit is contained in:
@@ -148,8 +148,8 @@ static int broker__process_get_plugin_info(cJSON *j_responses, struct mosquitto
|
||||
goto internal_error;
|
||||
}
|
||||
|
||||
for(i=0; i<db.config->security_options.auth_plugin_config_count; i++){
|
||||
if(add_plugin_info(j_plugins, db.config->security_options.auth_plugin_configs[i].plugin.identifier)){
|
||||
for(i=0; i<db.config->security_options.plugin_config_count; i++){
|
||||
if(add_plugin_info(j_plugins, db.config->security_options.plugin_configs[i].plugin.identifier)){
|
||||
goto internal_error;
|
||||
}
|
||||
}
|
||||
|
||||
+32
-32
@@ -222,11 +222,11 @@ static void config__init_reload(struct mosquitto__config *config)
|
||||
static void config__cleanup_plugins(struct mosquitto__config *config)
|
||||
{
|
||||
int i, j;
|
||||
struct mosquitto__auth_plugin_config *plug;
|
||||
struct mosquitto__plugin_config *plug;
|
||||
|
||||
if(config->security_options.auth_plugin_configs){
|
||||
for(i=0; i<config->security_options.auth_plugin_config_count; i++){
|
||||
plug = &config->security_options.auth_plugin_configs[i];
|
||||
if(config->security_options.plugin_configs){
|
||||
for(i=0; i<config->security_options.plugin_config_count; i++){
|
||||
plug = &config->security_options.plugin_configs[i];
|
||||
mosquitto__free(plug->path);
|
||||
plug->path = NULL;
|
||||
|
||||
@@ -240,8 +240,8 @@ static void config__cleanup_plugins(struct mosquitto__config *config)
|
||||
plug->option_count = 0;
|
||||
}
|
||||
}
|
||||
mosquitto__free(config->security_options.auth_plugin_configs);
|
||||
config->security_options.auth_plugin_configs = NULL;
|
||||
mosquitto__free(config->security_options.plugin_configs);
|
||||
config->security_options.plugin_configs = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -501,7 +501,7 @@ int config__parse_args(struct mosquitto__config *config, int argc, char *argv[])
|
||||
|| config->default_listener.socket_domain
|
||||
|| config->default_listener.security_options.password_file
|
||||
|| config->default_listener.security_options.psk_file
|
||||
|| config->default_listener.security_options.auth_plugin_config_count
|
||||
|| config->default_listener.security_options.plugin_config_count
|
||||
|| config->default_listener.security_options.allow_zero_length_clientid != true
|
||||
){
|
||||
|
||||
@@ -560,8 +560,8 @@ int config__parse_args(struct mosquitto__config *config, int argc, char *argv[])
|
||||
config->listeners[config->listener_count-1].security_options.acl_file = config->default_listener.security_options.acl_file;
|
||||
config->listeners[config->listener_count-1].security_options.password_file = config->default_listener.security_options.password_file;
|
||||
config->listeners[config->listener_count-1].security_options.psk_file = config->default_listener.security_options.psk_file;
|
||||
config->listeners[config->listener_count-1].security_options.auth_plugin_configs = config->default_listener.security_options.auth_plugin_configs;
|
||||
config->listeners[config->listener_count-1].security_options.auth_plugin_config_count = config->default_listener.security_options.auth_plugin_config_count;
|
||||
config->listeners[config->listener_count-1].security_options.plugin_configs = config->default_listener.security_options.plugin_configs;
|
||||
config->listeners[config->listener_count-1].security_options.plugin_config_count = config->default_listener.security_options.plugin_config_count;
|
||||
config->listeners[config->listener_count-1].security_options.allow_anonymous = config->default_listener.security_options.allow_anonymous;
|
||||
config->listeners[config->listener_count-1].security_options.allow_zero_length_clientid = config->default_listener.security_options.allow_zero_length_clientid;
|
||||
}
|
||||
@@ -798,7 +798,7 @@ static int config__read_file_core(struct mosquitto__config *config, bool reload,
|
||||
char *tmp_char;
|
||||
struct mosquitto__bridge *cur_bridge = NULL;
|
||||
#endif
|
||||
struct mosquitto__auth_plugin_config *cur_auth_plugin_config = NULL;
|
||||
struct mosquitto__plugin_config *cur_plugin_config = NULL;
|
||||
|
||||
time_t expiration_mult;
|
||||
char *key;
|
||||
@@ -931,8 +931,8 @@ static int config__read_file_core(struct mosquitto__config *config, bool reload,
|
||||
if(conf__parse_bool(&token, "allow_zero_length_clientid", &cur_security_options->allow_zero_length_clientid, &saveptr)) return MOSQ_ERR_INVAL;
|
||||
}else if(!strncmp(token, "auth_opt_", strlen("auth_opt_")) || !strncmp(token, "plugin_opt_", strlen("plugin_opt_"))){
|
||||
if(reload) continue; /* Auth plugin not currently valid for reloading. */
|
||||
if(!cur_auth_plugin_config){
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: An auth_opt_ option exists in the config file without an auth_plugin.");
|
||||
if(!cur_plugin_config){
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: A plugin_opt_ option exists in the config file without a plugin.");
|
||||
return MOSQ_ERR_INVAL;
|
||||
}
|
||||
if(!strncmp(token, "auth_opt_", strlen("auth_opt_"))){
|
||||
@@ -942,7 +942,7 @@ static int config__read_file_core(struct mosquitto__config *config, bool reload,
|
||||
}
|
||||
if(strlen(token) < prefix_len + 3){
|
||||
/* auth_opt_ == 9, + one digit key == 10, + one space == 11, + one value == 12 */
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: Invalid auth_opt_ config option.");
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: Invalid plugin_opt_ config option.");
|
||||
return MOSQ_ERR_INVAL;
|
||||
}
|
||||
key = mosquitto__strdup(&token[prefix_len]);
|
||||
@@ -959,16 +959,16 @@ static int config__read_file_core(struct mosquitto__config *config, bool reload,
|
||||
token++;
|
||||
}
|
||||
if(token[0]){
|
||||
cur_auth_plugin_config->option_count++;
|
||||
cur_auth_plugin_config->options = mosquitto__realloc(cur_auth_plugin_config->options, (size_t)cur_auth_plugin_config->option_count*sizeof(struct mosquitto_auth_opt));
|
||||
if(!cur_auth_plugin_config->options){
|
||||
cur_plugin_config->option_count++;
|
||||
cur_plugin_config->options = mosquitto__realloc(cur_plugin_config->options, (size_t)cur_plugin_config->option_count*sizeof(struct mosquitto_auth_opt));
|
||||
if(!cur_plugin_config->options){
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: Out of memory.");
|
||||
mosquitto__free(key);
|
||||
return MOSQ_ERR_NOMEM;
|
||||
}
|
||||
cur_auth_plugin_config->options[cur_auth_plugin_config->option_count-1].key = key;
|
||||
cur_auth_plugin_config->options[cur_auth_plugin_config->option_count-1].value = mosquitto__strdup(token);
|
||||
if(!cur_auth_plugin_config->options[cur_auth_plugin_config->option_count-1].value){
|
||||
cur_plugin_config->options[cur_plugin_config->option_count-1].key = key;
|
||||
cur_plugin_config->options[cur_plugin_config->option_count-1].value = mosquitto__strdup(token);
|
||||
if(!cur_plugin_config->options[cur_plugin_config->option_count-1].value){
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: Out of memory.");
|
||||
return MOSQ_ERR_NOMEM;
|
||||
}
|
||||
@@ -985,26 +985,26 @@ static int config__read_file_core(struct mosquitto__config *config, bool reload,
|
||||
conf__set_cur_security_options(config, cur_listener, &cur_security_options);
|
||||
}
|
||||
|
||||
cur_security_options->auth_plugin_configs = mosquitto__realloc(cur_security_options->auth_plugin_configs, (size_t)(cur_security_options->auth_plugin_config_count+1)*sizeof(struct mosquitto__auth_plugin_config));
|
||||
if(!cur_security_options->auth_plugin_configs){
|
||||
cur_security_options->plugin_configs = mosquitto__realloc(cur_security_options->plugin_configs, (size_t)(cur_security_options->plugin_config_count+1)*sizeof(struct mosquitto__plugin_config));
|
||||
if(!cur_security_options->plugin_configs){
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: Out of memory.");
|
||||
return MOSQ_ERR_NOMEM;
|
||||
}
|
||||
cur_auth_plugin_config = &cur_security_options->auth_plugin_configs[cur_security_options->auth_plugin_config_count];
|
||||
memset(cur_auth_plugin_config, 0, sizeof(struct mosquitto__auth_plugin_config));
|
||||
cur_auth_plugin_config->path = NULL;
|
||||
cur_auth_plugin_config->options = NULL;
|
||||
cur_auth_plugin_config->option_count = 0;
|
||||
cur_auth_plugin_config->deny_special_chars = true;
|
||||
cur_security_options->auth_plugin_config_count++;
|
||||
if(conf__parse_string(&token, "auth_plugin", &cur_auth_plugin_config->path, &saveptr)) return MOSQ_ERR_INVAL;
|
||||
cur_plugin_config = &cur_security_options->plugin_configs[cur_security_options->plugin_config_count];
|
||||
memset(cur_plugin_config, 0, sizeof(struct mosquitto__plugin_config));
|
||||
cur_plugin_config->path = NULL;
|
||||
cur_plugin_config->options = NULL;
|
||||
cur_plugin_config->option_count = 0;
|
||||
cur_plugin_config->deny_special_chars = true;
|
||||
cur_security_options->plugin_config_count++;
|
||||
if(conf__parse_string(&token, "plugin", &cur_plugin_config->path, &saveptr)) return MOSQ_ERR_INVAL;
|
||||
}else if(!strcmp(token, "auth_plugin_deny_special_chars")){
|
||||
if(reload) continue; /* Auth plugin not currently valid for reloading. */
|
||||
if(!cur_auth_plugin_config){
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: An auth_plugin_deny_special_chars option exists in the config file without an auth_plugin.");
|
||||
if(!cur_plugin_config){
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: An auth_plugin_deny_special_chars option exists in the config file without a plugin.");
|
||||
return MOSQ_ERR_INVAL;
|
||||
}
|
||||
if(conf__parse_bool(&token, "auth_plugin_deny_special_chars", &cur_auth_plugin_config->deny_special_chars, &saveptr)) return MOSQ_ERR_INVAL;
|
||||
if(conf__parse_bool(&token, "auth_plugin_deny_special_chars", &cur_plugin_config->deny_special_chars, &saveptr)) return MOSQ_ERR_INVAL;
|
||||
}else if(!strcmp(token, "auto_id_prefix")){
|
||||
conf__set_cur_security_options(config, cur_listener, &cur_security_options);
|
||||
if(conf__parse_string(&token, "auto_id_prefix", &cur_security_options->auto_id_prefix, &saveptr)) return MOSQ_ERR_INVAL;
|
||||
|
||||
@@ -97,7 +97,7 @@ enum mosquitto_msg_origin{
|
||||
mosq_mo_broker = 1
|
||||
};
|
||||
|
||||
struct mosquitto__auth_plugin{
|
||||
struct mosquitto__plugin{
|
||||
void *lib;
|
||||
void *user_data;
|
||||
int (*plugin_version)(void);
|
||||
@@ -134,14 +134,14 @@ struct mosquitto__auth_plugin{
|
||||
int version;
|
||||
};
|
||||
|
||||
struct mosquitto__auth_plugin_config
|
||||
struct mosquitto__plugin_config
|
||||
{
|
||||
char *path;
|
||||
struct mosquitto_opt *options;
|
||||
int option_count;
|
||||
bool deny_special_chars;
|
||||
|
||||
struct mosquitto__auth_plugin plugin;
|
||||
struct mosquitto__plugin plugin;
|
||||
};
|
||||
|
||||
struct mosquitto__callback{
|
||||
@@ -178,8 +178,8 @@ struct mosquitto__security_options {
|
||||
char *password_file;
|
||||
char *psk_file;
|
||||
char *acl_file;
|
||||
struct mosquitto__auth_plugin_config *auth_plugin_configs;
|
||||
int auth_plugin_config_count;
|
||||
struct mosquitto__plugin_config *plugin_configs;
|
||||
int plugin_config_count;
|
||||
int8_t allow_anonymous;
|
||||
bool allow_zero_length_clientid;
|
||||
char *auto_id_prefix;
|
||||
@@ -491,7 +491,7 @@ struct mosquitto_db{
|
||||
unsigned long msg_store_bytes;
|
||||
char *config_file;
|
||||
struct mosquitto__config *config;
|
||||
int auth_plugin_count;
|
||||
int plugin_count;
|
||||
bool verbose;
|
||||
#ifdef WITH_SYS_TREE
|
||||
int subscription_count;
|
||||
@@ -829,7 +829,7 @@ void listeners__stop(void);
|
||||
/* ============================================================
|
||||
* Plugin related functions
|
||||
* ============================================================ */
|
||||
int plugin__load_v5(struct mosquitto__listener *listener, struct mosquitto__auth_plugin *plugin, struct mosquitto_opt *auth_options, int auth_option_count, void *lib);
|
||||
int plugin__load_v5(struct mosquitto__listener *listener, struct mosquitto__plugin *plugin, struct mosquitto_opt *auth_options, int auth_option_count, void *lib);
|
||||
void plugin__handle_connect(struct mosquitto *context);
|
||||
void plugin__handle_disconnect(struct mosquitto *context, int reason);
|
||||
int plugin__handle_message(struct mosquitto *context, struct mosquitto_msg_store *stored);
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ static int remove_callback(mosquitto_plugin_id_t *identifier, int event, struct
|
||||
}
|
||||
|
||||
|
||||
int plugin__load_v5(struct mosquitto__listener *listener, struct mosquitto__auth_plugin *plugin, struct mosquitto_opt *options, int option_count, void *lib)
|
||||
int plugin__load_v5(struct mosquitto__listener *listener, struct mosquitto__plugin *plugin, struct mosquitto_opt *options, int option_count, void *lib)
|
||||
{
|
||||
int rc;
|
||||
mosquitto_plugin_id_t *pid;
|
||||
|
||||
+104
-104
@@ -47,7 +47,7 @@ void LIB_ERROR(void)
|
||||
}
|
||||
|
||||
|
||||
static int security__load_v2(struct mosquitto__auth_plugin *plugin, struct mosquitto_auth_opt *auth_options, int auth_option_count, void *lib)
|
||||
static int security__load_v2(struct mosquitto__plugin *plugin, struct mosquitto_auth_opt *auth_options, int auth_option_count, void *lib)
|
||||
{
|
||||
int rc;
|
||||
|
||||
@@ -121,7 +121,7 @@ static int security__load_v2(struct mosquitto__auth_plugin *plugin, struct mosqu
|
||||
}
|
||||
|
||||
|
||||
static int security__load_v3(struct mosquitto__auth_plugin *plugin, struct mosquitto_opt *auth_options, int auth_option_count, void *lib)
|
||||
static int security__load_v3(struct mosquitto__plugin *plugin, struct mosquitto_opt *auth_options, int auth_option_count, void *lib)
|
||||
{
|
||||
int rc;
|
||||
|
||||
@@ -194,7 +194,7 @@ static int security__load_v3(struct mosquitto__auth_plugin *plugin, struct mosqu
|
||||
}
|
||||
|
||||
|
||||
static int security__load_v4(struct mosquitto__auth_plugin *plugin, struct mosquitto_opt *auth_options, int auth_option_count, void *lib)
|
||||
static int security__load_v4(struct mosquitto__plugin *plugin, struct mosquitto_opt *auth_options, int auth_option_count, void *lib)
|
||||
{
|
||||
int rc;
|
||||
|
||||
@@ -298,25 +298,25 @@ static int security__module_init_single(struct mosquitto__listener *listener, st
|
||||
const int plugin_versions[] = {5, 4, 3, 2};
|
||||
int plugin_version_count = sizeof(plugin_versions)/sizeof(int);
|
||||
|
||||
if(opts->auth_plugin_config_count == 0){
|
||||
if(opts->plugin_config_count == 0){
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
if(opts->auth_plugin_configs[i].path){
|
||||
memset(&opts->auth_plugin_configs[i].plugin, 0, sizeof(struct mosquitto__auth_plugin));
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
if(opts->plugin_configs[i].path){
|
||||
memset(&opts->plugin_configs[i].plugin, 0, sizeof(struct mosquitto__plugin));
|
||||
|
||||
log__printf(NULL, MOSQ_LOG_INFO, "Loading plugin: %s", opts->auth_plugin_configs[i].path);
|
||||
log__printf(NULL, MOSQ_LOG_INFO, "Loading plugin: %s", opts->plugin_configs[i].path);
|
||||
|
||||
lib = LIB_LOAD(opts->auth_plugin_configs[i].path);
|
||||
lib = LIB_LOAD(opts->plugin_configs[i].path);
|
||||
if(!lib){
|
||||
log__printf(NULL, MOSQ_LOG_ERR,
|
||||
"Error: Unable to load auth plugin \"%s\".", opts->auth_plugin_configs[i].path);
|
||||
"Error: Unable to load plugin \"%s\".", opts->plugin_configs[i].path);
|
||||
LIB_ERROR();
|
||||
return MOSQ_ERR_UNKNOWN;
|
||||
}
|
||||
|
||||
opts->auth_plugin_configs[i].plugin.lib = NULL;
|
||||
opts->plugin_configs[i].plugin.lib = NULL;
|
||||
if((plugin_version = (FUNC_plugin_version)LIB_SYM(lib, "mosquitto_plugin_version"))){
|
||||
version = plugin_version(plugin_version_count, plugin_versions);
|
||||
}else if((plugin_auth_version = (FUNC_auth_plugin_version)LIB_SYM(lib, "mosquitto_auth_plugin_version"))){
|
||||
@@ -328,13 +328,13 @@ static int security__module_init_single(struct mosquitto__listener *listener, st
|
||||
LIB_CLOSE(lib);
|
||||
return MOSQ_ERR_UNKNOWN;
|
||||
}
|
||||
opts->auth_plugin_configs[i].plugin.version = version;
|
||||
opts->plugin_configs[i].plugin.version = version;
|
||||
if(version == 5){
|
||||
rc = plugin__load_v5(
|
||||
listener,
|
||||
&opts->auth_plugin_configs[i].plugin,
|
||||
opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
&opts->plugin_configs[i].plugin,
|
||||
opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
lib);
|
||||
|
||||
if(rc){
|
||||
@@ -342,9 +342,9 @@ static int security__module_init_single(struct mosquitto__listener *listener, st
|
||||
}
|
||||
}else if(version == 4){
|
||||
rc = security__load_v4(
|
||||
&opts->auth_plugin_configs[i].plugin,
|
||||
opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
&opts->plugin_configs[i].plugin,
|
||||
opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
lib);
|
||||
|
||||
if(rc){
|
||||
@@ -352,9 +352,9 @@ static int security__module_init_single(struct mosquitto__listener *listener, st
|
||||
}
|
||||
}else if(version == 3){
|
||||
rc = security__load_v3(
|
||||
&opts->auth_plugin_configs[i].plugin,
|
||||
opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
&opts->plugin_configs[i].plugin,
|
||||
opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
lib);
|
||||
|
||||
if(rc){
|
||||
@@ -362,9 +362,9 @@ static int security__module_init_single(struct mosquitto__listener *listener, st
|
||||
}
|
||||
}else if(version == 2){
|
||||
rc = security__load_v2(
|
||||
&opts->auth_plugin_configs[i].plugin,
|
||||
(struct mosquitto_auth_opt *)opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
&opts->plugin_configs[i].plugin,
|
||||
(struct mosquitto_auth_opt *)opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
lib);
|
||||
|
||||
if(rc){
|
||||
@@ -406,10 +406,10 @@ static void security__module_cleanup_single(struct mosquitto__security_options *
|
||||
{
|
||||
int i;
|
||||
struct control_endpoint *ep, *tmp;
|
||||
struct mosquitto__auth_plugin_config *conf;
|
||||
struct mosquitto__plugin_config *conf;
|
||||
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
conf = &opts->auth_plugin_configs[i];
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
conf = &opts->plugin_configs[i];
|
||||
|
||||
/* Run plugin cleanup function */
|
||||
if(conf->plugin.version == 5){
|
||||
@@ -452,7 +452,7 @@ static void security__module_cleanup_single(struct mosquitto__security_options *
|
||||
if(conf->plugin.lib){
|
||||
LIB_CLOSE(conf->plugin.lib);
|
||||
}
|
||||
memset(&conf->plugin, 0, sizeof(struct mosquitto__auth_plugin));
|
||||
memset(&conf->plugin, 0, sizeof(struct mosquitto__plugin));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -490,28 +490,28 @@ static int security__init_single(struct mosquitto__security_options *opts, bool
|
||||
}
|
||||
}
|
||||
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
if(opts->auth_plugin_configs[i].plugin.version == 5){
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
if(opts->plugin_configs[i].plugin.version == 5){
|
||||
continue;
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 4){
|
||||
rc = opts->auth_plugin_configs[i].plugin.security_init_v4(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 4){
|
||||
rc = opts->plugin_configs[i].plugin.security_init_v4(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
reload);
|
||||
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 3){
|
||||
rc = opts->auth_plugin_configs[i].plugin.security_init_v3(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 3){
|
||||
rc = opts->plugin_configs[i].plugin.security_init_v3(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
reload);
|
||||
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 2){
|
||||
rc = opts->auth_plugin_configs[i].plugin.security_init_v2(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
(struct mosquitto_auth_opt *)opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 2){
|
||||
rc = opts->plugin_configs[i].plugin.security_init_v2(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
(struct mosquitto_auth_opt *)opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
reload);
|
||||
}else{
|
||||
rc = MOSQ_ERR_INVAL;
|
||||
@@ -559,28 +559,28 @@ static int security__cleanup_single(struct mosquitto__security_options *opts, bo
|
||||
int i;
|
||||
int rc;
|
||||
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
if(opts->auth_plugin_configs[i].plugin.version == 5){
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
if(opts->plugin_configs[i].plugin.version == 5){
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 4){
|
||||
rc = opts->auth_plugin_configs[i].plugin.security_cleanup_v4(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 4){
|
||||
rc = opts->plugin_configs[i].plugin.security_cleanup_v4(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
reload);
|
||||
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 3){
|
||||
rc = opts->auth_plugin_configs[i].plugin.security_cleanup_v3(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 3){
|
||||
rc = opts->plugin_configs[i].plugin.security_cleanup_v3(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
reload);
|
||||
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 2){
|
||||
rc = opts->auth_plugin_configs[i].plugin.security_cleanup_v2(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
(struct mosquitto_auth_opt *)opts->auth_plugin_configs[i].options,
|
||||
opts->auth_plugin_configs[i].option_count,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 2){
|
||||
rc = opts->plugin_configs[i].plugin.security_cleanup_v2(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
(struct mosquitto_auth_opt *)opts->plugin_configs[i].options,
|
||||
opts->plugin_configs[i].option_count,
|
||||
reload);
|
||||
}else{
|
||||
rc = MOSQ_ERR_INVAL;
|
||||
@@ -611,13 +611,13 @@ int mosquitto_security_cleanup(bool reload)
|
||||
|
||||
|
||||
/* int mosquitto_acl_check(struct mosquitto *context, const char *topic, int access) */
|
||||
static int acl__check_single(struct mosquitto__auth_plugin_config *auth_plugin, struct mosquitto *context, struct mosquitto_acl_msg *msg, int access)
|
||||
static int acl__check_single(struct mosquitto__plugin_config *plugin, struct mosquitto *context, struct mosquitto_acl_msg *msg, int access)
|
||||
{
|
||||
const char *username;
|
||||
const char *topic = msg->topic;
|
||||
|
||||
username = mosquitto_client_username(context);
|
||||
if(auth_plugin->deny_special_chars == true){
|
||||
if(plugin->deny_special_chars == true){
|
||||
/* Check whether the client id or username contains a +, # or / and if
|
||||
* so deny access.
|
||||
*
|
||||
@@ -634,21 +634,21 @@ static int acl__check_single(struct mosquitto__auth_plugin_config *auth_plugin,
|
||||
}
|
||||
}
|
||||
|
||||
if(auth_plugin->plugin.version == 4){
|
||||
if(plugin->plugin.version == 4){
|
||||
if(access == MOSQ_ACL_UNSUBSCRIBE){
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
return auth_plugin->plugin.acl_check_v4(auth_plugin->plugin.user_data, access, context, msg);
|
||||
}else if(auth_plugin->plugin.version == 3){
|
||||
return plugin->plugin.acl_check_v4(plugin->plugin.user_data, access, context, msg);
|
||||
}else if(plugin->plugin.version == 3){
|
||||
if(access == MOSQ_ACL_UNSUBSCRIBE){
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
return auth_plugin->plugin.acl_check_v3(auth_plugin->plugin.user_data, access, context, msg);
|
||||
}else if(auth_plugin->plugin.version == 2){
|
||||
return plugin->plugin.acl_check_v3(plugin->plugin.user_data, access, context, msg);
|
||||
}else if(plugin->plugin.version == 2){
|
||||
if(access == MOSQ_ACL_SUBSCRIBE || access == MOSQ_ACL_UNSUBSCRIBE){
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
return auth_plugin->plugin.acl_check_v2(auth_plugin->plugin.user_data, context->id, username, topic, access);
|
||||
return plugin->plugin.acl_check_v2(plugin->plugin.user_data, context->id, username, topic, access);
|
||||
}else{
|
||||
return MOSQ_ERR_INVAL;
|
||||
}
|
||||
@@ -792,9 +792,9 @@ int mosquitto_acl_check(struct mosquitto *context, const char *topic, uint32_t p
|
||||
msg.qos = qos;
|
||||
msg.retain = retain;
|
||||
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
if(opts->auth_plugin_configs[i].plugin.version < 5){
|
||||
rc = acl__check_single(&opts->auth_plugin_configs[i], context, &msg, access);
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
if(opts->plugin_configs[i].plugin.version < 5){
|
||||
rc = acl__check_single(&opts->plugin_configs[i], context, &msg, access);
|
||||
if(rc == MOSQ_ERR_PLUGIN_IGNORE){
|
||||
/* Do nothing, this is as if the plugin doesn't exist */
|
||||
}else if(rc == MOSQ_ERR_PLUGIN_DEFER){
|
||||
@@ -888,29 +888,29 @@ int mosquitto_unpwd_check(struct mosquitto *context)
|
||||
|
||||
|
||||
/* Old plugin checks */
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
if(opts->auth_plugin_configs[i].plugin.version == 5){
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
if(opts->plugin_configs[i].plugin.version == 5){
|
||||
continue;
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 4){
|
||||
if(opts->auth_plugin_configs[i].plugin.unpwd_check_v4){
|
||||
rc = opts->auth_plugin_configs[i].plugin.unpwd_check_v4(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 4){
|
||||
if(opts->plugin_configs[i].plugin.unpwd_check_v4){
|
||||
rc = opts->plugin_configs[i].plugin.unpwd_check_v4(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
context,
|
||||
context->username,
|
||||
context->password);
|
||||
}else{
|
||||
rc = MOSQ_ERR_PLUGIN_IGNORE;
|
||||
}
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 3){
|
||||
rc = opts->auth_plugin_configs[i].plugin.unpwd_check_v3(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 3){
|
||||
rc = opts->plugin_configs[i].plugin.unpwd_check_v3(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
context,
|
||||
context->username,
|
||||
context->password);
|
||||
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 2){
|
||||
rc = opts->auth_plugin_configs[i].plugin.unpwd_check_v2(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 2){
|
||||
rc = opts->plugin_configs[i].plugin.unpwd_check_v2(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
context->username,
|
||||
context->password);
|
||||
|
||||
@@ -1031,30 +1031,30 @@ int mosquitto_psk_key_get(struct mosquitto *context, const char *hint, const cha
|
||||
}
|
||||
|
||||
/* Old plugins */
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
if(opts->auth_plugin_configs[i].plugin.version == 4
|
||||
&& opts->auth_plugin_configs[i].plugin.psk_key_get_v4){
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
if(opts->plugin_configs[i].plugin.version == 4
|
||||
&& opts->plugin_configs[i].plugin.psk_key_get_v4){
|
||||
|
||||
rc = opts->auth_plugin_configs[i].plugin.psk_key_get_v4(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
rc = opts->plugin_configs[i].plugin.psk_key_get_v4(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
context,
|
||||
hint,
|
||||
identity,
|
||||
key,
|
||||
max_key_len);
|
||||
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 3){
|
||||
rc = opts->auth_plugin_configs[i].plugin.psk_key_get_v3(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 3){
|
||||
rc = opts->plugin_configs[i].plugin.psk_key_get_v3(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
context,
|
||||
hint,
|
||||
identity,
|
||||
key,
|
||||
max_key_len);
|
||||
|
||||
}else if(opts->auth_plugin_configs[i].plugin.version == 2){
|
||||
rc = opts->auth_plugin_configs[i].plugin.psk_key_get_v2(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
}else if(opts->plugin_configs[i].plugin.version == 2){
|
||||
rc = opts->plugin_configs[i].plugin.psk_key_get_v2(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
hint,
|
||||
identity,
|
||||
key,
|
||||
@@ -1173,13 +1173,13 @@ int mosquitto_security_auth_start(struct mosquitto *context, bool reauth, const
|
||||
}
|
||||
|
||||
/* Old plugins */
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
if(opts->auth_plugin_configs[i].plugin.auth_start_v4){
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
if(opts->plugin_configs[i].plugin.auth_start_v4){
|
||||
*data_out = NULL;
|
||||
*data_out_len = 0;
|
||||
|
||||
rc = opts->auth_plugin_configs[i].plugin.auth_start_v4(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
rc = opts->plugin_configs[i].plugin.auth_start_v4(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
context,
|
||||
context->auth_method,
|
||||
reauth,
|
||||
@@ -1275,13 +1275,13 @@ int mosquitto_security_auth_continue(struct mosquitto *context, const void *data
|
||||
}
|
||||
|
||||
/* Old plugins */
|
||||
for(i=0; i<opts->auth_plugin_config_count; i++){
|
||||
if(opts->auth_plugin_configs[i].plugin.auth_continue_v4){
|
||||
for(i=0; i<opts->plugin_config_count; i++){
|
||||
if(opts->plugin_configs[i].plugin.auth_continue_v4){
|
||||
*data_out = NULL;
|
||||
*data_out_len = 0;
|
||||
|
||||
rc = opts->auth_plugin_configs[i].plugin.auth_continue_v4(
|
||||
opts->auth_plugin_configs[i].plugin.user_data,
|
||||
rc = opts->plugin_configs[i].plugin.auth_continue_v4(
|
||||
opts->plugin_configs[i].plugin.user_data,
|
||||
context,
|
||||
context->auth_method,
|
||||
data_in, data_in_len,
|
||||
|
||||
Reference in New Issue
Block a user