Disallow writing to $ topics where appropriate.
parent
1d4bf55165
commit
6a1ac70ee6
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Test whether a SUBSCRIBE to $SYS or $share succeeds
|
||||
|
||||
from mosq_test_helper import *
|
||||
|
||||
def do_test(proto_ver):
|
||||
rc = 1
|
||||
keepalive = 60
|
||||
connect_packet = mosq_test.gen_connect("subscribe-test", keepalive=keepalive, proto_ver=proto_ver)
|
||||
connack_packet = mosq_test.gen_connack(rc=0, proto_ver=proto_ver)
|
||||
|
||||
mid = 1
|
||||
subscribe1_packet = mosq_test.gen_subscribe(mid, "$SYS/broker/missing", 0, proto_ver=proto_ver)
|
||||
suback1_packet = mosq_test.gen_suback(mid, 0, proto_ver=proto_ver)
|
||||
|
||||
mid = 2
|
||||
subscribe2_packet = mosq_test.gen_subscribe(mid, "$share/share/#", 0, proto_ver=proto_ver)
|
||||
suback2_packet = mosq_test.gen_suback(mid, 0, proto_ver=proto_ver)
|
||||
|
||||
port = mosq_test.get_port()
|
||||
broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port)
|
||||
|
||||
try:
|
||||
sock = mosq_test.do_client_connect(connect_packet, connack_packet, port=port)
|
||||
mosq_test.do_send_receive(sock, subscribe1_packet, suback1_packet, "suback1")
|
||||
mosq_test.do_send_receive(sock, subscribe2_packet, suback2_packet, "suback2")
|
||||
|
||||
rc = 0
|
||||
|
||||
sock.close()
|
||||
finally:
|
||||
broker.terminate()
|
||||
broker.wait()
|
||||
(stdo, stde) = broker.communicate()
|
||||
if rc:
|
||||
print(stde)
|
||||
exit(rc)
|
||||
|
||||
do_test(4)
|
||||
do_test(5)
|
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Test whether a PUBLISH to $ topics QoS 1 results in the expected PUBACK packet.
|
||||
|
||||
from mosq_test_helper import *
|
||||
|
||||
mid = 1
|
||||
def helper(topic, reason_code):
|
||||
global mid
|
||||
|
||||
publish_packet = mosq_test.gen_publish(topic, qos=1, mid=mid, payload="message", proto_ver=5)
|
||||
if reason_code == 0:
|
||||
puback_packet = mosq_test.gen_puback(mid, proto_ver=5)
|
||||
else:
|
||||
puback_packet = mosq_test.gen_puback(mid, proto_ver=5, reason_code=reason_code)
|
||||
sock = mosq_test.do_client_connect(connect_packet, connack_packet, port=port)
|
||||
mosq_test.do_send_receive(sock, publish_packet, puback_packet, "puback%d"%(mid))
|
||||
|
||||
|
||||
rc = 1
|
||||
keepalive = 60
|
||||
connect_packet = mosq_test.gen_connect("pub-test", keepalive=keepalive, proto_ver=5)
|
||||
connack_packet = mosq_test.gen_connack(rc=0, proto_ver=5)
|
||||
|
||||
port = mosq_test.get_port()
|
||||
broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port)
|
||||
|
||||
try:
|
||||
sock = mosq_test.do_client_connect(connect_packet, connack_packet, port=port)
|
||||
helper("$SYS/broker/uptime", mqtt5_rc.MQTT_RC_NOT_AUTHORIZED)
|
||||
helper("$SYS/broker/connection/me", mqtt5_rc.MQTT_RC_NOT_AUTHORIZED)
|
||||
helper("$SYS/broker/connection/me/state", 0)
|
||||
helper("$share/share/topic", mqtt5_rc.MQTT_RC_NOT_AUTHORIZED)
|
||||
|
||||
rc = 0
|
||||
|
||||
sock.close()
|
||||
finally:
|
||||
broker.terminate()
|
||||
broker.wait()
|
||||
(stdo, stde) = broker.communicate()
|
||||
if rc:
|
||||
print(stde)
|
||||
|
||||
exit(rc)
|
||||
|
@ -0,0 +1,46 @@
|
||||
MQTT_RC_SUCCESS = 0
|
||||
MQTT_RC_NORMAL_DISCONNECTION = 0
|
||||
MQTT_RC_GRANTED_QOS0 = 0
|
||||
MQTT_RC_GRANTED_QOS1 = 1
|
||||
MQTT_RC_GRANTED_QOS2 = 2
|
||||
MQTT_RC_DISCONNECT_WITH_WILL_MSG = 4
|
||||
MQTT_RC_NO_MATCHING_SUBSCRIBERS = 16
|
||||
MQTT_RC_NO_SUBSCRIPTION_EXISTED = 17
|
||||
MQTT_RC_CONTINUE_AUTHENTICATION = 24
|
||||
MQTT_RC_REAUTHENTICATE = 25
|
||||
|
||||
MQTT_RC_UNSPECIFIED = 128
|
||||
MQTT_RC_MALFORMED_PACKET = 129
|
||||
MQTT_RC_PROTOCOL_ERROR = 130
|
||||
MQTT_RC_IMPLEMENTATION_SPECIFIC = 131
|
||||
MQTT_RC_UNSUPPORTED_PROTOCOL_VERSION = 132
|
||||
MQTT_RC_CLIENTID_NOT_VALID = 133
|
||||
MQTT_RC_BAD_USERNAME_OR_PASSWORD = 134
|
||||
MQTT_RC_NOT_AUTHORIZED = 135
|
||||
MQTT_RC_SERVER_UNAVAILABLE = 136
|
||||
MQTT_RC_SERVER_BUSY = 137
|
||||
MQTT_RC_BANNED = 138
|
||||
MQTT_RC_SERVER_SHUTTING_DOWN = 139
|
||||
MQTT_RC_BAD_AUTHENTICATION_METHOD = 140
|
||||
MQTT_RC_KEEP_ALIVE_TIMEOUT = 141
|
||||
MQTT_RC_SESSION_TAKEN_OVER = 142
|
||||
MQTT_RC_TOPIC_FILTER_INVALID = 143
|
||||
MQTT_RC_TOPIC_NAME_INVALID = 144
|
||||
MQTT_RC_PACKET_ID_IN_USE = 145
|
||||
MQTT_RC_PACKET_ID_NOT_FOUND = 146
|
||||
MQTT_RC_RECEIVE_MAXIMUM_EXCEEDED = 147
|
||||
MQTT_RC_TOPIC_ALIAS_INVALID = 148
|
||||
MQTT_RC_PACKET_TOO_LARGE = 149
|
||||
MQTT_RC_MESSAGE_RATE_TOO_HIGH = 150
|
||||
MQTT_RC_QUOTA_EXCEEDED = 151
|
||||
MQTT_RC_ADMINISTRATIVE_ACTION = 152
|
||||
MQTT_RC_PAYLOAD_FORMAT_INVALID = 153
|
||||
MQTT_RC_RETAIN_NOT_SUPPORTED = 154
|
||||
MQTT_RC_QOS_NOT_SUPPORTED = 155
|
||||
MQTT_RC_USE_ANOTHER_SERVER = 156
|
||||
MQTT_RC_SERVER_MOVED = 157
|
||||
MQTT_RC_SHARED_SUBS_NOT_SUPPORTED = 158
|
||||
MQTT_RC_CONNECTION_RATE_EXCEEDED = 159
|
||||
MQTT_RC_MAXIMUM_CONNECT_TIME = 160
|
||||
MQTT_RC_SUBSCRIPTION_IDS_NOT_SUPPORTED = 161
|
||||
MQTT_RC_WILDCARD_SUBS_NOT_SUPPORTED = 162
|
Loading…
Reference in New Issue