Commit Graph

591 Commits (b8b1674183ae4a451677cf0320222c1c53dc7f06)

Author SHA1 Message Date
Roger A. Light ea553619fb Basic client websockets tests. 4 years ago
Roger A. Light eefafdeff7 Fix unix socket test. 4 years ago
Roger A. Light e25cb05fc9 Command arg tests. 4 years ago
Roger A. Light 1ac099ebdd More config parse errors. 4 years ago
Roger A. Light 2d045dbc85 Fix option name. 4 years ago
Roger A. Light 7bd9c5cce1 More config parse error tests. 4 years ago
Roger A. Light 5fab104467 Auth plugin v2, v3 testings. 4 years ago
Roger A. Light 4cd2f85e77 Unix socket connect test. 4 years ago
Roger A. Light aa7e09948b Start of config file parsing error tests. 4 years ago
Roger A. Light 249edc6ba2 include_dir test. 4 years ago
Roger A. Light 93ed5721e2 No need to set keepalive in most tests. 4 years ago
Roger A. Light 6e8925c062 Test fix. 4 years ago
Xavier Dooms bff71fd99f support plugin tick callbacks with per_listener_settings enabled
add tests for the plugin tick

Signed-off-by: Xavier Dooms <dooms.xavier@gmail.com>
4 years ago
Roger A. Light 0f9e5dc65d Improve test. 4 years ago
Roger A. Light 0f8733627a Plugin persistence interface. 4 years ago
Roger A. Light 2501a64035 Merge branch 'master' into develop 4 years ago
Roger A. Light affe6ece83 Add client msg int to allow easier ordering for plugins. 4 years ago
Roger A. Light 11975332d4 Fix mosquitto_topic_matches_sub2() not using the length parameters.
Closes #2364. Thanks to Jens Alfke.
4 years ago
Roger A. Light 0d0a36906c Add missing stubs. 4 years ago
Roger A. Light e09390eda6 Split db__message_insert into incoming/outgoing. 4 years ago
Roger A. Light 9ad8d943be Stored messages now always stored in a hash table. 4 years ago
Roger A. Light 786d468570 MID reuse test. 4 years ago
Roger A. Light 34b41a3b01 Dynsec: Add ability to deny wildcard subscriptions for a role 4 years ago
Roger Light dcff8dfd38 Implement plugin wrappers for v2, v3, v4
This means the internal plugin interface is simpler and is translated to each of the older interfaces if needed.
4 years ago
Roger Light 3ebc4f851c Fix test. 4 years ago
Roger A. Light a1288721ce Fix tests 4 years ago
Roger A. Light 8ac11929cc Merge branch 'master' into develop 4 years ago
Roger A. Light b9b065d2cc Compiler pedantry, and more checks in tests. 4 years ago
Roger Light 9d3f292b39 Send DISCONNECT With session-takeover return code.
This is for MQTT v5 clients when a client connects with the same client id.

Closes #2340. Thanks to hvxl.
4 years ago
Roger Light 5cae4d1d81 Fix broker sending duplicate CONNACK on failed MQTT v5 reauthentication.
Closes #2339. Thanks to hvxl.
4 years ago
Roger Light 51eda2bf79 Add more efficient keepalive check. 4 years ago
Roger A. Light 3b471c8669 Fix test 4 years ago
Roger A. Light a1a190b482 Pointless whitespace tidy. 4 years ago
Roger A. Light c28110d079 Fix test 4 years ago
Roger A. Light 56e5c52abe Fix test. 4 years ago
Roger A. Light e01542b6cf Fix test. 4 years ago
Roger A. Light 0f2f77c945 Improve idle / mux timeout performance. 4 years ago
Roger Light 07f793a108 Fix protocol checks - bridge and CONNACK responses. 4 years ago
Roger A. Light f7a57add81 Add NanoMQ crash test case. 4 years ago
Roger A. Light 7b58eee414 Fix problem parsing config files with Windows line endings.
Closes #2297. Thanks to all the people who commented there!
4 years ago
Roger A. Light 330bf6efdc Various fixes around inflight quota management.
Closes #2306. Thanks to canique.
4 years ago
Roger A. Light 7551a29985 Fix LWT messages not being delivered if `per_listener_settings` was set to true
Closes #2314. Thanks to Marc Hamel.
4 years ago
Roger A. Light 4f24ffef2f Add `disable_client_cert_date_checks` option. 4 years ago
Roger A. Light ba936a869d Add `accept_protocol_versions` option. 4 years ago
Roger A. Light f552ec48b1 Add global_max_connections option. 4 years ago
Roger A. Light 02685d49b6 Add `global_max_clients` option.
This allows limiting client sessions globally on the broker.
4 years ago
Roger A. Light 1c6d74f208 Fix test 4 years ago
Roger A. Light aa29b45e70 Merge branch 'master' into develop 4 years ago
Roger A. Light 37b5aedcb6 Fix for #575314.
Incoming QoS 2 messages that had not completed the QoS flow were not being
checked for ACL access when a clean session=False client was reconnecting.

