Controller: Structure & Features
OpenWISP Controller is a Python package which ships five Django apps.
Config App
The config app is the core of the controller module and implements all the following features:
- Configuration management for embedded devices supporting:
additional firmware can be added by specifying custom configuration backends
Configuration editor based on JSON-Schema editor
Advanced edit mode: edit NetJSON DeviceConfiguration objects for maximum flexibility
Configuration Templates: reduce repetition to the minimum, configure default and required templates
Configuration Variables: reference variables in the configuration and templates
Device Groups: define different set of default configuration and metadata in device groups
Template Tags: define different sets of default templates (e.g.: mesh, WDS, 4G)
HTTP resources: allow devices to automatically check for and download configuration updates
VPN management: automatically provision VPN tunnel configurations, including cryptographic keys and IP addresses, e.g.: OpenVPN, WireGuard
It exposes various REST API endpoints.
PKI App
The PKI app is based on django-x509, allowing you to create, import, and view x509 CAs and certificates directly from the administration dashboard.
It exposes various REST API endpoints.
Connection App
This app enables OpenWISP Controller to use different protocols to reach network devices. Currently, the default connection protocols are SSH and SNMP, but the protocol mechanism is extensible, allowing for implementation of additional protocols if needed.
It exposes various REST API endpoints.
SSH
The SSH connector allows the controller to initialize connections to the devices in order to perform push operations, e.g.:
Sending configuration updates.
Perform firmware upgrades via the additional firmware upgrade module.
The default connection protocol implemented is SSH, but other protocol mechanism is extensible and custom protocols can be implemented as well.
Access via SSH key is recommended, the SSH key algorithms supported are:
RSA
Ed25519
SNMP
The SNMP connector is useful to collect monitoring information and it's used in OpenWISP Monitoring for performing checks to collect monitoring information. Read more on how to use it.
Geo App
The geographic app is based on django-loci and allows to define the geographic coordinates of the devices, as well as their indoor coordinates on floor plan images.
It exposes various REST API endpoints.
Subnet Division App
Note
This app is optional, if you don't need it you can avoid adding it to
settings.INSTALLED_APPS
.
This app allows to automatically provision subnets and IP addresses which will be available as system defined configuration variables that can be used in Configuration Templates.
The purpose of this app is to allow users to automatically provision and configure specific subnets and IP addresses to the devices without the need of manual intervention.
Refer to Automating Subnet and IP Address Provisioning for more information.