openwisp-controller 1.0.3__tar.gz → 1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openwisp_controller-1.1/CHANGES.rst +800 -0
- openwisp_controller-1.1/PKG-INFO +149 -0
- openwisp_controller-1.1/README.rst +109 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/__init__.py +1 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/admin.py +1 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/admin.py +526 -55
- openwisp_controller-1.1/openwisp_controller/config/api/download_views.py +47 -0
- openwisp_controller-1.1/openwisp_controller/config/api/filters.py +144 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/api/serializers.py +121 -62
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/api/urls.py +14 -3
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/api/views.py +57 -31
- openwisp_controller-1.1/openwisp_controller/config/api/zerotier_service.py +195 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/apps.py +150 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/base/config.py +263 -32
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/base/device.py +192 -12
- openwisp_controller-1.1/openwisp_controller/config/base/device_group.py +118 -0
- openwisp_controller-1.1/openwisp_controller/config/base/multitenancy.py +119 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/base/template.py +6 -7
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/base/vpn.py +366 -87
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/controller/views.py +29 -4
- openwisp_controller-1.1/openwisp_controller/config/exceptions.py +24 -0
- openwisp_controller-1.1/openwisp_controller/config/exportable.py +171 -0
- openwisp_controller-1.1/openwisp_controller/config/filters.py +36 -0
- openwisp_controller-1.1/openwisp_controller/config/handlers.py +154 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0001_squashed_0002_config_settings_uuid.py +2 -11
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0003_template_tags.py +1 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0004_add_device_model.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0006_config_device_not_null.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0007_simplify_config.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0008_update_indexes.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0009_device_system.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0010_auto_20180106_1814.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0011_update_device_mac_address.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0012_auto_20180219_1501.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0013_last_ip_management_ip_and_status_applied.py +7 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0014_device_hardware_id.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0017_template_name_organization_unique_together.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0018_config_context.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0019_organization_mac_add_hardware_id_name_unique_together.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0020_remove_config_organization.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0021_vpn_key.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0022_vpn_format_dh.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0023_update_context.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0024_update_context_data.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0025_update_device_key.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0026_hardware_id_not_unique.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0027_add_indexes_on_ip_fields.py +7 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0028_template_default_values.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0029_merge_django_netjsonconfig.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0030_django_taggit_update.py +3 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0031_update_vpn_dh_param.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0032_update_legacy_vpn_backend.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0033_name_unique_per_organization.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0034_template_required.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0035_device_name_unique_optional.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0036_device_group.py +6 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0037_alter_taggedtemplate.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0038_vpn_subnet.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0039_wireguard_vxlan_ipam.py +4 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0040_vpnclient_ip_setnull.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0041_default_groups_organizationconfigsettings_permission.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0042_multiple_wireguard_tunnels.py +0 -1
- openwisp_controller-1.1/openwisp_controller/config/migrations/0043_devicegroup_templates.py +32 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0044_config_error_reason.py +22 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0045_alter_vpn_webhook_endpoint.py +25 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0046_organizationlimits.py +49 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0047_add_organizationlimits.py +18 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0048_wifi_radio_band_migration.py +154 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0049_devicegroup_context.py +30 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0050_alter_vpnclient_unique_together.py +16 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0051_organizationconfigsettings_context.py +30 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0052_vpn_node_network_id.py +22 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0053_vpnclient_secret.py +17 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0054_device__is_deactivated.py +17 -0
- openwisp_controller-1.1/openwisp_controller/config/migrations/0055_alter_config_status.py +39 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/__init__.py +10 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/models.py +14 -1
- openwisp_controller-1.1/openwisp_controller/config/settings.py +69 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/signals.py +24 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/sortedm2m/fields.py +11 -0
- openwisp_controller-1.1/openwisp_controller/config/sortedm2m/forms.py +24 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/css/admin.css +72 -21
- openwisp_controller-1.1/openwisp_controller/config/static/config/css/devicegroup.css +10 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/css/lib/advanced-mode.css +13 -10
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/css/lib/jsonschema-ui.css +22 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/lib/jsonschema-ui.js +1 -1
- openwisp_controller-1.1/openwisp_controller/config/static/config/js/management_ip.js +40 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/preview.js +5 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/relevant_templates.js +46 -20
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/unsaved_changes.js +4 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/vpn.js +18 -16
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/widget.js +84 -8
- openwisp_controller-1.1/openwisp_controller/config/static/import_export/import-openwisp.css +38 -0
- openwisp_controller-1.1/openwisp_controller/config/static/sortedm2m/patch_sortedm2m.js +16 -0
- openwisp_controller-1.1/openwisp_controller/config/static/support.css +4 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tasks.py +49 -4
- openwisp_controller-1.1/openwisp_controller/config/tasks_zerotier.py +297 -0
- openwisp_controller-1.1/openwisp_controller/config/templates/admin/config/change_device_group.html +47 -0
- openwisp_controller-1.1/openwisp_controller/config/templates/admin/config/change_list_device.html +9 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/templates/admin/config/clone_template_form.html +24 -13
- openwisp_controller-1.1/openwisp_controller/config/templates/admin/config/device/change_form.html +34 -0
- openwisp_controller-1.1/openwisp_controller/config/templates/admin/config/device/delete_selected_confirmation.html +36 -0
- openwisp_controller-1.1/openwisp_controller/config/templates/admin/device_group/change_form.html +23 -0
- openwisp_controller-1.1/openwisp_controller/config/templates/admin/import_export/import.html +7 -0
- openwisp_controller-1.1/openwisp_controller/config/templates/reversion/config/revision_form.html +31 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/pytest.py +1 -3
- openwisp_controller-1.1/openwisp_controller/config/tests/test_admin.py +2632 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_api.py +615 -85
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_apps.py +34 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_config.py +145 -27
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_controller.py +224 -24
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_device.py +271 -5
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_device_group.py +25 -3
- openwisp_controller-1.1/openwisp_controller/config/tests/test_handlers.py +37 -0
- openwisp_controller-1.1/openwisp_controller/config/tests/test_notifications.py +340 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_selenium.py +131 -61
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_template.py +34 -12
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_views.py +51 -10
- openwisp_controller-1.1/openwisp_controller/config/tests/test_vpn.py +2039 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/utils.py +174 -7
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/utils.py +6 -0
- openwisp_controller-1.1/openwisp_controller/config/views.py +192 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/widgets.py +18 -21
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/admin.py +25 -12
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/api/serializer.py +11 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/api/views.py +30 -31
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/apps.py +16 -26
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/base/models.py +74 -15
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/commands.py +20 -2
- openwisp_controller-1.1/openwisp_controller/connection/connectors/airos/snmp.py +5 -0
- openwisp_controller-1.1/openwisp_controller/connection/connectors/openwrt/snmp.py +5 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/connectors/openwrt/ssh.py +1 -1
- openwisp_controller-1.1/openwisp_controller/connection/connectors/snmp.py +34 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/connectors/ssh.py +17 -0
- openwisp_controller-1.1/openwisp_controller/connection/exceptions.py +9 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/migrations/0001_initial.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/migrations/0002_credentials_auto_add.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/migrations/0004_django3_1_upgrade.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/migrations/0005_device_connection_failure_reason.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/migrations/0006_name_unique_per_organization.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/migrations/0007_command.py +1 -1
- openwisp_controller-1.1/openwisp_controller/connection/migrations/0008_remove_conflicting_deviceconnections.py +30 -0
- openwisp_controller-1.1/openwisp_controller/connection/migrations/0009_alter_deviceconnection_unique_together.py +18 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/settings.py +15 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/static/connection/css/command-inline.css +41 -25
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/static/connection/css/credentials.css +12 -5
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/static/connection/js/commands.js +31 -17
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tasks.py +25 -6
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test_admin.py +64 -8
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test_api.py +144 -22
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test_command_utilities.py +1 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test_models.py +217 -22
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test_notifications.py +29 -29
- openwisp_controller-1.1/openwisp_controller/connection/tests/test_selenium.py +69 -0
- openwisp_controller-1.1/openwisp_controller/connection/tests/test_snmp.py +59 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test_ssh.py +14 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/utils.py +4 -1
- openwisp_controller-1.1/openwisp_controller/connection/utils.py +6 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/widgets.py +8 -12
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/admin.py +12 -8
- openwisp_controller-1.1/openwisp_controller/geo/api/filters.py +27 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/api/views.py +25 -18
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/apps.py +3 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/base/models.py +2 -2
- openwisp_controller-1.1/openwisp_controller/geo/exportable.py +94 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/migrations/0001_initial.py +0 -1
- openwisp_controller-1.1/openwisp_controller/geo/migrations/0003_alter_devicelocation_floorplan_location.py +34 -0
- openwisp_controller-1.1/openwisp_controller/geo/tests/test_admin.py +284 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/tests/test_api.py +122 -15
- openwisp_controller-1.1/openwisp_controller/mixins.py +37 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/admin.py +2 -2
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/api/serializers.py +2 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/apps.py +3 -0
- openwisp_controller-1.1/openwisp_controller/pki/base/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/base/models.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0001_initial.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0002_add_organization_name.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0004_auto_20180106_1814.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0005_organizational_unit_name.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0006_add_x509_passphrase_field.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0008_serial_number_length.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0009_common_name_maxlength_64.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0010_common_name_organization_unique.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0011_disallowed_blank_key_length_or_digest.py +0 -1
- openwisp_controller-1.1/openwisp_controller/pki/tests/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/tests/test_admin.py +13 -14
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/tests/test_api.py +12 -3
- openwisp_controller-1.1/openwisp_controller/subnet_division/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/admin.py +12 -15
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/base/models.py +24 -12
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/filters.py +30 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/migrations/0001_initial.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/migrations/0003_related_field_allow_blank.py +0 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/migrations/0004_index_rule_on_delete.py +0 -1
- openwisp_controller-1.1/openwisp_controller/subnet_division/migrations/0005_number_of_subnets_and_ips.py +41 -0
- openwisp_controller-1.1/openwisp_controller/subnet_division/rule_types/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/rule_types/base.py +52 -12
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/rule_types/vpn.py +12 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/tasks.py +1 -3
- openwisp_controller-1.1/openwisp_controller/subnet_division/tests/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/tests/helpers.py +2 -4
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/tests/test_admin.py +76 -1
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/tests/test_models.py +364 -35
- openwisp_controller-1.1/openwisp_controller/subnet_division/tests/test_rule.py +39 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/tests/mixins.py +3 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/tests/test_selenium.py +26 -52
- openwisp_controller-1.1/openwisp_controller/tests/utils.py +51 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/vpn_backends.py +36 -1
- openwisp_controller-1.1/openwisp_controller.egg-info/PKG-INFO +149 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller.egg-info/SOURCES.txt +47 -1
- openwisp_controller-1.1/openwisp_controller.egg-info/requires.txt +18 -0
- openwisp_controller-1.1/pyproject.toml +22 -0
- openwisp_controller-1.1/requirements.txt +18 -0
- openwisp_controller-1.1/setup.cfg +12 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/setup.py +4 -20
- openwisp-controller-1.0.3/CHANGES.rst +0 -577
- openwisp-controller-1.0.3/PKG-INFO +0 -3802
- openwisp-controller-1.0.3/README.rst +0 -3780
- openwisp-controller-1.0.3/openwisp_controller/config/__init__.py +0 -1
- openwisp-controller-1.0.3/openwisp_controller/config/base/device_group.py +0 -41
- openwisp-controller-1.0.3/openwisp_controller/config/base/multitenancy.py +0 -35
- openwisp-controller-1.0.3/openwisp_controller/config/handlers.py +0 -71
- openwisp-controller-1.0.3/openwisp_controller/config/settings.py +0 -80
- openwisp-controller-1.0.3/openwisp_controller/config/static/config/css/clone-template-form.css +0 -31
- openwisp-controller-1.0.3/openwisp_controller/config/static/config/css/devicegroup.css +0 -10
- openwisp-controller-1.0.3/openwisp_controller/config/tests/test_admin.py +0 -1337
- openwisp-controller-1.0.3/openwisp_controller/config/tests/test_notifications.py +0 -80
- openwisp-controller-1.0.3/openwisp_controller/config/tests/test_vpn.py +0 -913
- openwisp-controller-1.0.3/openwisp_controller/config/views.py +0 -117
- openwisp-controller-1.0.3/openwisp_controller/connection/__init__.py +0 -1
- openwisp-controller-1.0.3/openwisp_controller/geo/__init__.py +0 -1
- openwisp-controller-1.0.3/openwisp_controller/geo/tests/test_admin.py +0 -133
- openwisp-controller-1.0.3/openwisp_controller/mixins.py +0 -14
- openwisp-controller-1.0.3/openwisp_controller/pki/__init__.py +0 -1
- openwisp-controller-1.0.3/openwisp_controller/subnet_division/__init__.py +0 -1
- openwisp-controller-1.0.3/openwisp_controller/subnet_division/tests/test_rule.py +0 -13
- openwisp-controller-1.0.3/openwisp_controller/tests/utils.py +0 -56
- openwisp-controller-1.0.3/openwisp_controller.egg-info/PKG-INFO +0 -3802
- openwisp-controller-1.0.3/openwisp_controller.egg-info/requires.txt +0 -18
- openwisp-controller-1.0.3/requirements.txt +0 -18
- openwisp-controller-1.0.3/setup.cfg +0 -22
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/LICENSE +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/MANIFEST.in +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/base.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/checks.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/config/api → openwisp_controller-1.1/openwisp_controller/config}/__init__.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/config/base → openwisp_controller-1.1/openwisp_controller/config/api}/__init__.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/config/controller → openwisp_controller-1.1/openwisp_controller/config/base}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/base/base.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/base/channels_consumer.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/base/tag.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/config/sortedm2m → openwisp_controller-1.1/openwisp_controller/config/controller}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/controller/urls.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/crypto.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/fixtures/test_templates.json +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0005_populate_device.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0015_default_groups_permissions.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/migrations/0016_default_organization_config_settings.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/connection/base → openwisp_controller-1.1/openwisp_controller/config/sortedm2m}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/css/lib/img/jsoneditor-icons.svg +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/lib/advanced-mode.js +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/lib/tomorrow_night_bright.js +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/switcher.js +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/tabs.js +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/static/config/js/utils.js +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/templates/admin/config/change_form.html +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/templates/admin/config/device_recover_form.html +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/templates/admin/config/jsonschema-widget.html +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/templates/admin/config/preview.html +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/templates/admin/config/system_context.html +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/tests/test_tag.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/urls.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/config/validators.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/connection/connectors → openwisp_controller-1.1/openwisp_controller/connection}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/api/urls.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/connection/connectors/openwrt → openwisp_controller-1.1/openwisp_controller/connection/base}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/channels/consumers.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/channels/routing.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/connection/tests → openwisp_controller-1.1/openwisp_controller/connection/connectors}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/connectors/exceptions.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/geo/api → openwisp_controller-1.1/openwisp_controller/connection/connectors/openwrt}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/migrations/0003_default_group_permissions.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/migrations/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/models.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/schema.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/signals.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/static/connection/js/credentials.js +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/static/connection/js/lib/reconnecting-websocket.min.js +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/geo/base → openwisp_controller-1.1/openwisp_controller/connection/tests}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/base.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/pytest.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test-key.ed25519 +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test-key.rsa +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/connection/tests/test_tasks.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/context_processors.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/geo/channels → openwisp_controller-1.1/openwisp_controller/geo}/__init__.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/geo/tests → openwisp_controller-1.1/openwisp_controller/geo/api}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/api/serializers.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/api/urls.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/pki → openwisp_controller-1.1/openwisp_controller/geo}/base/__init__.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/pki/tests → openwisp_controller-1.1/openwisp_controller/geo/channels}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/channels/consumers.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/channels/routing.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/migrations/0002_default_groups_permissions.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/migrations/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/models.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/templates/admin/widgets/foreign_key_raw_id.html +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/subnet_division/rule_types → openwisp_controller-1.1/openwisp_controller/geo/tests}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/tests/pytest.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/tests/test_admin_inline.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/tests/test_apps.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/tests/test_models.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/tests/utils.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/geo/utils.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/migrations.py +0 -0
- {openwisp-controller-1.0.3/openwisp_controller/subnet_division/tests → openwisp_controller-1.1/openwisp_controller/pki}/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/api/urls.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/api/views.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0003_fill_organization_name.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/0007_default_groups_permissions.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/migrations/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/models.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/static/admin/pki/js/show-org-field.js +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/templates/admin/pki/change_form.html +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/tests/test_models.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/tests/utils.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/urls.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/pki/utils.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/routing.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/settings.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/apps.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/migrations/0002_default_group_migration.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/migrations/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/models.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/rule_types/device.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/settings.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/signals.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/static/subnet-division/css/subnet-division.css +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/static/subnet-division/js/subnet-division.js +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/subnet_division/utils.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/tests/__init__.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/tests/test_users_integration.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/tests/test_utilities.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller/urls.py +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller.egg-info/dependency_links.txt +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller.egg-info/not-zip-safe +0 -0
- {openwisp-controller-1.0.3 → openwisp_controller-1.1}/openwisp_controller.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,800 @@
|
|
|
1
|
+
Changelog
|
|
2
|
+
=========
|
|
3
|
+
|
|
4
|
+
Version 1.1.0 [2024-11-22]
|
|
5
|
+
--------------------------
|
|
6
|
+
|
|
7
|
+
Features
|
|
8
|
+
~~~~~~~~
|
|
9
|
+
|
|
10
|
+
- Added `support for ZeroTier
|
|
11
|
+
<https://openwisp.io/docs/dev/controller/user/zerotier.html>`_.
|
|
12
|
+
- Added support for adding `configuration templates
|
|
13
|
+
<https://openwisp.io/docs/dev/controller/user/device-groups.html#group-templates>`_
|
|
14
|
+
and `configuration variables
|
|
15
|
+
<https://openwisp.io/docs/dev/controller/user/device-groups.html#group-configuration-variables>`_
|
|
16
|
+
to device groups.
|
|
17
|
+
- Implemented support for `SNMP credentials
|
|
18
|
+
<https://openwisp.io/docs/dev/controller/user/intro.html#snmp>`_.
|
|
19
|
+
- Added support for device deactivation and reactivation.
|
|
20
|
+
- Introduced an admin action to quickly move devices between groups.
|
|
21
|
+
- Added autocomplete support for filters in the admin interface.
|
|
22
|
+
- Added support to display configuration errors reported by the OpenWISP
|
|
23
|
+
config agent.
|
|
24
|
+
- Enabled filtering of subnets by Subnet Division Rule type.
|
|
25
|
+
- Allowed `limiting the number of devices per organization
|
|
26
|
+
<https://openwisp.io/docs/dev/controller/user/organization-limits.html>`_.
|
|
27
|
+
- Added support for defining organization-level variables.
|
|
28
|
+
- Enabled `bulk import and export of devices
|
|
29
|
+
<https://openwisp.io/docs/dev/controller/user/import-export.html>`_.
|
|
30
|
+
- Added `functionality to configure available commands for each
|
|
31
|
+
organization
|
|
32
|
+
<https://openwisp.io/docs/dev/controller/user/settings.html#openwisp-controller-organization-enabled-commands>`_.
|
|
33
|
+
- Added a dashboard chart showing the distribution of devices across
|
|
34
|
+
different groups.
|
|
35
|
+
- Added filters to the REST API.
|
|
36
|
+
|
|
37
|
+
Changes
|
|
38
|
+
~~~~~~~
|
|
39
|
+
|
|
40
|
+
- Removing a VPN template from a device will not deleted the certificates
|
|
41
|
+
associated with the ``VPNClient``. Instead, the certificates will be
|
|
42
|
+
marked as revoked.
|
|
43
|
+
- Allowed reusing ``VNI`` across all the tunnels created using an instance
|
|
44
|
+
VXLAN over WireGuard VPN.
|
|
45
|
+
- Added a data migration for updating ``hwmode`` configuration option of
|
|
46
|
+
radio to "band". The ``hwmode`` option is deprecated on OpenWrt > 21.
|
|
47
|
+
- The configuration push update will not flag the configuration status as
|
|
48
|
+
"applied". The status will be update once the OpenWISP Config agent on
|
|
49
|
+
the device reports the status.
|
|
50
|
+
- Updated ``DeviceConnection.connect`` to attempt all available
|
|
51
|
+
credentials.
|
|
52
|
+
- Changed the ``on_cascade`` property of ``BaseDeviceLocation.location``
|
|
53
|
+
and ``BaseDeviceLocation.floorplan`` from ``PROTECTED`` to ``CASCADE``.
|
|
54
|
+
- Controller views will return ``HTTP 404`` response for devices belonging
|
|
55
|
+
to disabled organizations.
|
|
56
|
+
- Show a loading indicator for commands in progress.
|
|
57
|
+
- Added VPN subnet CIDR to device's system-defined variables.
|
|
58
|
+
- Allowed defining subnet and IP address for VPNs with OpenVPN backend.
|
|
59
|
+
- Changed the target link for configuration error notifications to the
|
|
60
|
+
"Configuration" tab of the device.
|
|
61
|
+
- JSONSchema Editor widget allows to define extra CSS classes. It will
|
|
62
|
+
ignore fields with ``manual`` class.
|
|
63
|
+
- Increased the soft time limit for celery task that operates of bulk
|
|
64
|
+
objects.
|
|
65
|
+
- Added notifications for background subnet division rule errors.
|
|
66
|
+
- Added `name` and `mac_address` to device list filters in the API.
|
|
67
|
+
- Use autocomplete fields for related fields.
|
|
68
|
+
|
|
69
|
+
**Dependencies**:
|
|
70
|
+
|
|
71
|
+
- Bumped ``django-sortedm2m~=4.0.0``.
|
|
72
|
+
- Bumped ``django-reversion~=5.1.0``.
|
|
73
|
+
- Bumped ``django-taggit~=4.0.0``.
|
|
74
|
+
- Bumped ``netjsonconfig~=1.1.0``.
|
|
75
|
+
- Bumped ``django-x509~=1.2.0``.
|
|
76
|
+
- Bumped ``django-loci~=1.1.0``.
|
|
77
|
+
- Bumped ``django-flat-json-widget~=0.3.0``.
|
|
78
|
+
- Bumped ``openwisp-users~=1.1.0``.
|
|
79
|
+
- Bumped ``openwisp-utils[celery]~=1.1.1``.
|
|
80
|
+
- Bumped ``openwisp-notifications~=1.1.0``.
|
|
81
|
+
- Bumped ``openwisp-ipam~=1.1.0``.
|
|
82
|
+
- Bumped ``djangorestframework-gis~=1.1``.
|
|
83
|
+
- Bumped ``paramiko[ed25519]~=3.5.0``.
|
|
84
|
+
- Bumped ``scp~=0.15.0``.
|
|
85
|
+
- Bumped ``django-cache-memoize~=0.2.0``.
|
|
86
|
+
- Bumped ``shortuuid~=1.0.13``.
|
|
87
|
+
- Bumped ``netaddr~=1.3.0``.
|
|
88
|
+
- Bumped ``django-import-export~=3.3.0``.
|
|
89
|
+
- Added support for Django ``4.1.x`` and ``4.2.x``.
|
|
90
|
+
- Added support for Python ``3.10``.
|
|
91
|
+
- Dropped support for Python ``3.7``.
|
|
92
|
+
- Dropped support for Django ``3.0.x`` and ``3.1.x``.
|
|
93
|
+
|
|
94
|
+
Bugfixes
|
|
95
|
+
~~~~~~~~
|
|
96
|
+
|
|
97
|
+
- Fixed `bug for displaying relevant templates where the backend of the
|
|
98
|
+
device's configuration template does not match
|
|
99
|
+
<https://github.com/openwisp/openwisp-controller/pull/771>`_.
|
|
100
|
+
- Fixed `displaying the command widget when the user has write permissions
|
|
101
|
+
<https://github.com/openwisp/openwisp-controller/pull/854>`_.
|
|
102
|
+
- Fixed `DeviceConnection.get_working_connection to handle scenario where
|
|
103
|
+
the device has no credentials
|
|
104
|
+
<https://github.com/openwisp/openwisp-controller/pull/720>`_.
|
|
105
|
+
- `User need to have required model permissions to perform admin actions
|
|
106
|
+
<https://github.com/openwisp/openwisp-controller/pull/873>`_.
|
|
107
|
+
- Fixed `import device preview table when browser is set to dark mode
|
|
108
|
+
<https://github.com/openwisp/openwisp-controller/issues/851>`_.
|
|
109
|
+
- Fixed `subnet division rule does not allow assigning only 1 ip in /32
|
|
110
|
+
<https://github.com/openwisp/openwisp-controller/issues/842>`_.
|
|
111
|
+
- Fixed `Device._has_group() wrongly returning True
|
|
112
|
+
<https://github.com/openwisp/openwisp-controller/pull/804>`_.
|
|
113
|
+
- Fixed `JS of history pages on config app
|
|
114
|
+
<https://github.com/openwisp/openwisp-controller/issues/681>`_.
|
|
115
|
+
- Fixed `REST API can creates device configs inadvertently
|
|
116
|
+
<https://github.com/openwisp/openwisp-controller/issues/699>`_.
|
|
117
|
+
- Fixed `broken shared template preview
|
|
118
|
+
<https://github.com/openwisp/openwisp-controller/issues/742>`_.
|
|
119
|
+
- Fixed `command APIs permissions
|
|
120
|
+
<https://github.com/openwisp/openwisp-controller/issues/754>`_.
|
|
121
|
+
- Fixed `deleting VpnClient result in deleting all provisioned subnets of
|
|
122
|
+
the device <https://github.com/openwisp/openwisp-controller/pull/805>`_.
|
|
123
|
+
- Fixed `group templates re-creating VPN clients
|
|
124
|
+
<https://github.com/openwisp/openwisp-controller/issues/703>`_.
|
|
125
|
+
- Fixed `DeviceListSerializer returning HTTP 500 instead of HTTP 400
|
|
126
|
+
reponse on invalid data
|
|
127
|
+
<https://github.com/openwisp/openwisp-controller/issues/695>`_.
|
|
128
|
+
- Fixed `re-ordering applied templates in device config
|
|
129
|
+
<https://github.com/openwisp/openwisp-controller/pull/830>`_.
|
|
130
|
+
- Fixed `re-ordering templates on device add page
|
|
131
|
+
<https://github.com/openwisp/openwisp-controller/issues/434>`_.
|
|
132
|
+
- Fixed `several issues with clone template feature
|
|
133
|
+
<https://github.com/openwisp/openwisp-controller/pull/838>`_.
|
|
134
|
+
- Fixed `updating template organization puts devices in perennial
|
|
135
|
+
"modified" state
|
|
136
|
+
<https://github.com/openwisp/openwisp-controller/issues/213>`_.
|
|
137
|
+
- Fixed `user defined commands that do not require input
|
|
138
|
+
<https://github.com/openwisp/openwisp-controller/pull/871>`_.
|
|
139
|
+
- Fixed `validation for SubnetDivisionRule
|
|
140
|
+
<https://github.com/openwisp/openwisp-controller/issues/706>`_.
|
|
141
|
+
- Fixed `subnet division rule validation when master subnet is empty
|
|
142
|
+
<https://github.com/openwisp/openwisp-controller/issues/866>`_.
|
|
143
|
+
- Fixed `validation in change device group admin action
|
|
144
|
+
<https://github.com/openwisp/openwisp-controller/issues/762>`_.
|
|
145
|
+
- `Increased "timeoutInterval" for ReconnectingWebSocket
|
|
146
|
+
<https://github.com/openwisp/openwisp-controller/issues/772>`_.
|
|
147
|
+
- Added `JS workaround for using mac address variable
|
|
148
|
+
<https://github.com/openwisp/openwisp-controller/pull/876>`_.
|
|
149
|
+
- Fixed `same credential can be added to a device twice
|
|
150
|
+
<https://github.com/openwisp/openwisp-controller/issues/795>`_.
|
|
151
|
+
- `Show reversion button to operators too
|
|
152
|
+
<https://github.com/openwisp/openwisp-controller/pull/652>`_.
|
|
153
|
+
- Fixed `unsaved changes alert triggering on previewing configuration
|
|
154
|
+
<https://github.com/openwisp/openwisp-controller/pull/857>`_.
|
|
155
|
+
- Fixed `dependency on the creation date in get_max_subnet method
|
|
156
|
+
<https://github.com/openwisp/openwisp-controller/issues/728>`_.
|
|
157
|
+
- Fixed `Vpn.webhook_endpoint accepting invalid URL
|
|
158
|
+
<https://github.com/openwisp/openwisp-controller/issues/689>`_.
|
|
159
|
+
- Fixed `object and config menu not opening in Device config editor
|
|
160
|
+
<https://github.com/openwisp/openwisp-controller/pull/913>`.
|
|
161
|
+
|
|
162
|
+
Version 1.0.3 [2022-08-03]
|
|
163
|
+
--------------------------
|
|
164
|
+
|
|
165
|
+
Bugfixes
|
|
166
|
+
~~~~~~~~
|
|
167
|
+
|
|
168
|
+
- `Fixed tests failing due to openwisp-notification>=1.0.2
|
|
169
|
+
<https://github.com/openwisp/openwisp-controller/pull/670>`_
|
|
170
|
+
- `Fixed checksum cache is not invalidated on VPN server change
|
|
171
|
+
<https://github.com/openwisp/openwisp-controller/issues/667>`_
|
|
172
|
+
|
|
173
|
+
Version 1.0.2 [2022-07-01]
|
|
174
|
+
--------------------------
|
|
175
|
+
|
|
176
|
+
Bugfixes
|
|
177
|
+
~~~~~~~~
|
|
178
|
+
|
|
179
|
+
- Fixed `device's "changed" signals emitting on the creation of new device
|
|
180
|
+
<https://github.com/openwisp/openwisp-controller/issues/649>`_
|
|
181
|
+
- Fixed *django-reversion's* recovery buttons were hidden from users of
|
|
182
|
+
the "Operator" group in the admin dashboard of ``Certificate`` and
|
|
183
|
+
``CA`` models
|
|
184
|
+
- Removed `hardcoded static URLs
|
|
185
|
+
<https://github.com/openwisp/openwisp-controller/issues/660>`_ which
|
|
186
|
+
created issues when static files are served using an external service
|
|
187
|
+
(e.g. S3 storage buckets)
|
|
188
|
+
- Fixed `permissions for "Operator" and "Administrator" groups to access
|
|
189
|
+
"OrganizationConfigSettings" objects
|
|
190
|
+
<https://github.com/openwisp/openwisp-controller/issues/664>`_
|
|
191
|
+
- Fixed `support for multiple wireguard tunnels on the same devices
|
|
192
|
+
<https://github.com/openwisp/openwisp-controller/issues/657>`_
|
|
193
|
+
- Fixed `"/api/v1/controller/device/{id}/" REST API endpoint not updating
|
|
194
|
+
the device's configuration backend
|
|
195
|
+
<https://github.com/openwisp/openwisp-controller/issues/658>`_
|
|
196
|
+
|
|
197
|
+
Version 1.0.1 [2022-05-11]
|
|
198
|
+
--------------------------
|
|
199
|
+
|
|
200
|
+
Bugfixes
|
|
201
|
+
~~~~~~~~
|
|
202
|
+
|
|
203
|
+
- Admin: show main group information in ``DeviceGroupAdmin`` list: - name
|
|
204
|
+
- organization - modified - created
|
|
205
|
+
- Fixed uncaught exception triggered on the deletion of VPN client
|
|
206
|
+
certificates
|
|
207
|
+
- SSH connection: fixed OpenWrt <= 19 authentication failure
|
|
208
|
+
- The SSH connection is now explicitly closed when the authentication
|
|
209
|
+
fails to avoid leaving lingering SSH connection objects open
|
|
210
|
+
|
|
211
|
+
Version 1.0.0 [2022-04-29]
|
|
212
|
+
--------------------------
|
|
213
|
+
|
|
214
|
+
Features
|
|
215
|
+
~~~~~~~~
|
|
216
|
+
|
|
217
|
+
- Added support for `remotely executing shell commands on device
|
|
218
|
+
<https://github.com/openwisp/openwisp-controller#sending-commands-to-devices>`_
|
|
219
|
+
- Added `automatic provisioning of Subnets and IPs
|
|
220
|
+
<https://github.com/openwisp/openwisp-controller#subnet-division-app>`_
|
|
221
|
+
- Added `support for WireGuard and VXLAN tunnels
|
|
222
|
+
<https://github.com/openwisp/openwisp-controller#how-to-setup-wireguard-tunnels>`_
|
|
223
|
+
- Added `required templates
|
|
224
|
+
<https://github.com/openwisp/openwisp-controller#required-templates>`_
|
|
225
|
+
- Added support for generating configurations for OpenWrt 21
|
|
226
|
+
- Added `REST API
|
|
227
|
+
<https://github.com/openwisp/openwisp-controller#rest-api-reference>`_
|
|
228
|
+
- Added dashboard charts for *config status*, *model*, *OS*, *hardware*
|
|
229
|
+
and *location type*
|
|
230
|
+
- Added `management_ip_changed
|
|
231
|
+
<https://github.com/openwisp/openwisp-controller#management_ip_changed>`_
|
|
232
|
+
and `device_name_changed
|
|
233
|
+
<https://github.com/openwisp/openwisp-controller#device_name_changed>`_
|
|
234
|
+
signals
|
|
235
|
+
- Added `OPENWISP_CONTROLLER_DEVICE_NAME_UNIQUE setting
|
|
236
|
+
<https://github.com/openwisp/openwisp-controller#openwisp_controller_device_name_unique>`_
|
|
237
|
+
to conditionally enforce unique device names in an organization
|
|
238
|
+
- Added caching for ``DeviceChecksumView``
|
|
239
|
+
- Added support for ED25519 SSH keys in ``Credentials``
|
|
240
|
+
- Added `Device Groups
|
|
241
|
+
<https://github.com/openwisp/openwisp-controller#device-groups>`_ to
|
|
242
|
+
organize devices of a particular organization
|
|
243
|
+
- Configuration push updates now use the SIGUSR1 signal to reload
|
|
244
|
+
openwisp-config
|
|
245
|
+
- The device list admin page now allows to search for location address
|
|
246
|
+
|
|
247
|
+
Changes
|
|
248
|
+
~~~~~~~
|
|
249
|
+
|
|
250
|
+
Backward incompatible changes
|
|
251
|
+
+++++++++++++++++++++++++++++
|
|
252
|
+
|
|
253
|
+
- Since django-sortedm2m, the widget we use to implement ordered
|
|
254
|
+
templates, clears all the many to many relationships every time it has
|
|
255
|
+
to make changes, we had to stop deleting ``VpnClient`` instances related
|
|
256
|
+
to VPN templates on ``post_clear`` m2m signals If you wrote any custom
|
|
257
|
+
derivative which relies on calls like
|
|
258
|
+
``device.config.templates.clear()`` to delete related ``VpnClient``
|
|
259
|
+
instances and their x509 certificates, you will have to update your code
|
|
260
|
+
to remove all the templates using their primary keys, instead of using
|
|
261
|
+
``clear()``
|
|
262
|
+
- The default behavior for the resolution of conflicting management IPs
|
|
263
|
+
between devices of different organizations has been changed; by default,
|
|
264
|
+
in this new version, the system assumes it's using only 1 management
|
|
265
|
+
tunnel for all the organizations, so different devices from any
|
|
266
|
+
organization will not have the same management IP to avoid conflicts.
|
|
267
|
+
The old behaviour can be restored by setting
|
|
268
|
+
`OPENWISP_CONTROLLER_SHARED_MANAGEMENT_IP_ADDRESS_SPACE
|
|
269
|
+
<https://github.com/openwisp/openwisp-controller#openwisp_controller_shared_management_ip_address_space>`_
|
|
270
|
+
to ``False``
|
|
271
|
+
- ``OPENWISP_CONTROLLER_BACKEND_DEVICE_LIST`` has been renamed to
|
|
272
|
+
``OPENWISP_CONTROLLER_CONFIG_BACKEND_FIELD_SHOWN``
|
|
273
|
+
- ``Device.check_management_ip_changed`` has been changed to private API
|
|
274
|
+
``Device._check_management_ip_changed``
|
|
275
|
+
|
|
276
|
+
Dependencies
|
|
277
|
+
++++++++++++
|
|
278
|
+
|
|
279
|
+
- Dropped support for Python 3.6
|
|
280
|
+
- Dropped support for Django 2.2
|
|
281
|
+
- Added support for Python 3.8 and 3.9
|
|
282
|
+
- Added support for Django 3.2 and 4.0
|
|
283
|
+
- Upgraded django-sortedm2m to 3.1.x
|
|
284
|
+
- Upgraded django-reversion to 4.0.x
|
|
285
|
+
- Upgraded django-taggit to 2.1.x
|
|
286
|
+
- Upgraded djangorestframework-gis to 0.18.0
|
|
287
|
+
- Upgraded paramiko[ed25519] to 2.10.3
|
|
288
|
+
- Upgraded scp to 0.14.2
|
|
289
|
+
- Upgraded django-flat-json-widget to 0.2.x
|
|
290
|
+
- Upgraded celery to 5.2.x
|
|
291
|
+
- Upgraded channels to 3.0.x
|
|
292
|
+
- Upgraded django-x509 to 1.1.x
|
|
293
|
+
- Upgraded django-loci to 1.0.x
|
|
294
|
+
- Upgraded netjsonconfig to 1.0.x
|
|
295
|
+
- Upgraded openwisp-utils to 1.0.x
|
|
296
|
+
- Upgraded openwisp-users to 1.0.x
|
|
297
|
+
- Upgraded openwisp-notifications to 1.0.x
|
|
298
|
+
- Upgraded openwisp-ipam to 1.0.x
|
|
299
|
+
- Added shortuuid 1.0.x
|
|
300
|
+
- Added netaddr 0.8.x
|
|
301
|
+
- Added django-cache-memoize to 0.1
|
|
302
|
+
|
|
303
|
+
Other changes
|
|
304
|
+
+++++++++++++
|
|
305
|
+
|
|
306
|
+
- `Reworked implementation of config_modified signal
|
|
307
|
+
<https://github.com/openwisp/openwisp-controller#config_modified>`_:
|
|
308
|
+
|
|
309
|
+
- the signal is now always emitted on templates changes m2m events, also
|
|
310
|
+
if ``config.status`` is modified, with the differences that only
|
|
311
|
+
post_add and post_remove m2m events are used, while ``post_clear`` is
|
|
312
|
+
ignored, which fixes the duplicate signal emission caused by the
|
|
313
|
+
implementation of sortedm2m;
|
|
314
|
+
- added ``action`` and ``previous_status`` arguments, which allow to
|
|
315
|
+
understand where the ``config_modified`` signal is being emitted from,
|
|
316
|
+
this allows more advanced usage of the signal by custom
|
|
317
|
+
implementations
|
|
318
|
+
|
|
319
|
+
- Context variable follows template order: If two or more applied
|
|
320
|
+
templates have "default_values" with the same keys, then the context
|
|
321
|
+
variables of the template which comes later in the order will be used
|
|
322
|
+
- New credentials created with ``auto_add`` set to ``True`` will get added
|
|
323
|
+
to the existing devices in a background task. This improves the
|
|
324
|
+
responsiveness of the web application
|
|
325
|
+
- Decoupled admin LogEntry from Template model
|
|
326
|
+
- Device admin only lists relevant templates, i.e. templates that are
|
|
327
|
+
shared or belong to the device's organization
|
|
328
|
+
- Improved UX of `system-defined variables
|
|
329
|
+
<https://github.com/openwisp/openwisp-controller/issues/344>`_
|
|
330
|
+
- Name of ``Vpn``, ``Template`` and ``Credentials`` objects is unique only
|
|
331
|
+
within the same organization and within the shared objects
|
|
332
|
+
- Added functionality to configure connection failure reasons for which
|
|
333
|
+
the system should not send notifications. Added ``old_failure_reason``
|
|
334
|
+
parameter in
|
|
335
|
+
``openwisp_controller.connection.signals.is_working_changed`` signal
|
|
336
|
+
- Allowed searching devices using their location address in Device admin.
|
|
337
|
+
- Removed deprecated ``api/device-location/<pk>`` endpoint
|
|
338
|
+
- Made device name unique per organization instead of unique system wide
|
|
339
|
+
- Added time limits to background celery tasks
|
|
340
|
+
|
|
341
|
+
Bugfixes
|
|
342
|
+
~~~~~~~~
|
|
343
|
+
|
|
344
|
+
- Fixed a bug which caused ``VpnClient`` instances to be recreated every
|
|
345
|
+
time the configuration templates of a device were changed, which caused
|
|
346
|
+
x590 certificates to be destroyed and recreated as well
|
|
347
|
+
- Hardened config validation of OpenVPN backend. The validation fails if
|
|
348
|
+
the ``openvpn`` key is missing from the configuration
|
|
349
|
+
- Fixed a bug that caused issues in updating related ``Config`` whenever a
|
|
350
|
+
template's ``default_values`` were changed
|
|
351
|
+
- Fixed pop-up view of CA and Cert not displaying data
|
|
352
|
+
- Fixed config status stays ``applied`` after clearing all device
|
|
353
|
+
templates
|
|
354
|
+
- Fixed ``VpnClient`` not created when multiple VPN templates are added
|
|
355
|
+
- Fixed configuration editor raising validation error when using variables
|
|
356
|
+
in fields with ``maxLength`` set
|
|
357
|
+
- Fixed connection notifications reporting outdated status
|
|
358
|
+
- Fixed migrations referencing non-swappable OpenWISP modules that broke
|
|
359
|
+
OpenWISP's extensibility
|
|
360
|
+
- Fixed bugs in restoring deleted devices using ``django-reversion``
|
|
361
|
+
- Fixed cloning of shared templates
|
|
362
|
+
- Disallowed blank values for ``key_length`` or ``digest`` fields for
|
|
363
|
+
``CA`` and ``Cert`` objects
|
|
364
|
+
- Fixed template ordering bug in the configuration preview on Device admin
|
|
365
|
+
The order of templates was not always retained when generating the
|
|
366
|
+
preview of a config object
|
|
367
|
+
|
|
368
|
+
Version 0.8.4 [2021-04-09]
|
|
369
|
+
--------------------------
|
|
370
|
+
|
|
371
|
+
Bugfixes
|
|
372
|
+
~~~~~~~~
|
|
373
|
+
|
|
374
|
+
- Fixed `bug in connection module
|
|
375
|
+
<https://github.com/openwisp/openwisp-controller/issues/370>`_ that
|
|
376
|
+
raised ``UnicodeDecodeError``, improved logging and ignored unicode
|
|
377
|
+
conversion issues
|
|
378
|
+
- Fixed `context loading from default values of templates overwriting
|
|
379
|
+
system defined variables
|
|
380
|
+
<https://github.com/openwisp/openwisp-controller/issues/352>`_ in device
|
|
381
|
+
admin
|
|
382
|
+
- Fixed `default template selection not updating after changing backend
|
|
383
|
+
field <https://github.com/openwisp/openwisp-controller/issues/354>`_ in
|
|
384
|
+
device admin
|
|
385
|
+
- Fixed JSONSchema widget to enable working with a single schema
|
|
386
|
+
- Fixed `related configuration not getting updated after template
|
|
387
|
+
"default_values" are changed
|
|
388
|
+
<https://github.com/openwisp/openwisp-controller/issues/352>`_
|
|
389
|
+
- Fixed `bug which caused the unsaved changes alert in device admin
|
|
390
|
+
<https://github.com/openwisp/openwisp-controller/issues/388>`_ when
|
|
391
|
+
location of device is present
|
|
392
|
+
- Fixed `bug replacing manually entered device information with empty
|
|
393
|
+
string <https://github.com/openwisp/openwisp-controller/issues/425>`_
|
|
394
|
+
- Fixed `multiple requests for fetching default template values in device
|
|
395
|
+
admin <https://github.com/openwisp/openwisp-controller/issues/423>`_
|
|
396
|
+
|
|
397
|
+
Security
|
|
398
|
+
~~~~~~~~
|
|
399
|
+
|
|
400
|
+
- Patched security bugs in internal HTTP endpoints which allowed to obtain
|
|
401
|
+
UUID of other organizations and other sensitive information
|
|
402
|
+
|
|
403
|
+
Version 0.8.3 [2020-12-18]
|
|
404
|
+
--------------------------
|
|
405
|
+
|
|
406
|
+
Bugfixes
|
|
407
|
+
~~~~~~~~
|
|
408
|
+
|
|
409
|
+
- Increased minimum `openwisp-users version to ~=0.5.1
|
|
410
|
+
<https://github.com/openwisp/openwisp-users/blob/master/CHANGES.rst#version-051-2020-12-13>`_,
|
|
411
|
+
which fixes an `issue in the production setup
|
|
412
|
+
<https://github.com/openwisp/ansible-openwisp2/issues/233>`_
|
|
413
|
+
|
|
414
|
+
Version 0.8.2 [2020-12-11]
|
|
415
|
+
--------------------------
|
|
416
|
+
|
|
417
|
+
Bugfixes
|
|
418
|
+
~~~~~~~~
|
|
419
|
+
|
|
420
|
+
- Fixed the `bug
|
|
421
|
+
<https://github.com/openwisp/openwisp-controller/issues/334>`_ that
|
|
422
|
+
prevented users from adding/editing access credentials.
|
|
423
|
+
|
|
424
|
+
Changes
|
|
425
|
+
~~~~~~~
|
|
426
|
+
|
|
427
|
+
- Increased `django-x509
|
|
428
|
+
<https://github.com/openwisp/django-x509#django-x509>`_ version to 0.9.2
|
|
429
|
+
- Increased `django-flat-json-widget
|
|
430
|
+
<https://github.com/openwisp/django-flat-json-widget#django-flat-json-widget>`_
|
|
431
|
+
version to 0.1.2
|
|
432
|
+
- Changed the `preview` button colors for better readability
|
|
433
|
+
- Added *help text* for *device name* field
|
|
434
|
+
|
|
435
|
+
Version 0.8.1 [2020-12-02]
|
|
436
|
+
--------------------------
|
|
437
|
+
|
|
438
|
+
Bugfixes
|
|
439
|
+
~~~~~~~~
|
|
440
|
+
|
|
441
|
+
- Fixed tests that were dependent on specific settings of the Django
|
|
442
|
+
project.
|
|
443
|
+
|
|
444
|
+
Version 0.8.0 [2020-11-23]
|
|
445
|
+
--------------------------
|
|
446
|
+
|
|
447
|
+
Features
|
|
448
|
+
~~~~~~~~
|
|
449
|
+
|
|
450
|
+
- Added possibility to `extend openwisp-controller
|
|
451
|
+
<https://github.com/openwisp/openwisp-controller#extending-openwisp-controller>`_
|
|
452
|
+
- Added flat JSON widget for configuration variables
|
|
453
|
+
- Added JSON Schema widget to credentials admin
|
|
454
|
+
- Added ``device_registered`` signal
|
|
455
|
+
- Added `OpenWISP Notifications
|
|
456
|
+
<https://github.com/openwisp/openwisp-notifications#openwisp-notifications>`_
|
|
457
|
+
module as a dependency, which brings support for web and email
|
|
458
|
+
notifications for important events
|
|
459
|
+
- Allow using a different device model in update_config: his allows
|
|
460
|
+
`OpenWISP Monitoring
|
|
461
|
+
<https://github.com/openwisp/openwisp-monitoring#openwisp-monitoring>`_
|
|
462
|
+
to override the ``can_be_updated`` method to take into account the
|
|
463
|
+
monitoring status, so that push updates won't be attempted
|
|
464
|
+
- Added notifications for changes of ``is_working`` status of credentials
|
|
465
|
+
- UX, automatically add/remove default values to device context:
|
|
466
|
+
automatically add or remove default values of templates to the
|
|
467
|
+
configuration context (a.k.a. configuration variables) when templates
|
|
468
|
+
are added or removed from devices
|
|
469
|
+
- UX: added `system defined variables
|
|
470
|
+
<https://github.com/openwisp/openwisp-controller#system-defined-variables>`_
|
|
471
|
+
section
|
|
472
|
+
|
|
473
|
+
Changes
|
|
474
|
+
~~~~~~~
|
|
475
|
+
|
|
476
|
+
- **Backward incompatible**: the code of `django-netjsonconfig
|
|
477
|
+
<https://github.com/openwisp/django-netjsonconfig>`_ was merged in
|
|
478
|
+
openwisp-controller to simplify maintenance
|
|
479
|
+
- Changed API of ``device_location`` view for consistency:
|
|
480
|
+
``/api/device-location/{id}/`` becomes
|
|
481
|
+
``/api/v1/device/{id}/location/``, the old URL is kept for backward
|
|
482
|
+
compatibility but will be removed in the future
|
|
483
|
+
- **Backward incompatible change**: schema url endpoint changed to
|
|
484
|
+
``<controller-url>/config/schema.json`` and it's now in config namespace
|
|
485
|
+
instead of admin namespace
|
|
486
|
+
- Changed VPN DH length to 2048 and move its generation to the background
|
|
487
|
+
because it's a lot slower
|
|
488
|
+
- Admin: Order Device, Template and VPN alphabetically by default
|
|
489
|
+
- Admin: Added ``mac_address`` field to the device list page
|
|
490
|
+
(``DeviceAdmin.list_display``)
|
|
491
|
+
- Increased ``max_length`` of common name to ``64``
|
|
492
|
+
- Changed the config apply logic to avoid restarting the openwisp-config
|
|
493
|
+
deamon if the configuration apply procedure is already being run
|
|
494
|
+
- Made template ``config`` field required in most cases
|
|
495
|
+
- Changed ``DeviceConnection.failure_reason`` field to ``TextField``, this
|
|
496
|
+
avoids possible exception if ``failed_reason`` is very long, which may
|
|
497
|
+
happen in some corner cases
|
|
498
|
+
- Made Device ``verbose_name`` configurable, see
|
|
499
|
+
``OPENWISP_CONTROLLER_DEVICE_VERBOSE_NAME``
|
|
500
|
+
- Increased `netjsonconfig
|
|
501
|
+
<https://github.com/openwisp/netjsonconfig#netjsonconfig>`__ version to
|
|
502
|
+
0.9.x (which brings support for new interface types, `see the change log
|
|
503
|
+
of netjsonconfig
|
|
504
|
+
<http://netjsonconfig.openwisp.org/en/latest/general/changelog.html#version-0-9-0-2020-11-18>`_
|
|
505
|
+
for more information)
|
|
506
|
+
- Increased `django-x509
|
|
507
|
+
<https://github.com/openwisp/django-x509#django-x509>`_ version to 0.9.x
|
|
508
|
+
- Increased `django-loci
|
|
509
|
+
<https://github.com/openwisp/django-loci#django-loci>`_ version to 0.4.x
|
|
510
|
+
(which brings many bug fixes to the mapping feature, as long as support
|
|
511
|
+
for geo-coding and reverse geo-coding, `see the change log of
|
|
512
|
+
django-loci
|
|
513
|
+
<https://github.com/openwisp/django-loci/blob/master/CHANGES.rst#version-040-2020-11-19>`_
|
|
514
|
+
for more information)
|
|
515
|
+
- Increased `openwisp-users
|
|
516
|
+
<https://github.com/openwisp/openwisp-users#openwisp-users>`__ version
|
|
517
|
+
from 0.2.x to 0.5.x (which brings many interesting improvements to
|
|
518
|
+
multi-tenancy, `see the change log of openwisp-users
|
|
519
|
+
<https://github.com/openwisp/openwisp-users/blob/master/CHANGES.rst#version-050-2020-11-18>`_
|
|
520
|
+
for more information)
|
|
521
|
+
- Increased `django-taggit <https://github.com/jazzband/django-taggit>`_
|
|
522
|
+
version to 1.3.x
|
|
523
|
+
- Increased `openwisp-utils
|
|
524
|
+
<https://github.com/openwisp/openwisp-utils#openwisp-utils>`__ version
|
|
525
|
+
to 0.7.x
|
|
526
|
+
- Increased `django-rest-framework-gis
|
|
527
|
+
<https://github.com/openwisp/django-rest-framework-gis>`_ version to
|
|
528
|
+
0.16.x
|
|
529
|
+
- Added support for django 3.1
|
|
530
|
+
|
|
531
|
+
Bugfixes
|
|
532
|
+
~~~~~~~~
|
|
533
|
+
|
|
534
|
+
- Fixed JSON validation error when dealing with OpenVPN configuration
|
|
535
|
+
- Ensured ``unique`` in ``HARDWARE_ID_OPTIONS`` defaults to ``False``
|
|
536
|
+
- Avoid need of migration if ``HARDWARE_ID_OPTIONS`` is changed
|
|
537
|
+
- JS: prevent crash if backend value is empty
|
|
538
|
+
- Do not execute default template selection if device exists
|
|
539
|
+
- Close preview overlay on errors
|
|
540
|
+
- Avoid triggering ``config_modified`` signal during registration
|
|
541
|
+
- UI: Fixed whitespace after overview tab in in device page
|
|
542
|
+
- Validate ``Config.context`` and ``Template.default_values``:
|
|
543
|
+
``Config.context`` and ``Template.default_values`` must always be a
|
|
544
|
+
dictionary, falsy values will be converted to empty dictionary
|
|
545
|
+
automatically
|
|
546
|
+
- Fixed failures in ``update_config`` operation: the ``update_config``
|
|
547
|
+
operation will be executed only when the transaction is committed to the
|
|
548
|
+
database; also handled rare but possible error conditions
|
|
549
|
+
- Handled device not existing case in ``update_config`` task
|
|
550
|
+
- Fixed auto cert feature failure when device name is too long
|
|
551
|
+
- UI: avoid showing main scrollbar in preview mode
|
|
552
|
+
- Fixed ``OPENWISP_CONTROLLER_BACKEND_DEVICE_LIST = False``
|
|
553
|
+
- UI fixed advanced mode bugs: positioning is done using css instead of
|
|
554
|
+
js. Removed body scrollbar when in advanced mode. Back to normal mode
|
|
555
|
+
with ESC key. Hidden netjsonconfig docs hint on narrow screens.
|
|
556
|
+
- Avoid simultaneous ``update_config`` tasks: since now the launch of the
|
|
557
|
+
task is executed when the transaction is committed to the database, also
|
|
558
|
+
the check for other updates in progress must be moved there
|
|
559
|
+
- Fixed ``OPENWISP_CONTROLLER_CONTEXT`` setting getting modified at run
|
|
560
|
+
time
|
|
561
|
+
- Fixed z-index of preview overlay: the z-index is increased so it's
|
|
562
|
+
higher than the main navigation menu to avoid the possibility of
|
|
563
|
+
triggering the main menu inadvertently
|
|
564
|
+
- Prevent sending ``config_modified`` signal multiple times
|
|
565
|
+
- Fix timeout when changing template: slow operations are moved to the
|
|
566
|
+
background
|
|
567
|
+
- Fixed variablle validation: now all the available context (device
|
|
568
|
+
variables, system variables) are taken into account when performing
|
|
569
|
+
validation
|
|
570
|
+
- Removed unnecessary ``static()`` call from media assets
|
|
571
|
+
|
|
572
|
+
Version 0.7.0.post1 [2020-07-01]
|
|
573
|
+
--------------------------------
|
|
574
|
+
|
|
575
|
+
- Increased minimum django-netjsonconfig version to 0.12
|
|
576
|
+
|
|
577
|
+
Version 0.7.0 [2020-07-01]
|
|
578
|
+
--------------------------
|
|
579
|
+
|
|
580
|
+
- [feature] Added signals: ``config_status_changed``,
|
|
581
|
+
``checksum_requested``, ``config_download_requested``
|
|
582
|
+
- [feature] Added the possibility of specifying default values for
|
|
583
|
+
variables used in templates
|
|
584
|
+
- [feature] Added ``banner_timeout``
|
|
585
|
+
- [feature] Emit signal when ``DeviceConnection.is_working`` changes
|
|
586
|
+
- [change] **Backward incompatible change**: the ``config_modified``
|
|
587
|
+
signal is not emitted anymore when the device is created
|
|
588
|
+
- [change] VPN files now have 0600 permissions by default
|
|
589
|
+
- [change] Increased minimum `netjsonconfig
|
|
590
|
+
<https://github.com/openwisp/netjsonconfig>`_ version to 0.8.0
|
|
591
|
+
- [change] Increased minimum `paramiko
|
|
592
|
+
<https://github.com/paramiko/paramiko>`_ version to 2.7.1
|
|
593
|
+
- [change] Increased minimum `celery <https://github.com/celery/celery/>`_
|
|
594
|
+
version to 4.4.3
|
|
595
|
+
- [fix] Avoid errors being hidden by tabs
|
|
596
|
+
- [fix] Fixed clashes between javascript schema validation and variables
|
|
597
|
+
- [fix] Fixed exception when adding device credential without type
|
|
598
|
+
- [fix] Fixed exception when auto adding device credentials to devices
|
|
599
|
+
which don't have a configuration
|
|
600
|
+
- [fix] Avoid multiple devices having the same management IP address
|
|
601
|
+
(multiple devices having the same last IP is allowed because last IP is
|
|
602
|
+
almost always a public address)
|
|
603
|
+
- [docs] Documented SSH timeouts
|
|
604
|
+
- [docs] Update outdated steps in README instructions
|
|
605
|
+
|
|
606
|
+
Version 0.6.0 [2020-04-02]
|
|
607
|
+
--------------------------
|
|
608
|
+
|
|
609
|
+
- Added controller view that allows to update the device information
|
|
610
|
+
(firmware version used)
|
|
611
|
+
- Recover deleted object views in recoverable objects now show latest
|
|
612
|
+
objects first
|
|
613
|
+
- Added ``NETJSONCONFIG_HARDWARE_ID_AS_NAME`` setting
|
|
614
|
+
|
|
615
|
+
Version 0.5.2 [2020-03-18]
|
|
616
|
+
--------------------------
|
|
617
|
+
|
|
618
|
+
- [controller] Added ``NETJSONCONFIG_REGISTRATION_SELF_CREATION``
|
|
619
|
+
- [models] Handled accidental duplication of files across templates
|
|
620
|
+
- [controller] Update hardware device info during registration (if the
|
|
621
|
+
device already exists, the registration will update its info)
|
|
622
|
+
- [admin] Moved ``hardware_id`` field in device list admin
|
|
623
|
+
- [bugfix] Fixed broken preview when using ``hardware_id`` context var
|
|
624
|
+
- [models] Flagged ``hardware_id`` as not unique (it's ``unique_together``
|
|
625
|
+
with ``organization``)
|
|
626
|
+
- [admin] Hidden device configuration context field into advanced options
|
|
627
|
+
- [models] Removed LEDE from the OpenWRT backend label
|
|
628
|
+
- [docker] Added ``REDIS_URL`` to docker-compose.yml and settings.py (for
|
|
629
|
+
dev and test env)
|
|
630
|
+
|
|
631
|
+
Version 0.5.1 [2020-02-28]
|
|
632
|
+
--------------------------
|
|
633
|
+
|
|
634
|
+
- [models] Improved consistent key generation, now a consisten key is
|
|
635
|
+
generated also when creating devices from the admin interface (or via
|
|
636
|
+
model API), before it was only done during registration
|
|
637
|
+
- [admin] Fixed unsaved changes JS bug that was triggered in certain cases
|
|
638
|
+
- [deps] Switched back to jsonfield
|
|
639
|
+
|
|
640
|
+
Version 0.5.0 [2020-02-05]
|
|
641
|
+
--------------------------
|
|
642
|
+
|
|
643
|
+
- [deps] Upgraded to django 3, upgraded dependencies
|
|
644
|
+
- [deps] Dropped support for python 2
|
|
645
|
+
- [x509] Fixed serial number max length (imported from django-x509)
|
|
646
|
+
- [admin] Fixed bug that caused organization field to be missing when
|
|
647
|
+
importing a CA or certificate
|
|
648
|
+
|
|
649
|
+
Version 0.4.0 [2020-01-09]
|
|
650
|
+
--------------------------
|
|
651
|
+
|
|
652
|
+
- [feature] Added connection module (possibility to SSH into devices)
|
|
653
|
+
- [feature] Added default operator group
|
|
654
|
+
- [feature] Added management IP feature
|
|
655
|
+
- [change] Changed configuration status: ``running`` has been renamed to
|
|
656
|
+
``applied``
|
|
657
|
+
- [admin] Added ``NETJSONCONFIG_MANAGEMENT_IP_DEVICE_LIST`` setting
|
|
658
|
+
- [admin] Added ``NETJSONCONFIG_BACKEND_DEVICE_LIST`` setting
|
|
659
|
+
- [x509] Fixed common_name redundancy
|
|
660
|
+
- [admin] Hidden "Download Configuration" button when no config is
|
|
661
|
+
available
|
|
662
|
+
- [controller] Register view now updates device details
|
|
663
|
+
- [deps] Added support for Django 2.1 and Django 2.2
|
|
664
|
+
- [models] Added support for hardware ID / serial number
|
|
665
|
+
- [device] Add context field to device
|
|
666
|
+
- [bugfix] Show error when the preview is experiencing issues
|
|
667
|
+
- [ux] Group device change form in tabs
|
|
668
|
+
- [ux] Show loading indicator while loading preview
|
|
669
|
+
- [vpn] Add controller views (download & checksum) for VPN config
|
|
670
|
+
- [vpn] Fixed DH params in preview #107
|
|
671
|
+
- [change] Moved urls to admin namespace
|
|
672
|
+
- [feature] Implement copy/clone templates
|
|
673
|
+
- [feature] Added API to get context of device
|
|
674
|
+
- [bugfix] Ensure atomicity of transactions with database during
|
|
675
|
+
auto-registration
|
|
676
|
+
|
|
677
|
+
Version 0.3.2 [2018-02-19]
|
|
678
|
+
--------------------------
|
|
679
|
+
|
|
680
|
+
- [requirements] Updated requirements and added support for django 2.0
|
|
681
|
+
|
|
682
|
+
Version 0.3.1 [2017-12-20]
|
|
683
|
+
--------------------------
|
|
684
|
+
|
|
685
|
+
- [pki] Reimplemented serial numbers as UUID integers
|
|
686
|
+
- [pki] Added switcher that facilitates importing certificates
|
|
687
|
+
- [pki] [admin] Removed ``serial_number`` from certificate list
|
|
688
|
+
|
|
689
|
+
Version 0.3.0 [2017-12-17]
|
|
690
|
+
--------------------------
|
|
691
|
+
|
|
692
|
+
- [feature] Added geographic and indoor mapping module
|
|
693
|
+
- [feature] Aded Dockerfile
|
|
694
|
+
|
|
695
|
+
Version 0.2.5 [2017-12-02]
|
|
696
|
+
--------------------------
|
|
697
|
+
|
|
698
|
+
- `#21 <https://github.com/openwisp/openwisp-controller/issues/21>`_:
|
|
699
|
+
[admin] Added a link to password reset in login form
|
|
700
|
+
|
|
701
|
+
Version 0.2.4 [2017-11-07]
|
|
702
|
+
--------------------------
|
|
703
|
+
|
|
704
|
+
- Added support for django-x509 0.3.0
|
|
705
|
+
|
|
706
|
+
Version 0.2.3 [2017-08-29]
|
|
707
|
+
--------------------------
|
|
708
|
+
|
|
709
|
+
- `934be13
|
|
710
|
+
<https://github.com/openwisp/openwisp-controller/commit/934be13>`_:
|
|
711
|
+
[models] Updated sortedm2m __str__ definition
|
|
712
|
+
- `b76e4e2
|
|
713
|
+
<https://github.com/openwisp/openwisp-controller/commit/b76e4e2>`_:
|
|
714
|
+
[requirements] django-netjsonconfig>=0.6.3,<0.7.0
|
|
715
|
+
|
|
716
|
+
Version 0.2.2 [2017-07-10]
|
|
717
|
+
--------------------------
|
|
718
|
+
|
|
719
|
+
- `f3dc784
|
|
720
|
+
<https://github.com/openwisp/openwisp-controller/commit/f3dc784>`_:
|
|
721
|
+
[admin] Moved ``submit_line.html`` to `openwisp-utils
|
|
722
|
+
<https://github.com/openwisp/openwisp-utils>`_
|
|
723
|
+
|
|
724
|
+
Version 0.2.1 [2017-07-05]
|
|
725
|
+
--------------------------
|
|
726
|
+
|
|
727
|
+
- `0064b98
|
|
728
|
+
<https://github.com/openwisp/openwisp-controller/commit/0064b98>`_:
|
|
729
|
+
[device] Added ``system`` field
|
|
730
|
+
- `c7fe513
|
|
731
|
+
<https://github.com/openwisp/openwisp-controller/commit/c7fe513>`_:
|
|
732
|
+
[docs] Added "Installing for development" section to README
|
|
733
|
+
- `c75fa68
|
|
734
|
+
<https://github.com/openwisp/openwisp-controller/commit/c75fa68>`_:
|
|
735
|
+
[openwisp-utils] Moved shared logic to `openwisp-utils
|
|
736
|
+
<https://github.com/openwisp/openwisp-utils>`_
|
|
737
|
+
- `819cb21
|
|
738
|
+
<https://github.com/openwisp/openwisp-controller/commit/819cb21>`_:
|
|
739
|
+
[requirements] django-netjsonconfig>=0.6.2,<0.7.0
|
|
740
|
+
|
|
741
|
+
Version 0.2.0 [2017-05-24]
|
|
742
|
+
--------------------------
|
|
743
|
+
|
|
744
|
+
- `#3 <https://github.com/openwisp/openwisp-controller/issues/3>`_:
|
|
745
|
+
[feature] Added support for template tags
|
|
746
|
+
- `#7 <https://github.com/openwisp/openwisp-controller/issues/7>`_:
|
|
747
|
+
[feature] Added ``Device`` model
|
|
748
|
+
- `#9 <https://github.com/openwisp/openwisp-controller/issues/9>`_:
|
|
749
|
+
[admin] Load default templates JS logic only when required
|
|
750
|
+
- `298b2a2
|
|
751
|
+
<https://github.com/openwisp/openwisp-controller/commit/298b2a2>`_:
|
|
752
|
+
[admin] Avoid setting ``extra_content`` to mutable object
|
|
753
|
+
- `d173c24
|
|
754
|
+
<https://github.com/openwisp/openwisp-controller/commit/d173c24>`_:
|
|
755
|
+
[migrations] Squashed ``0001`` and ``0002`` to avoid postgres error
|
|
756
|
+
- `f5fb628
|
|
757
|
+
<https://github.com/openwisp/openwisp-controller/commit/f5fb628>`_:
|
|
758
|
+
[migrations] Updated indexes
|
|
759
|
+
- `6200b7a
|
|
760
|
+
<https://github.com/openwisp/openwisp-controller/commit/6200b7a>`_:
|
|
761
|
+
[Template] Fixed ``auto_client`` bug
|
|
762
|
+
|
|
763
|
+
Version 0.1.4 [2017-04-21]
|
|
764
|
+
--------------------------
|
|
765
|
+
|
|
766
|
+
- `#2 <https://github.com/openwisp/openwisp-controller/issues/2>`_:
|
|
767
|
+
[admin] Added templates in config filter
|
|
768
|
+
|
|
769
|
+
Version 0.1.3 [2017-03-11]
|
|
770
|
+
--------------------------
|
|
771
|
+
|
|
772
|
+
- `db77ae7
|
|
773
|
+
<https://github.com/openwisp/openwisp-controller/commit/db77ae7>`_:
|
|
774
|
+
[controller] Added "error: " prefix in error responses
|
|
775
|
+
|
|
776
|
+
Version 0.1.2 [2017-03-15]
|
|
777
|
+
--------------------------
|
|
778
|
+
|
|
779
|
+
- `3c61053
|
|
780
|
+
<https://github.com/openwisp/openwisp-controller/commit/3c61053>`_:
|
|
781
|
+
[admin] Ensure preview button is present
|
|
782
|
+
- `0087483
|
|
783
|
+
<https://github.com/openwisp/openwisp-controller/commit/0087483>`_:
|
|
784
|
+
[models] Converted ``OrganizationConfigSettings`` to UUID primary key
|
|
785
|
+
|
|
786
|
+
Version 0.1.1 [2017-03-10]
|
|
787
|
+
--------------------------
|
|
788
|
+
|
|
789
|
+
- `cbca4e1
|
|
790
|
+
<https://github.com/openwisp/openwisp-controller/commit/cbca4e1>`_:
|
|
791
|
+
[users] Fixed integration with `openwisp-users
|
|
792
|
+
<https://github.com/openwisp/openwisp-users>`_
|
|
793
|
+
|
|
794
|
+
Version 0.1.0 [2017-03-08]
|
|
795
|
+
--------------------------
|
|
796
|
+
|
|
797
|
+
- added multi-tenancy (separation of organizations) to `openwisp2
|
|
798
|
+
<http://openwisp.org>`_
|
|
799
|
+
- added email confirmation of new users (via `django-allauth
|
|
800
|
+
<http://www.intenct.nl/projects/django-allauth/>`_)
|