Closes #575314.
4 years ago
Roger A. Light 9d6a73f9f7 Fix CONNECT performance with many user-properties.
An MQTT v5 client connecting with a large number of user-property properties
could cause excessive CPU usage, leading to a loss of performance and
possible denial of service. This has been fixed.
4 years ago
Roger Light 32af599c81 Fix $share subscriptions not being recovered for durable clients.
If a plugin had granted ACL subscription access to a
durable/non-clean-session client, then removed that access, the client would
keep its existing subscription. This has been fixed.
4 years ago
Roger Light ba2ca33671 Strict protocol compliance fixes, and extensive test suite. 4 years ago
Roger Light 723b5d7081 Fix listener mount_point not being removed on outgoing messages.
Closes #2244. Thanks to alflexRH.
4 years ago
Roger Light 93b2232bb9 Apply max_keepalive to MQTT v3.1.1 and v3.1 clients. 4 years ago
Roger A. Light fc4099eafa Speed up tests. 4 years ago
Roger A. Light 79542158f4 Fix `max_connections` option not being correctly counted. 4 years ago
Roger A. Light eec1ef1c55 Parallelise bridge clean session test. 4 years ago
Roger A. Light 8cd2411ab6 Tests should typically use `listener` instead of `port`. 4 years ago
Roger A. Light 49065f03a8 Merge remote-tracking branch 'origin/fixes' into develop 4 years ago
Roger A. Light 192a092d50 Add support for pattern ACLs to dynsec un/subscription ACLs. 4 years ago
Roger A. Light a02aad0a9c Add mosquitto_sub_matches_acl_with_pattern. 4 years ago
Roger A. Light 09fe737038 $share subscription with no-local not allowed.
Return protocol error if a client attemps to subscribe to a shared
subscription and also sets no-local.
4 years ago
Roger A. Light 10045394cf Easier testing with different valgrind tools. 4 years ago
Roger A. Light f90e55bd36 Reduce memory allocations when sending packets. 4 years ago
Roger A. Light e0309acebc Add mosquitto_sub_matches_acl()
This moves the sub matching sub code from the dynsec plugin to the library and broker, and removes all of the malloc calls at the same time.
4 years ago
Roger A. Light b3045d1adf Fix pattern matching with invalid prefix. 4 years ago
Roger A. Light 0cd2619401 Add %c and %u support to dynsec publish ACLs. 4 years ago
Roger A. Light 6502d6e5f4 Add mosquitto_topic_matches_sub_with_pattern()
And use it in the default security checks.
4 years ago
Roger A. Light 1ab6b28e26 Add missing test file. 4 years ago
Roger A. Light 42163634c7 Fix leak on crafted MQTT v5 CONNECT.
If a MQTT v5 client connects with a crafted CONNECT packet a memory leak
will occur.

Thanks to Kathrin Kleinhammer.
4 years ago
Roger A. Light 906a515704 Simplify client message properties, only one is used. 4 years ago
Roger A. Light fb76fd66b9 Remove some unused struct members. 4 years ago
Roger A. Light 5177dd4d40 Use random last db id, unless later overwritten by persistence. 4 years ago
Roger A. Light cb2623db47 Check whether broker should be started. 4 years ago
Roger A. Light 0d3870585b Plugin delayed authentication. 4 years ago
Roger Light 0eb7391e71 Fix tests and db_dump compilation. 4 years ago
Roger A. Light 8a03b5ad5c Function for checking if a context is connected. 4 years ago
Roger Light ef7662ca8e Merge branch 'master' into develop 4 years ago
Roger A. Light 1677bb85f4 Fix test. 5 years ago
Roger A. Light 6a4a547892 Fix segfault on client sending malformed CONNACk.
CVE-xxxx-xxxx: If an authenticated client connected with MQTT v5 sent a
malformed CONNACK message to the broker a NULL pointer dereference occurred,
most likely resulting in a segfault. This will be updated with the CVE
number when it is assigned.
Affects versions 2.0.0 to 2.0.9 inclusive.

