Releases: openwisp/openwisp-controller
Releases · openwisp/openwisp-controller
1.2.3 [2026-04-09]
Bugfixes
- Corrected initial field value assignment in
AbstractDeviceclass - Fixed duplicate template entries in Device admin
- Invalidate Config checksum after subnet provisioning
- Fixed concurrent
update\_configdetection #1204
1.2.2 [2026-03-06]
Changes
Other changes
- Improved help text of configuration variable fields
- Minor fixes in the test suite
1.2.1 [2026-03-04]
1.2.0 [2025-10-24]
Changes
Other changes
- Stored configuration checksum in the database to fix the perennial modified status issue. The configuration status now changes to modified only when the checksum actually changes #1113.
- Templates marked as default or required are now automatically assigned to all eligible devices in a background task. #480.
- Changed ZeroTier background notifications to use the Generic Message notification type #1048.
- Improved management of relevant templates: facilitated changing organizations and optimized performance #204 #1050.
- Added a relation from
VpnClientobjects to their associatedTemplatefor improved traceability and management #831. - Improved consistency across the REST API by renaming
serializermodules toserializers, centralizing base serializer logic, fixing configuration creation when organization templates differ, and standardizing primary key parameter types and URL converters.
Dependencies
- Bumped
netjsonconfig~=1.2.0. - Bumped
openwisp-notifications~=1.2.0. - Bumped
openwisp-ipam~=1.2.0. - Bumped
openwisp-users~=1.2.0. - Bumped
openwisp-utils[celery,channels]~=1.2.0. - Bumped
django-x509~=1.3.0. - Bumped
django-loci~=1.2.0. - Bumped
django-flat-json-widget~=0.4.0. - Bumped
djangorestframework-gis~=1.2.0. - Bumped
paramiko~=4.0.0. - Bumped
django-cache-memoize~=0.2.1. - Bumped
django-import-export~=4.3.10. - Bumped
django-reversion~=6.0.0. - Bumped
django-taggit~=6.1.0. - Added support for Django
5.x. - Added support for Python
3.11,3.12, and3.13. - Dropped support for Django
3.2and4.1. - Dropped support for Python
3.8.
Bugfixes
- Fixed issue where the
update\_configbackground task could launch multiple times concurrently #1128. - Enforced SSH command timeout in Paramiko. Previously, Paramiko ignored the configured command timeout.
- Fixed incorrect label for device group filter in the device list #1071.
- Added
defaultkwarg support for unique nullable fields. - Fixed REST API access for non-superusers in
DeviceConnectionandCommandendpoints. Previously, organization admins encountered a 500 server error when retrieving command details. - Avoided re-populating the VPN peers cache in
post\_save. Previously,VpnClient.post\_saverepopulated the peer cache immediately, causing slow or timed-out uWSGI requests for large peer sets. Now, it only invalidates the cache, which is later repopulated by the background task. - Fixed ordering of credentials in the REST API list view #1040.
- Fixed handling of non-existent devices in
DeviceLocationViewAPI. - Fixed unsaved changes alert showing for read-only maps #560.
1.1.2.post1 [2025-08-01]
Version 1.1.2.post1 could not be relased on PyPI due to outdated pypa/gh-action-pypi-publish action.
1.1.2 [2025-08-01]
Bugfixes
- Fixed compatibility of OpenWrt.update_config with openwisp-config >= 1.1.0.
- Fixed VPN-client template switch issue when switching between VPN servers with the same address.
- Fixed missing config_changed signal when reverting a template.
- Fixed Zerotier network name being set to "ow_zt" instead of "global".
- Fixed error in preview when device has no name set.
- Fixed live updates for "Send commands" when multiple websocket connections are open for the same device.
- Limited command results in the device admin to 30 entries to avoid loading issues.
- Fixed uncaught exception in
leaflet.draw.i18n.js. - Fixed handling of devices without a DeviceConnection when creating commands.
- Prevented adding multiple VPN client templates pointing to the same VPN server.
- Fixed timeout issues in VPN checksum and download configuration views for large VPN setups (e.g., 2000+ WireGuard peers) by caching the checksum and generated configuration.
- Fixed an issue where enforcing required templates was accidentally deleting VpnClient objects, causing them to be recreated whenever device templates were modified in the Django admin.
- Fixed
HTTP 500 Server Errorwhen geographic REST API endpoints receive a malformed resource ID.
1.1.1 [2025-01-31]
Bugfixes
- Fixed recovering deleted device with related location.
- Fixed deleting device with “deactivating” config status.
- Fixed conversion of MAC address to uppercase format with the openwisp-config agent.
- Fixed updating templates with invalid configurations to prevent ValidationError due to cache invalidation mechanism.
1.1.0 [2024-11-22]
Features
- Added support for ZeroTier.
- Added support for adding configuration templates and configuration variables to device groups.
- Implemented support for SNMP credentials.
- Added support for device deactivation and reactivation.
- Introduced an admin action to quickly move devices between groups.
- Added autocomplete support for filters in the admin interface.
- Added support to display configuration errors reported by the OpenWISP config agent.
- Enabled filtering of subnets by Subnet Division Rule type.
- Allowed limiting the number of devices per organization.
- Added support for defining organization-level variables.
- Enabled bulk import and export of devices.
- Added functionality to configure available commands for each organization.
- Added a dashboard chart showing the distribution of devices across different groups.
- Added filters to the REST API.
Changes
- Removing a VPN template from a device will not deleted the certificates associated with the
VPNClient. Instead, the certificates will be marked as revoked. - Allowed reusing
VNIacross all the tunnels created using an instance VXLAN over WireGuard VPN. - Added a data migration for updating
hwmodeconfiguration option of radio to "band". Thehwmodeoption is deprecated on OpenWrt > 21. - The configuration push update will not flag the configuration status as "applied". The status will be update once the OpenWISP Config agent on the device reports the status.
- Updated
DeviceConnection.connectto attempt all available credentials. - Changed the
on_cascadeproperty ofBaseDeviceLocation.locationandBaseDeviceLocation.floorplanfromPROTECTEDtoCASCADE. - Controller views will return
HTTP 404response for devices belonging to disabled organizations. - Show a loading indicator for commands in progress.
- Added VPN subnet CIDR to device's system-defined variables.
- Allowed defining subnet and IP address for VPNs with OpenVPN backend.
- Changed the target link for configuration error notifications to the "Configuration" tab of the device.
- JSONSchema Editor widget allows to define extra CSS classes. It will ignore fields with
manualclass. - Increased the soft time limit for celery task that operates of bulk objects.
- Added notifications for background subnet division rule errors.
- Added [name]{.title-ref} and [mac_address]{.title-ref} to device list filters in the API.
- Use autocomplete fields for related fields.
Dependencies:
- Bumped
django-sortedm2m~=4.0.0. - Bumped
django-reversion~=5.1.0. - Bumped
django-taggit~=4.0.0. - Bumped
netjsonconfig~=1.1.0. - Bumped
django-x509~=1.2.0. - Bumped
django-loci~=1.1.0. - Bumped
django-flat-json-widget~=0.3.0. - Bumped
openwisp-users~=1.1.0. - Bumped
openwisp-utils[celery]~=1.1.1. - Bumped
openwisp-notifications~=1.1.0. - Bumped
openwisp-ipam~=1.1.0. - Bumped
djangorestframework-gis~=1.1. - Bumped
paramiko[ed25519]~=3.5.0. - Bumped
scp~=0.15.0. - Bumped
django-cache-memoize~=0.2.0. - Bumped
shortuuid~=1.0.13. - Bumped
netaddr~=1.3.0. - Bumped
django-import-export~=3.3.0. - Added support for Django
4.1.xand4.2.x. - Added support for Python
3.10. - Dropped support for Python
3.7. - Dropped support for Django
3.0.xand3.1.x.
Bugfixes
- Fixed bug for displaying relevant templates where the backend of the device's configuration template does not match.
- Fixed displaying the command widget when the user has write permissions.
- Fixed DeviceConnection.get_working_connection to handle scenario where the device has no credentials.
- User need to have required model permissions to perform admin actions.
- Fixed import device preview table when browser is set to dark mode.
- Fixed subnet division rule does not allow assigning only 1 ip in /32.
- Fixed Device._has_group() wrongly returning True.
- Fixed JS of history pages on config app.
- Fixed REST API can creates device configs inadvertently.
- Fixed broken shared template preview.
- Fixed command APIs permissions.
- Fixed deleting VpnClient result in deleting all provisioned subnets of the device.
- Fixed group templates re-creating VPN clients.
- Fixed DeviceListSerializer returning HTTP 500 instead of HTTP 400 reponse on invalid data.
- Fixed re-ordering applied templates in device config.
- Fixed re-ordering templates on device add page.
- Fixed several issues with clone template feature.
- Fixed updating template organization puts devices in perennial "modified" state.
- Fixed user defined commands that do not require input.
- Fixed validation for SubnetDivisionRule.
- Fixed subnet division rule validation when master subnet is empty.
- Fixed validation in change device group admin action.
- Increased "timeoutInterval" for ReconnectingWebSocket.
- Added JS workaround for using mac address variable.
- Fixed same credential can be added to a device twice.
- Show reversion button to operators too.
- Fixed unsaved changes alert triggering on previewing configuration.
- Fixed dependency on the creation date in get_max_subnet method.
- Fixed Vpn.webhook_endpoint accepting invalid URL.
- Fixed object and config menu not opening in Device config editor.
1.0.3 [2022-08-03]
1.0.2 [2022-07-01]
Bugfixes
- Fixed device's "changed" signals emitting on the creation of new
device - Fixed django-reversion's recovery buttons were hidden from users
of the "Operator" group in the admin dashboard ofCertificateand
CAmodels - Removed hardcoded static URLs which created issues when static
files are served using an external service (e.g. S3 storage buckets) - Fixed permissions for "Operator" and "Administrator" groups to
access "OrganizationConfigSettings" objects - Fixed support for multiple wireguard tunnels on the same devices
- Fixed "/api/v1/controller/device/{id}/" REST API endpoint not
updating the device's configuration backend