* 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
* 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
- Extracted listener startup logic into a separate method `_start_listeners` for better readability and maintainability.
- Created helper methods for SSL context creation.
- Improved session cleanup during shutdown by centralizing logic in `_cleanup_session`.
- Refactored message handling and subscription management into dedicated methods for clarity.
- Updated tests to reflect changes in method visibility for matching topics.
As pointed out, it's possible to accidentally mix them up if the
passwords are the same. Obviously, the passwords used for these tests
should _NOT_ be used in production.
- re.escape() the whole filter string first to escape _all_ regex
metacharacters in it, not just $. (# and + are both regex metacharacters,
so their replace expressions now need a leading \\ to replace the
escaping, too.)
- # matches topics both with and without a trailing /, so the replace
expressions adds a '?' before the '.*'. The .lstrip('?') at the end removes
this in case the # was the first character in the filter.
- + should only match a single level, but it should _also_ match empty levels,
so use '[^/]*' to replace it.
- Use Regex.fullmatch() to match against the whole topic string, not just
its start.
Also add two unit tests to test this matching, and fix an incorrect match
against + in test_client_subscribe_publish_dollar_topic_2.