- A large number of bug fixes as well as stability and performance improvements.
- Three security vulnerabilities disclosed by Maximilian Hils have been patched.
- New config option UDP_CONNECTION_REQUEST_PORT to specify binding port for UDP connection requests.
- New config option DATETIME_MILLISECONDS to strip milliseconds from dateTime values.
- New config option BOOLEAN_LITERAL to use 1/0 or true/false for boolean values.
- Parameter values that cannot be parsed according to the reported type now show a warning message.
- Virtual parameter scripts now use the variable 'args' instead of the special 'TIMESTAMPS' and 'VALUES' variables. The content of the args array is: {declare timestamps}, {declare values}, {current timestamps}, {current values}.
- Virtual parameter value types are now inferred from the JavaScript type if the returned value attribute is not a value-type pair.
- Show a fault when a virtual parameter script doesn't return the required attributes.
- Redis is now optional (and disabled by default), reducing the complexity of scalable deployments.
- Better detection of cyclical presets resulting in fewer faults for complex provisioning scripts.
- Math.random() is now deterministic on per-device basis. A function has been added to allow specifying a seed value (e.g. Math.random.seed(Date.now())).
- Overload spikes are now handled gracefully by refusing to accept new sessions temporarily when under abnormal load.
- Added log messages for session timeouts, connection drops, and XML parsing errors.
- Date.now() now takes an optional argument to specify "time steps" (in milliseconds). This can be used to ensure a group of parameters are all refreshed at the same time intervals.
- Only the non-default configuration options are now logged at process start.
- Faults caused by errors from extensions now show a cleaner stack trace.
- Exit main process if there are too many worker crashes (e.g. when DB is down).
- Updated dependencies and included a lockfile to ensure installations get the exact dependencies it was tested against.
- Avoid crashing when connection request credentials are missing.
- Show a warning instead of crashing when failing to parse parameter values according to the expected value type.
- Add missing "Registered" event.
- Fix bug where in certain cases many more instances than declared are created.
- Fix parameter discovery bug when declared path timestamp is 1 or is not set.
- Fix preset precondition failing when testing against datetime parameters and certain other parameters like _deviceId._ProductClass.
- Provisions enable implementing dynamic device configuration or complex device provisioning work flow using arbitrary scripts.
- Virtual parameters are user-defined parameters whose values are evaluated from a custom script.
- Extensions are sandboxed Node.js scripts that are accessible from provision and virtual parameter scripts to facilitate integration with external entities.
- Support for UDP/STUN based connection requests for reaching devices behind NAT (TR-069 Annex G).
- Presets can now be scheduled using a cron-like expression.
- Presets can now be tied to specific device events (e.g. boot).
- Presets precondition queries no longer support "$or" or other MongoDB logical operators.
- Faults are no longer a part of tasks but are now first class objects.
- Presets are now assigned to channels. A fault in one channel only blocks presets in that channel.
- New API CRUD functions for provisions, virtual parameters, and faults.
- New config options for XML output.
- API responses now include "GenieACS-Version" header.
- Graceful shutdown when receiving SIGINT and SIGTERM events.
- Support SSL intermediate certificate chains.
- Supported Node.js versions are 6.x and 7.x.
- Supported MongoDB versions are 2.6 through 3.4.
- Expect performance differences due to major under the hood changes. Some operations are faster and some are slower. Overall performance is improved.
- GenieACS will no longer fetch the entire device data model upon first contact but will instead only fetch the parameters it needs to fulfill the presets.
- Logs have been overhauled and split into two streams: process log (stderr) and access log (stdout). Also added config options to dump logs to files rather than standard streams.
- Connection request authentication credentials are picked up from the device data model if available. config/auth.js is still supported as a fallback and now supports an optional callback argument.
- Custom commands have been removed. Use virtual parameters and/or extensions.
- Aliases and value normalizers (config/parameters.json) have been removed. Use virtual parameters.
- The API /devices/<device_id>/preset has been removed.
- Rarely used RequestDownload method no longer supported.
- The TR-069 client simulator has moved to its own repo at https://github.com/zaidka/genieacs-sim