Closes #2163. Thanks to Bryan Pearson.
5 years ago
Roger A. Light 7842323c0d Test fixes. 5 years ago
Roger A. Light de9780343b Add support for MQTT v5 broker->client topic aliases.
This is on a first-come-first-served basis for now.
Also broker to bridge topic aliases.
5 years ago
Roger A. Light 1289d23b66 Convert tests to be able to run on the same broker where possible. 5 years ago
Roger Light 4c60fad52b Enforce receive maximum on MQTT v5. 5 years ago
Roger Light fecf550cad Fix test. 5 years ago
Roger A. Light fd036b9435 Merge branch 'fixes' into develop 5 years ago
Roger A. Light e401def06d Fix QoS 0 messages not being delivered when max_queued_bytes was configured.
Closes #2123. Thanks to quackgizmo.
5 years ago
Roger A. Light 7baca428da Remove obsolete tests. 5 years ago
Roger A. Light 3f84ad006d Add `on_pre_connect()` callback.
This allows clients to update usernames/passwords/TLS parameters prior
to reconnecting.
5 years ago
Roger A. Light 706a1f3f29 Fix more minor compiler warnings. 5 years ago
Roger A. Light cf1098eff1 Send protocol error on topic alias not found.
The error topic-alias-invalid was being sent if an MQTT v5 client published
a message with empty topic and topic alias set, but the topic alias hadn't
already been configured on the broker. This has been fixed to send a
protocol error, as per section 3.3.4 of the specification.
5 years ago
Roger A. Light 3c58ac9308 Fix `message_size_limit` not applying to the Will payload.
Closes #2022. Thanks to Umberto Morelli.
5 years ago
Roger A. Light 0aecb51fcd Rename reload_type -> bridge_reload_type, plus doc updates. 5 years ago
Abilio Marques 008342c2f3 allow bridge configuration reload
Signed-off-by: Abilio Marques <abiliojr@gmail.com>
5 years ago
Roger A. Light 5e6b34f81a Fix test. 5 years ago
Roger Light 113603168b Fix LWT not being sent on client takeover.
This was not happening for the case when the existing session wasn't
being continued.

