Move unpwd to security_options struct.

This commit is contained in:
Roger A. Light 2020-08-18 15:20:48 +01:00
parent 581e843131
commit b66ffb8039
3 changed files with 17 additions and 21 deletions

View File

@ -137,7 +137,7 @@ int db__open(struct mosquitto__config *config, struct mosquitto_db *db)
retain__init(db); retain__init(db);
db->unpwd = NULL; db->config->security_options.unpwd = NULL;
#ifdef WITH_PERSISTENCE #ifdef WITH_PERSISTENCE
if(persist__restore(db)) return 1; if(persist__restore(db)) return 1;

View File

@ -219,6 +219,8 @@ struct mosquitto__security_options {
* in config__read() with regards whether allow_anonymous * in config__read() with regards whether allow_anonymous
* should be disabled when these options are set. * should be disabled when these options are set.
*/ */
struct mosquitto__unpwd *unpwd;
struct mosquitto__unpwd *psk_id;
struct mosquitto__acl_user *acl_list; struct mosquitto__acl_user *acl_list;
struct mosquitto__acl *acl_patterns; struct mosquitto__acl *acl_patterns;
char *password_file; char *password_file;
@ -271,8 +273,6 @@ struct mosquitto__listener {
struct libwebsocket_protocols *ws_protocol; struct libwebsocket_protocols *ws_protocol;
#endif #endif
struct mosquitto__security_options security_options; struct mosquitto__security_options security_options;
struct mosquitto__unpwd *unpwd;
struct mosquitto__unpwd *psk_id;
#ifdef WITH_UNIX_SOCKETS #ifdef WITH_UNIX_SOCKETS
char *unix_socket_path; char *unix_socket_path;
#endif #endif
@ -458,8 +458,6 @@ struct mosquitto_db{
dbid_t last_db_id; dbid_t last_db_id;
struct mosquitto__subhier *subs; struct mosquitto__subhier *subs;
struct mosquitto__retainhier *retains; struct mosquitto__retainhier *retains;
struct mosquitto__unpwd *unpwd;
struct mosquitto__unpwd *psk_id;
struct mosquitto *contexts_by_id; struct mosquitto *contexts_by_id;
struct mosquitto *contexts_by_sock; struct mosquitto *contexts_by_sock;
struct mosquitto *contexts_for_free; struct mosquitto *contexts_for_free;

View File

@ -54,7 +54,7 @@ int mosquitto_security_init_default(struct mosquitto_db *db, bool reload)
for(i=0; i<db->config->listener_count; i++){ for(i=0; i<db->config->listener_count; i++){
pwf = db->config->listeners[i].security_options.password_file; pwf = db->config->listeners[i].security_options.password_file;
if(pwf){ if(pwf){
rc = unpwd__file_parse(&db->config->listeners[i].unpwd, pwf); rc = unpwd__file_parse(&db->config->listeners[i].security_options.unpwd, pwf);
if(rc){ if(rc){
log__printf(NULL, MOSQ_LOG_ERR, "Error opening password file \"%s\".", pwf); log__printf(NULL, MOSQ_LOG_ERR, "Error opening password file \"%s\".", pwf);
return rc; return rc;
@ -65,7 +65,7 @@ int mosquitto_security_init_default(struct mosquitto_db *db, bool reload)
if(db->config->security_options.password_file){ if(db->config->security_options.password_file){
pwf = db->config->security_options.password_file; pwf = db->config->security_options.password_file;
if(pwf){ if(pwf){
rc = unpwd__file_parse(&db->unpwd, pwf); rc = unpwd__file_parse(&db->config->security_options.unpwd, pwf);
if(rc){ if(rc){
log__printf(NULL, MOSQ_LOG_ERR, "Error opening password file \"%s\".", pwf); log__printf(NULL, MOSQ_LOG_ERR, "Error opening password file \"%s\".", pwf);
return rc; return rc;
@ -100,7 +100,7 @@ int mosquitto_security_init_default(struct mosquitto_db *db, bool reload)
for(i=0; i<db->config->listener_count; i++){ for(i=0; i<db->config->listener_count; i++){
pskf = db->config->listeners[i].security_options.psk_file; pskf = db->config->listeners[i].security_options.psk_file;
if(pskf){ if(pskf){
rc = psk__file_parse(db, &db->config->listeners[i].psk_id, pskf); rc = psk__file_parse(db, &db->config->listeners[i].security_options.psk_id, pskf);
if(rc){ if(rc){
log__printf(NULL, MOSQ_LOG_ERR, "Error opening psk file \"%s\".", pskf); log__printf(NULL, MOSQ_LOG_ERR, "Error opening psk file \"%s\".", pskf);
return rc; return rc;
@ -110,7 +110,7 @@ int mosquitto_security_init_default(struct mosquitto_db *db, bool reload)
}else{ }else{
char *pskf = db->config->security_options.psk_file; char *pskf = db->config->security_options.psk_file;
if(pskf){ if(pskf){
rc = psk__file_parse(db, &db->psk_id, pskf); rc = psk__file_parse(db, &db->config->security_options.psk_id, pskf);
if(rc){ if(rc){
log__printf(NULL, MOSQ_LOG_ERR, "Error opening psk file \"%s\".", pskf); log__printf(NULL, MOSQ_LOG_ERR, "Error opening psk file \"%s\".", pskf);
return rc; return rc;
@ -129,22 +129,22 @@ int mosquitto_security_cleanup_default(struct mosquitto_db *db, bool reload)
rc = acl__cleanup(db, reload); rc = acl__cleanup(db, reload);
if(rc != MOSQ_ERR_SUCCESS) return rc; if(rc != MOSQ_ERR_SUCCESS) return rc;
rc = unpwd__cleanup(&db->unpwd, reload); rc = unpwd__cleanup(&db->config->security_options.unpwd, reload);
if(rc != MOSQ_ERR_SUCCESS) return rc; if(rc != MOSQ_ERR_SUCCESS) return rc;
for(i=0; i<db->config->listener_count; i++){ for(i=0; i<db->config->listener_count; i++){
if(db->config->listeners[i].unpwd){ if(db->config->listeners[i].security_options.unpwd){
rc = unpwd__cleanup(&db->config->listeners[i].unpwd, reload); rc = unpwd__cleanup(&db->config->listeners[i].security_options.unpwd, reload);
if(rc != MOSQ_ERR_SUCCESS) return rc; if(rc != MOSQ_ERR_SUCCESS) return rc;
} }
} }
rc = unpwd__cleanup(&db->psk_id, reload); rc = unpwd__cleanup(&db->config->security_options.psk_id, reload);
if(rc != MOSQ_ERR_SUCCESS) return rc; if(rc != MOSQ_ERR_SUCCESS) return rc;
for(i=0; i<db->config->listener_count; i++){ for(i=0; i<db->config->listener_count; i++){
if(db->config->listeners[i].psk_id){ if(db->config->listeners[i].security_options.psk_id){
rc = unpwd__cleanup(&db->config->listeners[i].psk_id, reload); rc = unpwd__cleanup(&db->config->listeners[i].security_options.psk_id, reload);
if(rc != MOSQ_ERR_SUCCESS) return rc; if(rc != MOSQ_ERR_SUCCESS) return rc;
} }
} }
@ -903,11 +903,11 @@ int mosquitto_unpwd_check_default(struct mosquitto_db *db, struct mosquitto *con
if(context->bridge) return MOSQ_ERR_SUCCESS; if(context->bridge) return MOSQ_ERR_SUCCESS;
if(!context->listener) return MOSQ_ERR_INVAL; if(!context->listener) return MOSQ_ERR_INVAL;
if(context->listener->security_options.password_file == NULL) return MOSQ_ERR_PLUGIN_DEFER; if(context->listener->security_options.password_file == NULL) return MOSQ_ERR_PLUGIN_DEFER;
unpwd_ref = context->listener->unpwd; unpwd_ref = context->listener->security_options.unpwd;
allow_anonymous = context->listener->security_options.allow_anonymous; allow_anonymous = context->listener->security_options.allow_anonymous;
}else{ }else{
if(db->config->security_options.password_file == NULL) return MOSQ_ERR_PLUGIN_DEFER; if(db->config->security_options.password_file == NULL) return MOSQ_ERR_PLUGIN_DEFER;
unpwd_ref = db->unpwd; unpwd_ref = db->config->security_options.unpwd;
allow_anonymous = db->config->security_options.allow_anonymous; allow_anonymous = db->config->security_options.allow_anonymous;
} }
if(context->username == NULL){ if(context->username == NULL){
@ -1207,11 +1207,9 @@ int mosquitto_psk_key_get_default(struct mosquitto_db *db, struct mosquitto *con
if(db->config->per_listener_settings){ if(db->config->per_listener_settings){
if(!context->listener) return MOSQ_ERR_INVAL; if(!context->listener) return MOSQ_ERR_INVAL;
if(!context->listener->psk_id) return MOSQ_ERR_PLUGIN_DEFER; psk_id_ref = context->listener->security_options.psk_id;
psk_id_ref = context->listener->psk_id;
}else{ }else{
if(!db->psk_id) return MOSQ_ERR_PLUGIN_DEFER; psk_id_ref = db->config->security_options.psk_id;
psk_id_ref = db->psk_id;
} }
if(!psk_id_ref) return MOSQ_ERR_PLUGIN_DEFER; if(!psk_id_ref) return MOSQ_ERR_PLUGIN_DEFER;