All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Calendar Versioning.
- [CSE] Added support for the CoAP protocol binding.
- [CSE] Added support to read command line arguments from a file.
- [TUI] Added display of cURL commands for resource requests for UPDATE and DELETE operations.
- [TUI] Added support for sending CREATE and UPDATE requests in the text UI.
- [TUI] Added copy of CSV data to the clipboard for instance resources.
- [TUI] Added copy of resource & resource names/IDs/types to the clipboard for the resource and request views.
- [TUI] Added configuration to set the default timeout for notifications in the text UI.
- [TESTS] Added support for an additional root path for the test cases when using HTTP requests.
- [CSE] Added statistics event for local resource retrieval. If this impacts performance too much, it may be removed again.
- [CSE] Added support for new "no response" Response Type behavior for blocking requests. This is experimental and may be removed again.
- [CSE] Internal refactoring of the configuration handling. The main configuration handling is still done in the old module, but the assignments and validations are now done in the using modules. Configuration settings are now stored in attributes, not a central dictionary anymore.
- [CSE] Internal refactoring the runtime constants, e.g. CSE ID, CSE Name, etc. These are now handled by a runtime constante class.
- [CSE] Fixed crash when the environment variables contain "$" characters.
- [DATABASE] Fixed wrong removal of null-attributes in complex attributes for the PostgreSQL database binding.
- [WEB] Fixed the web UI when the CSE's http server is not running directly under the root path.
- [CSE] Fixed support for UTC time logging for the supported Python versions.
- [CSE] Added support for operationMonitor attribute in <subscription> resources.
- [CSE] Improved support for DELETE operations on <request> resources.
- [CSE] Added support for attribute-level access control.
- [CSE] Added support ACP access control contexts: accessControlWindow.
- [CSE] Added --dark and --light command line arguments.
- [LOGGING] Added support for logging in UTC time.
- [SCRIPTS] Added new functions
all
,any
,filter
,map
,min
,max
,reduce
,reverse
to the script interpreter. - [TUI] Added support for sending UPDATE operations in the text UI.
- [TESTS] Added
--exlcude-tests
command line argument to exclude specific test cases from the test run.
- [CSE] Internal refactoring of the ACP and permission processing.
- [SCRIPTS] Improved the script interpreter's error reporting. The error messages are now more informative and include the call stack.
- [SCRIPTS] Changed the
http
function: Now supporting quoted list for headers. - [TESTS] Simplified internal test case registration.
- [TUI] Improved the design and layout of many views in the text UI.
- [TUI] Added vertical scrolling for some views.
- [MISC] Moved the documentation for the website to the a separate repository (ACME-oneM2M-CSE-mkdocs).
- [MISC] Added installation of the ACME CSE via the PyPi package manager. The package is available under the name acmecse.
- [MISC] Added domain https://acmecse.net and homepage for the ACME CSE.
- [CSE] Added support for interpolating environment variables in configuration settings. This is useful when running the CSE in a Docker container, where parts of the configuration settings can be set via environment variables.
- [CSE] Added support for the --base-directory or -dir command line argument to specify the root directory for the configuration file and for runtime data such as data, logs, temporary files, and a secondary init directory.
- [CSE] Changed the values for the [SIM] and [MobileNetwork] ManagementObject specializations to adapt the changes in TS-0022.
- [CSE] Changed the location for the init directory. It is now located in the acme package directory. This is a breaking change.
- [CSE] Changed the location for the acme.ini.default configuration file. It is now located in the acme/init directory. This is a breaking change.
- [CSE] Improved the onboarding manager to allow for more flexible onboarding configurations and improved the interpolation support.
- [CSE] Made Upper Tester commands case-insensitive.
- [CONSOLE] Improved the statistics view layout.
- [CSE] Fixed wrong examples and onboarding defaults for the registration configuration [cse.registration].allowedCSROriginators .
- [DATABASE] Improved the reconnect handling for the PostgreSQL database in case of a lost connection.
- [MQTT] Fixed paho MQTT implementation for V2 #153 . Thanks to @Luke1734 for the contribution.
- [DATABASE] Added postgreSQL support for the CSE's database. This is an alternative to the default TinyDB database.
- [CSE] Changed the database configuration settings to accommodate the new postgreSQL database support. This is a breaking change.
- [CSE] SyntaxError: f-string: unmatched '(' (see issue #146). Thanks to @mathiasp for the contribution.
- [CSE] Updated the MQTT client and connection functions to the Paho 2.0 version.
- [CSE] Improved the handling of semantic queries' result serialization. The proper format (JSON or XML) is now used depending on the original request's content serialization. Thanks to @Luke1734 for the contribution.
- [CSE] Corrected the handling of semantic request parameters. See PR #149. Thanks to @Luke1734 for the contribution.
- [MQTT] Fixed breaking change of MQTT Paho 2.0 in MQTT client instantiation (see issue #149). Thanks to @name-taken23 for the contribution.
- [CSE] Added internal check before executing a DELETE operation that all resources are allowed to be deleted.
- [CSE] Added configuration value for the CSE's poa attribute. Before, the CSE's poa was always set to the http server's address.
- [CSE] Added support for SIM ManagementObject specialization.
- [CSE] Added support for MobileNetwork ManagementObject specialization.
- [CSE] Added --db-directory command line argument to specify the directory where the CSE's data base files are stored.
- [CSE] Re-Added support for exporting resources to the console. Resources are exported as curl commands.
- [WS] Added support for the WebSocket protocol binding. This binding is fully functional but still experimental because it differs from the oneM2M spec in some points, e.g. the new presence of the Originator header when establishing a WebSocket connection. The general functionality is the same, though.
- [TUI] Added auto-refreshing diagrams and checkbox to enable/disable auto-refreshing.
- [TUI] Added validation: notificationURI must only be present in non-blocking async requests.
- [TUI] Added sorting of resource lists by resource type. Added resource type section headers.
- [TUI] Added configurable size limit for displaying requests and responses.
- [TUI] Added "service" tab for resource services. The first service is a service to export resources as curl commands.
- [TUI] Added service to export instance resources under a <container> or <timeSeries> as a CSV file.
- [SCRIPTS] Added "remove-json-attribute" function to the script interpreter.
- [SCRIPTS] Added "block" and "return-from" functions to the script interpreter.
- [SCRIPTS] Added "protect-unwind" function to the script interpreter.
- [TESTS] Added support for the WebSocket protocol binding to the tests.
- [TESTS] Added specific tests for the WebSocket protocol binding and special notification handling.
- [WS] The WebSocket protocol binding is still experimental because it differs from the oneM2M spec in some points, e.g. the new presence of the X-M2M-Origin header when establishing a WebSocket connection. The general functionality is the same, though.
- [CSE] Allow virtual resources to be referenced in <actions> and <dependencies>.
- [TUI] Diagrams now support containers that contain boolean-kind values (true/false, on/off, yes/no, high/low).
- [CSE] Added missing <CIN> DELETE procedure: Delete is forbidden if the parent <CNT> has the disableRetrieval attribute set to True.
- [CSE] Fixed wrong http response for some cases when the Accept http header contains a wildcard.
- [CSE] Fixed wrong http request header when forwarding non-blocking requests.
- [CSE] Fixed empty result content in the <REQ> instance when forwarding non-blocking requests to a remote CSE.
- [CSE] Fixed wrong handling of Originator header in forwarded requests, especially when creating new remote resources.
- [CSE] CSE-relative identifiers in attributes are now correctly converted to SP-relative identifiers when announcing resources.
- [CSE] Fixed originator handling when working with requests to remote CSE's and also with announcements.
- [CSE] Added support for Python 3.12.
- [CSE] Added <FCNT> as child resource type for <NOD>. Thanks to @BobFIV for the contribution.
- [MISC] Bumped referenced library werkzeug to version 3.0.1
- [CSE] Added automatic "pip install" of missing dependencies during startup.
- [CSE] Added support for the <schedule> resource type.
- [CSE] Added support for Result Expiration Timestamp request parameter for handling timeouts in fanoutPoint request aggregations.
- [CSE] Added (limited) support for <locationPolicy> resource type and location management for device based location policies.
- [CSE] Added support location attribute and geo-query request parameters and functionality
- [SCRIPTS] Added "dolist", "dotimes", "tui-notify", "cse-attribute-info", and "get-loglevel" functions to the script interpreter.
- [SCRIPTS] Added maxRuntime configuration setting to limit the execution time of scripts.
- [SCRIPTS] Functions now have their own variable scope.
- [TUI] Improved resource view in the text UI. Enumeration interpretations are now shown.
- [TUI] Added utility "Attribute Info Search".
- [TUI] Added diagram view for <containers> that <contentInstance> child resources with numerical values.
- [HTTP] Added support for http authorization for basic and bearer (token) methods.
- [HTTP] Support for the Python Web Server Gateway Interface to improve integration with a reverse proxy or API gateway, ie. nginx. Thanks to @samuelbles07 for the idea.
- [LOGGING] Added limiting the size of a single log message. Messages that are too large are truncated. This feature is configurable (ie. length and whether to truncate or not).
- [MISC] Added tool to generate documentation from the source code. See tools/apidocs/README.md.
- [MISC] The project now follows the Calendar Versioning scheme.
- [CSE] Changed the operationResult of <request> according to SDS-2022-0010R02.
- [CSE] Changed the oneM2M enumeration definition format. Each enumeration type is now a dictionary of enumeration values and their interpretations.
- [CSE] Changed procedure for notifictionStatsInfo attribute for <subscription> and <crossResourceSubscription; resources according to SDS-2022-0183R01 and SDS-2022-0184R01.
- [HTTP] The default network interface has been changed from "127.0.0.1" to "0.0.0.0".
- [MQTT] The default network interface has been changed from "127.0.0.1" to "0.0.0.0".
- [SCRIPTS] Moved utilities and system scripts to sub-directories. Now all scripts from directories "*.scripts" in the "init" directory are automatically imported.
- [TUI] Simplified the request list view in the text UI.
- [CSE] Removed superfluous code when announcing resources (see issue #122).
- [CSE] Added support and validation for 'xs:NCName' type in attribute policies.
- [CSE] Added support for <action> and <dependency> resource types
- [CSE] Added recording of received and sent requests to support request debugging.
- [CSE] Improved validation of complex types and mandatory attributes.
- [CSE] Added support for partial RETRIEVE (ie. only selected attributes are returned in a RETRIEVE request).
- [CSE] Cleaned up and removed some obsolete code.
- [CSE] Added [console].headless configuration (in addition to the --headless command line argument).
- [CSE] Allow "5" as a valid release version.
- [CSE] Added support for referencing members of a <Group> in <ACP>'s acor attribute. Thanks to @samuelbles07 for the contribution.
- [CSE] Added support for disabling sending the optional <subscription>'s verification request.
- [DATABASE] Added TinyDBBufferedStorage to greatly improve buffered writes to disk.
- [DATABASE] Added TinyDBBetterTable that supports only string document keys. This improves overall update performance of TinyDB.
- [TESTS] Added http keep-alive to tests.
- [LOGGING] Allow to exclude log messages from external libraries and components.
- [TUI] Added text UI.
- [TUI] Added views for resources, requests, registrations, configurations, statistics, and scripts.
- [SCRIPTS] Added category and tool meta-tags for scripts to allow for better categorization and filtering in the text UI.
- [SCRIPTS] Added Text UI meta tags: @tuiAutoRun, @tuiExecuteButton, @tuiTool.
- [SCRIPTS] Added script for oneM2M introductional links.
- [CSE] Added experimental subi attribute support to <CNT> only. Other resource types may follow.
- [CSE] Added first experimental support for advanced queries via the
aq
request parameter. This is probably subject to change. - [CSE] Added experimental eventEvaluationMode support to <CRS>.
- [SCRIPTS] Changed the script interpreter from a batch-based to a lisp-based language.
NOTE, that scripts in the old format are not supported anymore and need to be converted manually. - [CSE] Lots of small runtime optimizations.
- [CSE] Moved current configuration settings for cse.operation to *cse.operation.jobs.
- [CSE] Refactored the internal error and failure handling to using exceptions (Python's EAFP).
- [CSE] Refactored and simplified the internal request sending procedures.
- [CSE] Renamed configuration setting "cse.csi" (to "cse.cseID"), "cse.ri" (to "cse.resourceID"), "cse.ri" (to "cse.resourceName").
- [CSE] Moved resource, console, http, db, scripting configuration settings to their own namespaces in the configuration files.
- [DATABASE] Big speed improvements for most "search" and "get" operations by adding primary keys to the DB schemas.
This is a non-backward compatible change due to the DB schema changes. - [CONSOLE] Re-implemented some console services to make them reusable for the text UI.
- [CSE] expirationTimestamp is corrected if it is later than its parent resource.
- [HTTP] Fixed a bug when sending a CREATE request and the Content-Type header contains spaces before the ty argument.
Thanks to KyeongHo!
- [HTTP] Removed support for http path mappings to oneM2M requests.
- [CSE] Fixed a crash when checking permissions and the ACP has a
acod.ty
attribute set. See #112. Thanks to samuelbles07.
- [MQTT] Fixed target originator for notifications sent via MQTT.
- [TEST] Added verbose request, response and notification outputs.
- [TEST] Added listing and specifying test cases that should be executed individually.
- [TEST] Improved configuration of test cases. Added more configuration settings.
- [TEST] Added support to prevent or exclusively run the test suites' tear down functions.
- [TEST] Removed superfluous --verbose command line argument.
- [CSE] Corrected addressing (no more addressing via directly the /<cse-id>).
- [CSE] Corrected wrong Return Status Code for invalid RI or RN to BAD REQUEST.
- [CSE] Prevent deletion notifications when removing virtual resources.
- [CSE] Added support for <crossResourceSubscription> resource type.
- [CSE] Added support for <semanticDescriptor> resource type. Only basic semantic functionality is implemented yet, including queries and discovery.
- [CSE] Added support for wificlient ManagementObject specialization.
- [CSE] Added support for dataCollect ManagementObject specialization.
- [CSE] Added support for notification statistics in (nse and nsi attributes).
- [CSE] Added support for expirationCounter (<subscription>, <crossResourceSubscription>)
- [CSE] rvi and vsi are removed from forwarded requests when forwarding to a Release 1 target.
- [CSE] Added support for "Content-Location" http header for CREATE operations when RCN = 2 or 3.
- [CSE] Added support for oneM2M spec change that allows for AE.api to start with a lower-case "r" if the release version is "2a" or "3".
- [CSE] Added [cse].asyncSubscriptionNotifications configuration setting.
- [HTTP] Added support for requestExpirationTimestamp request attribute and default timeouts for http requests.
- [HTTP] Added support for CORS (Cross-Origin Resource Sharing - support for request from web browsers across domains).
- [CONSOLE] Added command to add a separator line to the screen and log (at the current log level).
- [CONSOLE] Added continuous inspection of a resource.
- [CONSOLE] Added support for handling function and cursor keys in the console (currently only for POSIX, yet).
- [IMPORTING] Enum data types can now be defined separately from the attributes.
- [SCRIPTS] Added logDivider command.
- [SCRIPTS] Added isDefined macro to test whether a variable, macro, or environment variable exists.
- [SCRIPTS] Added http command to support making http(s) requests from scripts.
- [SCRIPTS] Added expandMacros command to temporarily disable and enable macro and variable expansions.
- [SCRIPTS] Added nl macro to add a newline in strings.
- [SCRIPTS] Added jsonify macro to prepare a string for proper use in a JSON structure.
- [SCRIPTS] Added b64encode macro to encode a string as base64.
- [SCRIPTS] Added urlencode macro to encode a string for us in URL parameters.
- [SCRIPTS] Added limited support for multi-line strings.
- [WEB] Added button for switching between short and long names. Thanks to Tyler Sengia.
- [TESTS] Added option to run test cases multiple times.
- [CSE] Renamed the <pollingChannel> attribute pcra to rqag (R4 spec change).
- [CSE] Originating Timestamp are only added to responses when present in the request.
- [CSE] Refactored and simplified request message attribute handling. Improved attribute validations and discovery.
- [CSE] The CSE is allowed to send a NOTIFY to a hosted resource directly.
- [CSE] Much simplified internal handling of requests. Try to apply the requests internally instead of sending them to self.
- [CSE] Enable to target announcements to the hosting CSE itself. This behavior can be configured.
- [CSE] Normal subscription notifications are now, depending on the notification event type, sent asynchronously.
- [MQTT] Improved TLS and certificates support for MQTT connections. Thanks to JiriD85.
- [TESTS] Split timing calculations into user & proc times, and take sleep times into account. Improved result table.
- [SCRIPTS] Made the CSE admin originator the default for the "originator" command and for requests
- [SCRIPTS] requestAttributes now supports sub-structures for request attributes, e.g. to set filterCriteria attributes.
- [CSE] Corrected <timeSeries>'s cbs attribute name.
- [CSE] Adding default value when removing <subscription>'s enc attribute in an UPDATE.
- [TESTS] Corrected test cases.
- [MQTT] Corrected wrong Request Identifier in final responses to forwarded NOTIFY requests.
- [WEB] Improved handling of SP-relative resource IDs. Thanks to Tyler Sengia.
- [SCRIPTS] Improved handling of spaces in [ command or Variable ] command substitutions.
- [CSE] Added debug mode to display hidden exceptions during start-up.
- [CSE] Fixed problems with missing syslog module under MS Windows.
- [CONSOLE] Fixed Return-key handling for MS Windows cmd terminal.
- [CSE] Fixed crash when restarting <timeSeries> monitoring.
- [CSE] Added --http-port command line argument.
- [CSE] Added initial support for the Upper Tester protocol defined in TS-0019.
- [CSE] Added guided setup of a configuration file when the CSE is started without a config file.
- [CSE] Added bi-directional update of announced resources.
- [CSE] Added remote resources support for <group>.
- [CSE] Added support for dataGenerationTime attribute for <contentInstance> (R5 feature).
- [CSE] Added "acme://" URL scheme for notifications to run ACMEScript scripts.
- [CSE] Added always setting Originating Timestamp in requests and responses.
- [CSE] Added [logging].queueSize configuration to set the internal logging queue (or switch it off).
- [CSE] Added validation of <flexContainer>'s containerDefinition attribute during CREATE requests.
- [CSE] Added check for correct Service Provider ID in absolute requests.
- [CSE] Added support for <pollingChannel>'s requestAggregation attribute and functionality.
- [CSE] Added support for BLOCKING UPDATE notification event type.
- [CSE] Added a first support for the <timeSyncBeacon> resource type.
- [CSE] Added [cse].enableResourceExpiration* configuration setting to enable/disable resource expiration.
- [WEB] Allow to open the WebUI of a registered CSE via the context menu.
- [CONSOLE] Added config for dark (default) and light theme for better readability on consoles with light background.
- [CONSOLE] Added graph plotting for <contentInstance> resources that contain numerical values (also: continuous observation of a container).
- [SCRIPTS] Added scripting to the CSE.
- [SCRIPTS] A dedicated startup script is now executed during startup. This is mainly used to import the base resources and resource structure, and replaces the JSON resource imports.
- [SCRIPTS] Added executing scripts to the console
- [SCRIPTS] Added scripts tagged with "@uppertester" can be executed as upper tester commands.
- [SCRIPTS] Added scripts scheduling vie the "@at" meta tag.
- [SCRIPTS] Added possibility to run scripts on notifications, when using the "acme://" URL scheme.
- [HTTP] Added workaround for missing DELETE method in http/1.0 (by using PATCH instead).
- [CSE] Adapted Announcements to latest R4 changes.
- [CSE] Adapted TimeSeries to latest R4 changes.
- [CSE] Changed the default release version to 4. Also, the supported and the actual release versions are now fully configurable (in the config file).
- [CSE] Changed name of holder attribute to custodian according to R4 spec change.
- [CSE] Transit requests will now be handled after the resolution for blocking/non-blocking was handled. Non-blocking happens in the first CSE that received the original request.
- [CSE] Improved feedback instructions when problems during startup are encountered, e.g. how to install missing packages.
- [CSE] Introduced a thread pool to reuse threads.
- [TESTS] Replaced CSE test cases' re-configurations with upper tester commands / script calls.
- [DATABASE] Optimizations when working with resource lists.
- [CSE] Removed import of JSON resources from the init directory during startup. This functionality is now provided by a startup script.
- [CSE] Removed [cse].expirationDelta configuration setting. The functionality is fully covered by the [cse].maxExpirationDelta setting.
- [HTTP] Removed the http server's configuration and reset endpoints. This functionality is now handled by the upper tester endpoint, commands and scripts.
- [CSE] Improved check that IDs contain only unreserved characters.
- [CSE] Improved check for validating non-empty list attributes.
- [CSE] Improved error detection and handling for RCN=7 (original-resource).
- [CSE] Added missing "creator" attribute in notifications when the creator was set in the <subscription>.
- [CSE] Improved support to recognize structured and unstructured resource IDs for verification notifications.
- [HTTP] HTTP requests will not be sent with a Date header field. Instead, the Originating Timestamp will be used.
- [CSE] Blocking RETRIEVE notification event type: A RETRIEVE is blocked and a notification is sent to a target to give it a change to update the original RETRIEVE's target resource.
- [CSE] Added <pollingChannel> to the list of supported resource types for the <CSEBase>.
- [CSE] Removed acpi attribute definition from <contentInstance> resource. Added more tests for inheriting ACPs.
- [CSE] Added support for <pollingChannel> and <pollingChannelURI> for polling communication scenarios.
- [CSE] Added [logging].enableBindingsLogging configuration to enable/disable low-level transport bindings logging.
- [CSE] Added converting resource IDs to SP-relative when retargeting to different CSEs.
- [CSE] Added support for request expiration (Request Expiration Timestamp) and delayed request execution (Operation Execution Timestamp).
- [MQTT] Added MQTT binding support for Mca and Mcc communication.
- [CONSOLE] Added the possibility to toggle through the display modes with "^T" when displaying the resource tree continuously.
- [CONSOLE] Real-time update for the continuous tree (when creating, deleting, updating resources).
- [CONSOLE] Added [cse.console].confirmQuit configuration option. It is switched off by default.
- [DATABASE] Added validation of data base fil∑es during start-up.
- [DATABASE] Added backup of data base files during start-up.
- [WEB] Moved the webUI to the acme module.
- [CSE] Improved attribute validation: checking empty lists.
- [CSE] Simplified initial configuration. First time users can now choose between three deployment configurations (IN, MN, ASN) to quickly set-up a CSE.
- [CSE] Improved fallback and debug message of missing Release Version Indicator attribute in requests.
- [CSE] Refactored project directory structure.
- [CSE] Refactored validation to improve attribute policies and validation handling and extension. Policies are now defined by a definition file and assigned to each resource type.
- [CSE] Refactored the handling of target URI's. They are now evaluated as late as possible. This may have impact on, for example, batch notifications and whenever the real target URL may change over time.
- [CSE] Changed rcn = modifiedAttributes to the improved definition in the spec: return only those modified attributes that where not in the original request, but were modified by the CSE as a result of the request.
- [CSE] Improved transit requests: serialization according to target's preferences.
- [CSE] Changed optionality of and originator assignment to CSR.csi according to TS-0004 spec change.
- [HTTP] Moved the security setting for http to the separate section server.http.security.
- [IMPORTING] Changed the file extension for <flexContainer> attribute policies from ".ap" to ".fcp".
- [IMPORTING] Updated the <flexContainer> attribute policies to the latest version of TS-0023.
- [Logging] Changed the internal handling of log messages. Output should be more immediate than before.
- [RUNTIME] Due to the restructuring of the project structure the CSE must now be started like this:
python3 -m acme
- [CSE] Removed "cse.enableNotifications" configuration option. Notifications are now always enabled.
- [CSE] Removed "cse.enableTransitRequests" configuration option. Requests are now always forwarded.
- [CSE] Removed "cse.enableValidation" configuration option. Validation is now always performed.
- [CSE] Removed "cse.announcements.enable" configuration option. Resources can now always be announced.
- [APPS] Removed the example AEs from the CSE. This makes the CSE a bit smaller and also removes a big dependency to the non-portable psutils package. They will be available in a separate project in the future.
- [HTTP] Removed the server.http.multithreaded configuration option. The http server now always runs in multithread mode.
- [CSE] When the CSE is reset then the statistics are now reset as well.
- [WEB] Error/debug messages are now always shown.
- [CONSOLE] Added [cse.console].confirmQuit configuration option. It is switched off by default.
- [CSE] Added possibility to reset a running CSE (via the command console or http endpoint "/__reset__").
- [CSE] Added support for <timeSeries>/<timeSeriesInstance> resource types.
- [CSE] Added support for <timeSeries>'s missing data monitoring in <subscription> resource type and notifications.
- [CSE] Added support for ctm (currentTime) attribute for <CSEBase> resource type.
- [CSE] Added wildcard (*) support for <ACP>'s acr/acor originators.
- [CSE] Added support for <ACP>'s acr/acod attribute (not for specializations yet, though).
- [CSE] Added support for 'Request Expiration Timestamp' request parameter, also for <request> resources.
- [CSE] Added support for Vendor Information request/response header.
- [CSE] Added support for <container> disableRetrieval attribute.
- [CSE] Added validation of cnf (contentInfo) attribute.
- [CSE] Added support for dcnt (deletionCnt) attribute for <contentInstance> resource type.
- [WEB] Added OAuth2 authorization support for the proxied CSE (for the stand-alone web UI).
- [WEB] Added opening the web UI in a browser on startup (for the stand-alone web UI).
- [TESTS] Added OAuth2 authorization support for the tests.
- [CONSOLE] Added "I" command to the console (inspect a resource and its child resources).
- [CONSOLE] Added "L" command to the console (toggle through the various log levels, including off)
- [CONSOLE] Added configuration cse.console.hideResources to hide certain resources from showing in the the resource tree.
- [CONSOLE] Added various view modes when showing the resource tree (normal, compact, content, contentOnly).
- [CSE] Relaxed validation for float in attributes and arguments. Integer are now accepted as well.
- [CSE] Changed format of configuration values "cse.registration.allowedAEOriginators" and "cse.registration.allowedCSROriginators" from regex to a simple wildcard (* and ?) format.
- [CSE] Changed the internal timed and regular processes to a single priority timer queue.
- [CSE] Removed "logging.enable" configuration setting and added off as a possible value to *logging.level".
- [CSE] Improved the size calculation of <contentInstance>, <flexContainer>, and <timeSeriesInstance> to realistic sizes (not the Python-internal type sizes anymore).
- [CSE] Refactored internal request handling to support future protocol binding developments other than http.
- [CSE] Changed the sorting of request result lists to type and creation time for <contentInstance>, <flexContainerInstance> and <timeSeriesInstance>.
- [CSE] Improved the validation when registering <remoteCSE> resources for csi and cb attributes.
- [CSE] Added validation of complex attributes in general.
- [RUNTIME] The CSE is now started by running the acme module (
python3 acme
)
- [CSE] Corrected response status codes for AE registration errors.
- [CSE] Prevent CREATE and UPDATE requests for <flexContainerInstance> resource type.
- [CSE] Improved handling of <flexContainerInstance> resources when versioning is disabled in the parent <flexContainer>.
- [CSE] Re-added: remove comments from received JSON content.
- [CSE] Improved the timely execution of background tasks. The actual task's execution time is not added on top to the interval anymore, and intervals are constant.
- [CSE] Improved support and validation for absRelTimestamp type.
- [CSE] Improved handling of the <request> resource's expiration time. It is now aligned with the 'Request Expiration Timestamp' request parameter.
- [CSE] Improved checking of empty acpi attribute lists. Empty lists are not allowed and the acpi must be removed from a resource instead.
- [CSE] Optimized log messages. Messages for irrelevant log levels are not even created anymore.
- [CSE] Corrected behavior when oldest <contentInstance>, <flexContainerInstance> and <timeSeriesInstance> resource are deleted. Now NO notification is sent in case a <subscription> monitors for Delete_of_direct_child_resource.
- [CSE] Added warnings when an imported <CSEBase> overwrites any of the csi, ri, rn attributes.
- [CSE] Better error handling for ill-formed CSE-ID.
- [CSE] Fixed missing check for <subscription>'s chty attribute. The listed resource types therein must be allowed child resource types of the <subscription>'s parent resource.
- [DATABASE] Optimized and unified database searches for fragments in resources.
- [CSE] Added cse.resource.cnt.enableLimits configuration.
- [CSE] Improved startup error messages when running in headless mode.
- [CONSOLE] Added "T" command to the console (display only sub-tree of the resource tree).
- [CSE] Default limits for <container> are now disabled by default.
- [CSE] Limiting supported release versions to 2a, 3, and 4.
- [CSE] Changed spelling of configuration values "cse.statistics.writeIntervall" to "cse.statistics.writeInterval" and "app.statistics.intervall" to "app.statistics.interval".
- [MISC] Bumped referenced library urllib3 from 1.26.2 to 1.26.3
- [MISC] Bumped referenced library jinja2 from 2.11.2 to 2.11.3
- [CSE] Fixed crash when receiving no content in CREATE or UPDATE request.
- [CSE] Improved debug response when encountering a wrong type during validation.
- [CSE] Improved statistics output when running inside a Jupyter Notebook.
- [CSE] Added --http-address and --network-interface command line arguments.
- [CSE] Added configuration to exclude certain attributes in CSR creations and updates.
- [CSE] Added support for CBOR serialization.
- [CSE] Added attribute policies for TS-0023 R4 ModuleClasses, Devices etc.
- [CSE] Added attribute policies for Generic Interworking and AllJoyn specialization.
- [CSE] Added diagram generation (in PlantUML format) of resource tree and deployment structure.
- [CSE] Added better checks for content serialization in AE.
- [CSE] Added support for holder attribute. Added access control behavior for holder and resource creator when an acpi attribute is specified for a resource, but doesn't have one.
- [CSE] Added support for Subscription's expirationCounter.
- [CSE] Added headless mode to better support docker.
- [CONSOLE] Added command interface to the terminal console (for stopping the CSE, printing statistics, CSE registrations, the resource tree, etc).
- [NOTIFICATIONS] Added support for handling CBOR serialization and other binary formats to the notification server.
- [WEB] Added dark mode (for supported browsers).
- [TESTS] Added load tests that can be optionally executed. Also improved test runner: select on the command line which tests to run.
- [WEB] The web UI can now also be used as a stand-alone application to connect to third-party CSEs.
- [CSE] The filter query for ty, cty, and lbl can now be construct with + operator (e.g. ty=3+4) instead of specifying those filter elements twice.
- [CSE] Changed the importing of attribute policies to a JSON based format.
- [CSE] Supported release version can now be configured via the config file.
- [CSE] Added checks for remote CSE's csi (does it exist? Does it begin with a /?)
- [CSE] Removed defaultACPI support. Now supporting correct behavior for holder attribute resp. resource creator.
- [CSE] Correctly implemented acpi updates. Also: acpi references are converted to CSE relative unstructured During CREATE and UPDATE.
- [CSE] Changed resourceType values for <latest> and <oldest> to the specified values.
- [CSE] Access control clean-up. No more extra ACPs for admin access, CSRs, AEs, REQs etc. The CSE now makes use of creator and holder access.
- [TESTS] The behavior whether a failed test skips the remaining tests in a test suite can now be configured.
- [TESTS] Improved documentation. Doc strings provide a bit more information about a currently running test.
- [TESTS] Tests now pass mypy checks.
- [MISC] Added: Allow
# single-line comments
in JSON as well. - [MISC] Default configuration for file logging is now False (to better support Raspberry Pi and similar systems with flash card file systems).
- [MISC] Now passes
mypy --strict
checks. - [DATABASE] Changed the postfix of data files to the CSE-ID.
- [HTTP] Server runs now in background.
- [CSE] CSEBase.srt attribute now also returns the announced attributes.
- [CSE] Improved shutdown behavior. Waiting for internal threads to finish.
- [CSE] When updating a subscription resource's nu attribute: Removed URI's don't cause a "deletion notification" anymore.
- [CSE] Improved creator attribute handling during CREATE.
- [CSE] Fixed wrong removal procedure when removing contentInstances from a container when either threshold was met.
- [CSE] Added missing checks for mandatory request parameters RVI and RI
- [SUB] Added missing validation for nct / enc/net combinations.
- [ACP] Added check that pvs is not empty during CREATE or UPDATE.
- [ACP] Added check that acpi, if present, is the only attribute in an UPDATE request.
- [TESTS] Fixed test framework checks for CSE connectivity and CSE reconfigurations for test runs.
- [CSE] Improved resource expiration a lot.
- [CSE] Added support for mia attribute in CNT and FCNT.
- [CSE] Added support for synchronous and asynchronous non-blocking requests (as well as flex-blocking).
- [CSE] Added configuration to enable or disable regular liveliness checks of remote CSE connects (cse.registration.checkLiveliness).
- [REQ] Added support for <request> resource type.
- [SUB] Added support for batchNotifications, latestNotify, eventNotificationCriteria/childResourceType, and eventNotificationCriteria/attribute in subscriptions.
- [HTTP] Added possibility to enable an API to get and set some configuration values remotely.
- [CSE] Removed possibility to register unknown resources of an unknown resource type.
- [HTTP] Fixed wrong configuration settings for TLS certificates.
- [CSR] Fixed format of csebase attribute.
- [CSE] Added Resource Announcements to remote CSEs.
- [CSE] Added support for 'm2m:dbg' throughout the CSE. This should provide better error reporting for clients.
- [CSE] Added configuration and command line argument to enable and disable validation of attributes and arguments.
- [CSE] Added configuration and command line argument to enable and disable statistics.
- [CSE] Added configuration to make CSE startup delay configurable.
- [CSE] Added import of attribute policies for <flexContainer> specializations validation.
- [CSE] Added support for 'arp' request argument.
- [CSE] JSON in requests may now contain C-style comments ("// ..." and "/* ... */").
- [CSE] Added support for myCertFileCred ManagementObject.
- [SUB] Improved support for 'nct' in subscriptions.
- [TESTS] Added unit tests.
- [WEB] Added deletion of resources in the web UI via right-click menu.
- [HTTP] Added https support for the http server and for requests.
- [MISC] Added Python type hints throughout the source code.
- [CSE] Reimplemented discovery, filter functions and rcn's.
- [MISC] Refactored most constants to enums.
- [CSE] Added command line arguments --remote-cse, --no-remote-cse .
- [CSE] Improved remote CSE handling.
- [CSE] Improved and corrected remote CSE registration and retargeting requests.
- [CSE] Improved support for expiration handling, e.g. refreshing as well as removal of expired resources.
- [CSE] Added validation of resource attributes during CREATE and UPDATE.
- [CSE] Added support for request arguments validation.
- [CSE] The CSE now passes most of the oneM2M R1 test cases.
- [AE] Added AE Self-Registration.
- [IMPORTING] Added macro mechanism to use configuration settings in imported files.
- [WEB] Add displaying the path of the selected resource and many more small improvements.
- [WEB] Providing default originator.
- [CSE] Fixed crashes when using group resources.
- [CSE] Fixed and reworked resource address handling.
- [CSE] Corrected transit requests.
- [ACP] Fixed format of privileges and self-privileges.
- [NOTIFICATIONS] Corrected error handling.
- [ALL] Many, many small fixes and improvements.
- [ACP] Created resources without a provided ACPI will now have the same ACPI of the parent.
- [DATABASE] Upgraded to TinyDB 4.x .
- [Logging] Now using the Rich module for improved terminal logging .
- [MISC] Restructured documentation.
- [CSE] Discovery supports "attributes + children" return content.
- [CSE] Added command line argument --db-storage .
- [CSE] Added support for FlexContainerInstance.
- [CSE] Added command line arguments --apps / --no-apps to enable and disable internal applications. Also added entry in config file.
- [CSE] Added sorting of discovery results. Configurable.
- [CSE] Fixed discovery results: ignore latest, oldest, and fixed result format.
- [CSE] Changed command line argument --reset-db to --db-reset .
- [APPS] Added persistent storage support for AEs.
- [APPS] Fixed wrong originator handling for already registered AEs.
- [CSE] Checking and setting "creator" attribute when creating new resources.
- [ACP] Always add "admin" originator to newly created ACPs (configurable).
- [ACP] Improved default ACP. Any new resource without ACP gets the default ACP assigned.
- [AE] Added proper AE registration. An ACP is automatically created for a new AE, and also removed when the corresponding AE is removed.
- [LOGGING] Added option to enable/disable logging to a log file (Logging:enableFileLogging). If disabled, log-messages are only written to the console.
- [LOGGING] Possibility to disable logging on the command line.
- [IMPORTING] Added default ACP.
- [WEB] Added LOGO & favicon.
- [WEB] Browser request to "/"" will now redirect to the web-ui's URL.
- [WEB] REST UI will not refresh anymore when automatic refresh is on.
- [ALL] Various fixes and improvements.
- First release