Closes #1946. Thanks to Rory Piper.
5 years ago
Roger A. Light 04c110183c Bridge support for MQTT v5 maximum-qos. 5 years ago
Roger A. Light 7d05f70fe1 Fix mosq_test.py to_string() on Python 3 5 years ago
Roger A. Light ed28c416e9 Null checks in client tests. 5 years ago
Roger A. Light 6bd45f0092 dynsec: Better test coverage 5 years ago
Roger A. Light aaf30dc622 dynsec: Fix incorrect test command. 5 years ago
Roger A. Light 31e3fa4d07 dynsec: Invalid UTF-8 tests, plus some fixes. 5 years ago
Roger A. Light c303c67461 dynsec: Return group not found on getGroup. 5 years ago
Roger A. Light ad8cf9fc03 dynsec: Start of invalid role commands tests. 5 years ago
Roger A. Light 423e1a00d2 dynsec: Tests for group commands with invalid params, plus fixes. 5 years ago
Roger A. Light 7ccf4c44fd dynsec: Tests for invalid client command input. 5 years ago
Roger A. Light f6e17b81b9 dynsec: More modifyRole test coverage. 5 years ago
Roger A. Light 6cffd4264e dynsec: ACL tests. 5 years ago
Roger A. Light d8775b7d9c dynsec: Consistent behaviour when setting clientid. 5 years ago
Roger A. Light 047c09bd32 dynsec: Anon group tests 5 years ago
Roger A. Light 2d7f146dfc These tests shouldn't allow anon access. 5 years ago
Roger A. Light 15c6e58fa0 Only run dynsec tests if CJSON and TLS are available. 5 years ago
Roger A. Light c3daa247c2 dynsec: Cover setClientId in 14-dynsec-auth test. 5 years ago
Roger A. Light c1f0cb69d1 dynsec: ACL default access test. 5 years ago
Roger A. Light 81c4e2b6ac dynsec: Commit client auth tests. 5 years ago
Roger A. Light 584cf51ba7 Update to EPL-2.0 5 years ago
Roger A. Light fdd624cec4 Fix tests now uhpa has been removed. 5 years ago
Roger A. Light f2630f9c58 Attempt to fix travis on osx and unreliable test. 5 years ago
Roger A. Light eee34613b4 Fix building of old tests. 5 years ago
Roger A. Light b816d46508 Use db as a global var instead of passing to functions.
This allows a big swath of ifdefs to be removed. It also means savings as the db var is not passed around all of the time, and makes it easier to remove the final broker call to mosquitto_time() call in packet_mosq.c. In one test this reduced the calls to mosquitto_time() from 295k to 48k.
5 years ago
Roger A. Light 255ae24a6d Fix basic dynsec tests. 5 years ago
Roger A. Light 4d9afc835b Fix missing functions in test. 5 years ago
Roger A. Light 042c2733f2 Test and fix for message expiry not increasing send quota. 5 years ago
Roger A. Light a1ad4cfcc4 Dynsec: Rename ACL types for clarity.
publishBrokerToClient -> publishClientReceive
publishClientToBroker -> publishClientSend
5 years ago
Roger A. Light e3ed8879f2 Fix test compilation. 5 years ago
Roger A. Light fdff255916 New dynamic security plugin. 5 years ago
Roger A. Light 3eb39b38da Use atomics in test. 5 years ago
Roger A. Light e104645279 msgps clients now report continuously. 5 years ago
Roger A. Light 899695261a Fix invalid character conversions in test. 5 years ago
Roger A. Light 4ae8971ce1 The broker now sends the receive-maximum property for MQTT v5 CONNACKs. 5 years ago
Roger A. Light 4f61f6c161 Fix conversion errors. 5 years ago
Roger A. Light f18f1a08a9 Merge branch 'feature/add-deny-option-for-acl' of git://github.com/BrandtHill/mosquitto into BrandtHill-feature/add-deny-option-for-acl 5 years ago
Roger A. Light c6b94f6266 Fix running of basic client tests. 5 years ago
Roger A. Light 79028bcb14 Fix duplicate frees in tests. 5 years ago
Roger A. Light a65f946e83 Move headers to own directory. 5 years ago
Roger A. Light c90e49af1b Merge remote-tracking branch 'origin/fixes' into develop 5 years ago
Roger A. Light 54b9571516 Enable TLS with certfile+keyfile, not capath/cafile. 5 years ago
Roger A. Light cf1c156765 New plugin interface
This is not specific to authentication, and allows plugins greater flexibility in what events they are interested in. It also adds message handling, and $CONTROL handling.
5 years ago
Roger A. Light 97bd527df0 Breaking: allow_anonymous defaults to false. 5 years ago
Roger A. Light 1b269270bc Sort failed tests when reporting. 5 years ago
Roger A. Light 4372a2b925 Default test timeout of 60s by default is too long. 5 years ago
Roger A. Light f87ef68fae Detect closed socket in tests. 5 years ago
Roger A. Light cec24116d8 Add very basic client tests. 5 years ago
Roger A. Light 5daa5ee162 Add support for $CONTROL/ topics in plugins. 5 years ago
Roger A. Light 748e5f69c8 Fix acl-access-variants test. 5 years ago
Brandt Hill 16eecfcbc5 Add 'deny' as an option for topics/patterns in acl file to allow certain topics to be explicitly denied when they might otherwise be allowed through a more open read/write/readwrite option. Example: 'topic readwrite test/#' and 'topic deny test/hello/#' may be added so that a user can read/write to all test/# topics, except for test/hello/#.
Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

Change variable name for clarity. Remember to initialize bool (I'm bad at C).

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

Add documentation to config man page

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

Add test case for deny option

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

Add deny acls to top of the list to preserve early exit

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

change comments

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>
5 years ago
Roger Light 58aa41c813 Optimise use of db__message_write()
New messages are now queued for clients when old ones are sent, rather than on every iteration of the main loop. This produces good performance improvements.
5 years ago
Roger A. Light 69f84bbca9 Simplify "expect_packet" tests. 5 years ago
Roger A. Light ba2c00137d Fix client test leaks. 5 years ago
Roger A. Light 2dc8d2a19a Allow plugins to send messages to specific clients. 5 years ago