Add more basic auth rejection options for plugins.

pull/2346/head
Roger Light 4 years ago committed by Roger A. Light
parent 799cdead15
commit 4cb811a0b6

@ -119,12 +119,24 @@ enum mosq_err_t {
MOSQ_ERR_OVERSIZE_PACKET = 25,
MOSQ_ERR_OCSP = 26,
MOSQ_ERR_TIMEOUT = 27,
MOSQ_ERR_RETAIN_NOT_SUPPORTED = 28,
MOSQ_ERR_TOPIC_ALIAS_INVALID = 29,
MOSQ_ERR_ADMINISTRATIVE_ACTION = 30,
/* 28, 29, 30 - was internal only, moved to MQTT v5 section. */
MOSQ_ERR_ALREADY_EXISTS = 31,
MOSQ_ERR_RECEIVE_MAXIMUM_EXCEEDED = 32,
MOSQ_ERR_PLUGIN_IGNORE = 33,
MOSQ_ERR_PLUGIN_IGNORE = 32,
/* MQTT v5 direct equivalents 128-255 */
MOSQ_ERR_UNSPECIFIED = 128,
MOSQ_ERR_IMPLEMENTATION_SPECIFIC = 131,
MOSQ_ERR_CLIENT_IDENTIFIER_NOT_VALID = 133,
MOSQ_ERR_BAD_USERNAME_OR_PASSWORD = 134,
MOSQ_ERR_SERVER_UNAVAILABLE = 136,
MOSQ_ERR_SERVER_BUSY = 137,
MOSQ_ERR_BANNED = 138,
MOSQ_ERR_BAD_AUTHENTICATION_METHOD = 140,
MOSQ_ERR_RECEIVE_MAXIMUM_EXCEEDED = 147,
MOSQ_ERR_TOPIC_ALIAS_INVALID = 148,
MOSQ_ERR_ADMINISTRATIVE_ACTION = 152,
MOSQ_ERR_RETAIN_NOT_SUPPORTED = 154,
MOSQ_ERR_CONNECTION_RATE_EXCEEDED = 159,
};
/* Option values */

@ -982,7 +982,22 @@ int handle__connect(struct mosquitto *context)
}else{
send__connack(context, 0, CONNACK_REFUSED_NOT_AUTHORIZED, NULL);
}
rc = MOSQ_ERR_AUTH;
goto handle_connect_error;
break;
case MOSQ_ERR_UNSPECIFIED:
case MOSQ_ERR_IMPLEMENTATION_SPECIFIC:
case MOSQ_ERR_CLIENT_IDENTIFIER_NOT_VALID:
case MOSQ_ERR_BAD_USERNAME_OR_PASSWORD:
case MOSQ_ERR_SERVER_UNAVAILABLE:
case MOSQ_ERR_SERVER_BUSY:
case MOSQ_ERR_BANNED:
case MOSQ_ERR_BAD_AUTHENTICATION_METHOD:
case MOSQ_ERR_CONNECTION_RATE_EXCEEDED:
if(context->protocol == mosq_p_mqtt5){
send__connack(context, 0, (uint8_t)rc, NULL);
}else{
send__connack(context, 0, CONNACK_REFUSED_NOT_AUTHORIZED, NULL);
}
goto handle_connect_error;
break;
default:

@ -372,6 +372,33 @@ void do_disconnect(struct mosquitto *context, int reason)
case MOSQ_ERR_RECEIVE_MAXIMUM_EXCEEDED:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected due to exceeding the receive maximum.", id);
break;
case MOSQ_ERR_IMPLEMENTATION_SPECIFIC:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, implementation specific error.", id);
break;
case MOSQ_ERR_CLIENT_IDENTIFIER_NOT_VALID:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, client identifier not valid.", id);
break;
case MOSQ_ERR_BAD_USERNAME_OR_PASSWORD:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, bad username or password.", id);
break;
case MOSQ_ERR_SERVER_UNAVAILABLE:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, server unavailable.", id);
break;
case MOSQ_ERR_SERVER_BUSY:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, server busy.", id);
break;
case MOSQ_ERR_BANNED:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, client banned.", id);
break;
case MOSQ_ERR_BAD_AUTHENTICATION_METHOD:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, bad authentication method.", id);
break;
case MOSQ_ERR_QUOTA_EXCEEDED:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, quota exceeded.", id);
break;
case MOSQ_ERR_CONNECTION_RATE_EXCEEDED:
log__printf(NULL, MOSQ_LOG_NOTICE, "Client %s disconnected, connection rate exceeded.", id);
break;
default:
log__printf(NULL, MOSQ_LOG_NOTICE, "Bad socket read/write on client %s: %s", id, mosquitto_strerror(reason));
break;
@ -388,5 +415,3 @@ void do_disconnect(struct mosquitto *context, int reason)
context__disconnect(context);
}
}

Loading…
Cancel
Save