Wykres commitów

347 Commity (0.11.5)

Autor SHA1 Wiadomość Data
Andrew Mirsky 55bc7a6255
Yakifo/amqtt#174 : move current implementation to mqtt3 namespace and mark mqtt module as deprecated. allows for a namespace for mqtt 5 implementation 2025-08-12 10:16:21 -04:00
Andrew Mirsky b4df977f6f
pre 0.11.3 release cleanup (#294)
* add warning message for client config to match client config description
2025-08-11 21:56:30 -04:00
Andrew Mirsky bfd2d86395
removing superfluous dependency, updating readthedocs build process, plugin doc cleanup 2025-08-11 20:28:27 -04:00
Andrew Mirsky 0d678dfa7c
Plugin: jwt authentication and authorization (#289)
* Yakifo/amqtt#260 : plugin to verify a jwt and its claims including test cases. and docs.
2025-08-09 15:39:31 -04:00
Andrew Mirsky 0e318671dd
Sample: broker and client communicating with mqtt over unix socket (#291)
* Yakifo/aqmtt#290 : create a sample that implements mqtt over unix socket. documentation and test case.
2025-08-09 15:37:33 -04:00
Andrew Mirsky beb8672116
Plugin: authenticate against LDAP server (#287)
* Yakifo/amqtt#261 : plugin for authenticating a user with ldap.
* adding openldap dependencies
* updating ldap custom schema to include three ACL attributes, retrieve the correct topic list and check if topic is allowed
2025-08-09 15:27:44 -04:00
Andrew Mirsky e6b0f1d002
allow timestamps to skew slightly due to manually creation 2025-08-09 15:22:38 -04:00
Andrew Mirsky f50e3b48f6
Plugin: device 'shadows' to bridge device online/offline states (#282)
* states, calculations and model for shadow plugin
* adding tests for shadow states and correcting use cases
* adding get/update message broadcast, adding json schema tests for shadow messages being received
* adding shadow plugin documentation
2025-08-09 15:01:10 -04:00
Andrew Mirsky 2fa0604547
Plugin: determine authentication based on X509 certificates (#264)
* plugin for authenticating clients based on certificates
* create ca, server and device keys and certificates. certificate auth plugin verification (non linted)
* adding documentation for the various cli scripts and the CertificateAuthPlugin
* post_init was not running on client config. cafile, keyfile, certfile are part of the connection section
* 'broker' section of client config can be empty, but connection will either be provided by the user or the default
2025-08-09 14:52:35 -04:00
Andrew Mirsky de40ca51d3
Plugin: rebuild of session persistence (#256)
* rebuild of the persistence plugin to handle storing / restoring sessions
* adding event for broker when a message is being retained
* adding retained message logic to persistence plugin and test cases
* updated documentation
* moving DataClassListJson field to common location for reuse
2025-08-09 14:15:45 -04:00
Andrew Mirsky 2a7aa11524
Merge pull request #283 from ajmirsky/issue_73
embed amqtt into an existing server
2025-08-08 21:14:12 -04:00
Andrew Mirsky ae6d772927
standardizing naming convention for new plugins 2025-08-06 14:08:45 -04:00
Andrew Mirsky 04591aaaab
splitting http plugin into auth (user) and topic 2025-08-06 13:38:45 -04:00
Andrew Mirsky 6ff7c5a87a
Yakifo/amqtt#73 : adding test case for external http server integration. comments and documentation. 2025-08-05 10:44:38 -04:00
Andrew Mirsky 0141cddeeb
Yakifo/amqtt#73 : refinement of external websocket server 2025-08-04 19:19:51 -04:00
Andrew Mirsky ad4854df00
Yakifo/amqtt#73 : working example of using aiohttp server to receive the websocket connection 2025-08-04 17:23:18 -04:00
Andrew Mirsky c425056368
Yakifo/amqtt#120 confirms : validate example is functioning 2025-08-04 11:24:05 -04:00
Andrew Mirsky f6ccdbc51c
splitting out contrib plugin documentation into separate pages 2025-07-30 09:32:56 -04:00
Andrew Mirsky c518b9b63f
Fixes #247 : expire disconnected sessions (#279)
* Yakifo/amqtt#247 : add configuration that specifies how long sessions should be retained. also, remove sessions where we're not retaining messages (aka anonymous or clean sessions)
2025-07-26 21:39:45 -04:00
Andrew Mirsky 744827cdd5
Plugin: authentication against a relational database (#280)
* Yakifo/amqtt#259 : db schema (orm) and authentication of users plugin, initial

* expanding to include a simple admin interface

* create directory into module

* user management ui react app

* including research associated with session auth for the admin ui

* updating to handle username and acl datagrid

* multi cli optional approaches

* basic cli functions for manipulating users

* Yakifo/amqtt#259 : lint and type cleanup

* Yakifo/amqtt#259 : added tests for AuthDBPlugin as well as the UserManager. includes a command line interface for listing, adding, removing and updating users. added documentation.

* Yakifo/amqtt#259 : need to install the 'contrib' extra package for the workflows

* fixing class name change

* fixed incorrect install of optional library for ci. auth db test wasn't shutting down broker, causing subsequent tests to fail"

* test case not cleaning up after itself

* adding topic authentication to database plugin

* renamed command line script

* moved auth db ui to a different branch. added a temp directory to the temp file used for sqlite tests

* more renaming to leave space to expand to topic management

* updating dependencies

* renaming scripts

* adding topic filter and test cases

* Yakifo/amqtt#259
separate plugin for DB topic-based checking. additional topic auth testing
Yakifo/amqtt#259
updating uv.lock
fixing lint and typing errors
handling strenum for 3.10
updating documentation for topic and user auth plugins
update user and topic manager scripts, add tests and fix bugs
add tests for the user and topic mgr cli
client connection timeout should yield a connecterror

* adding 'receive' action, added along with the http plugin
2025-07-26 17:04:14 -04:00
Andrew Mirsky b7fd9e1afc
Determine auth & topic access via external http server (#262)
* initial structure of http acl

* progress

* Yakifo/amqtt#258 (in progress): a plugin which requests authentication via http

* Yakifo/amqtt#258 (in progress): a plugin which requests topic acl via http

* renaming plugin

* StrEnum support for python 3.10

* when using python 3.10, 'localhost' resolves to the wrong ip address, so we excplicitly use the loopback address. our polyfill for StrEnum in python 3.10, needs to get the value instead of its implicit converstion in other versions

* add documentation, expand functionality to handle  case including test cases

* refactoring test fixtures for HttpAuthAclPlugin

* further refactoring of test cases to eliminate duplicate code

* add comments to test code

* rename to more accurately describe user authentication and topic authorization

* config option name change

* cleaning up documentation on the Topic ACL Plugin

* simplificiation based on feedback

* updated doc

* incorporated feedback
2025-07-26 15:47:49 -04:00
Andrew Mirsky 9370ad7f9a
Structured broker and client configurations (#269)
* wip for structured configs

* updating docs to pull descriptions from structured configs

* display 'default_factory' in a field as the actual value

* finalizing the dataclass style, format and content of the documentation for the BrokerConfig.

* updated documentation for broker and client config including finalizing the griffe extension to get the output of the default_factory's of dataclasses

* all test cases working. most fixes were to make the dataclass config's backwards compatible with how the rest of the code was accessing config dictionaries

* type correction and linting fixes

* updates to support python 3.10

* fixes to handle wonky yaml files

* removing non-modified template files

* adding documentation on the custom griffe extension to render the 'default_factory' for dataclass's 'field'

* refining documentation

* removing duplicate logger
2025-07-26 12:37:25 -04:00
Andrew Mirsky 98778416dc
structure needed as the basis for several 0.11.3 improvements 2025-07-10 11:23:56 -04:00
Andrew Mirsky 57597dfea4
Merge pull request #252 from ajmirsky/plugin_config_error_case_checking
updated samples; plugin config consistency (yaml and python dict)
2025-07-07 12:18:36 -04:00
Andrew Mirsky 8022e01bb0
Merge pull request #251 from ajmirsky/increased_test_coverage
publishing to a topic with `*` is allowed, while `#` and `+` are not
2025-07-07 12:07:11 -04:00
Andrew Mirsky d41a6f5205
fixes #245 : broker shouldn't allow clients to publish to '$' topics 2025-07-04 21:36:29 -04:00
Andrew Mirsky 6a45eeb533
update sample plugins to use config-file-based plugin loading. FileAuthPlugin now accepts string or pathlib.Path 2025-07-04 16:35:46 -04:00
Andrew Mirsky 1971af26a4
match yaml 'plugins' format as dictionary with python dictionary format; allow for list as well as dictionary, in case that format slips in 2025-07-04 16:05:55 -04:00
Andrew Mirsky 9232c87202
adding tests to verify $ topic subscription rules 2025-07-04 15:57:08 -04:00
Andrew Mirsky 571434ed04
fixing test comments 2025-07-03 16:10:47 -04:00
Andrew Mirsky b2ef44dce2
Merge branch '0.11.2-rc' into increased_test_coverage 2025-07-03 14:32:45 -04:00
Andrew Mirsky a2e5a67059
resolves Yakifo/amqtt#250 : * was being blocked as a valid topic character in publish/receive, even though the invalid topic wildcard characters are '#' and '+'. also, add test coverage for error cases when creating different packet types. 2025-07-03 14:32:13 -04:00
Andrew Mirsky 38b2145234
adding tests for failure cases for different connect packet properties 2025-07-03 12:05:05 -04:00
Andrew Mirsky 7bbf2990a2
fixing issue with python 3.10's handling of websocket states 2025-07-03 11:43:16 -04:00
Andrew Mirsky d78c184f86
Merge remote-tracking branch 'source/0.11.2-rc' into issues/27 2025-07-03 11:36:44 -04:00
Andrew Mirsky 6b606f04d3
Merge pull request #244 from ajmirsky/require_at_least_one_auth
Require at least one auth
2025-07-03 11:21:22 -04:00
Andrew Mirsky 3d493b88ef
Merge branch '0.11.2-rc' into add_session_to_client_events 2025-07-02 19:05:36 -04:00
Andrew Mirsky d0d875ca30
python 3.10 differentiates between asyncio.TimeoutError and builtin TimeoutError 2025-07-02 14:13:02 -04:00
Andrew Mirsky 51d8c838f7
client reconnecting too quickly causing connection failure 2025-07-02 14:01:53 -04:00
Andrew Mirsky e009b4b0da
remove dependency on external broker 2025-07-02 13:52:05 -04:00
Andrew Mirsky 4700f49d96
remove dependency on external broker 2025-07-02 13:49:16 -04:00
Andrew Mirsky 03bf1c34d9
provide plugin manager context so that it identifies auth and topic check plugins correctly 2025-07-02 12:24:41 -04:00
Andrew Mirsky d4d5e1c670
messages for reconnected sessions where clean session is false, need to send retained topic messages 2025-07-02 12:03:14 -04:00
Andrew Mirsky 341c6c1732
additional test cases for message retention for retain flag and disconnected state 2025-07-02 08:09:31 -04:00
Andrew Mirsky 2ceb2ae43b
resolves Yakifo/amqtt#27 Yakifo/amqtt#246 Yakifo/amqtt#123: only retain messages for clients which specify clean session = 1 and messages are QoS 1 & 2. Also, clients which are completely anonymous, specifying no username, have no expectation of message retention. 2025-07-01 22:00:18 -04:00
Andrew Mirsky ee7250c720
fixes Yakifo/amqtt#187 : explicitly declaring auth plugins as an empty list (entry points configuration style) or not including a BaseAuthPlugin in loaded plugins, still allowed clients to connect to broker. security risk as explicit omission (former) or inadvertent omission (latter) might allow anonymous connections 2025-06-30 14:08:01 -04:00
Andrew Mirsky b5c9234bf7
maintain legacy functionality of entrypoint-based configs which have 'auth' or 'topic-check' 2025-06-29 19:10:55 -04:00
Andrew Mirsky ecdfd0a464
fix missing auth plugin 2025-06-29 18:29:48 -04:00
Andrew Mirsky 043b6ac881
check for client connect/disconnect event needed change 2025-06-29 17:47:02 -04:00
Andrew Mirsky a8e1692631
updating existing plugins to use new plugin configuraiton format. adding deprecation warnings. updating existing tests and adding additional cases to check that both old and new config formats work correctly 2025-06-27 23:08:09 -04:00