Release Notes

New Features in This Release

The following table lists the new features in this release.

Feature

Description

The Application Firewall has been rewritten in Python 3.

Move from Python 2.7.12 to Python 3.9.2

Python2 strings are bytes whereas Python3 strings are unicode

Scripts intended to be used with the ScriptHandler that are written using Python2 code may no longer work

Python3 sorted function and sort method have new signatures (accepting different arguments to that in Python2)

Source latest version of dependencies using pip (python package manager)

Remove dependencies on aodlib, aodre, aodpickle, aodpartial

Use Python xmlrpc instead of daemon/xmlrpclib.py

initdatabase now uses standard Python CLI argument parsing instead of positional arguments and now accepts the following options: "-v", "--version", "-c", "--config-file-path", "-u", "--update", "update"

Use python3 asyncio in place of threading for internal admin server communication

Use SQLAlchemy for the decider metering, statistics and threat_classifier databases creation and CRUD operations

Use pyinstaller instead of cx_Freeze

Add Python class based configuration

Move to semantic versioning (although we are still forced to use the current numbering format (e.g. 4.10-00000) until changes to the updater have been made)

Requests with gzip encoding which are larger than the allowed max_body_size are marked as invalid, unless, allow_traffic_if_cant_parse_request is True.

Licenses file is renamed THIRD_PARTY_LICENSES

Refactored initdatabase to ensure sqlite databases are created for new users and migrations are always run for existing users

Remove the use of sys.path throughout the code base and fix imports

Fix spelling of committed