From 9df28959e6ea09553f4776d06a03609317b31d0a Mon Sep 17 00:00:00 2001 From: Gagan Deep Date: Sat, 3 Aug 2024 23:09:07 +0530 Subject: [PATCH] [docs] Restructured Documentation Restructured the documentation in a way that allows it to be included in the Unified Documentation of OpenWISP. For more information see https://github.com/openwisp/openwisp-docs/issues/107. --------- Co-authored-by: Federico Capoano --- README.md | 1513 ----------------- README.rst | 32 + docs/developer/installation.rst | 100 ++ .../architecture-v2-ansible-openwisp.png | Bin 0 -> 397251 bytes .../debian-software-selection.png | Bin docs/{ => images}/host-only-network.png | Bin docs/{ => images}/install-openwisp2.png | Bin .../openwisp2-modules-diagram.png | Bin docs/index.rst | 51 + docs/partials/developer-docs.rst | 12 + docs/user/certbot-ssl.rst | 65 + docs/user/configuring-cors-headers.rst | 73 + docs/user/deploying-custom-static-content.rst | 14 + docs/user/deploying-wpa-eap-ttls-pap.rst | 175 ++ docs/user/enabling-modules.rst | 164 ++ docs/user/installing-on-vm.rst | 143 ++ docs/user/quickstart.rst | 333 ++++ docs/user/role-variables.rst | 469 +++++ docs/user/system-requirements.rst | 48 + docs/user/troubleshooting.rst | 68 + files/generate_django_secret_key.py | 15 +- pyproject.toml | 2 + templates/load_initial_data.py | 7 +- templates/openwisp2/__init__.py | 4 +- templates/openwisp2/asgi.py | 1 + templates/openwisp2/celery.py | 4 +- templates/openwisp2/routing.py | 5 +- templates/openwisp2/settings.py | 3 +- templates/openwisp2/urls.py | 9 +- 29 files changed, 1779 insertions(+), 1531 deletions(-) delete mode 100644 README.md create mode 100644 README.rst create mode 100644 docs/developer/installation.rst create mode 100644 docs/images/architecture-v2-ansible-openwisp.png rename docs/{ => images}/debian-software-selection.png (100%) rename docs/{ => images}/host-only-network.png (100%) rename docs/{ => images}/install-openwisp2.png (100%) rename docs/{ => images}/openwisp2-modules-diagram.png (100%) create mode 100644 docs/index.rst create mode 100644 docs/partials/developer-docs.rst create mode 100644 docs/user/certbot-ssl.rst create mode 100644 docs/user/configuring-cors-headers.rst create mode 100644 docs/user/deploying-custom-static-content.rst create mode 100644 docs/user/deploying-wpa-eap-ttls-pap.rst create mode 100644 docs/user/enabling-modules.rst create mode 100644 docs/user/installing-on-vm.rst create mode 100644 docs/user/quickstart.rst create mode 100644 docs/user/role-variables.rst create mode 100644 docs/user/system-requirements.rst create mode 100644 docs/user/troubleshooting.rst create mode 100644 pyproject.toml diff --git a/README.md b/README.md deleted file mode 100644 index 4e9d626f..00000000 --- a/README.md +++ /dev/null @@ -1,1513 +0,0 @@ -ansible-openwisp2 -================= - -[![Installing OpenWISP2](https://raw.githubusercontent.com/openwisp/ansible-openwisp2/master/docs/install-openwisp2.png)](https://www.youtube.com/watch?v=v_DUeFUGG8Q&index=1&list=PLPueLZei9c8_DEYgC5StOcR5bCAcQVfR8) - -[![Build Status](https://github.com/openwisp/ansible-openwisp2/workflows/Ansible%20OpenWISP2%20CI%20Build/badge.svg?branch=master)](https://github.com/openwisp/ansible-openwisp2/actions?query=workflow%3A%22Ansible+OpenWISP2+CI+Build%22) -[![Galaxy](http://img.shields.io/badge/galaxy-openwisp.openwisp2-blue.svg?style=flat-square)](https://galaxy.ansible.com/ui/standalone/roles/openwisp/openwisp2/) -[![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg?style=flat-square)](https://gitter.im/openwisp/general) - -Ansible role that installs the OpenWISP Server Application. - -Tested on **Debian (Bookworm/Bullseye)**, **Ubuntu (24/22/20 LTS)**. - -**NOTE**: it is highly suggested to use this procedure on clean virtual machines or linux containers. - -**Recommended minimum ansible core version**: 2.13. - -Demo -==== - -[Try the OpenWISP Demo](https://openwisp.org/demo.html) to get a quick -overview of what OpenWISP can do for you. - -Help OpenWISP -============= - -Like OpenWISP? Find out how to help us! - -- [Help us to grow our community](http://openwisp.io/docs/general/help-us.html) -- [How to contribute to OpenWISP](http://openwisp.io/docs/developer/contributing.html) - -Architecture -============ - -For more information, see [OpenWISP Architecture](https://openwisp.io/docs/general/architecture.html). - -[![openwisp2 modules diagram](https://raw.githubusercontent.com/openwisp/ansible-openwisp2/master/docs/openwisp2-modules-diagram.png)](https://openwisp.io/docs/general/architecture.html) - -System Requirements -=================== - -The following specifications will run a new, *empty* instance of OpenWISP. -Please ensure you account for the amount of disk space your use case will require, e.g. allocate -enough space for users to upload floor plan images. - -Hardware requirements (Recommended) ------------------------------------ - -- 2 CPUs -- 2 GB Memory -- Disk space - depends on the projected size of your database and uploaded photo images - -Keep in mind that increasing the number of celery workers will require -more memory and CPU. You will need to increase the amount of celery workers -as the number of devices you manage grows. - -For more information about how to increase concurrency, look for -the variables which end with `_concurrency` or `_autoscale` in the -[Role Variables](#role-variables) section. - -Software --------- - -Generally a fresh installation of one of the supported operating systems is sufficient; no pre-configuration required. The -Ansible Playbook will install and configure all dependencies and leave you with a running OpenWISP installation. - -Tips: Ensure the hostname of your target machine matches what is in your Ansible configuration file. Also, please ensure -that Ansible can access your target machine by SSH, be it either with a key or password. For more information see the -[Ansible Getting Started Documentation](https://docs.ansible.com/ansible/latest/user_guide/intro_getting_started.html). - -Supported Operating Systems ---------------------------- - -See the section "OS Platforms" on the -[ansible-galaxy page of ansible-openwisp2](https://galaxy.ansible.com/openwisp/openwisp2). - - -Usage (tutorial) -================ - -If you don't know how to use ansible, don't panic, this procedure will -guide you towards a fully working basic openwisp2 installation. - -If you already know how to use ansible, you can skip this tutorial. - -First of all you need to understand two key concepts: - -* for **"production server"** we mean a server (**not a laptop or a desktop computer!**) with public - ipv4 / ipv6 which is used to host openwisp2 -* for **"local machine"** we mean the host from which you launch ansible, eg: your own laptop - -Ansible is a configuration management tool that works by entering production servers via SSH, -**so you need to install it and configure it on the machine where you launch the deployment** and -this machine must be able to SSH into the production server. - -Ansible will be run on your local machine and from there it will connect to the production server -to install openwisp2. - -**If you are trying to install OpenWISP2 on your laptop or desktop pc just for testing purposes**, -please read [Install OpenWISP2 for testing in a VirtualBox VM](#install-openwisp2-for-testing-in-a-virtualbox-vm). - -Install ansible ---------------- - -Install ansible (minimum recommended version 2.13) **on your local machine** -(not the production server!) if you haven't done already. - -To **install ansible** we suggest you follow the official [ansible installation guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-ansible-in-a-virtual-environment-with-pip). It is recommended to install ansible through a virtual environment to avoid dependency issues. - -Please ensure that you have the correct version of Jinja installed in your Python environment: -``` -pip install Jinja2>=2.11 -``` - -After having installed ansible, **you need to install git** (example for linux debian/ubuntu systems): - - sudo apt-get install git - -Install this role ------------------ - -For the sake of simplicity, the easiest thing is to install this role **on your local machine** -via `ansible-galaxy` (which was installed when installing ansible), therefore run: - - ansible-galaxy install openwisp.openwisp2 - -Ensure that you have the [`community.general`](https://github.com/ansible-collections/community.general) -and `ansible.posix` collections installed and up to date: - - ansible-galaxy collection install "community.general:>=3.6.0" - ansible-galaxy collection install "ansible.posix" - -Choose a working directory --------------------------- - -Choose a working directory **on your local machine** where to put the configuration of openwisp2. - -This will be useful when you will need to upgrade openwisp2. - -Eg: - - mkdir ~/openwisp2-ansible-playbook - cd ~/openwisp2-ansible-playbook - -Putting this working directory under version control is also a very good idea. - -Create inventory file ---------------------- - -The inventory file is where group of servers are defined. In our simple case we can -get away with defining just one group in which we will put just one server. - -Create a new file called `hosts` **in your local machine**'s working directory -(the directory just created in the previous step), with the following contents: - - [openwisp2] - openwisp2.mydomain.com - -Substitute `openwisp2.mydomain.com` with your **production server**'s hostname - **DO NOT REPLACE -`openwisp2.mydomain.com` WITH AN IP ADDRESS**, otherwise email sending through postfix will break, -causing 500 internal server errors on some operations. - -Create playbook file --------------------- - -Create a new playbook file `playbook.yml` **on your local machine** with the following contents: - -```yaml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2 - vars: - openwisp2_default_from_email: "openwisp2@openwisp2.mydomain.com" -``` - -The line `become: "{{ become | default('yes') }}"` means ansible will use the `sudo` -program to run each command. You may remove this line if you don't need it (eg: if you are - `root` user on the production server). - -You may replace `openwisp2` on the `hosts` field with your production server's hostname if you desire. - -Substitute `openwisp2@openwisp2.mydomain.com` with what you deem most appropriate -as default sender for emails sent by OpenWISP 2. - -Run the playbook ----------------- - -Now is time to **deploy openwisp2 to the production server**. - -Run the playbook **from your local machine** with: - - ansible-playbook -i hosts playbook.yml -u -k --become -K - -Substitute `` with your **production server**'s username. - -The `-k` argument will need the `sshpass` program. - -You can remove `-k`, `--become` and `-K` if your public SSH key is installed on the server. - -**Tips**: - -- If you have an error like `Authentication or permission failure` then try to use *root* user `ansible-playbook -i hosts playbook.yml -u root -k` -- If you have an error about adding the host's fingerprint to the `known_hosts` file, you can simply connect to the host via SSH and answer yes when prompted; then you can run `ansible-playbook` again. - -When the playbook is done running, if you got no errors you can login at: - - https://openwisp2.mydomain.com/admin - username: admin - password: admin - -Substitute `openwisp2.mydomain.com` with your production server's hostname. - -Now proceed with the following steps: - -1. change the password (and the username if you like) of the superuser as soon as possible -2. update the `name` field of the default `Site` object to accurately display site name in email notifications -3. edit the information of the default organization -4. in the default organization you just updated, note down the automatically generated *shared secret* - option, you will need it to use the [auto-registration feature of openwisp-config](https://github.com/openwisp/openwisp-config#automatic-registration) -5. this Ansible role creates a default template to update ``authorized_keys`` on networking devices - using the default access credentials. The role will either use an existing SSH key pair or create - a new one if no SSH key pair exists on the host machine. - -Now you are ready to start configuring your network! **If you need help** you can ask questions -on one of the official [OpenWISP Support Channels](http://openwisp.org/support.html). - -Install ansible-openwisp2 for development ------------------------------------------ -If you need to modify the logic of this ansible role and you need to test your changes here we explain how to do it. - -First of all, create the directory where you want to place the repositories of the ansible roles and create directory roles. - -```bash - mkdir -p ~/openwisp-dev/roles - cd ~/openwisp-dev/roles -``` - -Clone `ansible-openwisp2` and `Stouts.postfix` as follows: - -```bash - git clone https://github.com/openwisp/ansible-openwisp2.git openwisp.openwisp2 - git clone https://github.com/Stouts/Stouts.postfix - git clone https://github.com/openwisp/ansible-ow-influxdb openwisp.influxdb -``` - -Now, go to the parent directory & create hosts file and playbook.yml: - -```bash - cd ../ - touch hosts - touch playbook.yml -``` - -From here on you can follow the instructions available at the following sections: - -- [Create inventory file](#create-inventory-file) -- [Create playbook file](#create-playbook-file) -- [Run the playbook](#run-the-playbook) - - -**Note:** Please remember to [install ansible](#install-ansible). - -All done! - -How to run tests ----------------- - -If you want to contribute to `ansible-openwisp2` you should run tests -in your development environment to ensure your changes are not breaking anything. - -To do that, proceed with the following steps: - -**Step 1**: Clone `ansible-openwisp2` - -Clone repository by: - - git clone https://github.com//ansible-openwisp2.git openwisp.openwisp2 - cd openwisp.openwisp2 - -**Step 2**: Install docker - -If you haven't installed docker yet, you need to install it (example for linux debian/ubuntu systems): - - sudo apt-get install docker.io - -**Step 3**: Install molecule and dependences - - pip install molecule[docker] molecule-plugins yamllint ansible-lint docker - -**Step 4**: Download docker images - - docker pull geerlingguy/docker-ubuntu2404-ansible:latest - docker pull geerlingguy/docker-ubuntu2204-ansible:latest - docker pull geerlingguy/docker-ubuntu2004-ansible:latest - docker pull geerlingguy/docker-debian12-ansible:latest - docker pull geerlingguy/docker-debian11-ansible:latest - -**Step 5**: Run molecule test - - molecule test -s local - -If you don't get any error message it means that the tests ran successfully without errors. - -**ProTip:** Use `molecule test --destroy=never` to speed up subsequent test runs. - -Install OpenWISP2 for testing in a VirtualBox VM -------------------------------------------------- - -If you want to try out **OpenWISP 2** in your own development environment, the safest -way is to use a VirtualBox Virtual Machine (from here on VM). - -### Using Vagrant - -**Since August 2018 there's a new fast and easy way to install OpenWISP 2 for testing -purposes** leveraging [Vagrant](https://www.vagrantup.com), a popular open source -tool for building and maintaining portable virtual software development environments. - -To use this new way, clone the repository [vagrant-openwisp2](https://github.com/openwisp/vagrant-openwisp2), -it contains the instructions (in the `README.md`) and the vagrant configuration -to perform the automatic installation. - -Alternatively, you can read on to learn how to install *VirtualBox* and run -*ansible-openwisp2* manually, this is useful if you need to test advanced -customisations of *OpenWISP*. - -### Installing Debian 9 on VirtualBox - -Install [VirtualBox](https://virtualbox.org) and create a new Virtual Machine running -Debian 11. A step-by-step guide is available -[here](http://www.brianlinkletter.com/installing-debian-linux-in-a-virtualbox-virtual-machine/), -however we need to change a few things to get ansible working. - -#### VM configuration - -Proceed with the installation as shown in the guide linked above, and come back -here when you see this screen: - -![Screenshot of the Software Selection screen](https://raw.githubusercontent.com/openwisp/ansible-openwisp2/master/docs/debian-software-selection.png) - -We're only running this as a server, so you can uncheck `Debian desktop environment`. -Make sure `SSH server` and `standard system utilities` are checked. - -Next, add a [Host-only Network Adapter](https://www.virtualbox.org/manual/ch06.html#network_hostonly) -and assign an IP address to the VM. - -- On the Main VirtualBox page, Go to `File > Host Network Manager` -- Click the + icon to create a new adapter -- Set the IPv4 address to `192.168.56.1` and the IPv4 Network Mask to `255.255.255.0`. You may need to select `Configure Adapter Manually` to do this. The IPv6 settings can be ignored - ![Screenshot of the Host-only network configuration screen](https://raw.githubusercontent.com/openwisp/ansible-openwisp2/master/docs/host-only-network.png) -- Shut off your VM -- In your VM settings, in the Network section, click Adapter 2 and Enable this Adapter -- Select Host-only adapter and the name of the adapter you created -- Boot up your VM, run `su`, and type in your superuser password -- Run `ls /sys/class/net` and take note of the output -- Run `nano /etc/network/interfaces` and add the following at the end of the file: - - auto enp0s8 - iface enp0s8 inet static - address 192.168.56.2 - netmask 255.255.255.0 - network 192.168.56.0 - broadcast 192.168.56.255 - - Replace `enp0s8` with the network interface not present in the file but is shown when running `ls /sys/class/net` -- Save the file with CtrlO then Enter, and exit with CtrlX -- Restart the machine by running `reboot` - -Make sure you can access your VM via ssh: - -```bash -ssh 192.168.56.2 -``` - -#### Back to your local machine - -Proceed with these steps in your **local machine**, not the VM. - -**Step 1**: [Install ansible](#install-ansible) - -**Step 2**: [Install the OpenWISP2 role for Ansible](#install-this-role) - -**Step 3**: [Set up a working directory](#choose-a-working-directory) - -**Step 4**: Create the `hosts` file - -Create an ansible inventory file named `hosts` **in your working directory** -(i.e. not in the VM) with the following contents: - -``` -[openwisp2] -192.168.56.2 -``` - -**Step 5**: Create the ansible playbook - -In the same directory where you created the `host` file, -create an empty file named `playbook.yml` which contains the following: - -```yaml -- hosts: openwisp2 - roles: - - openwisp.openwisp2 - # the following line is needed only when an IP address is used as the inventory hostname - vars: - postfix_myhostname: localhost -``` - -**Step 6**: Run the playbook - -```bash -ansible-playbook -i hosts playbook.yml -b -k -K --become-method=su -``` - -When the playbook ran successfully, you can log in at: - -``` -https://192.168.56.2/admin -username: admin -password: admin -``` - -Enabling the Monitoring module ------------------------------- - -The [Monitoring module](https://openwisp.io/docs/user/monitoring.html) -is enabled by default, it can be disabled by setting -``openwisp2_monitoring`` to ``false``. - -Enabling the Network Topology module ------------------------------------- - -To enable the [Network Topology module](https://openwisp.io/docs/user/network-topology.html) -you need to set `openwisp2_network_topology` to `true` in -your `playbook.yml` file. Here's a short summary of how to do this: - -**Step 1**: [Install ansible](#install-ansible) - -**Step 2**: [Install this role](#install-this-role) - -**Step 3**: [Create inventory file](#create-inventory-file) - -**Step 4**: Create a playbook file with following contents: - -```yaml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2 - vars: - openwisp2_network_topology: true -``` - -**Step 5**: [Run the playbook](#run-the-playbook) - -When the playbook is done running, if you got no errors you can login at: - - https://openwisp2.mydomain.com/admin - username: admin - password: admin - -Enabling the Firmware Upgrader module -------------------------------------- - -**Note**: It is encouraged that you read the -[quick-start guide of openwisp-firmware-upgrader](https://openwisp.io/docs/user/firmware-upgrades.html#quickstart-guide) -before going ahead. - -To enable the [Firmware Upgrader](https://openwisp.io/docs/user/firmware-upgrades.html) -module you need to set `openwisp2_firmware_upgrader` to `true` in -your `playbook.yml` file. Here's a short summary of how to do this: - -**Step 1**: [Install ansible](#install-ansible) - -**Step 2**: [Install this role](#install-this-role) - -**Step 3**: [Create inventory file](#create-inventory-file) - -**Step 4**: Create a playbook file with following contents: - -```yaml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2 - vars: - openwisp2_firmware_upgrader: true -``` - -**Step 5**: [Run the playbook](#run-the-playbook) - -When the playbook is done running, if you got no errors you can login at: - - https://openwisp2.mydomain.com/admin - username: admin - password: admin - -**Note**: You can configure [openwisp-firmware-upgrader specific settings](https://github.com/openwisp/openwisp-firmware-upgrader#settings) -using the `openwisp2_extra_django_settings` or -`openwisp2_extra_django_settings_instructions`. - -E.g: - -```yaml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2 - vars: - openwisp2_firmware_upgrader: true - openwisp2_extra_django_settings_instructions: - - | - OPENWISP_CUSTOM_OPENWRT_IMAGES = ( - ('my-custom-image-squashfs-sysupgrade.bin', { - 'label': 'My Custom Image', - 'boards': ('MyCustomImage',) - }), - ) -``` - -Enabling the RADIUS module --------------------------- - -To enable the [RADIUS module](https://openwisp.io/docs/user/radius.html) -you need to set `openwisp2_radius` to `true` in -your `playbook.yml` file. Here's a short summary of how to do this: - -**Step 1**: [Install ansible](#install-ansible) - -**Step 2**: [Install this role](#install-this-role) - -**Step 3**: [Create inventory file](#create-inventory-file) - -**Step 4**: Create a playbook file with following contents: - -```yaml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2 - vars: - openwisp2_radius: true - openwisp2_freeradius_install: true - # set to false when you don't want to register openwisp-radius - # API endpoints. - openwisp2_radius_urls: true -``` - -**Note:** `openwisp2_freeradius_install` option provides a basic -configuration of freeradius for openwisp, it sets up the -[radius user token mechanism](https://openwisp-radius.readthedocs.io/en/latest/user/api.html#radius-user-token-recommended) -if you want to use another mechanism or manage your freeradius separately, -please disable this option by setting it to `false`. - -**Step 5**: [Run the playbook](#run-the-playbook) - -When the playbook is done running, if you got no errors you can login at: - - https://openwisp2.mydomain.com/admin - username: admin - password: admin - -**Note:** for more information regarding radius configuration options, -look for the word "radius" in the -[Role variables](#role-variables) section of this document. - -### Configuring FreeRADIUS for WPA Enterprise (EAP-TTLS-PAP) - -You can use OpenWISP RADIUS for setting up WPA Enterprise (EAP-TTLS-PAP) -authentication. This allows to authenticate on WiFi networks using Django -user credentials. Prior to proceeding, ensure you've reviewed the tutorial -on [Setting Up WPA Enterprise (EAP-TTLS-PAP) authentication](https://openwisp.io/docs/tutorials/wpa-enterprise.html). -This documentation section complements the tutorial and focuses solely on -demonstrating the ansible role's capabilities to configure FreeRADIUS. - -**Note**: The ansible role supports OpenWISP's multi-tenancy by creating -individual FreeRADIUS sites for each organization. You must include -configuration details for **each organization** that will use WPA -Enterprise. - -Here's an example playbook which enables OpenWISP RADIUS module, -installs FreeRADIUS, and configures it for WPA Enterprise (EAP-TTLS-PAP): - - ```yaml - - hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2 - vars: - openwisp2_radius: true - openwisp2_freeradius_install: true - # Define a list of dictionaries detailing each organization's - # name, UUID, RADIUS token, and ports for authentication, - # accounting, and the inner tunnel. These details will be used - # to create FreeRADIUS sites tailored for WPA Enterprise - # (EAP-TTLS-PAP) authentication per organization. - freeradius_eap_orgs: - # A reference name for the organization, - # used in FreeRADIUS configurations. - # Don't use spaces or special characters. - - name: openwisp - # UUID of the organization. - # You can retrieve this from the organization admin - # in the OpenWISP web interface. - uuid: 00000000-0000-0000-0000-000000000000 - # Radius token of the organization. - # You can retrieve this from the organization admin - # in the OpenWISP web interface. - radius_token: secret-radius-token - # Port used by the authentication service for - # this FreeRADIUS site - auth_port: 1822 - # Port used by the accounting service for this FreeRADIUS site - acct_port: 1823 - # Port used by the authentication service of inner tunnel - # for this FreeRADIUS site - inner_tunnel_auth_port: 18230 - # If you want to use a custom certificate for FreeRADIUS - # EAP module, you can specify the path to the CA, server - # certificate, and private key, and DH key as follows. - # Ensure that these files can be read by the "freerad" user. - cert: /etc/freeradius/certs/cert.pem - private_key: /etc/freeradius/certs/key.pem - ca: /etc/freeradius/certs/ca.crt - dh: /etc/freeradius/certs/dh - tls_config_extra: | - private_key_password = whatever - ecdh_curve = "prime256v1" - - # You can add as many organizations as you want - - name: demo - uuid: 00000000-0000-0000-0000-000000000001 - radius_secret: demo-radius-token - auth_port: 1832 - acct_port: 1833 - inner_tunnel_auth_port: 18330 - # If you omit the certificate fields, - # the FreeRADIUS site will use the default certificates - # located in /etc/freeradius/certs. -``` - -**Note**: In the example above, custom ports 1822, 1823, and 18230 -are utilized for FreeRADIUS authentication, accounting, and inner tunnel -authentication, respectively. These custom ports are specified because the -Ansible role creates a common FreeRADIUS site for all organizations, which -also supports captive portal functionality. This common site is configured -to listen on the default FreeRADIUS ports 1812, 1813, and 18120. Therefore, -when configuring WPA Enterprise authentication for each organization, -unique ports must be provided to ensure proper isolation and functionality. - -#### Using Let's Encrypt Certificate for WPA Enterprise (EAP-TTLS-PAP) - -In this section, we demonstrate how to utilize Let's Encrypt certificates -for WPA Enterprise (EAP-TTLS-PAP) authentication. Similar to the -[Automatic SSL certificate](#automatic-ssl-certificate), we use -[geerlingguy.certbot](https://galaxy.ansible.com/geerlingguy/certbot/) -role to automatically install and renew a valid SSL certificate. - -The following example playbook achieves the following goals: - -- Provision a separate Let's Encrypt certificate for the - `freeradius.yourdomain.com` hostname. This certificate will be - utilized by the FreeRADIUS site for WPA Enterprise authentication. -- Create a renewal hook to set permissions on the generated certificate - so the FreeRADIUS server can read it. - -**Note**: You can also use the same SSL certificate for both Nginx and -FreeRADIUS, but it's crucial to understand the security implications. -Please exercise caution and refer to the example playbook comments for -guidance. - -```yaml - - hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - geerlingguy.certbot - - openwisp.openwisp2 - vars: - # certbot configuration - certbot_auto_renew_minute: "20" - certbot_auto_renew_hour: "5" - certbot_create_if_missing: true - certbot_auto_renew_user: "" - certbot_certs: - - email: "" - domains: - - "{{ inventory_hostname }}" - # If you choose to re-use the same certificate for both services, - # you can omit the following item in your playbook. - - email: "" - domains: - - "freeradius.yourdomain.com" - # Configuration to use Let's Encrypt certificate for OpenWISP server (Nnginx) - openwisp2_ssl_cert: "/etc/letsencrypt/live/{{ inventory_hostname }}/fullchain.pem" - openwisp2_ssl_key: "/etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem" - # Configuration for openwisp-radius - openwisp2_radius: true - openwisp2_freeradius_install: true - freeradius_eap_orgs: - - name: demo - uuid: 00000000-0000-0000-0000-000000000001 - radius_secret: demo-radius-token - auth_port: 1832 - acct_port: 1833 - inner_tunnel_auth_port: 18330 - # Update the cert_file and private_key paths to point to the - # Let's Encrypt certificate. - cert: /etc/letsencrypt/live/freeradius.yourdomain.com/fullchain.pem - private_key: /etc/letsencrypt/live/freeradius.yourdomain.com/privkey.pem - # If you choose to re-use the same certificate for both services, - # your configuration would look like this - # cert: /etc/letsencrypt/live/{{ inventory_hostname }}/fullchain.pem - # private_key: /etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem - tasks: - # Tasks to ensure the Let's Encrypt certificate can be read by the FreeRADIUS server. - # If you are using the same certificate for both services, you need to - # replace "freeradius.yourdomain.com" with "{{ inventory_hostname }}" - # in the following task. - - name: "Create a renewal hook for setting permissions on /etc/letsencrypt/live/freeradius.yourdomain.com" - copy: - content: | - #!/bin/bash - chown -R root:freerad /etc/letsencrypt/live/ /etc/letsencrypt/archive/ - chmod 0750 /etc/letsencrypt/live/ /etc/letsencrypt/archive/ - chmod -R 0640 /etc/letsencrypt/archive/freeradius.yourdomain.com/ - chmod 0750 /etc/letsencrypt/archive/freeradius.yourdomain.com/ - dest: /etc/letsencrypt/renewal-hooks/post/chown_freerad - owner: root - group: root - mode: '0700' - register: chown_freerad_result - - name: Change the ownership of the certificate files - when: chown_freerad_result.changed - command: /etc/letsencrypt/renewal-hooks/post/chown_freerad -``` - -Configuring CORS Headers ------------------------- - -While integrating OpenWISP with external services, you can -run into issues related to [CORS (Cross-Origin Resource Sharing)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS). This role -allows users to configure the CORS headers with the help of -[django-cors-headers](https://github.com/adamchainz/django-cors-headers) -package. Here's a short summary of how to do this: - -**Step 1**: [Install ansible](#install-ansible) - -**Step 2**: [Install this role](#install-this-role) - -**Step 3**: [Create inventory file](#create-inventory-file) - -**Step 4**: Create a playbook file with following contents: - -```yaml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2 - vars: - # Cross-Origin Resource Sharing (CORS) settings - openwisp2_django_cors: - enabled: true - allowed_origins_list: - - https://frontend.openwisp.org - - https://logs.openwisp.org -``` - -**Note:** to learn about the supported fields of the `openwisp2_django_cors` variable, -look for the word "openwisp2_django_cors" in the -[Role variables](#role-variables) section of this document. - -**Step 5**: [Run the playbook](#run-the-playbook) - -When the playbook is done running, if you got no errors you can login at: - -``` -https://openwisp2.mydomain.com/admin -username: admin -password: admin -``` - -The ansible-openwisp2 only provides abstraction (variables) -for handful of settings available in [django-cors-headers](https://github.com/adamchainz/django-cors-headers) -module. Use the `openwisp2_extra_django_settings_instructions` or -`openwisp2_extra_django_settings` variable to configure additional -setting of `django-cors-headers` as shown in the following example: - -```yaml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2 - vars: - openwisp2_django_cors: - enabled: true - allowed_origins_list: - - https://frontend.openwisp.org - - https://logs.openwisp.org - replace_https_referer: true - # Configuring additional settings for django-cors-headers - openwisp2_extra_django_settings_instructions: - - | - CORS_ALLOW_CREDENTIALS = True - CORS_ALLOW_ALL_ORIGINS = True -``` - -Deploying custom static content -=============================== - -For deploying custom static content (HTML files, etc.) add all -the static content in `files/ow2_static` directory. The files inside -`files/ow2_static` will be uploaded to a directory named `static_custom` -in `openwisp2_path`. - -This is helpful for [customizing OpenWISP's theme](https://github.com/openwisp/openwisp-utils#openwisp_admin_theme_links). - -E.g., if you added a custom CSS file in `files/ow2_static/css/custom.css`, the -file location to use in [OPENWISP_ADMIN_THEME_LINKS](https://github.com/openwisp/openwisp-utils#openwisp_admin_theme_links) setting will be `css/custom.css`. - -Deploying the upcoming release of OpenWISP -========================================== - -The following steps will help you set up and install the new version of OpenWISP -which is not released yet, but ships new features and fixes. - -Create a directory for organizing your playbook, roles and collections. In this example, -`openwisp-dev` is used. Create `roles` and `collections` directories in `~/openwisp-dev`. - -``` -mkdir -p ~/openwisp-dev/roles -mkdir -p ~/openwisp-dev/collections -``` - -Change directory to `~/openwisp-dev/` in terminal and create configuration -and requirement files for Ansible. - -``` -cd ~/openwisp-dev/ -touch ansible.cfg -touch requirements.yml -``` - -Setup `roles_path` and `collections_paths` variables in `ansible.cfg` as follows: - -``` -[defaults] -roles_path=~/openwisp-dev/roles -collections_paths=~/openwisp-dev/collections -``` - -Ensure your `requirements.yml` contains following content: - -```yml ---- -roles: - - src: https://github.com/openwisp/ansible-openwisp2.git - version: master - name: openwisp.openwisp2-dev -collections: - - name: community.general - version: ">=3.6.0" -``` - -Install requirements from the `requirements.yml` as follows - -``` -ansible-galaxy install -r requirements.yml -``` - -Now, create hosts file and playbook.yml: - -``` -touch hosts -touch playbook.yml -``` - -Follow instructions in ["Create inventory file"](#create-inventory-file) section to -configure `hosts` file. - -You can reference the example playbook below (tested on Debian 11) -for installing a fully-featured version of OpenWISP. - -```yml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - openwisp.openwisp2-dev - vars: - openwisp2_network_topology: true - openwisp2_firmware_upgrader: true - openwisp2_radius: true - openwisp2_monitoring: true # monitoring is enabled by default -``` - -Read ["Role Variables"](#role-variables) section to learn about -available configuration variables. - -Follow instructions in ["Run the playbook"](#run-the-playbook) section to -run above playbook. - -Troubleshooting -=============== - -OpenWISP 2 is deployed using **uWSGI**, it also uses **daphne** fo - WebSockets and **celery** as task queue. - - All this services are run by **supervisor**. - -``` -sudo service supervisor start|stop|status -``` - -You can view each individual process run by supervisor with the next command. - -More info at [Running supervisorctl](http://supervisord.org/running.html#running-supervisorctl) - -``` -sudo supervisorctl status -``` - -**nginx** is in front of **uWSGI**. You can control it with next command - -``` -service nginx status start|stop|status -``` - -OpenWISP 2 is installed in `/opt/openwisp2` -(unless you changed the ``openwisp2_path`` variable in the -ansible playbook configuration), these are some useful directories to -look for when experiencing issues. - -| Location | Description | -|---------------------------|-------------------------------| -| /opt/openwisp2 | The OpenWISP 2 root dir. | -| /opt/openwisp2/log | Log files | -| /opt/openwisp2/env | Python virtual env | -| /opt/openwisp2/db.sqlite3 | OpenWISP 2 sqlite database | - -All processes are running as ``www-data`` user. - -If you need to copy or edit files, you can switch to ``www-data`` -user with the commands - -``` -sudo su www-data -s /bin/bash -cd /opt/openwisp2 -source env/bin/activate -``` - -SSL certificate gotchas -======================= - -When you access the admin website you will get an SSL certificate warning because the -playbook creates a self-signed (untrusted) SSL certificate. You can get rid of the warning by -installing your own trusted certificate and set the `openwisp2_ssl_cert` and `openwisp2_ssl_key` -variables accordingly or by following the instructions explained in the section -["Automatic SSL certificate"](#automatic-ssl-certificate). - -If you keep the untrusted certificate, you will also need to disable SSL verification on devices -using [openwisp-config](https://github.com/openwisp/openwisp-config) by setting `verify_ssl` to `0`, -although I advice against using this kind of setup in a production environment. - -Automatic SSL certificate -========================= - -This section explains how to **automatically install and renew a valid SSL certificate** signed by -[letsencrypt](https://letsencrypt.org/). - -The first thing you have to do is to setup a valid domain for your openwisp2 instance, this means -your inventory file (hosts) should look like the following: - -``` -[openwisp2] -openwisp2.yourdomain.com -``` - -You must be able to add a DNS record for `openwisp2.yourdomain.com`, you cannot use an ip address -in place of `openwisp2.yourdomain.com`. - -Once your domain is set up and the DNS record is propagated, proceed by installing the ansible role -[geerlingguy.certbot](https://galaxy.ansible.com/geerlingguy/certbot/): - -``` -ansible-galaxy install geerlingguy.certbot -``` - -Then proceed to edit your `playbook.yml` so that it will look similar to the following example: - -```yaml -- hosts: openwisp2 - become: "{{ become | default('yes') }}" - roles: - - geerlingguy.certbot - - openwisp.openwisp2 - vars: - # SSL certificates - openwisp2_ssl_cert: "/etc/letsencrypt/live/{{ inventory_hostname }}/fullchain.pem" - openwisp2_ssl_key: "/etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem" - - # certbot configuration - certbot_auto_renew_minute: "20" - certbot_auto_renew_hour: "5" - certbot_create_if_missing: true - certbot_auto_renew_user: "" - certbot_certs: - - email: "" - domains: - - "{{ inventory_hostname }}" - pre_tasks: - - name: Update APT package cache - apt: - update_cache: true - changed_when: false - retries: 5 - delay: 10 - register: result - until: result is success -``` - -Read the [documentation of geerlingguy.certbot](https://github.com/geerlingguy/ansible-role-certbot#readme) -to learn more about configuration of certbot role. - -Once you have set up all the variables correctly, run the playbook again. - -Upgrading openwisp2 -=================== - -**It's highly recommended to back up your current instance -before upgrading**. - -Update this ansible-role via `ansible-galaxy`: - - ansible-galaxy install --force openwisp.openwisp2 - -Run `ansible-playbook` again **from your local machine**: - - ansible-playbook -i hosts playbook.yml - -You may also run the playbook automatically periodically or when a new release of OpenWISP2, for -example, by setting up a continuous integration system. - -Role variables -============== - -This role has many variables values that can be changed to best suit -your needs. - -Below are listed all the variables you can customize (you may also want to take a look at -[the default values of these variables](https://github.com/openwisp/ansible-openwisp2/blob/master/defaults/main.yml)). - -```yaml -- hosts: yourhost - roles: - # you can add other roles here - - openwisp.openwisp2 - vars: - # Enable the modules you want to use - openwisp2_network_topology: false - openwisp2_firmware_upgrader: false - openwisp2_monitoring: true - # you may replace the values of these variables with any value or URL - # supported by pip (the python package installer) - # use these to install forks, branches or development versions - # WARNING: only do this if you know what you are doing; disruption - # of service is very likely to occur if these variables are changed - # without careful analysis and testing - openwisp2_controller_version: "openwisp-controller~=1.0.0" - openwisp2_network_topology_version: "openwisp-network-topology~=1.0.0" - openwisp2_firmware_upgrader_version: "openwisp-firmware-upgrader~=1.0.0" - openwisp2_monitoring_version: "openwisp-monitoring~=1.0.0" - openwisp2_radius_version: "openwisp-radius~=1.0.0" - openwisp2_django_version: "django~=3.2.13" - # Setting this to true will enable subnet division feature of - # openwisp-controller. Refer openwisp-controller documentation - # for more information. https://github.com/openwisp/openwisp-controller#subnet-division-app - # By default, it is set to false. - openwisp2_controller_subnet_division: true - # when openwisp2_radius_urls is set to false, the radius module - # is setup but it's urls are not added, which means API and social - # views cannot be used, this is helpful if you have an external - # radius instance. - openwisp2_radius_urls: "{{ openwisp2_radius }}" - openwisp2_path: /opt/openwisp2 - # It is recommended that you change the value of this variable if you intend to use - # OpenWISP2 in production, as a misconfiguration may result in emails not being sent - openwisp2_default_from_email: "openwisp2@yourhostname.com" - # Email backend used by Django for sending emails. By default, the role - # uses "CeleryEmailBackend" from django-celery-email. - # (https://github.com/pmclanahan/django-celery-email) - openwisp2_email_backend: "djcelery_email.backends.CeleryEmailBackend" - # Email timeout in seconds used by Django for blocking operations - # like connection attempts. For more info read the Django documentation, - # https://docs.djangoproject.com/en/3.2/ref/settings/#email-timeout. - # Defaults to 10 seconds. - openwisp2_email_timeout: 5 - # edit database settings only if you are not using sqlite - # eg, for deploying with PostgreSQL (recommended for production usage) - # you will need the PostGIS spatial extension, find more info at: - # https://docs.djangoproject.com/en/4.1/ref/contrib/gis/tutorial/ - openwisp2_database: - engine: django.contrib.gis.db.backends.postgis - name: "{{ DB_NAME }}" - user: "{{ DB_USER }}" - host: "{{ DB_HOST }}" - password: "{{ DB_PASSWORD }}" - port: 5432 - # SPATIALITE_LIBRARY_PATH django setting - # The role will attempt determining the right mod-spatialite path automatically - # But you can use this variable to customize the path or fix future arising issues - openwisp2_spatialite_path: "mod_spatialite.so" - # customize other django settings: - openwisp2_language_code: en-gb - openwisp2_time_zone: UTC - # openwisp-controller context - openwisp2_context: {} - # additional allowed hosts - openwisp2_allowed_hosts: - - myadditionalhost.openwisp.org - # geographic map settings - openwisp2_leaflet_config: - DEFAULT_CENTER: [42.06775, 12.62011] - DEFAULT_ZOOM: 6 - # enable/disable geocoding check - openwisp2_geocoding_check: true - # specify path to a valid SSL certificate and key - # (a self-signed SSL cert will be generated if omitted) - openwisp2_ssl_cert: "/etc/nginx/ssl/server.crt" - openwisp2_ssl_key: "/etc/nginx/ssl/server.key" - # customize the self-signed SSL certificate info if needed - openwisp2_ssl_country: "US" - openwisp2_ssl_state: "California" - openwisp2_ssl_locality: "San Francisco" - openwisp2_ssl_organization: "IT dep." - # the following setting controls which ip address range - # is allowed to access the controller via unencrypted HTTP - # (this feature is disabled by default) - openwisp2_http_allowed_ip: "10.8.0.0/16" - # additional python packages that will be installed with pip - openwisp2_extra_python_packages: - - bpython - - django-owm-legacy - # additional django apps that will be added to settings.INSTALLED_APPS - # (if the app needs to be installed, the name its python package - # must be also added to the openwisp2_extra_python_packages var) - openwisp2_extra_django_apps: - - owm_legacy - # additional django settings example - openwisp2_extra_django_settings: - CSRF_COOKIE_AGE: 2620800.0 - # in case you need to add python instructions to the django settings file - openwisp2_extra_django_settings_instructions: - - TEMPLATES[0]['OPTIONS']['loaders'].insert(0, 'apptemplates.Loader') - # extra URL settings for django - openwisp2_extra_urls: - - "path(r'', include('my_custom_app.urls'))" - # allows to specify imports that are used in the websocket routes, eg: - openwisp2_websocket_extra_imports: - - from my_custom_app.websockets.routing import get_routes as get_custom_app_routes - # allows to specify extra websocket routes, eg: - openwisp2_websocket_extra_routes: - # Callable that returns a list of routes - - get_custom_app_routes() - # List of routes - - "[path('ws/custom-app/', consumer.CustomAppConsumer.as_asgi())]" - # controller URL are enabled by default - # but can be disabled in multi-VM installations if needed - openwisp2_controller_urls: true - # The default retention policy that applies to the timeseries data - # https://github.com/openwisp/openwisp-monitoring#openwisp-monitoring-default-retention-policy - openwisp2_monitoring_default_retention_policy: "26280h0m0s" # 3 years - # whether NGINX should be installed - openwisp2_nginx_install: true - # spdy protocol support (disabled by default) - openwisp2_nginx_spdy: false - # HTTP2 protocol support (disabled by default) - openwisp2_nginx_http2: false - # ipv6 must be enabled explicitly to avoid errors - openwisp2_nginx_ipv6: false - # nginx client_max_body_size setting - openwisp2_nginx_client_max_body_size: 10M - # list of upstream servers for OpenWISP - openwisp2_nginx_openwisp_server: - - "localhost:8000" - # dictionary containing more nginx settings for - # the 443 section of the openwisp2 nginx configuration - # IMPORTANT: 1. you can add more nginx settings in this dictionary - # 2. here we list the default values used - openwisp2_nginx_ssl_config: - gzip: "on" - gzip_comp_level: "6" - gzip_proxied: "any" - gzip_min_length: "1000" - gzip_types: - - "text/plain" - - "text/html" - - "image/svg+xml" - - "application/json" - - "application/javascript" - - "text/xml" - - "text/css" - - "application/xml" - - "application/x-font-ttf" - - "font/opentype" - # nginx error log configuration - openwisp2_nginx_access_log: "{{ openwisp2_path }}/log/nginx.access.log" - openwisp2_nginx_error_log: "{{ openwisp2_path }}/log/nginx.error.log error" - # nginx Content Security Policy header, customize if needed - openwisp2_nginx_csp: > - CUSTOM_NGINX_SECURITY_POLICY - # uwsgi gid, omitted by default - openwisp2_uwsgi_gid: null - # number of uWSGI process to spawn. Default value is 1. - openwisp2_uwsgi_processes: 1 - # number of threads each uWSGI process will have. Default value is 1. - openwisp2_uwsgi_threads: 2 - # value of the listen queue of uWSGI - openwisp2_uwsgi_listen: 100 - # socket on which uwsgi should listen. Defaults to UNIX socket - # at "{{ openwisp2_path }}/uwsgi.sock" - openwisp2_uwsgi_socket: 127.0.0.1:8000 - # extra uwsgi configuration parameters that cannot be - # configured using dedicated ansible variables - openwisp2_uwsgi_extra_conf: | - single-interpreter=True - log-4xx=True - log-5xx=True - disable-logging=True - auto-procname=True - # whether daphne should be installed - # must be enabled for serving websocket requests - openwisp2_daphne_install: true - # number of daphne process to spawn. Default value is 1 - openwisp2_daphne_processes: 2 - # maximum time to allow a websocket to be connected (in seconds) - openwisp2_daphne_websocket_timeout: 1800 - # the following setting controls which ip address range - # is allowed to access the openwisp2 admin web interface - # (by default any IP is allowed) - openwisp2_admin_allowed_network: null - # install ntp client (enabled by default) - openwisp2_install_ntp: true - # if you have any custom supervisor service, you can - # configure it to restart along with other supervisor services - openwisp2_extra_supervisor_restart: - - name: my_custom_service - when: my_custom_service_enabled - # Disable usage metric collection. It is enabled by default. - # Read more about it at - # https://openwisp.io/docs/user/usage-metric-collection.html - openwisp2_usage_metric_collection: false - # enable sentry example - openwisp2_sentry: - dsn: "https://7d2e3cd61acc32eca1fb2a390f7b55e1:bf82aab5ddn4422688e34a486c7426e3@getsentry.com:443/12345" - openwisp2_default_cert_validity: 1825 - openwisp2_default_ca_validity: 3650 - # the following options for redis allow to configure an external redis instance if needed - openwisp2_redis_install: true - openwisp2_redis_host: localhost - openwisp2_redis_port: 6379 - openwisp2_redis_cache_url: "redis://{{ openwisp2_redis_host }}:{{ openwisp2_redis_port }}/1" - # the following options are required to configure influxdb which is used in openwisp-monitoring - openwisp2_influxdb_install: true - openwisp2_timeseries_database: - backend: "openwisp_monitoring.db.backends.influxdb" - user: "openwisp" - password: "openwisp" - name: "openwisp2" - host: "localhost" - port: 8086 - # celery concurrency for the default queue, by default the number of CPUs is used - # celery concurrency for the default queue, by default it is set to 1 - # Setting it to "null" will make concurrency equal to number of CPUs if autoscaling is not used - openwisp2_celery_concurrency: null - # alternative to the previous option, the celery autoscale option can be set if needed - # for more info, consult the documentation of celery regarding "autoscaling" - # by default it is set to "null" (no autoscaling) - openwisp2_celery_autoscale: 4,1 - # prefetch multiplier for the default queue, - # the default value is calculated automatically by celery - openwisp2_celery_prefetch_multiplier: null - # celery queuing mode for the default queue, - # leaving the default will work for most cases - openwisp2_celery_optimization: default - # whether the dedicated celerybeat worker is enabled which is - # responsible for triggering periodic tasks - # must be turned on unless there's another server running celerybeat - openwisp2_celerybeat: true - # whether the dedicated worker for the celery "network" queue is enabled - # must be turned on unless there's another server running a worker for this queue - openwisp2_celery_network: true - # concurrency option for the "network" queue (a worker is dedicated solely to network operations) - # the default is 1. Setting it to "null" will make concurrency equal to number of CPUs if autoscaling is not used. - openwisp2_celery_network_concurrency: null - # alternative to the previous option, the celery autoscale option can be set if needed - # for more info, consult the documentation of celery regarding "autoscaling" - # by default it is set to "null" (no autoscaling) - openwisp2_celery_network_autoscale: 8,4 - # prefetch multiplier for the "network" queue, - # the default is 1, which mean no prefetching, - # because the network tasks are long running and is better - # to distribute the tasks to multiple processes - openwisp2_celery_network_prefetch_multiplier: 1 - # celery queuing mode for the "network" queue, - # fair mode is used in this case, which means - # tasks will be equally distributed among workers - openwisp2_celery_network_optimization: fair - # whether the dedicated worker for the celery "firmware_upgrader" queue is enabled - # must be turned on unless there's another server running a worker for this queue - openwisp2_celery_firmware_upgrader: true - # concurrency option for the "firmware_upgrader" queue (a worker is dedicated solely to firmware upgrade operations) - # the default is 1. Setting it to "null" will make concurrency equal to number of CPUs if autoscaling is not used - openwisp2_celery_firmware_upgrader_concurrency: null - # alternative to the previous option, the celery autoscale option can be set if needed - # for more info, consult the documentation of celery regarding "autoscaling" - # by default it is set to "null" (no autoscaling) - openwisp2_celery_firmware_upgrader_autoscale: 8,4 - # prefetch multiplier for the "firmware_upgrader" queue, - # the default is 1, which mean no prefetching, - # because the firmware upgrade tasks are long running and is better - # to distribute the tasks to multiple processes - openwisp2_celery_firmware_upgrader_prefetch_multiplier: 1 - # celery queuing mode for the "firmware_upgrader" queue, - # fair mode is used in this case, which means - # tasks will be equally distributed among workers - openwisp2_celery_firmware_upgrader_optimization: fair - # whether the dedicated worker for the celery "monitoring" queue is enabled - # must be turned on unless there's another server running a worker for this queue - openwisp2_celery_monitoring: true - # concurrency option for the "monitoring" queue (a worker is dedicated solely to monitoring operations) - # the default is 2. Setting it to "null" will make concurrency equal to number of CPUs - # if autoscaling is not used. - openwisp2_celery_monitoring_concurrency: null - # alternative to the previous option, the celery autoscale option can be set if needed - # for more info, consult the documentation of celery regarding "autoscaling" - # by default it is set to "null" (no autoscaling) - openwisp2_celery_monitoring_autoscale: 4,8 - # prefetch multiplier for the "monitoring" queue, - # the default is 1, which mean no prefetching, - # because the monitoring tasks can be long running and is better - # to distribute the tasks to multiple processes - openwisp2_celery_monitoring_prefetch_multiplier: 1 - # celery queuing mode for the "monitoring" queue, - # fair mode is used in this case, which means - # tasks will be equally distributed among workers - openwisp2_celery_monitoring_optimization: fair - # whether the default celery task routes should be written to the settings.py file - # turn this off if you're defining custom task routing rules - openwisp2_celery_task_routes_defaults: true - # celery settings - openwisp2_celery_broker_url: redis://{{ openwisp2_redis_host }}:{{ openwisp2_redis_port }}/3 - openwisp2_celery_task_acks_late: true - # maximum number of retries by celery before giving up when broker is unreachable - openwisp2_celery_broker_max_tries: 10 - # whether to activate the django logging configuration in celery - # if set to true, will log all the celery events in the same log stream used by django - # which will cause log lines to be written to "{{ openwisp2_path }}/log/openwisp2.log" - # instead of "{{ openwisp2_path }}/log/celery.log" and "{{ openwisp2_path }}/log/celerybeat.log" - openwisp2_django_celery_logging: false - # postfix is installed by default, set to false if you don't need it - openwisp2_postfix_install: true - # allow overriding default `postfix_smtp_sasl_auth_enable` variable - postfix_smtp_sasl_auth_enable_override: true - # allow overriding postfix_smtpd_relay_restrictions - postfix_smtpd_relay_restrictions_override: permit_mynetworks - # allows overriding the default duration for keeping notifications - openwisp2_notifications_delete_old_notifications: 10 - # Expiration time limit (in seconds) of magic sign-in links. - # Magic sign-in links are used only when OpenWISP RADIUS is enabled. - openwisp2_django_sesame_max_age: 1800 # 30 minutes - # Maximum file size(in bytes) allowed to be uploaded as firmware image. - # It overrides "openwisp2_nginx_client_max_body_size" setting - # and updates nginx configuration accordingly. - openwisp2_firmware_upgrader_max_file_size: 41943040 # 40MB - # to add multi-language support - openwisp2_internationalization: true - openwisp2_users_auth_api: true - # Allows setting OPENWISP_USERS_USER_PASSWORD_EXPIRATION setting. - # Read https://github.com/openwisp/openwisp-users#openwisp_users_user_password_expiration - openwisp2_users_user_password_expiration: 30 - # Allows setting OPENWISP_USERS_STAFF_USER_PASSWORD_EXPIRATION setting. - # Read https://github.com/openwisp/openwisp-users#openwisp_users_staff_user_password_expiration - openwisp2_users_staff_user_password_expiration: 30 - # used for SMS verification, the default is a dummy SMS backend - # which prints to standard output and hence does nothing - # one of the available providers from django-sendsms can be - # used or alternatively, you can write a backend class for your - # favorite SMS API gateway - openwisp2_radius_sms_backend: "sendsms.backends.console.SmsBackend" - openwisp2_radius_sms_token_max_ip_daily: 25 - openwisp2_radius_delete_old_radiusbatch_users: 365 - openwisp2_radius_cleanup_stale_radacct: 1 - openwisp2_radius_delete_old_postauth: 365 - # days for which the radius accounting sessions (radacct) are retained, - # 0 means sessions are kept forever. - # we highly suggest to set this number according - # to the privacy regulation of your jurisdiction - openwisp2_radius_delete_old_radacct: 365 - # days after which inactive users will flagged as unverified - # Read https://openwisp-radius.readthedocs.io/en/latest/user/settings.html#openwisp-radius-unverify-inactive-users - openwisp2_radius_unverify_inactive_users: 540 - # days after which inactive users will be deleted - # Read https://openwisp-radius.readthedocs.io/en/latest/user/settings.html#openwisp-radius-delete-inactive-users - openwisp2_radius_delete_inactive_users: 540 - openwisp2_radius_allowed_hosts: ["127.0.0.1"] - # allow disabling celery beat tasks if needed - openwisp2_monitoring_periodic_tasks: true - openwisp2_radius_periodic_tasks: true - openwisp2_usage_metric_collection_periodic_tasks: true - # this role provides a default configuration of freeradius - # if you manage freeradius on a different machine or you need different configurations - # you can disable this default behavior - openwisp2_freeradius_install: true - # Set an account to expire T seconds after first login. - # This variable sets the value of T. - freeradius_expire_attr_after_seconds: 86400 - freeradius_dir: /etc/freeradius/3.0 - freeradius_mods_available_dir: "{{ freeradius_dir }}/mods-available" - freeradius_mods_enabled_dir: "{{ freeradius_dir }}/mods-enabled" - freeradius_sites_available_dir: "{{ freeradius_dir }}/sites-available" - freeradius_sites_enabled_dir: "{{ freeradius_dir }}/sites-enabled" - freeradius_rest: - url: "https://{{ inventory_hostname }}/api/v1/freeradius" - freeradius_safe_characters: "+@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /" - # Sets the source path of the template that contains freeradius site configuration. - # Defaults to "templates/freeradius/openwisp_site.j2" shipped in the role. - freeradius_openwisp_site_template_src: custom_freeradius_site.j2 - # Whether to deploy the default openwisp_site for FreeRADIUS. - # Defaults to true. - freeradius_deploy_openwisp_site: false - # FreeRADIUS listen address for the openwisp_site. - # Defaults to "*", i.e. listen on all interfaces. - freeradius_openwisp_site_listen_ipaddr: "10.8.0.1" - # A list of dict that includes organization's name, UUID, RADIUS token, - # TLS configuration, and ports for authentication, accounting, and inner tunnel. - # This list of dict is used to generate FreeRADIUS sites that support - # WPA Enterprise (EAP-TTLS-PAP) authentication. - # Defaults to an empty list. - freeradius_eap_orgs: - # The name should not contain spaces or special characters - - name: openwisp - # UUID of the organization can be retrieved from the OpenWISP admin - uuid: 00000000-0000-0000-0000-000000000000 - # Radius token of the organization can be retrieved from the OpenWISP admin - radius_token: secret-radius-token - # Port used by the authentication service for this FreeRADIUS site - auth_port: 1832 - # Port used by the accounting service for this FreeRADIUS site - acct_port: 1833 - # Port used by the authentication service of inner tunnel for this FreeRADIUS site - inner_tunnel_auth_port: 18330 - # CA certificate for the FreeRADIUS site - ca: /etc/freeradius/certs/ca.crt - # TLS certificate for the FreeRADIUS site - cert: /etc/freeradius/certs/cert.pem - # TLS private key for the FreeRADIUS site - private_key: /etc/freeradius/certs/key.pem - # Diffie-Hellman key for the FreeRADIUS site - dh: /etc/freeradius/certs/dh - # Extra instructions for the "tls-config" section of the EAP module - # for the FreeRADIUS site - tls_config_extra: | - private_key_password = whatever - ecdh_curve = "prime256v1" - # Sets the source path of the template that contains freeradius site configuration - # for WPA Enterprise (EAP-TTLS-PAP) authentication. - # Defaults to "templates/freeradius/eap/openwisp_site.j2" shipped in the role. - freeradius_eap_openwisp_site_template_src: custom_eap_openwisp_site.j2 - # Sets the source path of the template that contains freeradius inner tunnel - # configuration for WPA Enterprise (EAP-TTLS-PAP) authentication. - # Defaults to "templates/freeradius/eap/inner_tunnel.j2" shipped in the role. - freeradius_eap_inner_tunnel_template_src: custom_eap_inner_tunnel.j2 - # Sets the source path of the template that contains freeradius EAP configuration - # for WPA Enterprise (EAP-TTLS-PAP) authentication. - # Defaults to "templates/freeradius/eap/eap.j2" shipped in the role. - freeradius_eap_template_src: custom_eap.j2 - cron_delete_old_notifications: "'hour': 0, 'minute': 0" - cron_deactivate_expired_users: "'hour': 0, 'minute': 5" - cron_delete_old_radiusbatch_users: "'hour': 0, 'minute': 10" - cron_cleanup_stale_radacct: "'hour': 0, 'minute': 20" - cron_delete_old_postauth: "'hour': 0, 'minute': 30" - cron_delete_old_radacct: "'hour': 1, 'minute': 30" - cron_password_expiration_email: "'hour': 1, 'minute': 0" - cron_unverify_inactive_users: "'hour': 1, 'minute': 45" - cron_delete_inactive_users: "'hour': 1, 'minute': 55" - # cross-origin resource sharing (CORS) settings - # https://pypi.org/project/django-cors-headers/ - openwisp2_django_cors: - # Setting this to "true" will install the django-cors-headers package - # and configure the Django middleware setting to support CORS. - # By default, it is set to false. - enabled: true - # Configures "CORS_ALLOWED_ORIGINS" setting of the django-cors-headers - # package. A list of origins that are authorized to make cross-site - # HTTP requests. Read https://github.com/adamchainz/django-cors-headers#cors_allowed_origins-sequencestr - # for detail. By default, it is set to an empty list. - allowed_origins_list: ["https://log.openwisp.org"] - # Configures "CORS_REPLACE_HTTPS_REFERER" setting of the django-cors-headers - # package. Read https://github.com/adamchainz/django-cors-headers#cors_replace_https_referer-bool - # for detail. Setting this to "true" will also configure the - # Django middleware setting to add "CorsPostCsrfMiddleware". - # By default, it is set to false. - replace_https_referer: true -``` - -**Note**: The default values for settings provided to control the number of process and threads -of uWSGI and Daphne are set conservatively. It is expected from user to update these settings -to suit scale of their project. The same thing applies for concurrency and autoscale settings -for celery workers. - -Support -======= - -See [OpenWISP Support Channels](http://openwisp.org/support.html). diff --git a/README.rst b/README.rst new file mode 100644 index 00000000..ec81a0c3 --- /dev/null +++ b/README.rst @@ -0,0 +1,32 @@ +ansible-openwisp2 +================= + +.. image:: https://github.com/openwisp/ansible-openwisp2/workflows/Ansible%20OpenWISP2%20CI%20Build/badge.svg?branch=master + :target: https://github.com/openwisp/ansible-openwisp2/actions?query=workflow%3A%22Ansible+OpenWISP2+CI+Build%22 + :alt: Build Status + +.. image:: http://img.shields.io/badge/galaxy-openwisp.openwisp2-blue.svg?style=flat-square + :target: https://galaxy.ansible.com/ui/standalone/roles/openwisp/openwisp2/ + :alt: Galaxy + +.. image:: https://img.shields.io/gitter/room/nwjs/nw.js.svg + :target: https://gitter.im/openwisp/general + :alt: Chat + +Ansible role that installs the OpenWISP Server Application. + +Tested on **Debian (Bookworm/Bullseye)**, **Ubuntu (24/22/20 LTS)**. + +**Recommended minimum ansible core version**: 2.13. + +Documentation +------------- + +- `Developer documentation + `_ +- `User documentation `_ + +Support +------- + +See `OpenWISP Support Channels `__. diff --git a/docs/developer/installation.rst b/docs/developer/installation.rst new file mode 100644 index 00000000..22a57a2a --- /dev/null +++ b/docs/developer/installation.rst @@ -0,0 +1,100 @@ +Developer Installation instructions +=================================== + +.. include:: ../partials/developer-docs.rst + +.. contents:: **Table of Contents**: + :depth: 2 + :local: + +Installing for Development +-------------------------- + +First of all, create the directory where you want to place the +repositories of the ansible roles and create directory roles. + +.. code-block:: bash + + mkdir -p ~/openwisp-dev/roles + cd ~/openwisp-dev/roles + +Clone ``ansible-openwisp2`` and ``Stouts.postfix`` as follows: + +.. code-block:: bash + + git clone https://github.com/openwisp/ansible-openwisp2.git openwisp.openwisp2 + git clone https://github.com/Stouts/Stouts.postfix + git clone https://github.com/openwisp/ansible-ow-influxdb openwisp.influxdb + +Now, go to the parent directory & create hosts file and playbook.yml: + +.. code-block:: bash + + cd ../ + touch hosts + touch playbook.yml + +From here on you can follow the instructions available at the following +sections: + +- :ref:`ansible_install` +- :ref:`ansible_create_inventory_file` +- :ref:`ansible_create_playbook_file` +- :ref:`ansible_run_playbook` + +All done! + +How to Run Tests +---------------- + +If you want to contribute to ``ansible-openwisp2`` you should run tests in +your development environment to ensure your changes are not breaking +anything. + +To do that, proceed with the following steps: + +**Step 1**: Clone ``ansible-openwisp2`` + +Clone repository by: + +.. code-block:: shell + + git clone https://github.com//ansible-openwisp2.git openwisp.openwisp2 + cd openwisp.openwisp2 + +**Step 2**: Install docker + +If you haven't installed docker yet, you need to install it (example for +linux debian/ubuntu systems): + +.. code-block:: shell + + sudo apt install docker.io + +**Step 3**: Install molecule and dependencies + +.. code-block:: shell + + pip install molecule[docker] molecule-plugins yamllint ansible-lint docker + +**Step 4**: Download docker images + +.. code-block:: shell + + docker pull geerlingguy/docker-ubuntu2204-ansible:latest + docker pull geerlingguy/docker-ubuntu2004-ansible:latest + docker pull geerlingguy/docker-debian11-ansible:latest + +**Step 5**: Run molecule test + +.. code-block:: shell + + molecule test -s local + +If you don't get any error message it means that the tests ran +successfully without errors. + +.. important:: + + **Pro Tip:** Use ``molecule test --destroy=never`` to speed up + subsequent test runs. diff --git a/docs/images/architecture-v2-ansible-openwisp.png b/docs/images/architecture-v2-ansible-openwisp.png new file mode 100644 index 0000000000000000000000000000000000000000..e9fe7f2fa0ee6ed9de5e9a361bd982f7062f4939 GIT binary patch literal 397251 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

MVDA9}SNN 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Μ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

L_x8iq-aE|(t(Swj>z^zA*l<$HI!3{_WKCu4 zY*YPKgn~chi_A`js~)n_q`pD!?bP$7zMXbwpM>}~P4l)>V(pxeV!4I$v1nwS!jfTU zj<#FZT>r#I3nU4O3TT>A{mvD_wFr$qG$NtjE{YD;yj3}VwOgPi zCW~`GD{8m;GKqEfNvsfF{$7Kk?s$T-u#q5NwYrE|5NUzCCWd5#Bq&+V<(93S@dgIq zX$uO!b$32%XrZk0byymzS#VD9ot)cScVhl==+r@yNoi}nMUbl$c$WM-gt;1lru94tqipe##OU-kTFzhn*D zSxd{87ebcQb&IWVITD4xdN9Ijo?Tf5e1~%R%N^h2z?YJ#dWS#zIfD)TR25y*_sdEZ zQE!9$yQ_pn*^ASYCdcURm`ZIeH+kMWOJ*5F&6*fKrSfNRfnE5l;4k=4DNg0=iwedn zBI`o%*A$bwXf*&!nJPEC=qE2ciB_NW{pmG8SN7=be-QW7jQJi&t^A-s4zjaqE74)90W)?#O@@j0EI804w$(%Jt_oa3*v)9k>Nv9=Oditd?ssY>QV3p#b zK`PtrKXLnYFS)i{B$LOfnrtG+m=?utdtj}&)e1;(Pi!$~T4<@xF4%AzZE??PF?Jfq z{6LO8PdT z%&sJG+)JCemM+N|wA;pEGdf;KvCLXGBDfOr{tcXnQSgwVMVoU4SzJ*lB6Qezn(GnK zG4JL+tTq648o=86a#nKONb{=88vo+i9arRLGnH4(K#h_SozxA<^GW~aKGSXU+PTjw zLoOG;86h2`gO7eYXH+rOMQEMHlzdJxOt7 zSj0yGveoLT3QROM$Kr+JQ20lDj1~UPTv!jSy*r!aGZf<&&j0ls%z%#%d<3c-{&no; z!ww;L)A~(^+@rx??m64wnvrd>ulmRKKRU=B+BzlO1B34Mt}+KR0MmHWk!(oyS8GZlF52)8<_e{N@sJ+ONiMrBo&&--2p*%AhtDagM6u?m~S%=;+?OT-@u3%P&fH`i9#*Y|t;K)4vH z_V@Qol)55>iveW(HioQl>nr4~kOP4_ww(=K4FsPB%spu4}N?Io>J+3 zi^}<{e1U+!FH<-pA_!HVxIIzQ_(eBEOsv2%$VYV4G&b!gU^@28qU_oJl2<@$21wJF zfky@uU=!#71_AeV1OlP7B|^pk)xLE?wXMkm^+e)4&@uJ-n-oLXdYWUBHbqzn6UJpCu%u_Jlq0%3l1vzoD&jIr{r1dgY zVX8QUZF#VB;?Ut~Y1Yse&I{F#xZ>71G~DR-Mf$(?Yd(?@aUaLCXWO#jgoXP9$4zTI zA+*US(6vyI=_$?xASvM)7MnOM|F~%MC)I6@yQLLX=!NJVU2*s z+<9-zOsTTc0peQ$(WBcvrq7isLKCD^19{a&nG!3yuy>^E9-mOb$1B?{#S8mGck}5e z-+Y<0Esx(qBKsD@j>LwHI;{gz`ZRp0c+;b~39n(<6I zmSf8AKMUGeXj|uY9j*4byl-=K+0Gk(45D_-Pm>rY% zOm%^ke2V))!Eu*-;@i2C2-nA?5txCMO`W~bxR&VQ8O;ixe)d_&+=B8L6F`sjdR)@L zTf{8*5$+Rypcm+YU1s%ykN3>DN%x%%@Ol{TIQ6o`2Tz+LBGRZaMFO!OJ&SMbop25A zeiSvK>wMb(YN`O=2Q%=W$<^>0mmk-LzkSv+2G#-C+AQDGe(z}9$~6PL?-8|MtBEf( z^G$0EEP@)^_Mw|SYLo~Rn~detb0>uKG^a5=Vkiy;bzrtA!@R;paUY%AUG*a7*wzQ! z-Lg_Z)Kd}R+n0ISKz zkghL(h;MX_-1QGYMGDB4Ir$Q~^><9gEzId(aTitXJz)YHJQj?QWla9ARWzU}@BUH( z%!LO+Ue*!z%z5<=KMNNrzt(95Gf$AAu_>pf6UUp})rzEvFky#)abm|~d$1-IIscNM zypYUV_&UjI6$9Ffg!LZHOa9W51HRU2LDi$%^!=xy2E&*cigm|8YeQ*KwiZEE#k;JP zZ&!Yt-U>j^eCX~C)`C}}7D{TlDBy>optphOZH1PuJW03aJR^&q;wQ(8M^(M=L2wZI(V*fUJ^0!B^>QnX*%E~2Zi1o6az6p4wBOe;Z zNZNxIOVC6nult55>6XaowFx=hOWZRo-A1$74BgNAKkY|EPq}~EI?z&`OH5_|8b`yF zOfLv2GtCv!?sxoPB>0Lc*uMgBI8jr<`gY8IYc5@GQiP~#0_hxu%3yp9>0p~ObRWz1 z@jDM?S^Lxes=mGx@%ZRlmyzr~tN+BRP7Ln>XPD)D4r<-xNnoqBehwX;G%L8rNjE%Q8 zVnG>4Z>w%eQ7}e$gRGK3Z19$~#$eSwZ&M*+@=1r&f)C$8lXn>Yb`pBq2OMy5bvjbK8JJ3k5lTC$r2y;(8MVdQc+bNoU%^Qr^n!z*$u zhw852<^Q2GgOycC)fHI&LHn#-8t5u2XKN{M*v0Z8ZBkan6P1!G4jhkf5fetv9lX-| zI{Bu;?lk&VyQy9ALvPE0=!Pjzv&+X^UlW_cSk6b_Ek0z+g>*k67W5v*y?eo^3EVL7 zF5(zCeGTd3W5fiuMqYZ?){{!;068Z2NkhCd^cpO_7C>K!C&&I{ft^l&4+Sv`P;BBu zmQ}yr9M(FPa@<4}iF3be-tp^~uQ7PK`_irt_px;YNlYIoFG%#y%R;C?-n3DflEllz zI(jvnO+8@M%EnRA1pPR^e)Ep~h?Qw5=+bb=E+k0dWcsYqZc7b}j=X`xd&Op<{a1Um zp88)CDL;eS=gw!AM!$`jOdytAq_RGrpAI+u{9;E8-U>t3y?_V78I$Dl-~a>8Q^(30 zb~yK?E(v^1)|&ayiLg;@Jq@ zD5&g#6gElRR2oWe%$unk-w)4R_kRBERMbxm{=P%xEzBAA#-#4OW6A#G*7Whp@M8@V z9X;5^Eu~l!_s2}5@e$at_KM4SL6(!HE>Hmw>%xi&v zYX$XYHp+4Q&*|Z;Za9cw0x>SOS(DDb$>oB7>r{!Vmb|ACJ40N*`9nE@7_bfT|AoVj z^zWf5omzhm@|4Oj-N(!WV8G7a!7}IaBm2I9FM;+_z6^f?x=gm7TrC8GMBf322eCEZ zw{}@BNIw>f{NP^=#mq-N;v$i9>f`EiK$IK3W(Z6IE+@!Q#C3Ozg?^R{0*UGYb=GBK z#^ipv8~|+qPJ2ex7}O8uOeQ<~Ax+zlIlvQAw4lKzD)MXn?1#FIXW~36Ppt-u`{(^d z(8s*WF`@?vqMtFsT?XB`z{{2tIIuH&@YXaIEGQ5}V5 z{`VHz!%CF+%%NfJ1Lg@zg~8U;d}Xp{1219xI_bcssq z9P*%BJy92^8Bt51o-2e#3)S)gcgQ?V;YS#svOP%Uh#h1b|4ffl8fJb&_?*1>lVL3E zQ)GXCWPIP%;wHSJY~!6NMeB&v8b}AZKCFTwBa*Wm>h!lG1ElyqPP|$Mfh+7J$D)*Y z@pZpOji2_kpi@luxrfQ&k$1?IB(-rSPQ*f{Thz^Xmk?$ejlSXZz|xrF|Cy-_`l;WV z=QTXQPciV5U7x~t>4VZwZ^?u`jEOoLmQE_@dxy2EX_|41P5SRt2jiM(vT{^<`4-@7o@sW* zTYnrSqif$e@m#7k2DM$_=jVRhSM$HhXT?%n>JU0waLAofnOra?O4k3;wW<#EbzOwKv?mSjnhB4jrdgifG}je@7sN2#)QP45Bt=~> z$ipOo^jN><(J(zXZF63qu8X^^mB0mp$k~D9> ztw~F|n>AUt9Ai?o(v~&()6-T3oP)EL;tB6z|LFys#qb%@g!ZWY=IQ z288f4lPqCjmK;~@Y-6>@O`q;)ciMa!R54)t#u~|yF-_h6Bj?%XMl4$8hL;6(ge}9` zAtyb~O|7yZXG5V#wV*d!1{oaWBi;Tb3Y6hKa^z9yT(|)tPjO&ONduX^e#1{1JhX^0 zCA>0@57z}l?zF(hU5_x30G+FSVirZhyp5C9@lJR_ACHTFIrQ_s9VD#*X|{rk{J$(x zM4DM%h*m>iV1{jP1T!hoj@cK=PL_ifdOnt_*Aun^OhspL)nJ6>G!7c0>9gT##7v%T zk{oR@==DAxHEB!uw&~!)&twGq(Ht}BVQk!`4Wv;da5Rv~4~k5ERLfr@3gx}TY{~!8 zhX*|eZ^e~mO@%WI%N+WP2F^#hzK0X)7`Ja|IadG-MFtDh4qrC+KAsSqLsWC5={=>g zf^(|}pfIq|^r9 zDxs9+f|S&0pY0UdT1rLd5zvG0>v;gvF0b6VjX)dvMQ+x(?V*$ukaYDRn>M4tFFx3r z{Dad(Ia<^QVs|3EHo{fO2F)tv(n?MT_=>_Mal99!pqH&0U|K3wvMDJxiG?m@yeUH* zM14%u^mZn-iQ%krMmajup(62;ry3B@8^t_V=GF1e-MIj8MN0plqXv8>n@5QKx!W>^ zYiwzgiX5~JX+5?WCbJLKhb#{|1kE7cm! z406~)ZVD9NaTE*I0NB<=F|FDS}^M*j=WWPIT+r8h7p@_Qo^8+GWwf>3|%Ks6U}7q~EuvyznsUA7Rs z`WL62>${dxtaDZwQ?fxvE^D%hmsxslTxcLAQ0^x;F0ws+r1N4=b9siv@=}ZuGF7*#+Wwzok0K*{R+L7_;jm!J>*OhPBVABargGDHWfMgp`V*On+r-cs@pe z2*Bv5^4MyC(yPv#)TK@7Do(o4e=|fX6)PoE+KFG_2xC8$Vi7uX@=W8?dZF3YMzJ@2Fm2 zjK_E(XhBoCDy*-<-6zC86+TO2yedfTs1GiDPQL8im7$fU3jCY$Wzb`X=6_ZdgcIV) z%B_*Gl3%`>sUp@2xzeQ19#YAPuv|5p?S0YVG6vD4$Wp$ZwUEv56EtG8E=bON0SPUA zPC34`sE|U$8LsAOb3GkRV;4~vRQKYW4x=&Un&{}tmc{q}?WNNvA&pL?RH7uQ($ip( zYTN!Fm-fR2fNkW%j#1mr(gp6STDj&8smKWLH2s(-e-Oz(xzrc~83m`<7%M{zyQKaz zsDDqON`2y;H?T{yhRs*Q3+!`~~W~uf{v|M*9~) zp@yRz0=E#q+})-QBxpH(bkpD=sQPbW@D|!P0qGJpVVaEZB1(k+&r}yoj!D^Z=lgOD zRR7Q2O3uZEZ}@6rvx{Q!psKNQWaNi`j6lUG7^q37q_uX)dxKT1W5 zKz9w9Ex6Gni*$|ltuykTQ6v8!Q*Rv=)%U%Rs|X@Egftfk=?-B?K{};Hx*Gdxj8)21Sq-@ptw0{(RSO-G64SnLGR3eV((=x##R>KgPB}P>z>Ou1_VW z-)h<}wK*~W`;!;oe_Y-N%V2cM zf;D)_nnO5jb>SGVDdc`)B|k#|fNpD${0X$qWMIjeg&Kg+a*uMMFy> zLkSZ{9QJFLD65}er|n?(S$GN|DJ=YTNcUB&(0mAuE&83tN@IxdLRiFzdp?}x;uoFU zr9%k|lfb2gYc`=%EeAMkXtD3X49D}5xjyXgCWxdTe3bEZ)B!N}Cv1BKBGqM1A@{NupojwXqsMvA3_&c}e#AWl3WKtP$yHVqF^OgEp=jtzu@K3W2hW@z z=(g>G8?p#bvufX1ebv7umuKHHe9q_6kj3ls_-s_D1|yM$XU=qu`4Z7^3eZg`8*1w@>;luO@*n z-%LLb@eApX=UKDKL^BJSGDR=@{!L30K7+|GHpV2G_BSN2E#&eMVAw=AS;J1${crs> zk_Nq)GQ@m*mN}iOjvSqx-=drGzjn22O@8X-zW;CXxP6HUI@!r#a^SS?(!6`mb7xpP ziTQ%Np|h~`qeMir&-Z4vug@k8E~b1iV0Rw_ zpy9rBZyI;r$+)@gLA8HWu|rS)?Ek=~^ZXj!P-?Pf^y_5#I|arYn$`8+<7;aTgSc3G z)UZcRUI5L~z=qQH=4K5uv;8Bm4L6zDSB1y(hZI*6hDo9{ zXM14D( z)^ATjsy7{Hf)N8;5xJe5fBUuf$9cWO$1BkxJGI$nyAP)E!QRB@V*9t6)7qyUiM3Ci z>T4kV@%HC>Yez6td{`_;f-}8w+cWz?yXYQ_m|GU zclWll!fsvPZuA#4K5IPwc$9M#5Ub1z`r8GCIIePTJpNuvv;JG?dh$=F%lJn9m%qej zRkRZ69n(oR8F&2`PInUGvBPLQ(vn|E6PLg0Nip)}U%=+AZMAnVmZYycrVg@%Hgq_D zc|dMQO^d&=ERq2)Hnv2krPqIST+D^^s$tLW7>X1{!u*{pFWXBe$}2%*)rI2ZMdo=f39+1st6Vr9;M8%rv&)Z>Pl2ZmRaeY>^FmRl6 zHJ=$>&{X8+oFjT-F{_>7YETXj(K)nje`5twaMq%sO6GJ3LZ7AUpui%NNbEpe8yiw; zHCCdMp(04QxG9;RyQlz%EZ{^QQpe-_zSC{8;gKj)(6>agiHO0ygjp~0pYE%lolxj zX6WEi5-lar7{p70xrJ5V$9;{D!wBn>WGR;4<=V;FD*hzz_d*-E@lwW*$XU1IUvGn0 zfSj45-uM=wS0A6AZc4UaaKMOD=w2a()+$^01@#^de5p0hoUO@#&dorKfPkriUkl(n z5jM!n;!t<$RcbZM5}U&>!GftfG8DWB6P7MskyE*lZ%&ty3;x>Ia9vIra3c z^PU&}I)(T`PBAgf0-%1} zRqy~pG6OO{IQ_2@RuA9n&p*;=?Z<*+#U>2Ed#j<_ zPoYnG>$#R*H-)nXCCN`HW0>Jjs7;g`=>|cSRErJt7ux6fYXiR@=DsS-ew1KXqvTO& z@EeZK-aglV4UlSFJ<*7`Qm_RJCSwvSUfob8Xj{mm@ z$f?VZ!o@j5y>XAMr8%pj0lQ`=q=~(PkiR!r1+xG9Z}aGdol_N0u!gIh`0eaLG>#q3 zK~h7_KPDL1CMq|;W*Skp`Z*#*F}25Pi>!z3C%Hule4Tj=v#ff-^h@1A+ptsRBlKWM zW&n3A5r?j%iY#_v)y4h(}orOtK z!$lOAc4X-%=?*ih(>vFc?WAo5uVj}Ur(S=5y}#$F8nuXL&<2f~`Cq*Rq<3dY@+b(* z)s=@$Vx_9Bl7_s$x@*l?TOpK6p1n;*qr(kg@DrP)ixr*l(;QPt0Bwqes8UQ}_1%1p zUo^H(3TQkVmTKN?uGqB_-iPXhYDAIE3}lz9%0!^IqO`~6OLW!Ss+$Kq|Et+xi=KA_ z-g56lg#>4cXBAd)q%*zhCvY5hTOpy4wVFbW8SkD^Xd)?T%#*AlQ7S!vO>k}{j2^M| z9!k4i0~fQ%U*E8TSz3{NbWA~f#1Qv&X_(&iYh;(JAV7Fk-IguuF<66n?FI!7LPFKQ)uw>-?eMqVyU|kR;$n}%qbHq?7U zwqFKA`3!fFLVsDKv}2c5AF$g6x0@P`FxTRxSf@aj?p=_@O@$3T^hB(x z^-y?3bs1Td$dE_0jy6s^l@$YR(6H-Ixx+{JeRFVnuTX_n>tr4_Qp8ufOU zqPEtc819_%0YeeEepI6T@c^UqOHYT$O$v{FqJu@FPf@bdF7i^-b01`#Vowb;xB`*D zj|eMX8Q4;_L+J*&8!+sYBi+c;bYdscVmx#I;qmT9t$uU<8|foOa0jiU4r)K%RClR4 zC$~PAF@h_2F^V{DobPa8e^N$*Dz14}3NRnBSgeHOiT0nV zRavxftQA5j<^RSN^92}>U@ad+17OJH#z@(OmOXn+Ris?@26lO9>Nw*f708IkXDj_B zEFM)04%Fy;xWDIgrr8JRd9n@>^&ah*YmE$W^@tKaQHYr4P}gM*<1@JlCi-1$Ur^%&b^e(Rn7j zx{h5_QAv~EUk$*YHgAlBpu#PH`=2Ei!XLvB#p6FsA)HkY5Yx5`)WvXpn|^=2YP^2T zWhdVO3zACP2;}ZiF@Oa-U2yt4dO-hv+=O0=k)be+@!j@E@8`)RoaBo}Z z>k*XBQ?cN2=~WcT0K$SND`DYg44CGiqT`=Gol6hcZ7sqlE$gcK^r2mv`S7h(<8KMb zviUGZ8cnaS@e#sWt{P+KboPZzX-?z_jgK%dNkF0%YJ5Cz{;E38LBY1F&YTx6O^5pdlLQv@!;<58E(jX`O&IYc&j5H~fPTxC#2 zHOfD&s)C7ov}6-n+xyD2U5}mvH9k&hJNcC*>La4NwHw5jq$&82L5S&LrxQO=j!XQx zGO*R`Vg&H(|0W9Xoq3sWVTJOp9KSik)dMv5!XyFwTqbaw+(R61u7rgSGzmPk=K8o4 z!)f7Uk=p0&o)ehcYH@9f8rBN`{WB#m;Mz^?sNsYb8M4TN-pez`c0rdsBV4cC=AT1n!8M|<@YSf#D zbW53;VXMi! z3%=?~qisu1GLdmV7QcVJtwj1EQ6@e}QR^ap7VIGatG$A@J#S(9XC>`OQE`V8KPd)l z9xHZhPA&(Po^XVgh#U4gSyjBf8ORkrRa40=ts%&7I~ClAvvSSK^+3{{F%WfSNS15U z2N}@nE0)n}-Y#w1V8}Z|F-f3Ne}~M4DKt)#PZrhmdFUjz0*>Skb9h6WO*h7f^S5Y1 zhm;dW!cyG(sWYB=ET#l!ibhEj^D_#&@8&U=4Kz!IHTi9ASz=F94;};^CAW4z z4m-cufpyYOrMaj+!uaw`XhGXjq?F@A7(3TATjP)~7vGn6JjnZ%r*nOf$#b4faNQAI z4llrODz*(?XGe;v&4tz0Moa8uQ^GNg!LU9BK;D{mT~5 zwku><(*&?fgGva0iO2fH*rdy6_en+&ruN`cUE9X(_e^HBAu!7=o@bpl=LzAIEK%)n z4Rqy-XJdvOB|J$A0Kw9c0^JnX)d2iizW!`ztm~X3)mMs&EBfUwgZ|Nw*hp|~{6H$Z z%=c+k0hNVagT+)>AL0KdEbryA1`oAE#lEfv5A}(kHv9u-JazMLf|r=+!?7hOg-@7b z9S(TS*CRwBPY0ox`Gb$7&-ux>{BF`ZfBv!qM!&Y;rdXtDlCa!|5Z~{`4`R>J3{*&& z7t*K0d{_w6dUmg#M88f}JBrozTKz=}HfL1)wnRjj1bxjfC%fE%=`NXlX=CrTi_TAu zCV#M(XI|`{W>IX^1q9SQXz$7moNV2BnSGk(rtP`;w=^u zEImP=L(I72tNHZYV7c15(Eh#sfsko$hkI8K8(W%l;kNdfu3D5CD?#&Jgv)C?`dU1w zx=YT>FTd}a3`W0B(h9m0vn+>@YzG&^l{}*X35mwy@E{EuJ71xrVN#k*Iz{Plr^4(( zf8W@N4R2&bh!a?#N71&BRlqa|`VN`_G!r%@8g-tYcwpLEXwh9kD;U>CisMsS-zvXq zM{Mk%)RjGn1v%#V?&E$1fB&5Wc6nf$_8u`kDn@7&9*F9tJ7pGBymgziNR~18HbYRu z#(c=9E_}9mOJ6;D6!)`lDj=PbA}5=2%e0WlLyX!x@|s3Xg^|p9;9mJ>k;F(51W2Dp zfP2v3HT@VSUA|=3aSs{;*sV@7X7pOqvAoFSmg3BYf^JC&ZHQv@9}bWVA6Ap}IjFrc zw#2N|tSF(crK1Jck{GsyTMND0=zQjc`6p{4OI>%F1P<>%C&Z7d?cz<(Dp^merlzJh zj#a%lQ+{G_jHsJ`b<}TQWP57Qb_C;2J*Nt2lMgl-1e0Po|=HuuB6L70E++izh_k0Z%e zpSVMM=cN`R=p%VbX8I?~)! z@Z@gX+?K3yc{oim(c%K|*#f4V_1fM#Z%LeZ$yu)_61~nt4CyA@f4iG>-t25m>%>Dl z_A7{7s^fRu36<j<0v=za+bmWu&{ryjZ4tUB9eX zO8g!o;UtX(!>AM>&93TIdJT)-FVdM4!7(Xj|gA6OSc6=P0pIo6bIg~L?SsQDLMVeZcN?HOjS*=A_=@-28 zL`!!z@)#RNd}5OQ+dz`@fNi&>B}do)STlg_j^_K&UC9| zk!C+c`FTdTqd)w<;SoC>wS_c=)~T5pS=cd5kj#1X7Y%~zDZUw&4hrxjgq|z!s*Ah? z9*io03)FSLcrd!FBg6Za?GB8;pQ{&%mGfIq8vsX)RO-?lYJsLJ8G~s^%t9 zX2MnrajEl&%4(kyn`dEZ&h)s5yPgM7BBEjn`@|?8^YVk(#l;YDrxE{}@lEW%{bb_s zAhj!tcLyvyV{h$IlY8aPWZ~+1Hyd$wO~=1yo<{RX`UgTlB6eIvEd@ zbNNQaccNzKk>UAoWj@K%Il8|EI9n#lm#m&8hpOd6H_HNcB`7Sa8bwxKc=^(~lhD(jKX2Gx|K7ZC2!b zY0BD85SaVTt?1N1oc;6ZQbOZFa)B`8)Tr5^s zhb>mT2R%tK5R%_?zaSuT9CQ+4wd1i(>+*iawz5I-G2e~fCwwJy)(rvt3cMvz&G{~b zVPbA}z2=LK%0(oNMB`-QGArb^g~LcJiC^e57IJ_}-mHt*7t9+-1>e0!lSL3gZ+cbG zh6UvMkAgWrjw9{Mu#{U=m6}Kp$7z2CH119f;G0iRex4>-!?%w66zZ(opVF=b(TR@CU7x#9!n5Vm?-c~IMs5T?3_iaN5} z3H=@5Pd`}gW*ta&W(S4@VJGP=o41YnOiQLn5^f3M0Sqait$#Y~0p!dUqfx;|u%1CU zT*K_6J-cel7lR_zDE|Y5#;*&S3vhSfP4Fz|Q(oNRAq?ff+4$b)xJ2^u@}gc7A48n% zxgOF1FM!2p6fGg(-SwIUrZ98x6xqQP8wtI~a2KhY#DIzJ4^TsW_OGQ=lrtulP{4tF zA5~jW>5R#Ga{eDFuCjjua~gEw_IAI=y{nNhO?TH&6sF`%ooi>4VOKaZc6p*P=w{KM_z^vyr_f(N`lB2n6`Vh_}u&jAW>WVUc)2KJfj0UkX>Y>=8x$MAc5k11)ewLi>Q-awnz%|C@Dnb zYbgdz57d#3(~$-sz28;$vxP_z1@R%{qYAvKS}fNK;T%@!vMa7?ViVCvJGe3eW{CWF z(cKVKY{lTTsGd!{sKO@w#k@8ULaba|Y&L6E8a7_(Vm)VHArFjLJ-jP_ zl^A{1;(qvemc55@$D$FE%jc8>y*fwRcaUG#cG+{X{A-Aq)|6SPL;`H z;hU56ofUY;#1c=4A>;Xd8+IOugU9dQ33#f{m*R22AgP~JAZI6Cwj|KxK~=iXQ>c++ zy&T&Z1!|8`2Q1fpvoAL+*B<#}aby^XT>35)XfA*Lqm2*B9mMq zdaN^jAzdC#5He@TlEBl1iHltyTv?D%eEWc9tX}iaom=eYc2f_FNLi?{i3jSZsEzf_ zebKu_(t##D-eW#vA(G-Wzm0dYa*VGoV}I&DkE>{cU_9G@2`v8kb)y1qS>jizT6i^{ z9|LV;$TRIkjdr597A!?@O-V)9*(`pO1ZW8DsKF|B>dXMt&21MUNkQAyBaoYW_3k{V zjfxwf^wu{fC&lC1#QxqD?5UHI9!NC-xkY!jb7<#N#9jS(TxArD3 zB9y*5$}Si}nlG=unO_hCb=^~zvTuO>FfTeQhL1};XP6{x&F^ces99r-9#07Y#=6eRWJ$Oo(PVtfM=|Lk3K(NmQf`U3bTsJkl8 zn-`c!0xOsobbM|DV?APsj=s|EMO{6pBxUH5JR|p2ESs)K2Zi-X<+&YNA~!eXKoFE$ z!3jkizeFS~weUKjb@6Fd{fv!Q9h_eYN`>ICd3{T!6m0qYDRJz9J(YtCseX|>1?&X_ ztGBWkDJSOZLO5fsok9RtBDSpm&0I!2((}h!^brWJXsQ};REiq^p_`c}1gInEx;zD25c0LzaDnNfR?BM40zC@u2*~aXrJhclOw69%2PgWrv!oPX{rs zb4W9qC`orPF{H;^UnBDs13qJ6>aN6Fc@$O!9x}V_f^#uT>$ku; zRr-hS=Z1ep*QT1L?;u<<5hGiBR90|DRpqcM4_)KMuO6JIwBrG3e=NJJ9V=H`{FV?H3AKc6-b|gH=({`V_w`s6zSb(YGc~ z2YkP7t?)J2d`Xrg;e9eIcoS*2aeu-LGd8!)aU|V8Q9v;q{R#`^Y?e#$ZHH zMGACR-&o-NSJ?xk=%#3d5R$51(%ls@afCx zY^8;ykS|`9!WUv=$%05tF$RrF9YP1Gzo?R&GpnPS&Ksxx>NJ8Ensqu%hPrCRR{F)? z8z9?ME}wS>)cp5oC_Gzz2hG%$Ff+#o&cg!C8X$TP_C%eG)2Uo95NClap+j-UYt)NB z9;%V;nN4OhRzKQNs|v=g@ih#>_dmalGwQA4YF^bKSOIr`tb-js$1tB>_oDsPkjoUm z-Z-FY17<{=8am$r&+9N(suvnrpJ?1!fe>`@9>XSZuS~qY7R|N(YMRTi|{F~cfWUj;xpW?Zn`@s?rhAs>;+?LtP>>~i9>#tNV~haOfv($ zQv;_fZbk41dGMw`P0!7cOPccmTY1!iwbgP7P<4n3upr;@E$%en%d8neUbL=>amLB41?n4*0m;b{1JROYz&ttvBwxU3bWB(F`*? zb9TKCOK|+&UW5}l-PC%C+*`5xn#aw|btidML-O4aL?I}2pt_Fr(v))J^&#cKA4PP! z80<7BD{JbUPAGftXdcN5Yq1%S6Tz`7w5jwnOYX)yc#=*|C5?Q6^yWb>HR*CphtUT$ z(9R4L7Qml)jIvOV#F?3hCtZh10GAl+*m*+0~7!JKe)P2r)(1?;p zdY>SUVHLPAs!UZ22&r=g%sUP-jSbe-VJJ1%Kr2NNTyM_J;?f*{v`%8K{yqg&!Y{3Z z;LukrS5^=p2{k!cZHXfbGW6-aD|(n z3~lpp(*1I`LU0;u3_1RNDE2P~Yc&es%ti1)IY4GkjFp(`rbC4+T~?c z3R%*$vF&Z2)n9e}NW9;UUygNVDvP``5#&m;DZeqE6MOhDwiR}ywVKHqn;_#DJ7s=^ z7mUP0@7qe}H#hctKjN|1!Rzs_Z2281LHhg$9gIJNA6Z)#?n9%pR4{Q@;GG2HLqkc) zUa6t{wrBDruhx@#YyJEgE;jJz@_>D_k?C{2EmqnZZD-7*!n(2N3|fu6a{c=SU4MYl>ssFgC^kO= z@i(!rD;t`4GQHMVSujOWLG$Esf3^6|kF4=jU@mgDLFe_MvxXiQ$EeJR(wu?>OC+xh zTbnf;&;7ZJW&hI@tm|Jvl^UmW7usr*wvd`osI@xKRntU0St6E^xzW5!oE@QPK)(NF zYH<$;+i_M3vJ5c5DSWAG_GFQ*3&VV1pNisX{TMz$8#zo6cdiv8!AxQ*2j_VgsS7LylBS@mXAzsjq% z!_m%7<*!4yd177`!($e(#s$H1@S!m~^zca{G9}vN_k?IHx5=jfXT@(Xa=z4u6T&K| zsL7P$oFxK1qr(*|9h}$K+SSO`)h#%*H_G3S8a>BA-vUTxi{m{#WM1jq3F<(Tiog7H z7(J-QAILQ|5PbaS``@(9Oou}CL!{J_XeQ=rT|Aeg&R3tk;1V$*CJ)OU&t&Mx$)IuZ zeCpZOkw$@Wis(*ZFMxGfz(+PJ$V!o=#SGpiCTLTf zDV6?QAcJs+mq3KialfA2R!KVrs^TGI<*^V(A1AUBDp{p2|8SLS5ShMoU=dV9HTiga zN*#Xl;kAtdpg8t8`*#=oIVB@6<*hc%k{*MeVq^4e5x-rp7lhK1H|eD4fUE$yOD>$x z>;m>;%;r_Wtxcmly+0!gX;cL%jyp3=-SOTzF}To%P`WJZQgWO6JiA(Wok6Mu6Z4jN zPO`Atc=fE2_tU_8y`p}0;O4ArrdJl3p8IEOqSrvp=Q-pa%-;{@p2Ar6;60O)C2p}< z<~13cj!xir-5}`9$!z7YH~+wNqWrIX=zGPSMkXRjhr-XX`5902k~J~dEnuf7;n`+` zmRm868jHP5&*MPeep->Uvnq^G9<9v!5l_kR#(sE@M-ht$TCzx z^r*LYo(upElHg)$3^^YM=5OL3;7e3@`qy-Itt@$8(RN(&02S;1~hh)gb)g2fX*a&U9CRw#o@iVBJ5 zL+s^3%4k+HXuw;Zz1 zS%(Ib!u@$UI6Hq|l|uGqrjt}am>nUFh3mSif@W-}^$!PBFCnQ>aG=A-%L3yq6QMr?H*j^A9Mmv-?;_b)# zs0c)_2_PVVi5S}PeYqD>Xj&N>JMfIl7CNA?uwnz7(s=713`QBI#hNf=URN}Kp|pLW z&Bu8TQm?Y9A1?>C_rNndFyVZNY)Jlh4YC1pV`K<}-TXXClLYwvEC_6S3(85yF|=yl z6?;^PBId*BFwMWgNBP9)wB2X5Q-#YRC!ym8;r;M3C{-i2oL#UlAC(U}DCL~Nf=wr5 zp<@orP)ELq=bmdlo-ITitQE_PmtVW6g(>b9Zx0|FAVZd*9jJ zkqRc;|I7CuNSO^w;V7>X>umBJxQJ2l&GlN3U)FAqgyL7#s#LkA3?J0b*}-%@=H>bJ zXM&en>YVo=*6)!Hv>lnv660r&9!(eywzRsf&Rc888)j~6Z$yYJ%Z`_j|_SiZdyM!(TZXN%11DN|i_8$5)61U-P3(w~0c z>}ipYm1~C=yH?B(rjuU!J|8vR-TI%szdRcbBzahS_z`A}*e@bv8Fm662Yp~Hl(NU^ zk*^E7p>cZSqV?shoD_y0YLAuH?<*9$2+2S(hi{i{nE*yfYAS$>$K#~25~r5enM zci#NCW%3^o1g8gbSoFwjdkN=1l|WMLke@r?xF?5ke{O^P8^Lp%e{efaYc$jDVYWD8 z5swh#iNn$dc-s>y-I*L<++^!?8?vz^7q?T2(?-_yW+hcBykd)4gtBGOgx685BKoa(j? zbeDKBB(7p8+7BWR71mZ6N;5Qwu;!YRi^<%gj*U8SI=)eFp3KdTfX3)*8GDu?%-Rrq zj8-$K)ePKgHByO^UJcP360AYIY?sjw$sO`P)BjM(Gkx+;U7VmgK6<+HK3Snx;EHwT z*{T>K$lv}yP^nGJDYoTVK!H;PG&Fz*5vu(A@pHW|ALy^%=pet$ZOQVU#gM|mVQSfO zGL-DJH?t=$fJP3h13jLW^V=n2BRJj2vZ(wU4qUfNc+Bbh(KcFK@9SC5a-%ewO&`5o zk&_=nr$Ko*FZC&A-8aw1B84~b@Hd6Of+DtyE(}6SGi<&prHqHLe^>=+X*PIZ?-U61ioU@T9t<)tYB?P^sM^80zYi`2x6Azrz666NaYZ$55&l8nxF9c^Ai_# zw<32V5;}Z8+N;?Hi@Q-br#nV@hP}-%gT`)h#)g)SSRW{nlj@oK4SBKP7~CsbBq>n% zbks%JN-;5@FjDhBJh{p?CZMfK_m9hR4o{XP%*9xAsMO}=jvQg9hMk6u;{nV8$8XOk zas^$AqkD()=z|gcsLtP<(!Z3n6U@m{SsZbsjPJL+XiMazqi_rX$YKfFNWUuoX#8H< z>SjF<#_-vx-qET4>N%$AkDKF?beqYn4-~mWkE>)2Z#!UO@e_*?#!F#)>b56Xv<}P1 z^KK~9p!#HjC;B=$bjIWRX-zZW$q`Ktbm9)`9qcpo&O4ZYAj(z-QJ%sZ**IoNfTxb8 zL$#X%WafYr@to_cw3}OD6oJVF*YbeE#a1$GiFg=~rPRj`u&RkIpuW-iW(r{a;Y(`} zU%p;>O0k6X4tD2GpabgiAnsxmh3$W0kQzmC*&5=}oz(l&z#Jf|A`r_GoJ0>DWnA+G2*_D zboF~V_A*Hfd0UMrqgvvI9?z?Q|D3dpb?1)1H|mY;dIAmQwAoL!Od@vJ^K<3vEtURf zD23w3hEcGUw1+u$W6) zkD?St|0+L8y}YLm_GmLI={5(tEQ@OSX?JYv*>P=!QkcKX%?v{a-Mpe$|Ig`nnp^}> z1lKPj4=^7pLdqIf+T|x{KMh1{+7f!_h@yi|Jk@^9H5`7^LhXhmm*xmAgQ{8Twimgm z0cjc3us>ymQIGM`z*HuRv(biJdC<{(xt$(GAo8qZ3zHL(t)Fv{+W=W32wCV5*p)>Q zxXzzY)3ld5276J{<2Kzj1@7Eg8fb(Su4`rnYG(eKb^bWnMU|^%V&q{(Amfa8eVCPe zrT=!kY5Humn0;`k$bFvEXI9J#XgiMWSlJy7hPm&vT|Sn%E_G`%^Hr2NFm_#r_OZXp z%o1;g)~ zr;fC6E7Z-w47k&D7aW@%tI$B^>()p09q^J|vj6LMQ^1DYSD>NxaTKL9TVU=79q(an z&|ClR@OMGAY&jB%zgr75xY8k>Hha9i-VAqs`!*OH?fjU=lXZ+NNCq@{HDAA!UTBZI}Obzw0CyFEDfS!Hb$O>%i#a_(|40*z_KpQIi>KjgFeg6jzIv~ zevHmIe}&09l;f#KwSm$tTJ+ZJ|Jnq)upTnamu}FViZ|H!hrq-BBmP8-Ud89>vWkhA zPxY{(t@0nsmbW=?$^VO9rhs!ZJe_5p7q6h(A!BJ;vr90N>Kj?>RWz(Of79fux1$+$ z^YFjudFN9cjK4ryhCV-_oBm^VEPTFn7NP-C3VLX_#f;B9t-glu9O|R(^6xRAb9hsQ6g4t8Y3wK+ zjb%#Gwo53Y29`)i&;u|FQetaPU5fgI2Oi;e5X&TZP+6meXak(EY#%pswC(1Yi8OBM zMySaJYYEE{7Sl%ao>R(VU~9;rN=& zAWneK$dV1-s zP`8x0sP~grB5@BObCm89^f&6XH@D1y;Y3$p0KdD?!W3JK%ndSXC^=?L)w+#9Rm++E z_=QS-0ZvgBc@ae`fM_*V+2Q}dzSso~02bK%%qIjZn}Icq?*cGK01FjU0lSrOckbHhC<#rS99Z*NCwZGs;L znN`I<^w?5wBSP8Y&46bO_iT3Ms3glBEh=a99#|Ck{h#gE&G7!?#F?r`oXJfaC+ce@ zQCHni*KAN0bgx#-T~Bx}ZM_j5Lc~G|7_l<@ySo*XjngH2%m2|>5nEdVJixo{LI zaVF%g&rvvsX4bYZ+5UbU%)-mNPyYXBgSSd_YbR_nT8RyXoeV4cbBX&s7Zv6WSPOrA z(NyXL-`yT`v>0I8Xl7oe)fV+QE%hkq+(qa3w(+I`1|1?zb;(@A-sA$mB@;Fzp11uIoU9})u;dgVE!X$CkzBNvl ztZD~TIMTB;|Ms^Bq|`KXHm9ygVi&Nz#uH+ys!axYPhJl~bCw1=kJcUg=pn34Ta_^{ z6R6H}CyIpBpp3!)XT}OOM9Nq8nV(+3BOgYe^svawU3c`j2g%BRLTM+KwYCHBGCJ=>oEZcQ5{}jIWjYJLB+lDwL`M(Kw z5{V@$=VasmV<=~#S&7lpeCTLw$cCN(dV=rgwV2dIdFM@*%1_-=j;?kVr8ioIIwRBi4?;kQ7e4k`V&7SaNZ4dB$K`uo=*5RZD|o%D*SDh40+GVjgRp5Pqdxg9w2&f zL~OeiFx69M4V$Z%DjQ&CKLfgt+7T`clNrPTPO!t*9@u^L1M;%P(8mJk!-(zoN;;co zR}{^00%QSbH-OSx+sC7>O?_)owbHMxwGotS8^vUp!pevIe{{WNTw6iYK3s~nKyfL- z-JM_sin|uK7Arx5LvgnP!L3MfcN*L+SaFI3cUoKv#on~{b3gy*%lkVYAjzKHotd3E zd(N4;E?Ox-_GEbCJ&nxmp~@4VwU(46=52XA)uu+Tm7g08ow}SSG|xtooYeJ}`8!VF z0(=rlt48ml5h%0Eo-_408`nMvp9n!u(=h?OuMZ0eLE7@*IMK;_wSDjd$!_Y)y}>SQ z4;W>&wee{;Wh4sDN>p8aemntY?wex_pZeeNH<#kyqn1%-u0641W|QUH`+x2GZD2Yt znq-#;iQ9dF?Um8jtfDUsFnjp5{VT}*RS{wiSgRD;(**2744U&IT+@6-d){6RUS*^tw8$Hbt%W*eyi$s>_sRr5(9jn4O~v4Ai1N5N+L%1^A_;P@sAW6 zF`~?@B6yh{@d*Qri|1YiTc>g^U1N=XH-gtTc=a+w6 z^VGEe+hZv3SRe4ywj&()r~yEL?ED=i6zJcDs7!Pw0xwH}5QN=$d63j2EaT39{NlOT zw7))reFI#&8m0*T_AE0y1Hak(9eAYQ5bFHyQx4Zhu}fa(%W@t`_Cq#cIDV{8cbCZd z%FptG|4g)1A2949SJH>TZ;-N7bJ5eGDF+DnX^Rwy(f_is=v}tb#ki99*P~+YWV0)H zDSUhP^_nnYMfx9gIASKcMPcQc(pyrD1+G$eWg8n>QZi$NFAegJ_mL5+=i{a3pa^$$ zDCwk}mAixQl>Y>d<-|WadKnqemI%01R`xYJ##Lb{;qOqPY08+N)AoxtXPTDkP>ahzW@aT-qLYRQTg2_=U!5S%HU#e@-%0I*BCQ7GeS+tu0xEWtk}aaD zAocMlncJZX%tSP-pB{Su#~#PgKwGJyICH{&BcI^HQrmz>T$m^Vx3rIuJIbK0qQ9J$ zO75>r2z^Qcx{9!6iER1^0j*-=2RaF3k(HK14$^=&sbs5i|5w{GM8B-a{+hF=laUsB zCJG;l@_QHzs)iVvNXz5@Y5I0n_pC?MQ*2X;HOWQ1=xsYh-I`K z3>1&{l?K@41t0?(jZ)VXg$Z7te2FRdoDzhu$6owfBJgGka67I!ox$rz=7zk(7c}L6 zuH@Xo+u8|UO_}1tYHTB;A-_dawn=D?PeTxsn?%FAf&%Z2I?5rNLEMRO4UdWX&B2i1 z+3@=J0&*QGCwW7E_D6OQecv|%<*YxK#$_C&108gKgXny#1Mc~p9gNks4qDpdVZ$vl zgO9MD#hpE|JtKP5i&j8LP0ji3L`_4V+tI+@{bJu%RxpBw9uBf~h>ZMGDi7MyCHua* z6CwFOQADf~0ymv5!74u3Mg9J7tsrza3FEN#6Di0zhBZk4$E}tFz}m5xUu;`y_YOw> z&zEkW{z;SfS6hGm@~`gyniVQ30}5$H@V)%ksV3!^8m1Wkqx%2T=(iSNE$4q+6;7S6 zX1mq7hD`jogMZq`g;W3S>0gh3ofqNF|GGdl?VN)-1wR(Q{7;K5J$UXC78ud~Ki>T> zLjU(Xgc<+0qswC8y~M-6Ul281O?m1rVu^FLphshngvX5kjya;Bj%oXZg{%F0msiu!?&7qN#DV{9g?(>w$g$N7V&S z+qUinz_~{Xq<_k$n3T)>_s@T2_}>o@pEAga`hP#Vwf{uzP(_UK=N+KQ1xFw89|m}` z0}K2==J*@l{?mmdsNmpbm5B^38|J)m84Z*>g>}G4?UcPUQK_mD72ZXM4=GfFoCU>y zwXWqMPY#(dn)r1Kj{?^0yS2%pepD_~a64CT6w3u0(Eq9YQ98D-9o^E>fag?GU3ab8 z7h96USt&zHGJjaDp6T2o(o_QJHq`d<+M0k%T-+M62oO1T7zu7M92KqIV}tic6&noH zoK)8i75}pm-U9r}A#W{x`t@%eM_KkXAIp5Xs~>XTUV{LK% zYAP$;?=N%*zlSU)l9M+us2BOY|$^%IrlL53%1qU z@$ncVAG43whF}yu@=@WdU{{#8m6D`giM?I;3NP_NmfK>-;D1eb846U2%RZ2xJhP<} zA;LfoVi&W@`)VIE++M1hu8Y^4!pD01gKg1Ru+v693t+RU@zb$nB)3{YB6 zI*=H1#B@o3^?-Y_W<|)xTf?n0p?J5u1`8^aWsui6s4&5RGDu_#3P3B?m9JoRUSL)Z zAib4pY)M?5U%i1T&F#8cqK;w$*XRG_r3{v-?vpbDSNc$`J#NpzTCwSq-o`e)n}c=K zoEVCN3)@Ex#K9sg7LwfB^$m4p>1-QbIkww`|KkU8Cm=e{1#^O6PH?i)*Ru$4T^@x$ zqX`_t>!SpvZ5Eqg95;=fasTc2sz5!!*)EZ)FpgUsquz=IRfK;LvrYS@i2q`b|6n@kAN!${|s^W#*o)yhGs0ydal_9jotR27>B%B`g1Zb@u( zUEK?GWs6<7eEf*lzyd~)7dkCk?YZ}ySdR-`?>KD&&$!7i$!k+ z_A3M{BT~xxvi9fb-;j7lvbdfB&LB(%b(i9JU z;f>8{1bjh$01DW6D4b(1t~C!^8W0Y|0+YgTd_V6oiQM{Q#%_5e`!_#dnFLB@4(Lv6SieO=PLKZJWtosJ*Gd+OF+%!- zSxE&6Z!&>Xl_Z)c4EU>O&zp$eECKG{I7WT@2BN%x@!MQ8$bs> zR8+$f58)h!_CQd6@E0e%o{WiMC!|pUcziKf71gecj3I8lFG@e->o6q{_yA`fLA!pb zB`yb`Ax_Z1P+X1adDzXPVy~x;5*_c;;G;21o6_w@JdJUHbmP6`Aw2(uK&99Si_&Ij zqKHgkjRc1GhCjVr$me~v$h#{d2jI}PcoShmUlwB<5o?P`vh=!K_IS3leJ;cu(Il3N zDDl0J(+BiQf6dB+Ao3q9#{9Hq_jZr+o0}gWewbJgKF#X=&g25(A9DI1`f#nT#5GM^ zHyu?`QF#Zjg45q;2|~|4P0O`M`;iVknGQgCm>4tCNF~}GP4rMKw2b7jX3*k7Kgjvf zx2G9L2b-vozE;N_eVqctcTv`xrXMqd>k}7ak@Y435aQPTlz*9ruYb{(zhrP(+}Wn5 ztZ&gxiA$J>tpp%(X3G4Pn6vY|7@}=#k|)B(Y({Ed3Oxf>`O~M>p1yY$&WrSHT2Ql$Es?K5*wONa?nML=SnC6NdhI1=GuOcR4QSfViR@|zd@A5+YHK4I+w4|7ZURNiCjSwe)i^e1LG_uz%zxPZ|J!7U3i%I zg?YMV1LZ=e<(Su{0Y6H5!<7J^UO@1v6kVx=P0B?=g!^^=1g1k#|OZCV8y^UvFZtLs551xId619~l;XoB$ zD9=c;7UWLlXhy-JXdseJ%IU3aF;G^D)}>Va$8UaO7H)0*GFLEM`j#84z4)vIKXc^O zQtspE&GZuIi9sG`NqT8f(F=k8*zQ_wjR~m*c-}Nx!*lH~Xj}{}e5FHG=%`eWpYuQa z8b;tL0h~dxkx`_xED+!>)c5d~NahxQU0aqd&26?2k2Q@I{Jp#yabFqHX`xDWm_b<1 z!}W`c1mW{uP@b~~QM~ari>2B@@vrLb{3q@g@7BbcW6m-RMKexRm%|mqfpQtat~&|a(J6lk9+D&z=3G@Q z@)8UN7Q1I3MVd{$o5}(13z_h?Dg@7zj))QP@HpW!jpc@ygl&&N@jgB+Pe&Nqd6nNx z%c%(x_9qOO8y?A1$JcrBMTt}G3G)P}1AEK&6uloA9^SdpO~DdD@_0TvSm2l_AlW4&*l^@NpHwryNf%zhG?$1G8btThsVZZH(msMPo#h;04 zfx;sA?FOT==X%svzEoTp!vlG_=nHVXw_mKd5$W%)b01weC}IH|d}Nr4VsfV!&7ep< zl`CX>1(kUa&1t!lE)yCz0_Gqy6BmcR*sVi2 zQ>?2}yxG}M+ZcyAW|U~F7>wwv@T<>^D^6K{zian*vul@PFA%wOLo|+YEddg*|9K|H zJ5|BA3KDl4(g5u$&YSiJD=5zdO50loaFp#wiqY0~*V{Z>m7n8S#Smdm=ZO*s+|_0a z+wm=#F@dI`mzK(pZ$lsH+XRBui?E?PKW0F5rQ7&~@f0!ub1DKWJlyFYHUV0RrHqq1 z4>mthhoO>UO3IZ+W$k&81UN8|t6RF>s!oO$03-KY@pzxpT^`SN{n$gC4>=<6zA|O? zN-*`)|D@h|o`u44c*K`%m8N$f)ywpIowna+wAE!z;Ee;(;wr{Dcvp8U7;(NFMusF25#x3}P;aCTxABmjEb9$zg7A8zc>i_g9l3 zBRo(E&@{d>oQ;aF4(hWZ7!q1QN^kaY_jc!+foW#ylU9=j12J@svlH!4G<#NAaZgq~ z5GCJcSy>dg2QZw(olwhLEU5D=BP=RJ=MFCBTYuzuya7LM`E>sQTBmltycR1emWypj zUhiNp>BX5setGm6dGrtH-xVd`t>GL~muII~#e`BtdDQp2v^Sx^(ziM^3jE6Myi#EN z!#y*$Kaq34Qdok>%?ck`a)d?jHY^R)GNo7Yv=>0+V!*~VW6k0z5k>Jvc?>`|TjVVXx3+QJ)<4g0;mRS`;yQ3gF z$&x-F?aejsq+ewEFQkHkphyIJB6oF7=^6nx3{2SJ?Y_RKhtzOfBNwp*;6hgWP$2Dd zU_o-NiN@Vv`)br2f)j9HVb`M1Ut9+9_|R#4Xac8DBJZ7{?n2D2yFxCT-!E414SQku z@~VYrvbse@dJww`YX=ag~KHC-Sgsvt@WQcsGv>imbH>{h`g`cA=7Xx?e6;Gn)7vYy#=aGU0+m8gyH1Ad z{eD^yZTs5az!{rq3m3scvm~TLrN!aup)sXVFlT&8LZ28oEJP=_)4NRyVH7Et!i>*_ zk(=)--!yzxzc`%tIB5*D9v`A>eH7G(A9omqUL6?Pow(ag$q{{1L7@55?Kc-f`3#|F z2>dk!IYS|&J^hhdEl~9(nwH!9tU`8W<*K3j4^P4FmFft6Gz#4W-=3;o!&s*Y+TQ|x zqUf$1pFh#Z%P%L;XYl&R0pYRMR}2UkSW`sUNmvauNaJ_!XObEySkyMO+Er@_a84t7&O37vwK+5Y^d2tcRL3UX8Q#R^82 z;rJEhG?I=$_d>xs71@!`v_)?aU(73`W>>z%?7_Zr{+~v~?!=G^PL;ih17AUJei5S0ykEPYs@a~awI?L!jRz7yBzO%(N7Ei|+ z%jotJC?p?Zrfl7gS2YhAi(A|KwyzF|=+^~uOkh+vdo#QAwa?JGSpb!2@e^!#bV6SL zX%^lH{!w>j`(P7tmE>vwZ$}3g+9&XKweb4!bJF76af?Z|+4V6=NlvTD6QP4^M@b&l znE?XGv@^dxbGKfD$RIRUC6K=4Thxpnfk4DAa^cOV^1X&w0C<1p#1b}wC>5wZS}lau z$v$BENR+j*S;!Fdf2HE#eVyh9Sn6-m{8(bY2tu}wcUY|`*~387zN)mF3SVV4sr6#d zcif78gm^?XQX%%CrJ{G+#>R_9h&h;fARsH>0{U>@<76#PNyA8Z&J2jZj0M_5^v#G; zHEehB*k}I^U4)BxAd4P4iDGoru4g3>LMla?qTg|0Sh?6ABj}dB z$(-3ZKcF%1Vp%JU945D#Mt-6uOi`>F|GI)~Y7-v<3Lz1RCPlXCYdwf*Z9jzQ5cifU zBTpl)%gEcSsi-1_gk90#IE8$C#B1Rvf{=zc3=Bb=eI2IDAj_$QTus5Qw>G)h?*g8z z5nSxp56x^~>O23pPpLK*X^bApHfPD@2kdc<{8ZW!C7dWUj$8I&LgF42As?Wc+B&m8 z{SRJr;p)9C!7jYA*ks-C0t_}!W=z_pWcjRuOYg~+ZMIsT!=E7`avnHpZz=Nhy+1Ni zY=tSP%fR186c*25P8sv&jp~Lv_!PhJMe)sNL6qAl?^4)RzueUge#YY%LUvDh@&5ay z;~SGNL6p1l*uGEk!ff3kZcoo{LNW;s9Y4#7aUy!~$ zW2+NrN*_mkDK00|j&<}FzK-{4aKA8bjT26nwPp3Z{yJQBFY)!+`Hp6E-kJpP;r-9Ay+7?%XtbaLe* zfz!#9u=R~k?Y}A4b5KC*o?JVY;Kjp)y;;e_7YBU2dMPrplu>_BR@=+L^REb}PAvrc zZJep(g>938YJx!VNk#hmUa7(I!CnZSsCQq_RY>j@7ymvzzDyjKwBgel|nAn$FeG)5~@F#aWoV~t$=gNdV9@wf0^1Mw+U4bygP(y z7CYdPN4Koig9=!o*6xex$<=!#9f@>}tO)Q@1T&HQJ}e0EwK0oG|HZpN(V6kUG%N0CFR5u28d#)&R4C7zo~ zA)Z-Ze{>JD$8N>@u3t+W4w6=mKol`<)03~|bq)H1X*Ps}>(-S3es?{y7D1!NlCA~V z9(@^n2tO`{Y#L0kYj%$8%Z@4neEOsFYC*$lAsr_8nX4b{5=`A>;h=b;ZbK{ok?7M46Rl-xC?Rs|0}Ocj&|K%RTj%brr2fZUmuuIvFn3XQ+d35Q6#w0d}npsRL%) zU^n7A;yZ6Nund73-?8}cP(C)FSbu*{Bgf8si4}tuu49zhZ=YH0v1}kYBDq3mD}*Pj ze&b0g_}!=aZ$lY#bn}tOaMG9HeG5^Xv@Ho>O(z{dyo~wfD~T-Dm*&CKKP^fwZi2K` zI&=x`EA4j12Di2bzl(^rxcv#yKOXKFRkObDt8O=(YdW{u^Gw=&R*da-9@k;i=<0Hk zki#3^I&fjn7v&;zokE0~`O_qf<9A&Fb7|($dED0c4Jr$Iw2cM2;9hfgj7zJO`fH1& z<|&R@RN1^2m-7geFAR{yzF`%{9BfN;mK>UARb{=aAbGtqh=TuO;QL~9h)sdH&y581 ziy}H0Bw5BgYHajX^K*3dEJulCkz*aC2XV@Pkd#c+h)h+q8oYp>y@hV1MGBbHVzc4F zF&H}h6_IAnq0CXwv~<@Cr?~_3!=I}G4}wnu5&Y5?vUT^3r|%503cM~ns$aaYq`fYf zUm->j$j7f%{HEU9$V@f~I|W%NY#QVTDEO+4C}aNfN_1D*3-KDN3DQ!gA`wbPF!h$! zU}LCQhLVWl+}XQ>`cJycO>fzvG4}HrhDCP^+ynKfHmnC08dK6VsF!+OsDkvfgx;kR z%xsimD@7VisQF}ieqxw^idrhPnu6|Z_r$NVo?!$dKf$4NI<#q)1pCTpa8?sIbV95%l5XebLNAf}i9(KD^%9hgOp$4*nxllU%7 z>P&t7M_+KXohyr&KvN@WGQO4~lhz39uf2kME`R@nv?*S zHp{otT$5-(#)uBpAf7jDcw)kJ?v2dCc==2LZtPt3bIEvq*iT;Kh--(R zgWFBurK@Xej!%-Fl4ICghynw|<@Mk00|5cf0IS3s-L0t=mR__6cJ%vq&-3R(nv?Yd{TS$Ic5kJEpHbo>EfNxCehwg17lPUdgkHWPzFIRHiAD8gI_5M?fj@neYp3# zQCsbARltFIxgmvR?ck5`qtgF2LU|6qk(fcNel8jb^xrhR_>aoo0;q8jfpq}!;(w>e z_%Ed5-{UPcf^tlG64qZNB3?gSj%b7!2m=Mm^BkIYz*bJW?9R`1=-_xTXK1Hpcwz!|?P;%i5)~c%lF}H0~h=ZDcSL=;)LYcD)ixnkh zvP+7ZkIhj5=SUJ3a&<~{L`4D5e`G>T*OLi)cB{$IO6wn!Qh~OjJ=*FYYx>HqV`Np6 zN*1%-tW#Oe@S_nGMk1l8{kNc|&Ph%(iQ#IW);$DqA_9}~If5Z@6&7AP>)%hiqjqE+c+X1$WKATbxEMOFqf2E#1);BG zah)3njARcHMSJhl0rb+Kf-9LO+rlGP_~j@ftXxW5k5`p|tuVWdP!oP^p$NZfi47QL?d_bnx0owjD^#t^FY$s?TqG=@$KVW3>S(L zPTJ~qC3?)!nXz8Gc#VJs8(bq_W|&JA@N~PUE)Dp8<5>5ATKMYrw=di?HdA$>P-rN% z5PKp2o73<0xTJvgfowWY#rYTT5Azh1iVH7aevAS-!~spG2r;i&k{c$Jm8p=#6AH}F z%;6Za(=d^oSm)r{bFAjQEe!Em_qviq;KFLO%;JOunBWKVUm3QP!=DqB9DxGRKIG)o zx>$u+2Bx(BeDmdV=r9L>f`YehOfT1{&TLKBWWotM)hT;{GUjZ`ex=Tq3E_ZI{&m)1V!qr$%Wv} zI%EN>6ZUWv0Z4(jO$87l>|8Nka*M#HWHvz=fLP#xKY>3{s$&*V*Q^q>C0_`6_h??- zMvKyW`XMgmW;^&dI7=O{MD=9pIMIk?A!kB zF&1ekAs-uITh0<}!4lBcUERKVxVEi7HD0U5X=m}xrX+bQz<@wmMfVHncVhQj!uRJHWZVEg{%FkQ!pQx5Q)Cokm zim>Gvm(-h0R`qcw>)(n;Ti@M9f4cep?t5a_8?1>cg^-9( zRNyyB=*N!jzR-XG$llNlhkx-EG)C~6%29lEPd-Q7v;FqG=Vw)u+EjSr`yk-GHb+!Z zKd3-}KgJ;8_(3v0Tm=`U#TM5M)M<>1QQ{>CN}%i5*jKaAGaXag^DO|BK#Xxiza4T< zVC@Wls(2?a_}s>f`_sKq)=!v{{pJQI8_mL(5(usC4?DSZOTDb%zWX~db}p{y^@f+5 z+&@mdTQ>&38!~m{7ypRAM+_H9S^+Q6ic)SpML=((#7ywuYQ`|V8#k&e}0Pi zXti}j8U{T5yn~uiR#W64wv(KIe3W7>l56s3?`w>aP>XEs2x0iT#iGE3n_mGd8HgGQ zy|SCoXe6i#!9_9fA#KAy;!4NSfLvI#M;Mef`C&eI#AMYl$D3qpBqw!P+ zchLDeata|IGk8aa+;fFRG`^bC$c?Z|(|7|ZWWY@kR;^C#F~1$mq-4FXy`W}MjH#{l z7ce)!FFMZ5OMN+|KEy|}VT))(M9T3_#=^`~jY<{XU><#Q`xsV|e zE9=F+#`LB-(R^M3HC)D6-EA2%JojYJ=N0MYGYn^501xA!n+*d|TSUnW+s+nl|AVH5 zQ&K`wuI?84?hhJCKqKjBeWiIruB^#gd_yUpEMe5O&upYPu}Qmh+%;tf3HJsY)l_k83c|W#a9w-fw7mdVzUh{G40;*nyi{EwRbr01wlKN-kEOJwJ*BhmH3ym zAoL`au{cmjkKA_Ix|d-(6WoHpbyTP`;yT#L@@1`Eiu)Q@Gxce)L@vLlJQFgtO~FC1 zDCM6pUX}ei(KtqLLN`6zB!_H}d`AD9I!NuTXFy|2UXV_sXT!My2C_Z!OU)0Oh<~Q-R z!~+clz+U?YU<1`dw5r-^C#4OzCHq1UL=8h^;F|MG3k{-)LLGlX7 z95@!J)k+x6`Gd#3V4C#vz5+?TK2-&ATu1WeC2`VVaD`#G@CCd4H&|0y51^Q`-JB4Ozj{;y(-yOb3+=?cup|2k&7s9kuD^zqSeudg* z0m;aqn8p?Yd5Q~BJGloq{M)!{qDTG;sV1@jy_7w3p5Z-Zv#n^TvwSyf*l}$ltCVY; z?G}MW0UJw*EK-1%Mg!p7lS0-W z<2g-1sh?o3vPo}nKk8DQ_6sX(S3M*9l2WGJ_-;~eJdB^qx(UrNiJTOkeEf@8u>AHj zw}O6|$0aek?_5y{ybSh$=RpA%JNJ6FxJeK8)ZmPQH@?RI^15z)h8-gbcYLW-B^Oqu zEslLeJ|)MP$qg8K;jWa(5(>>T;+T5JFh|k0Fnk}_@+N8qtzJb9L5tg12tgA+iPq(9 z%_xERzZg+1KkXKY02cC_IOMeDx)%|Y4gEH$_^K?0YFtakSp6!@3y!f3PoV*^%llB5 ze&r>mKwFr1R7tUwW%bPqkc#C05=anB$?SeE-4= zpS*V2ndx}eyjD{zU{wx@vD0!TgVe{bfmJSUx1K$OnBJct7-+~j>m@9@a7g?Bm(fFi zEl%4KA63_heSN)8mg(v0<{`Rjo~pA%SQDDJt(S{^y-o(x zLIG>PB}mvxtu;%;S|AV#*sXV~=NItsu^(Ylq10s7DlGaqX#IJ-PcGfs0iUdj<+a1| z&;T|EB*$L%0_O~7`Wa+_VvtZ}{b0Ra>^%$%>OElmiek6+5&m-4y6IEk? z<<>})`AWLg^vST^@)RbI^)lV@SEx9~+FXAmi6LC`ldn}iw)BHMS<8osd$EZTH(E_q} z{SqF(wBxlIB~~W-$;bZi?1(Ud*KZ~XKBjx^L-*bFG0eL9eP^oPm2j504MVUNj}$`H zmN-UrinJaA+<#@g!#onHmn2R+5>8|<1|c9lNiUOSUpp&9`^9AXb&ZBkftEim2@t(0RDll~ZsR`;F5Ssz~ zwbeNpZmPUU3&z^H*N9Y87=A0_U}^8k#_!u0-UA#MZr1MRe6>MGmegxj;9eT3_+t21 zfKmG=Wy?ys-C~ohUZn+w)~`yG6o@2&~j#agAr#VY28Rce@U|L3%`)2<%L zuF=5eEH5&1cx&NEBrhG5hZYm4Y}U93HACm~RHdVfEr!rs73Z-rPEyO4vxA9R>S&>P zFPjZh;J{r*AjnV^kOtm0RS?8qsXq7;f7RZ%IiwNhp6re;1;BKTFh7GWX!D;vbQfbA zfE*iI3s-anIwQn{1h5Y+-m$<>=kk|%TzT_0Oi{)<_#i#PyfScoO*nH9wkja@C*=M> z#Ph_$RoCc^bhWkM^J!RM*6V27bMbsi2+}l64)~Z%J6Dnq!4b8Em)aDF+rpU(up3fo zZ3@88U%w-VUX{zsw^P>JbEWpkOR4(wgSZJTjuK`0pQrYPQ)$a~YpFMDFfVbuwz^IB z#bHqTJQ`AAvo#kC2OqJjrpt};aC??Up3kVHvp z-g&H&ya9&gkY`ZP&RTo8aV|Tb^1dvm{jfyeI)|4tsvxnAGsTb`2@I~Wp`$yBjFq97 z<~q~;z72Vup{6$@rwR}N&klCvVz;E?(}61uCej8`bPQ(X*vSRqzV=s=+)dn+-fpoz zgjqCtqYPjyV^~H3D||m8;mNob^>H>Bn)t`=W9Zj>2;ErgR0vOoxeR6vd30H+U>=`y zYq{3xV4u#5XrNZ3u4*qEK_ChjE2u!(bC5s-e>?jDD3c|Z0VGb{C1=j(X91tKoa0*` z8A$_}a1%F=Q-|}ifFB9;$|PL;0wmvojZ^hZo4_9W_gu;4BwvdVHgWgE<)$YzVVHGh8bAd&n*qxY3nks_Fm+C^mG3 zuakVKBPqV%AULbCx(QwS@}*-{?CtuJ_b2Gp0iwCs_V`ql4-9e+vVbxJ()e_ZT!<@g zkBJSO)WD#r5+h^iJpL`2)*PB5;M*Yr3?i(?A_({#9;yR1n|6IcKY3-6GL80hZ{SrT z!sUigi^;(>a_KFUw=IpNiJP?E4%QTBXFw@|i3iUt~| zK}_trq?7=Zs7*$7oHBfEFGvWYt-RcF8VAC`o47l0YU!K8^( z#z)kffgKjsw`%QO;DV%*q&SDATAKoRBNCN?WCBc=!|Y&|G+*K2tzRAfa67m_PYqC@ zFwgsaZ-%`9Qtj-YkdtxwJkw4I47jG9%d`hPCnhGKD26PmZs2DCJ*mco2nr{y zc5ChVyxYLY!MTD1{iRfcjXcAPK&|Qbv)?AetSzz*3IxFETZ2#ccgPaA+a=Zr7l3Nc zz)A`sesL2!;|aj~ULiXWvZY{X7mogR)uce3ecsn;*o_tnHs?sqV*NdkF@4QOcES8_ zWPrWyg1FKyG1D-L6Jqpgc3u8fwL=qQg7A}~tdG2X0PcFhom^%-%k@@2yzP*QYg~gt zLxFPJ5LHz0ciL}ibrZ4y-Gn#1iHs;ddO(bI2&ysr*v_P*#SL*6B*>2bfj{SCTMV#R zI5g`vzY6q8Ve}rj+&&s3H@x^^Jv-TwGh$&uRRDa-YF~js%ybc&Wb|wN${~ZES*6&M zvW8ZKJ=8qSQdvaW1-Y#92MkzCA>3!dA7J#(fa0*;Trflu4|E~{Zuh=%*b^i0=?xe< zBX0!x9Gun2$4PXG?N$uNJ%Q>o{55Cf{Cta{G;>c!lTYKOif7!*TurH3lu7k{`Q&2;{+x^hM1Qo1l6XP3I;sutd$PiKF3QY&M`^9Z zUt~OcMbBszcb*olXj3j_p8Bit^HKrbVij9(Pu$$C^%}^(?OdA(?zeD3&u#?lV>}+#)8wggfSumg zmn$|~(T>Ocs}5bA-ZdvT*T={5ciALsYY*9VIVWGcqa{99t#;nM@QAtF@fmXcbACIc z_c!<=Aiio->t)~y&{^XVs8%?z8-de*iGs+bzd0+z>nl>KU5Ah2Z{}|-or8xCQH_m# zrU%VKXPgp~sO8)_w-LA*mA~V2L=f*0DpFgWdY4ndH7(rU?}wVE2DY(peF5?&$87ih z!WWn0F1J8S{5atU& zCz&dtQ@?6;?NDD0zdbs)XZ)Q8{Q5#5oNA)$aRGV;J^Pbwvn4-HHeW+!EJ%j4%2qVr zcS5G_az6#~9bNcs-n3|4TXg8E_Bv1uM_cuT@&{CtDu)J4-d|15o5ozcdG2A~G2tct zM+I%y%6>JeaW(t2?AtoVl{dZC0R-wQA2RRCce=m*j#&igOByc>N<=lt)yV z1QFP&!wxh1b*Yy}H&uV5>tSnBN-=hI_93isECOGNI)NWFbg1$%?NX|Y;np~x7wKb6 zF{awH^l@HNrK6eZoEZQRHr=#nsi6cgPIRic?tE{vgyGG5yJzm%RRpPK_-pRcqZUe=S zps%~FA=%2>yW`6rGW4=xM03i#pKIu3se*XD=^b;iUumRI3}k*&jK_37=CP@aUUZ-p z_Wn+LruvOxrbXrgs;RF$HR>px@&L4><+c>LI~o}<{(G0bOk1!0vQE zEyj(Hu9rWGsg0w?r`>4e4QI>6pR6Dk)(cEUN9+^}w%helz;ip6KN+>^QA;Kw;0E=V z^GBEgV#^LQ#j8v^Sd9XBdmpA55MSqL2!7hACn%Gdvi;Oh@%T9plK%Q#8~OMr@0?`d zF795Kqp-5mx8<=YC{JeJF6Hn~eXEUNKP}iOgAlif((Z#=tE}B{>o=@DL zKNgzY@diza5Nr%ut-t;%Cr*r*2ED%bhQL|+N}Pq`u>Q=7oz_gOtlg}V*AB09K=JN}sP>l9CN_+0=+gb! zl*}?SJ#8#DlD^G{$)Km8q};PS(#J;ndo_U^vD=sp1v0T#-vaiIk@|D=cZX6a{4v2O zaZ8|IKiVEXg4H{ov8i9L`rVm}|F4b?5A&p~&H%ZQ-`+ zE^RoqaA2$F%v2A^mCr9>U;i*7D+2hv743sDpWaZ}wNiXw@f6@!#w+iFoyqV#%^$D9 zpiAu&LvMB870R~-ht#T5DZGu(|EygW{cyN^JO7H_Joy#-vx?pT)#9^}WIYj@so3%6`uo4m{8i{uLi^{)N`(L9Z1A~vUfJB_;R zjhinWy&Njz(?Ubu-mi?Xj3Qcg##^TsO=(pIqt?TJjJDiPW)2P2y6Y;G6nw=ypfF(( zsFWCuHhCD5IQmv}W=5vUC6d$sXCYE`G5cGkNW=^bOgHzK?bOQYttfBr=GzSuU&KT3 zOq3qYOvAdKZVzli$TkSBr=RZ&Fq_w|kFsLAe=snqQAOC-WQ2_Ud;SovEDnZt9`Gsf zyt{i7W;%^Fk5qu|-J*uM8_3O9NGj1khvPuK2>pfXAuC%R^- z;!lXnOL3WtlL?9lxmi<|3mzc^&Ch{LcPoevr*(J*3!U-ICf6ChubF-i9Z*a0?@Pda-6$ehOh zQX`acqd<_tb0R!;v4nP@Q)9T_7T4b~Lgz#rZQ6RztmJO^WRgJ<=fjP{n@dAjdC>@j zfB2264V{c>bk}${;*d|`4nU&kf^Lbi(5M1JRx?af<3$jKc&rQ!sCQ>$aXrHn(#bPH4v$AG~oMU zsPj-CL&1UQ$q+gv?%B@7r|s1*ZJMR%pd)J#-2k0&0Xy>@fh$<%Hu8bTdYP{Pn{o$t zvWTTIJw*>H8AnVAE*&PY{R1GUV19e)?rm3$t`{U~V}ZOL9Isca92zH+%_t@?Ohd~p z@(LVp0;7E2lXynq4J(Fprc3|iea`Y4s);>!8JfyumvR?eH(-SP7u%7RG&LOkS!Ti4+DcOE)Y z2y$cWXE~~X^Thv;sk4r2`iuU*ARwp{=@=m?ARVKXZUm&eVG~BTfOH6>yBnlqgrwBy zPDd%-Eg|)rAHUz<@Ar8Bv&Vbez2}~LcHeOCIj<*rel~f_>oKjm=NMLU$Q-1KYP;$U z^cc{y%Q%VB`Cr2!+HBE&YcP@djl)@(+ltPW%2*{=R7%;S=YINbLJ?$UIV`g-((Xa( zJpp$dUMB9;T9yVG>~P!eE00z@iV>o-SGt^uyGP=Barqn8bix2!Qp5% zC8Z$=^cc%XxT4tsY~Igtf@T{J(w~aM%r~CQ-6;e}u(Q6!D-ds)VbQieT*#CIGW{iy z@L_rx!PUrXUq&+e4N)w>Cmg(i#k)F`E?suxK2|E2-d0tQ%I}v@Vxq#_L3%kyUoZ8) z(@0Dp(8}O@O3g89$Q(kolO37tjxwTL>!?XA$&ykV<)?o~iz0f^Kt%vhjVoSRtolu!KV(idMFs2LqjDPIqpv zC;)LtGrmxEzW+tfq21^Kru$AZLkmR#XjGX{vl~At!;EX@D!*`|>@iz#KI0S}$&km& z|C|aSUR4vdq^Q6O)Nare`I-!JdZjheocPGl_Q>+XHnXrenT4^nGyU5o!)|OSp?G7E zy`@TMNO|T|NUB`JM>s!gt9f;}K_0GZguDn@eMu!#3eFcOC*<%R(ZVf%{{MVQ29?wO zNOzJ!^MW1&iha^1rThim7LivNQBTRO`=$_=YV8|GRsB>3r%VocmEKW@jr9%E3p{qOZRGXD$ze{hz+w^5(}`;AGgNrc8=VFK@B zQs?!yA5teU?}eT3Qx4<_oOu2FG8mi*cE3wXQ1vSL7(HWny`**hwIVnVx7{-_rjIe; zxX^oB?YPRa1ASpOSRWD7)N@ACB7G@9MFN?jXG zmh01`aMaHJQZ(qT_rpE)Eq~4Dl@64l+c(L1;!J5G5=f88cl!rUjLJY}iODG`APUWO z>ouiS`-sXl-&D^QLjXifN~aTvNpg*|D)oiM?#vJ4!-sI*J(i$Qkym*IgU}C&PtXVP zE%_JPjA>VjsBOk>dEC%jG#fojcEhEPhdoA9d6LHLMpy?((RLy508`^Pk(3Y~v2!FqD?{ zVTW_Z&BPxO0w{gmC@R-ztk^~h*zpRb16?(y0Ib5>yHjb>0o3| zVK~%)F4hR=R^)*C`I=SA-=wtdiwe|fcv~L>W6O^(P5zWqkH|X zO%(~?ShBAORK)!Ycr7^(w&nX|pRJkD5nG19{Tat|c#Zd3FaIRsbG$+z`K7&fWxW*q z)6?Iz1hH8cD6I05zf>E2cA?VV)N21 zf9lBsZf809p#%b+K+T~T)UMteefd9}k~R8CmIpQ3Tp8skZW2~L48WdL`NjiSLpi2y zhRIJew2^8&E;rbm7y`1P`b_}A^#(7;OJ%lN`Hu=`MDYGnJl)B0TO7gjl;T41`?Oue zWH~y-xCLZSi!jl!7!*~)->M>+{7%-F%U{|OCa@#8(-^pT3iQXtL(9|+U0y2bF<|YR zE}n`&bKe}OB)a5nzAMZxU@)9C`L3|c`$#0K7!j$f3mP)O1fM^DZZU9Pt@hF1?FH0Q zUGCJZyqL4L;%B9r>x%;m#nS9f-j#VzDIg4-Y|-xbIJMJnJXR9qD;W>}lfXPPyMK71n$G$JQ*@)3&QDipm?5i-Bn!Mmvz zVi6qDuEEcPm0}Uo+!a55839q%ly6)&l>#cN11B0Q+JLVvEHe-5Jp#wgk)-)5L*~Ft zVC`e`aqDH@hlGQEQd`sK@9+Jvh{0a-pA~@P_*b{iZU~(2K$X_F6~0RD9tQidN3ThE zSBx_Sx8jh-+YiytC8NL<`m^({K4Q^K(EU99v>&qWXh_nUKPaK)ztbP*V#OuyB{`0G zpJe=ThBoz&-Jj;~2j56p&tCuhQj&{r!8LgdlM)KC%&ORuuI?%+0*_*dDDd?u*wFY8 z#%~O=6apL|iMqK2c-#)BjX-C)?9%r?aF-cGpGKRfRR^6 z>s;(0mkA@*?&)60A!Yn6MR+}59alrTLk6n@@?~><0Pazizh!d_S@C*jx?D|(1SZB) zCK?|owmyiY8S78J^IQ|2bsqy0Yj77WS)#rwa-GMuH??|#0QS>>LExjKLTqdCd}wys zNW}FcA_CJ9Oz5;25pef?*JHu8Zee-y#lt!gF3s;qfMb4rn4paWHEbeeP;tm0S2sSw zT01_xc!9pJIGNJSH$0k|e=4u9F4)JT<&-gc`t$q_7jbBb_wm*`5fR!rEOF>Ep2NjOUMAw`vqC^0CMUT z>bn6V(r&U)Suxg6w%;%eVbRMkw5AZ)xs6g+y?g&=bE+T9qwln#RAb#BYYK}~Vn~x{ zu9hbV^n4C8I>pVf@gn$jb3?z)wslb7jndQjsJz7mT~~I_&uy|ant4?VtpaiMJSW}5NEXe{2c0o= z@=u|SbSe>_9e$6TEZ19#;UW;ra=d6rRMPH?hoGe3AItk;@{t)OqBY0K2Z}beKcz@@ zig&62Vki3Tm?oS;fW@!09Ss3};+fA20ozXmSMW=oIKd-LHR|R^IeAmIR@?O4QMDYE z<-!0<;4L3zwhkJ59Mulj_F%l8FVLq=JLoM!MzAvdO?}c<&Hl zt4|Ly)q|R(j2-+yqa2WCBeI1@r%gyRqZ23aqy zj8oFvPduKv2q?iE$qd}C;IQ~+EtM6CQ{;ReP`;SKZCjH6gw|3_v&GlnPJCOj$F0ys zYZ7tCR`L0Bw+=%dj0yETQiy6w1>%HHAP5h4Sv@l0O^;8^hlqYjKT9Jj!l1;HdoCH=v$rb(p1Iu zIWE&>>Wy^U`k*6c$)IqZ)g54VW^jWn)tQw*LAK54_H1xhqX&&>}sh@KB&tLL^aatKO zOORhh%{hQ)mnr*H4a8q8R#RXc-?}!-2?Ryq^JXcui_>x^>VY>PJ+@{ub9l8f;zsG5 z0AXkbj^U9!@W1Xk>I^RT4tOiSbq=3#s74G9~GfIp; zlCph2Ld#zQ(A`iN;U%|vt*RurTkFoSf(H~{$*vmw$(n0~aS#8NX3{L9;s+;g*2$TC zH|!NOB_yoyC&fyUkTpQ&XjB3h(~Qe}`R&HTPHY)=qvXp2 z{rT0N8a9y5?!cu4l-LT83hg;|el*lmz7)8*U4}PL3fGv(w<0TWPVs@}fPMF{?Gvhb$iiwbA zn@v%3HZ>D0zBQW*mNv62gV4d&%p_%TpCPNWsX@M0$R-Kxo}KotIo$Q@7$CXpF=S0T zy=bNec1gP`#_tEep5R7;^P?Y3kGwxm>NE@3C9tkZKYu5M!}=1tsgv9&T+S?VhJ-&> zD&6E0w7hlu8Ep+tJ?H{cp_NZL>?HemrTOy+&(`qp=#Svu`Y|7;^qc)waL`g_CbfQh zwy5(cnFO%*{H3OhEcHsJ4?4Dh>h-%AkVobd)%SokHd5KcQQ0*(4U~!}gbTMVR?Zpc z3CG53dt?e9)$xlX*n2UcI1bocLRCWX@#EVs>3W)C0~GLILYv}1zTe7AMPUTQMC7`_ zxqe2X8y2p642Q9(>~f(e;pC{5nzn$w;`%}g>9L5WWlwX z2b0oid>8JVTs_musT6)*O^0){A72;#g1>S-nH)1snG#Q^Yu`0G*=S|;J zs@m&0%6?7DArmzzBM}-_{_6*W&nfwR3(##UGE79%KfVfS};Q;Tb4 zDO7gt*q17PevO2?L6p}3+Gb}CM5wr|Xok{oysa`TFU4k)l$#tg z<6(9f8&xIY!Fy!jv_*pGil5LIQ)F z^59(4T|~~~h|&*nOq4eT#>i@BE3&?CN(rEYJeX#eQ6q1cStRKiB0%9eq6vadXMFB+ z@Q*;Jqoh7*B!Q+Voy9?>5GZhX(F9hg|J-M@tZ~u%qg)-eW9s-?_F1l1rhTH=*MYC0 ztth*`*>!$3HOTZ8@p*(j-)BOs3~b}5{r+X}#54K~F=2t6kAu@p1&g9XMda+CqqZz@ z;9SLr)kNbms_00EM9tH7ed*v=PR}~7Um$a=!U|qP%Om%oFE+mBs^yg)#pNk9GNRK{ zOpr%xld76Ks`txDc2GRlkO~8DBnrJg7lc-T$tr%nfVoY|d@xsiAEEttK}7-3s?8~r zXHZLLa?qezlD-}6<0tVRfA3Njh$A`**?r^h!zh|tXJ!Ue)^Fs&cvxp6g!1;AzbYvY z+I;qbn730tI0;VEl`wfwPqf7n9+LRfh}?CelM&DN?UC!4H_*d$g6ksU(053Fl4$nV z*BsS`@U<9Pb&c;QCwTzbGgfIJs+z250x=SQa^Sv3e!oj*UANtEg1&&@&;6bA%NhI= zyDbH@i9vAt;w5L59kccagQ(p7>NlYoEgV)nJ8(H_yPVedAQmu z8*u`Nxg#yKrwu~4fhyOC>~#@`l`;}@61vimxmjJF<^W26m|@^R3ELp~>ji+PFS6ij z4ii|?gt=`XsOt9fM)7>b9@dv`KeXvz|F{OF4XIHCDJ3IIhO3=lEW%@HH=pSgr@jYz z+b($RCubD`GK__ky4s~6fzBU?(m@~4psg98?@z}G$V69w+U~TO!Jikftiyd6B_suS zhR?ae)-B>1-dVz-1^TO_N)oiP9;>Dr+a%v0597$L1fM;{c@(yxJ*RJwCavS!o#dRO1-)f zIvu`S;4>96=W9I$&fhUIe90IDGnHvd`h(i}O&urN(0BOdweUF$l*IQeB`E?#zFsM* z0EC_vaoiMvyMGA>UL+H{Ub~QmukTM7a`x3`z0U)D zqAByEuaV1xVT7U*0a>0TW;l<#2 zv)8nNj-K}?-FK*)(P^LyK)$=zmE{Zj5qtVYIW$fgx*y0jW;j zM@kJOFn)NWMj3c?61gVqi1iE;j+fvELVW2adpTnse>(^=fX6yfrN0MGOXmg|!QO)N z#b+HA6c&>`mKb(GobQ3p{$RQZucm{D!+~A94&5YBdQtV3XUV$M@YwOg%%5C(E&_GD zK2tIyztGkSV8lBLs5~y$g+vgWG?1Bgnvq?C7bm3hIdG6?xUFyklO4(PU`GAwwoCrxkh2Jb4H1DdDkI4^-Oqpg)&+t(L+nG7lrRV=r$VoY_u4wFjXh0kHgPhuRB>|wnU{OK*I{xA=T#={y*Rf!Cl~8*$;l_JRIwg6PMo}zYD6Z z4#hG~j<42oJN{=4N=A3A8^iwns{Q`;A+`?wXNOY?=<|9I$*BhkHN564QJ^tBq&u?i zqh5na2FQ$-I#7eK171^57>j&dG>LW8?u5rIv3vnjV6fcN7$Jf3QdUwDSrd-d+9S91 zSm{a%NnIB}EJ98gDPmJHQ862p9(#>+Ciz~I+G^Vo1$w+Ts?CJf&yZj(md&OW2b#*h zHpUQ?tcn>eH;7flUw>>I5$<~~6>uUC&keBf*HAZ23)2c=Kgl&5cOhh6)wF5O4FVy% z)a099Rv$`Qz(4Uwsm|TI~idzOpc++tXGE>L8;kq=Aq86$lbIoo2xFu3C6T zff?K`nln)&0KyYUG+26LB@gx?_Ok^K`lyrSTIb^r;Br9p6E z3rKRNXM8q!osIPbETu_$W`)dy*L*aWW1+$UcfW>4N_-^y#Yl)>b)~=h<~JUlk|dp1 zFe_1`&!8#VbHYJjlrz5 zl0Wn2A7y>n*7dQCfgwM~>4R%sc~oDB1Ip8W>Xw)+t#bV$guW=Xf=f0oMXjMC!2NDn z5bChuRl1iMFwtFbHytFVH2A7GeJB#a_r4HDt8J!~%oW+MK}~B3F(o^A^A=2J0IOy? zuhJox8x$}t$8ehKf58BCfo7f+0P05OO=#k+Tcr7+@N!~}xyXq9)F9B$q zsHFnSer-Sbb2IkAa)3N#6SabA3eh#v>G6ycqk#Yh)WH`Y7?naM{9B*2u0ywpUyq05 z+A$Jjva^A~uAHPfIF_rIK~@Z?=KHDr29l`gk^#~qeqqVS!Liko7)q61fxW;M7FuEH z(|1_Vd*%1b>;#=dL5dkFcHhkBxT%N2x@E&pE|V*&oUDIjv+tQtFg;k{p#Cs>sDk5# zK#NWfoRSjbP$UkBxR|-%Xc9EL`Kh@U@ucYw6kgsMLiaq~e}m^GyaxQI5O8&3J>gdL zR)_X|DpcQ_5hY^^(cQ=p=w_w= zR2V|HSbb#pO;us^H8BOZ3BO=jZTjZJU{Tky%ZU<$jlDI0BnrVp$OjG5u5AJ+DjkI6 z7x9&{3~zSDLmod4%O~6JPirIXuKh7Dh4edk>`qW)IFlt0cNC_W{v}`iCdg;OBD!VJ zcKX8_-8h)m=vKh9&336v=rwO{b*)&5Oc@h~A9sax$c5 zr{8SV%|av?6nRqNvfSxyUejeD%ta9VHnoJH|T|1j=jPm;O#(B^v zr6OTNTafuGPAJEa3YE9x51F;A zBkv4LI}ef1-ux_QU}QsuVGn(C9AKIg7le&wRm%SXOC2xiJ z4Hwck>f)b%ni1$noFQuLl3b6DMtK24o7Aw=kznC0sgQc&Z|B<@T$5g~1bvl;#f_rp zdlwlSB#_F|xw~=%CS7(0T}X7PN33O9lBKPaVOBA&hY<$SLl}9rcKOcxa%pVk;dKAG z@AZPQ@1L`=j+;a=Aj%&I*Kx#*jZ^CZ1`GRs<{BIQ4jI%t5jm^vc=$~HV`aZ#Aqv(A z7X!WouX!c*UfvSUX^$9tdeRLcA3;&F0DqhKFVX~^(8-V~=$vUcuO;(xogM7lEuiAS z=pq0K91VHZjH)62_c?(I%k{h`?E<|3N^be`cl`g;!WuLBf6ZAVJ%H7{(#zXX7eY<& z`(L{K2Xpzyc&@nb#BTmycL6!k3aGkuHdKhC{b$E3>_78ke!+jud>nwHZvKC7{A>5G znJA1U02_|x4|;_{P_~joZ*R1>ozH=&H;{fPZsf@$s2B&!zwiE~R-&5rLp6xP0{-7o zqW!&(!dIf&L4hxGU>xzF@(102F8Ht8H6qAkm5e8-q5SRRe+|YEH^zrz;QW6^HUD`% zD*4x%ldRQS$&u}h(E8+J=1kbqcBu`??lSgDu6mZSMeJ!H0EHz%nI{IUVv>nR+(d%U zCM~6+RCqloZKt<98R z_Z{s6sD52hwxhMMS!!uaL69*`l-wc&89D%ma2M?9O#jyEX;uM$J%M$}Zt%fAe{z-A zn;SZeDJN7eq8v!EyIm?0$J-)70HLG050QQOXEjRK`QyMioP){(FbnG z+T}x#kvbYG)=p|5=3}hg{r1YV9mutxis2J(3-M9GTrvq^9lsKY-aCI!akDYED$^CB z?vZNw1@F)4by}+|1kJud9ZNvEzR%o~QC-01crg)1j4mAqmz05DkhIe@Jc zZ&mXMA9{7sE)KN&t~Ysb9B#|J@`IQ1XcTHuJ55-SCImd(O$2dk?kfA^5-$MNjHml4 zTx=Y3XSijKB0-U2y-orNq^%9fPN|^U-2FLU3#Iv0eCY9xDqsDVdLo|!L#K2uL+C_L zR|=f%rki5gcAJwpo>@qYtw*X$S#gUVi@P%qh|{ zQwsN4tesl{ta4Bc#RlcmxRl9g*PlMod9JOln@j}H4ZT^Pbg1G@3aoz97jd9LUzX~*|JPz`X;8I3#%8eDQ@cIY&l^Qe85b$7zot%~ zJ`qUkC*(sOqo1~!Cu~#3axKNO5db{7+9JYREqgcRGP?Js+FwPa>z`-mkXGCa~DtY8Y{0Be8>xts`MwHZKi5=*u>Q1}I4_-+jCEl-jf6r8DyxM4oR^x%g602GhIRWNq%pB$;I8T6sbGmHbh8@tAyqtV$Eso6BsR`BV&E+7C~g zgw8ygUJ@?`)f+}g&?y76$qy5Iu){B`xXSC*ZnZcE&6t`L@~jOug(8N{4pc1QOlG+R zMsRmC#pdblro8+9X}1J87xf2j)OtStX$pbbBtxa3#DR2(Rf3M3?Vmk#>RWsjXay<+ zDZ*&cC~la(M8-g@7ZM2^@OrjOY4PK z-u+sPn?RQLRrZ8CE_u)Lv*0RSz0?QWfGZc$2Cv-COPsGWq_MmLBaPy~uZ(1&Zcj@G z+Y%JvG%V18AW<8~SWv@ThM@|kl8QAwHrU6n=c&1G?b+UGDhb-h>sB-$GwG=-^0sk$ z634&8uUgUsBt(u^xh3n>9%Aw+^=nAc2{<^RnlRJpXH=wgcJT*Eb?S+><$+YW2`TNZNyWX-QIqzD}_q1w|xrWv{O5vJ| z2!$hG6-Z&Kf8S|$_p!@ITJn4W~dJ7+3?2}=|g8*HMA2qm9CXT1Jy9S?#HDKd!Sr1dN3R4hcgVEb@rMf( zF78?RdIXo>VU*G6&@4ozA|)emeyvxMhh7!|<(&u%rYe-!d+i?WIuCQSidmbrQq?R1 zsGLqA>&HXjRG0;1wfgIgK9U(xqIQz$hg^M7=jI_#l66`xu+zX>$E#yo!R{|jFtjXY zS~`*^#h7RG1PPPdP2jV6xpd-U7)Jo?0hPeB#$T^9hpLtPTeBeqmCH5A$7n40!s?Kk z2#=*BwH;{cwGgFy&w~EssuqQVDCPY&>HLAv77VXZgOCKfU^}!;g3X`1xf2$cj$ZTw ziPq*j;8TdSufm2)BwX=l*cTZ)Qg&66(m?2hGai#Xu0BN}00#&kvw?tAa~UI?%0DIx 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/debian-software-selection.png b/docs/images/debian-software-selection.png similarity index 100% rename from docs/debian-software-selection.png rename to docs/images/debian-software-selection.png diff --git a/docs/host-only-network.png b/docs/images/host-only-network.png similarity index 100% rename from docs/host-only-network.png rename to docs/images/host-only-network.png diff --git a/docs/install-openwisp2.png b/docs/images/install-openwisp2.png similarity index 100% rename from docs/install-openwisp2.png rename to docs/images/install-openwisp2.png diff --git a/docs/openwisp2-modules-diagram.png b/docs/images/openwisp2-modules-diagram.png similarity index 100% rename from docs/openwisp2-modules-diagram.png rename to docs/images/openwisp2-modules-diagram.png diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 00000000..d02f960b --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,51 @@ +Ansible OpenWISP +================ + +.. seealso:: + + **Source code**: `github.com/openwisp/ansible-openwisp2 + `_. + +This ansible role allows deploying the OpenWISP Server Application. + +**Recommended minimum ansible core version**: 2.13. + +Tested on **Debian (Bookworm/Bullseye)**, **Ubuntu (24/22/20 LTS)**. + +The following diagram illustrates the role of the Ansible OpenWISP role +within the OpenWISP architecture. + +.. figure:: images/architecture-v2-ansible-openwisp.png + :target: ../_images/architecture-v2-ansible-openwisp.png + :align: center + :alt: OpenWISP Architecture: Ansible OpenWISP role + + **OpenWISP Architecture: highlighted Ansible OpenWISP role** + +.. important:: + + For an enhanced viewing experience, open the image above in a new + browser tab. + + Refer to :doc:`/general/architecture` for more information. + +.. toctree:: + :caption: Ansible OpenWISP Usage Docs + :maxdepth: 1 + + ./user/system-requirements.rst + ./user/quickstart.rst + ./user/certbot-ssl.rst + ./user/enabling-modules.rst + ./user/deploying-wpa-eap-ttls-pap.rst + ./user/deploying-custom-static-content.rst + ./user/configuring-cors-headers.rst + ./user/installing-on-vm.rst + ./user/troubleshooting.rst + ./user/role-variables.rst + +.. toctree:: + :caption: Ansible OpenWISP Developer Docs + :maxdepth: 1 + + ./developer/installation.rst diff --git a/docs/partials/developer-docs.rst b/docs/partials/developer-docs.rst new file mode 100644 index 00000000..76dede26 --- /dev/null +++ b/docs/partials/developer-docs.rst @@ -0,0 +1,12 @@ +.. note:: + + This documentation page is aimed at developers who want to customize, + change or extend the code of Ansible OpenWISP2 in order to modify its + behavior (eg: for personal or commercial purposes or to fix a bug, + implement a new feature or contribute to the project in general). + + If you aren't a developer and you are looking for information on how + to use OpenWISP, please refer to: + + - :doc:`General OpenWISP Quickstart ` + - :doc:`Ansible OpenWISP2 User Docs ` diff --git a/docs/user/certbot-ssl.rst b/docs/user/certbot-ssl.rst new file mode 100644 index 00000000..42600a12 --- /dev/null +++ b/docs/user/certbot-ssl.rst @@ -0,0 +1,65 @@ +Using Let's Encrypt SSL Certificate +=================================== + +This section explains how to **automatically install and renew a valid SSL +certificate** signed by `Let's Encrypt `__. + +The first thing you have to do is to setup a valid domain for your +OpenWISP instance, this means your inventory file (hosts) should look like +the following: + +.. code-block:: text + + [openwisp2] + openwisp2.yourdomain.com + +You must be able to add a DNS record for ``openwisp2.yourdomain.com``, you +cannot use an ip address in place of ``openwisp2.yourdomain.com``. + +Once your domain is set up and the DNS record is propagated, proceed by +installing the ansible role `geerlingguy.certbot +`__: + +.. code-block:: shell + + ansible-galaxy install geerlingguy.certbot + +Then proceed to edit your ``playbook.yml`` so that it will look similar to +the following example: + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - geerlingguy.certbot + - openwisp.openwisp2 + vars: + # SSL certificates + openwisp2_ssl_cert: "/etc/letsencrypt/live/{{ inventory_hostname }}/fullchain.pem" + openwisp2_ssl_key: "/etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem" + + # certbot configuration + certbot_auto_renew_minute: "20" + certbot_auto_renew_hour: "5" + certbot_create_if_missing: true + certbot_auto_renew_user: "" + certbot_certs: + - email: "" + domains: + - "{{ inventory_hostname }}" + pre_tasks: + - name: Update APT package cache + apt: + update_cache: true + changed_when: false + retries: 5 + delay: 10 + register: result + until: result is success + +Read the `documentation of geerlingguy.certbot +`__ to learn +more about configuration of certbot role. + +Once you have set up all the variables correctly, run the playbook again. diff --git a/docs/user/configuring-cors-headers.rst b/docs/user/configuring-cors-headers.rst new file mode 100644 index 00000000..7bf84128 --- /dev/null +++ b/docs/user/configuring-cors-headers.rst @@ -0,0 +1,73 @@ +Configuring CORS Headers +======================== + +While integrating OpenWISP with external services, you can run into issues +related to `CORS (Cross-Origin Resource Sharing) +`__. This role +allows users to configure the CORS headers with the help of +`django-cors-headers +`__ package. Here's a +short summary of how to do this: + +**Step 1**: :ref:`Install ansible ` + +**Step 2**: :ref:`Install this role ` + +**Step 3**: :ref:`Create inventory file ` + +**Step 4**: Create a playbook file with following contents: + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2 + vars: + # Cross-Origin Resource Sharing (CORS) settings + openwisp2_django_cors: + enabled: true + allowed_origins_list: + - https://frontend.openwisp.org + - https://logs.openwisp.org + +**Note:** to learn about the supported fields of the +``openwisp2_django_cors`` variable, look for the word +“openwisp2_django_cors” in the :doc:`role-variables` section of this +document. + +**Step 5**: :ref:`Run the playbook ` + +When the playbook is done running, if you got no errors you can login at +https://openwisp2.mydomain.com/admin, with the following credentials: + +.. code-block:: text + + username: admin + password: admin + +The ansible-openwisp2 only provides abstraction (variables) for handful of +settings available in `django-cors-headers +`__ module. Use the +``openwisp2_extra_django_settings_instructions`` or +``openwisp2_extra_django_settings`` variable to configure additional +setting of ``django-cors-headers`` as shown in the following example: + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2 + vars: + openwisp2_django_cors: + enabled: true + allowed_origins_list: + - https://frontend.openwisp.org + - https://logs.openwisp.org + replace_https_referer: true + # Configuring additional settings for django-cors-headers + openwisp2_extra_django_settings_instructions: + - | + CORS_ALLOW_CREDENTIALS = True + CORS_ALLOW_ALL_ORIGINS = True diff --git a/docs/user/deploying-custom-static-content.rst b/docs/user/deploying-custom-static-content.rst new file mode 100644 index 00000000..e5844828 --- /dev/null +++ b/docs/user/deploying-custom-static-content.rst @@ -0,0 +1,14 @@ +Deploying Custom Static Content +=============================== + +For deploying custom static content (HTML files, etc.) add all the static +content in ``files/ow2_static`` directory. The files inside +``files/ow2_static`` will be uploaded to a directory named +``static_custom`` in ``openwisp2_path``. + +This is helpful for :ref:`customizing OpenWISP's theme +`. + +E.g., if you added a custom CSS file in +``files/ow2_static/css/custom.css``, the file location to use in +:ref:`openwisp_admin_theme_links` setting will be ``css/custom.css``. diff --git a/docs/user/deploying-wpa-eap-ttls-pap.rst b/docs/user/deploying-wpa-eap-ttls-pap.rst new file mode 100644 index 00000000..ea3b548d --- /dev/null +++ b/docs/user/deploying-wpa-eap-ttls-pap.rst @@ -0,0 +1,175 @@ +Configuring FreeRADIUS for WPA Enterprise (EAP-TTLS-PAP) +======================================================== + +You can use OpenWISP RADIUS for setting up WPA Enterprise (EAP-TTLS-PAP) +authentication. This allows to authenticate on WiFi networks using Django +user credentials. Prior to proceeding, ensure you've reviewed the tutorial +on :doc:`/tutorials/wpa-enterprise-eap-ttls-pap`. This documentation +section complements the tutorial and focuses solely on demonstrating the +ansible role's capabilities to configure FreeRADIUS. + +.. important:: + + The ansible role supports OpenWISP's multi-tenancy by creating + individual FreeRADIUS sites for each organization. You must include + configuration details for **each organization** that will use WPA + Enterprise. + +Here's an example playbook which enables OpenWISP RADIUS module, installs +FreeRADIUS, and configures it for WPA Enterprise (EAP-TTLS-PAP): + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2 + vars: + openwisp2_radius: true + openwisp2_freeradius_install: true + # Define a list of dictionaries detailing each organization's + # name, UUID, RADIUS token, and ports for authentication, + # accounting, and the inner tunnel. These details will be used + # to create FreeRADIUS sites tailored for WPA Enterprise + # (EAP-TTLS-PAP) authentication per organization. + freeradius_eap_orgs: + # A reference name for the organization, + # used in FreeRADIUS configurations. + # Don't use spaces or special characters. + - name: openwisp + # UUID of the organization. + # You can retrieve this from the organization admin + # in the OpenWISP web interface. + uuid: 00000000-0000-0000-0000-000000000000 + # Radius token of the organization. + # You can retrieve this from the organization admin + # in the OpenWISP web interface. + radius_token: secret-radius-token + # Port used by the authentication service for + # this FreeRADIUS site + auth_port: 1822 + # Port used by the accounting service for this FreeRADIUS site + acct_port: 1823 + # Port used by the authentication service of inner tunnel + # for this FreeRADIUS site + inner_tunnel_auth_port: 18230 + # If you want to use a custom certificate for FreeRADIUS + # EAP module, you can specify the path to the CA, server + # certificate, and private key, and DH key as follows. + # Ensure that these files can be read by the "freerad" user. + cert: /etc/freeradius/certs/cert.pem + private_key: /etc/freeradius/certs/key.pem + ca: /etc/freeradius/certs/ca.crt + dh: /etc/freeradius/certs/dh + tls_config_extra: | + private_key_password = whatever + ecdh_curve = "prime256v1" + # You can add as many organizations as you want + - name: demo + uuid: 00000000-0000-0000-0000-000000000001 + radius_secret: demo-radius-token + auth_port: 1832 + acct_port: 1833 + inner_tunnel_auth_port: 18330 + # If you omit the certificate fields, + # the FreeRADIUS site will use the default certificates + # located in /etc/freeradius/certs. + +In the example above, custom ports 1822, 1823, and 18230 are utilized for +FreeRADIUS authentication, accounting, and inner tunnel authentication, +respectively. These custom ports are specified because the Ansible role +creates a common FreeRADIUS site for all organizations, which also +supports captive portal functionality. This common site is configured to +listen on the default FreeRADIUS ports 1812, 1813, and 18120. Therefore, +when configuring WPA Enterprise authentication for each organization, +unique ports must be provided to ensure proper isolation and +functionality. + +Using Let's Encrypt Certificate for WPA Enterprise (EAP-TTLS-PAP) +----------------------------------------------------------------- + +In this section, we demonstrate how to utilize Let's Encrypt certificates +for WPA Enterprise (EAP-TTLS-PAP) authentication. Similar to the +:doc:`./certbot-ssl`, we use `geerlingguy.certbot +`_ role to automatically +install and renew a valid SSL certificate. + +The following example playbook achieves the following goals: + +- Provision a separate Let's Encrypt certificate for the + `freeradius.yourdomain.com` hostname. This certificate will be utilized + by the FreeRADIUS site for WPA Enterprise authentication. +- Create a renewal hook to set permissions on the generated certificate so + the FreeRADIUS server can read it. + +.. note:: + + You can also use the same SSL certificate for both Nginx and + FreeRADIUS, but it's crucial to understand the security implications. + Please exercise caution and refer to the example playbook comments for + guidance. + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - geerlingguy.certbot + - openwisp.openwisp2 + vars: + # certbot configuration + certbot_auto_renew_minute: "20" + certbot_auto_renew_hour: "5" + certbot_create_if_missing: true + certbot_auto_renew_user: "" + certbot_certs: + - email: "" + domains: + - "{{ inventory_hostname }}" + # If you choose to re-use the same certificate for both services, + # you can omit the following item in your playbook. + - email: "" + domains: + - "freeradius.yourdomain.com" + # Configuration to use Let's Encrypt certificate for OpenWISP server (Nnginx) + openwisp2_ssl_cert: "/etc/letsencrypt/live/{{ inventory_hostname }}/fullchain.pem" + openwisp2_ssl_key: "/etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem" + # Configuration for openwisp-radius + openwisp2_radius: true + openwisp2_freeradius_install: true + freeradius_eap_orgs: + - name: demo + uuid: 00000000-0000-0000-0000-000000000001 + radius_secret: demo-radius-token + auth_port: 1832 + acct_port: 1833 + inner_tunnel_auth_port: 18330 + # Update the cert_file and private_key paths to point to the + # Let's Encrypt certificate. + cert: /etc/letsencrypt/live/freeradius.yourdomain.com/fullchain.pem + private_key: /etc/letsencrypt/live/freeradius.yourdomain.com/privkey.pem + # If you choose to re-use the same certificate for both services, + # your configuration would look like this + # cert: /etc/letsencrypt/live/{{ inventory_hostname }}/fullchain.pem + # private_key: /etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem + tasks: + # Tasks to ensure the Let's Encrypt certificate can be read by the FreeRADIUS server. + # If you are using the same certificate for both services, you need to + # replace "freeradius.yourdomain.com" with "{{ inventory_hostname }}" + # in the following task. + - name: "Create a renewal hook for setting permissions on /etc/letsencrypt/live/freeradius.yourdomain.com" + copy: + content: | + #!/bin/bash + chown -R root:freerad /etc/letsencrypt/live/ /etc/letsencrypt/archive/ + chmod 0750 /etc/letsencrypt/live/ /etc/letsencrypt/archive/ + chmod -R 0640 /etc/letsencrypt/archive/freeradius.yourdomain.com/ + chmod 0750 /etc/letsencrypt/archive/freeradius.yourdomain.com/ + dest: /etc/letsencrypt/renewal-hooks/post/chown_freerad + owner: root + group: root + mode: '0700' + register: chown_freerad_result + - name: Change the ownership of the certificate files + when: chown_freerad_result.changed + command: /etc/letsencrypt/renewal-hooks/post/chown_freerad diff --git a/docs/user/enabling-modules.rst b/docs/user/enabling-modules.rst new file mode 100644 index 00000000..dd2cf725 --- /dev/null +++ b/docs/user/enabling-modules.rst @@ -0,0 +1,164 @@ +Enabling OpenWISP Modules +========================= + +.. contents:: **Table of Contents**: + :depth: 3 + :local: + +Enabling the Monitoring Module +------------------------------ + +The :doc:`Monitoring module ` is enabled by default, it +can be disabled by setting ``openwisp2_monitoring`` to ``false``. + +Enabling the Firmware Upgrader Module +------------------------------------- + +It is encouraged that you read the :doc:`quick-start guide of +openwisp-firmware-upgrader ` before +going ahead. + +To enable the :doc:`Firmware Upgrader ` module +you need to set ``openwisp2_firmware_upgrader`` to ``true`` in your +``playbook.yml`` file. Here's a short summary of how to do this: + +**Step 1**: :ref:`Install ansible ` + +**Step 2**: :ref:`Install this role ` + +**Step 3**: :ref:`Create inventory file ` + +**Step 4**: Create a playbook file with following contents: + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2 + vars: + openwisp2_firmware_upgrader: true + +**Step 5**: :ref:`Run the playbook ` + +When the playbook is done running, if you got no errors you can login at +https://openwisp2.mydomain.com/admin with the following credentials: + +.. code-block:: text + + username: admin + password: admin + +You can configure :doc:`openwisp-firmware-upgrader specific settings +` using the +``openwisp2_extra_django_settings`` or +``openwisp2_extra_django_settings_instructions``. + +E.g: + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2 + vars: + openwisp2_firmware_upgrader: true + openwisp2_extra_django_settings_instructions: + - | + OPENWISP_CUSTOM_OPENWRT_IMAGES = ( + ('my-custom-image-squashfs-sysupgrade.bin', { + 'label': 'My Custom Image', + 'boards': ('MyCustomImage',) + }), + ) + +Refer the :doc:`role-variables` section of the documentation for a +complete list of available role variables. + +Enabling the Network Topology Module +------------------------------------ + +To enable the :doc:`Network Topology module ` you +need to set ``openwisp2_network_topology`` to ``true`` in your +``playbook.yml`` file. Here's a short summary of how to do this: + +**Step 1**: :ref:`Install ansible ` + +**Step 2**: :ref:`Install this role ` + +**Step 3**: :ref:`Create inventory file ` + +**Step 4**: Create a playbook file with following contents: + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2 + vars: + openwisp2_network_topology: true + +**Step 5**: :ref:`Run the playbook ` + +When the playbook is done running, if you got no errors you can login at +https://openwisp2.mydomain.com/admin with the following credentials: + +.. code-block:: text + + username: admin + password: admin + +.. _ansible_enabling_radius_module: + +Enabling the RADIUS Module +-------------------------- + +To enable the :doc:`RADIUS module ` you need to set +``openwisp2_radius`` to ``true`` in your ``playbook.yml`` file. Here's a +short summary of how to do this: + +**Step 1**: :ref:`Install ansible ` + +**Step 2**: :ref:`Install this role ` + +**Step 3**: :ref:`Create inventory file ` + +**Step 4**: Create a playbook file with following contents: + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2 + vars: + openwisp2_radius: true + openwisp2_freeradius_install: true + # set to false when you don't want to register openwisp-radius + # API endpoints. + openwisp2_radius_urls: true + +.. note:: + + ``openwisp2_freeradius_install`` option provides a basic configuration + of freeradius for OpenIWSP, it sets up the `radius user token + mechanism + `__ + if you want to use another mechanism or manage your freeradius + separately, please disable this option by setting it to ``false``. + +**Step 5**: :ref:`Run the playbook ` + +When the playbook is done running, if you got no errors you can login at: + +.. code-block:: + + https://openwisp2.mydomain.com/admin + username: admin + password: admin + +**Note:** for more information regarding radius configuration options, +look for the word “radius” in the :doc:`role-variables` section of this +document. diff --git a/docs/user/installing-on-vm.rst b/docs/user/installing-on-vm.rst new file mode 100644 index 00000000..a43bd724 --- /dev/null +++ b/docs/user/installing-on-vm.rst @@ -0,0 +1,143 @@ +Install OpenWISP for Testing in a VirtualBox VM +=============================================== + +If you want to try out OpenWISP in your own development environment, the +safest way is to use a VirtualBox Virtual Machine (from here on VM). + +.. contents:: **Table of Contents**: + :depth: 2 + :local: + +Using Vagrant +------------- + +**Since August 2018 there's a new fast and easy way to install OpenWISP +for testing purposes** leveraging `Vagrant `__, +a popular open source tool for building and maintaining portable virtual +software development environments. + +To use this new way, clone the repository `vagrant-openwisp2 +`__, it contains the +instructions (in the ``README.md``) and the vagrant configuration to +perform the automatic installation. + +Alternatively, you can read on to learn how to install *VirtualBox* and +run *ansible-openwisp2* manually, this is useful if you need to test +advanced customizations of *OpenWISP*. + +Installing Debian 11 on VirtualBox +---------------------------------- + +Install `VirtualBox `__ and create a new Virtual +Machine running Debian 11. A step-by-step guide is available `here +`__, +however we need to change a few things to get ansible working. + +VM Configuration +---------------- + +Proceed with the installation as shown in the guide linked above, and come +back here when you see this screen: + +.. figure:: ../images/debian-software-selection.png + :target: ../../_images/debian-software-selection.png + :alt: Screenshot of the Software Selection screen + +We're only running this as a server, so you can uncheck ``Debian desktop +environment``. Make sure ``SSH server`` and ``standard system utilities`` +are checked. + +Next, add a `Host-only Network Adapter +`__ and +assign an IP address to the VM. + +- On the Main VirtualBox page, Go to ``File > Host Network Manager`` +- Click the + icon to create a new adapter +- Set the IPv4 address to ``192.168.56.1`` and the IPv4 Network Mask to + ``255.255.255.0``. You may need to select ``Configure Adapter Manually`` + to do this. The IPv6 settings can be ignored + + .. image:: ../images/host-only-network.png + :target: ../../_images/host-only-network.png + :alt: Screenshot of the Host-only network configuration screen + +- Shut off your VM +- In your VM settings, in the Network section, click Adapter 2 and Enable + this Adapter +- Select Host-only adapter and the name of the adapter you created +- Boot up your VM, run ``su``, and type in your superuser password +- Run ``ls /sys/class/net`` and take note of the output +- Run ``nano /etc/network/interfaces`` and add the following at the end of + the file: + + .. code-block:: text + + auto enp0s8 + iface enp0s8 inet static + address 192.168.56.2 + netmask 255.255.255.0 + network 192.168.56.0 + broadcast 192.168.56.255 + + Replace ``enp0s8`` with the network interface not present in the file + but is shown when running ``ls /sys/class/net`` + +- Save the file with CtrlO then Enter, and exit with CtrlX +- Restart the machine by running ``reboot`` + +Make sure you can access your VM via ssh: + +.. code-block:: shell + + ssh 192.168.56.2 + +Back to your local machine +-------------------------- + +Proceed with these steps in your **local machine**, not the VM. + +**Step 1**: :ref:`Install ansible ` + +**Step 2**: :ref:`Install the OpenWISP2 role for Ansible +` + +**Step 3**: :ref:`Set up a working directory +` + +**Step 4**: Create the ``hosts`` file + +Create an ansible inventory file named ``hosts`` **in your working +directory** (i.e. not in the VM) with the following contents: + +.. code-block:: + + [openwisp2] + 192.168.56.2 + +**Step 5**: Create the ansible playbook + +In the same directory where you created the ``host`` file, create a file +named ``playbook.yml`` which contains the following: + +.. code-block:: yaml + + - hosts: openwisp2 + roles: + - openwisp.openwisp2 + # the following line is needed only when an IP address is used as the inventory hostname + vars: + postfix_myhostname: localhost + +**Step 6**: Run the playbook + +.. code-block:: shell + + ansible-playbook -i hosts playbook.yml -b -k -K --become-method=su + +When the playbook ran successfully, you can log in at +``https://192.168.56.2/admin`` with the following credentials: + +.. code-block:: text + + username: admin + password: admin diff --git a/docs/user/quickstart.rst b/docs/user/quickstart.rst new file mode 100644 index 00000000..e73932a0 --- /dev/null +++ b/docs/user/quickstart.rst @@ -0,0 +1,333 @@ +Deploying OpenWISP Using Ansible +================================ + +.. contents:: **Table of Contents**: + :depth: 3 + :local: + +Introduction & Prerequisites +---------------------------- + +.. note:: + + If you want to use the latest features of OpenWISP, refer to + :ref:`ansible_deploying_development_version`. + +.. raw:: html + +

+ +

+ +If you don't know how to use ansible, don't panic, this procedure will +guide you towards a fully working basic OpenWISP installation. + +If you already know how to use ansible, you can skip this tutorial. + +First of all you need to understand two key concepts: + +- for **“production server”** we mean a server (**not a laptop or a + desktop computer!**) with public IpV4 / IPv6 which is used to host + OpenWISP +- for **“local machine”** we mean the host from which you launch ansible, + eg: your own laptop + +Ansible is a configuration management tool that works by entering +production servers via SSH, **so you need to install it and configure it +on the machine where you launch the deployment** and this machine must be +able to SSH into the production server. + +Ansible will be run on your local machine and from there it will connect +to the production server to install OpenWISP. + +.. note:: + + It is recommended to use this procedure on clean virtual machines or + linux containers. + + If you are trying to install OpenWISP on your laptop or desktop pc + just for testing purposes, please read :doc:`Install OpenWISP for + testing in a VirtualBox VM <./installing-on-vm>`. + +.. _ansible_install: + +Install Ansible +--------------- + +Install ansible (minimum recommended version 2.13) **on your local +machine** (not the production server!) if you haven't done already. + +We suggest following the `ansible installation guide +`__. +to install ansible. It is recommended to install ansible through a virtual +environment to avoid dependency issues. + +Please ensure that you have the correct version of Jinja installed in your +Python environment: ``pip install Jinja2>=2.11`` + +.. _ansible_install_role: + +Install This Role +----------------- + +For the sake of simplicity, the easiest thing is to install this role **on +your local machine** via ``ansible-galaxy`` (which was installed when +installing ansible), therefore run: + +.. code-block:: shell + + ansible-galaxy install openwisp.openwisp2 + +Ensure that you have the `community.general +`_ +and `ansible.posix +`_ +collections installed and up to date: + +.. code-block:: shell + + ansible-galaxy collection install "community.general:>=3.6.0" + ansible-galaxy collection install "ansible.posix" + +.. _ansible_choose_working_directory: + +Choose a Working Directory +-------------------------- + +Choose a working directory **on your local machine** where to put the +configuration of OpenWISP. + +This will be useful when you will need to upgrade OpenWISP. + +Eg: + +.. code-block:: shell + + mkdir ~/openwisp2-ansible-playbook + cd ~/openwisp2-ansible-playbook + +.. _ansible_create_inventory_file: + +Create Inventory File +--------------------- + +The inventory file is where group of servers are defined. In our simple +case we will define just one group in which we will put just one server. + +Create a new file called ``hosts`` in the working directory **on your +local machine** (the directory just created in the previous step), with +the following contents: + +.. code-block:: text + + [openwisp2] + openwisp2.mydomain.com + +Substitute ``openwisp2.mydomain.com`` with your **production server**'s +hostname - **DO NOT REPLACE ``openwisp2.mydomain.com`` WITH AN IP +ADDRESS**, otherwise email sending through postfix will break, causing 500 +internal server errors on some operations. + +.. _ansible_create_playbook_file: + +Create Playbook File +-------------------- + +Create a new playbook file ``playbook.yml`` **on your local machine** with +the following contents: + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2 + vars: + openwisp2_default_from_email: "openwisp2@openwisp2.mydomain.com" + +The line ``become: "{{ become | default('yes') }}"`` means ansible will +use the ``sudo`` program to run each command. You may remove this line if +you don't need it (eg: if you are ``root`` user on the production server). + +You may replace ``openwisp2`` on the ``hosts`` field with your production +server's hostname if you desire. + +Substitute ``openwisp2@openwisp2.mydomain.com`` with what you deem most +appropriate as default sender for emails sent by OpenWISP 2. + +.. _ansible_run_playbook: + +Run the Playbook +---------------- + +Now is time to **deploy OpenWISP to the production server**. + +Run the playbook **from your local machine** with: + +.. code-block:: shell + + ansible-playbook -i hosts playbook.yml -u -k --become -K + +Substitute ```` with your **production server**'s username. + +The ``-k`` argument will need the ``sshpass`` program. + +You can remove ``-k``, ``--become`` and ``-K`` if your public SSH key is +installed on the server. + +.. tip:: + + - If you have an error like ``Authentication or permission failure`` + then try to use *root* user ``ansible-playbook -i hosts playbook.yml + -u root -k`` + - If you have an error about adding the host's fingerprint to the + ``known_hosts`` file, you can simply connect to the host via SSH and + answer yes when prompted; then you can run ``ansible-playbook`` + again. + +When the playbook is done running, if you got no errors you can login at +``https://openwisp2.mydomain.com/admin`` with the following credentials: + +.. code-block:: text + + username: admin + password: admin + +Substitute ``openwisp2.mydomain.com`` with your production server's +hostname. + +Now proceed with the following steps: + +1. change the password (and the username if you like) of the superuser as + soon as possible +2. update the ``name`` field of the default ``Site`` object to accurately + display site name in email notifications +3. edit the information of the default organization +4. in the default organization you just updated, note down the + automatically generated *shared secret* option, you will need it to use + the :doc:`auto-registration feature of openwisp-config + ` +5. this Ansible role creates a default template to update + ``authorized_keys`` on networking devices using the default access + credentials. The role will either use an existing SSH key pair or + create a new one if no SSH key pair exists on the host machine. + +Now you are ready to start configuring your network! **If you need help** +you can ask questions on one of the official `OpenWISP Support Channels +`__. + +Upgrading OpeNWISP +------------------ + +.. important:: + + It is strongly recommended to back up your current instance before + upgrading. + +Update this ansible-role via ``ansible-galaxy``: + +.. code-block:: shell + + ansible-galaxy install --force openwisp.openwisp2 + +Run ``ansible-playbook`` again **from your local machine**: + +.. code-block:: shell + + ansible-playbook -i hosts playbook.yml + +You may also run the playbook automatically periodically or when a new +release of OpenWISP2, for example, by setting up a continuous integration +system. + +.. _ansible_deploying_development_version: + +Deploying the Development Version of OpenWISP +--------------------------------------------- + +The following steps will help you set up and install the development +version of OpenWISP which is not released yet, but ships new features and +improvements. + +Create a directory for organizing your playbook, roles and collections. In +this example, ``openwisp-dev`` is used. Create ``roles`` and +``collections`` directories in ``~/openwisp-dev``. + +.. code-block:: + + mkdir -p ~/openwisp-dev/roles + mkdir -p ~/openwisp-dev/collections + +Change directory to ``~/openwisp-dev/`` in terminal and create +configuration and requirement files for Ansible. + +.. code-block:: + + cd ~/openwisp-dev/ + touch ansible.cfg + touch requirements.yml + +Setup ``roles_path`` and ``collections_paths`` variables in +``ansible.cfg`` as follows: + +.. code-block:: + + [defaults] + roles_path=~/openwisp-dev/roles + collections_paths=~/openwisp-dev/collections + +Ensure your ``requirements.yml`` contains following content: + +.. code-block:: yaml + + --- + roles: + - src: https://github.com/openwisp/ansible-openwisp2.git + version: master + name: openwisp.openwisp2-dev + collections: + - name: community.general + version: ">=3.6.0" + +Install requirements from the ``requirements.yml`` as follows + +.. code-block:: + + ansible-galaxy install -r requirements.yml + +Now, create hosts file and playbook.yml: + +.. code-block:: + + touch hosts + touch playbook.yml + +Follow instructions in :ref:`ansible_create_inventory_file` section to +configure ``hosts`` file. + +You can reference the example playbook below (tested on Debian 11) for +installing a fully-featured version of OpenWISP. + +.. code-block:: yaml + + - hosts: openwisp2 + become: "{{ become | default('yes') }}" + roles: + - openwisp.openwisp2-dev + vars: + openwisp2_network_topology: true + openwisp2_firmware_upgrader: true + openwisp2_radius: true + openwisp2_monitoring: true # monitoring is enabled by default + +Read :doc:`role-variables` section to learn about available configuration +variables. + +Follow instructions in :ref:`ansible_run_playbook` section to run above +playbook. diff --git a/docs/user/role-variables.rst b/docs/user/role-variables.rst new file mode 100644 index 00000000..4a4434df --- /dev/null +++ b/docs/user/role-variables.rst @@ -0,0 +1,469 @@ +Role Variables +============== + +This role has many variables values that can be changed to best suit your +needs. + +Below are listed all the variables you can customize (you may also want to +take a look at `the default values of these variables +`__). + +.. code-block:: yaml + + - hosts: yourhost + roles: + # you can add other roles here + - openwisp.openwisp2 + vars: + # Enable the modules you want to use + openwisp2_network_topology: false + openwisp2_firmware_upgrader: false + openwisp2_monitoring: true + # you may replace the values of these variables with any value or URL + # supported by pip (the python package installer) + # use these to install forks, branches or development versions + # WARNING: only do this if you know what you are doing; disruption + # of service is very likely to occur if these variables are changed + # without careful analysis and testing + openwisp2_controller_version: "openwisp-controller~=1.0.0" + openwisp2_network_topology_version: "openwisp-network-topology~=1.0.0" + openwisp2_firmware_upgrader_version: "openwisp-firmware-upgrader~=1.0.0" + openwisp2_monitoring_version: "openwisp-monitoring~=1.0.0" + openwisp2_radius_version: "openwisp-radius~=1.0.0" + openwisp2_django_version: "django~=3.2.13" + # Setting this to true will enable subnet division feature of + # openwisp-controller. Refer openwisp-controller documentation + # for more information. https://github.com/openwisp/openwisp-controller#subnet-division-app + # By default, it is set to false. + openwisp2_controller_subnet_division: true + # when openwisp2_radius_urls is set to false, the radius module + # is setup but it's urls are not added, which means API and social + # views cannot be used, this is helpful if you have an external + # radius instance. + openwisp2_radius_urls: "{{ openwisp2_radius }}" + openwisp2_path: /opt/openwisp2 + # It is recommended that you change the value of this variable if you intend to use + # OpenWISP2 in production, as a misconfiguration may result in emails not being sent + openwisp2_default_from_email: "openwisp2@yourhostname.com" + # Email backend used by Django for sending emails. By default, the role + # uses "CeleryEmailBackend" from django-celery-email. + # (https://github.com/pmclanahan/django-celery-email) + openwisp2_email_backend: "djcelery_email.backends.CeleryEmailBackend" + # Email timeout in seconds used by Django for blocking operations + # like connection attempts. For more info read the Django documentation, + # https://docs.djangoproject.com/en/3.2/ref/settings/#email-timeout. + # Defaults to 10 seconds. + openwisp2_email_timeout: 5 + # edit database settings only if you are not using sqlite + # eg, for deploying with PostgreSQL (recommended for production usage) + # you will need the PostGIS spatial extension, find more info at: + # https://docs.djangoproject.com/en/4.1/ref/contrib/gis/tutorial/ + openwisp2_database: + engine: django.contrib.gis.db.backends.postgis + name: "{{ DB_NAME }}" + user: "{{ DB_USER }}" + host: "{{ DB_HOST }}" + password: "{{ DB_PASSWORD }}" + port: 5432 + # SPATIALITE_LIBRARY_PATH django setting + # The role will attempt determining the right mod-spatialite path automatically + # But you can use this variable to customize the path or fix future arising issues + openwisp2_spatialite_path: "mod_spatialite.so" + # customize other django settings: + openwisp2_language_code: en-gb + openwisp2_time_zone: UTC + # openwisp-controller context + openwisp2_context: {} + # additional allowed hosts + openwisp2_allowed_hosts: + - myadditionalhost.openwisp.org + # geographic map settings + openwisp2_leaflet_config: + DEFAULT_CENTER: [42.06775, 12.62011] + DEFAULT_ZOOM: 6 + # enable/disable geocoding check + openwisp2_geocoding_check: true + # specify path to a valid SSL certificate and key + # (a self-signed SSL cert will be generated if omitted) + openwisp2_ssl_cert: "/etc/nginx/ssl/server.crt" + openwisp2_ssl_key: "/etc/nginx/ssl/server.key" + # customize the self-signed SSL certificate info if needed + openwisp2_ssl_country: "US" + openwisp2_ssl_state: "California" + openwisp2_ssl_locality: "San Francisco" + openwisp2_ssl_organization: "IT dep." + # the following setting controls which ip address range + # is allowed to access the controller via unencrypted HTTP + # (this feature is disabled by default) + openwisp2_http_allowed_ip: "10.8.0.0/16" + # additional python packages that will be installed with pip + openwisp2_extra_python_packages: + - bpython + - django-owm-legacy + # additional django apps that will be added to settings.INSTALLED_APPS + # (if the app needs to be installed, the name its python package + # must be also added to the openwisp2_extra_python_packages var) + openwisp2_extra_django_apps: + - owm_legacy + # additional django settings example + openwisp2_extra_django_settings: + CSRF_COOKIE_AGE: 2620800.0 + # in case you need to add python instructions to the django settings file + openwisp2_extra_django_settings_instructions: + - TEMPLATES[0]['OPTIONS']['loaders'].insert(0, 'apptemplates.Loader') + # extra URL settings for django + openwisp2_extra_urls: + - "path(r'', include('my_custom_app.urls'))" + # allows to specify imports that are used in the websocket routes, eg: + openwisp2_websocket_extra_imports: + - from my_custom_app.websockets.routing import get_routes as get_custom_app_routes + # allows to specify extra websocket routes, eg: + openwisp2_websocket_extra_routes: + # Callable that returns a list of routes + - get_custom_app_routes() + # List of routes + - "[path('ws/custom-app/', consumer.CustomAppConsumer.as_asgi())]" + # controller URL are enabled by default + # but can be disabled in multi-VM installations if needed + openwisp2_controller_urls: true + # The default retention policy that applies to the timeseries data + # https://github.com/openwisp/openwisp-monitoring#openwisp-monitoring-default-retention-policy + openwisp2_monitoring_default_retention_policy: "26280h0m0s" # 3 years + # whether NGINX should be installed + openwisp2_nginx_install: true + # spdy protocol support (disabled by default) + openwisp2_nginx_spdy: false + # HTTP2 protocol support (disabled by default) + openwisp2_nginx_http2: false + # ipv6 must be enabled explicitly to avoid errors + openwisp2_nginx_ipv6: false + # nginx client_max_body_size setting + openwisp2_nginx_client_max_body_size: 10M + # list of upstream servers for OpenWISP + openwisp2_nginx_openwisp_server: + - "localhost:8000" + # dictionary containing more nginx settings for + # the 443 section of the openwisp2 nginx configuration + # IMPORTANT: 1. you can add more nginx settings in this dictionary + # 2. here we list the default values used + openwisp2_nginx_ssl_config: + gzip: "on" + gzip_comp_level: "6" + gzip_proxied: "any" + gzip_min_length: "1000" + gzip_types: + - "text/plain" + - "text/html" + - "image/svg+xml" + - "application/json" + - "application/javascript" + - "text/xml" + - "text/css" + - "application/xml" + - "application/x-font-ttf" + - "font/opentype" + # nginx error log configuration + openwisp2_nginx_access_log: "{{ openwisp2_path }}/log/nginx.access.log" + openwisp2_nginx_error_log: "{{ openwisp2_path }}/log/nginx.error.log error" + # nginx Content Security Policy header, customize if needed + openwisp2_nginx_csp: > + CUSTOM_NGINX_SECURITY_POLICY + # uwsgi gid, omitted by default + openwisp2_uwsgi_gid: null + # number of uWSGI process to spawn. Default value is 1. + openwisp2_uwsgi_processes: 1 + # number of threads each uWSGI process will have. Default value is 1. + openwisp2_uwsgi_threads: 2 + # value of the listen queue of uWSGI + openwisp2_uwsgi_listen: 100 + # socket on which uwsgi should listen. Defaults to UNIX socket + # at "{{ openwisp2_path }}/uwsgi.sock" + openwisp2_uwsgi_socket: 127.0.0.1:8000 + # extra uwsgi configuration parameters that cannot be + # configured using dedicated ansible variables + openwisp2_uwsgi_extra_conf: | + single-interpreter=True + log-4xx=True + log-5xx=True + disable-logging=True + auto-procname=True + # whether daphne should be installed + # must be enabled for serving websocket requests + openwisp2_daphne_install: true + # number of daphne process to spawn. Default value is 1 + openwisp2_daphne_processes: 2 + # maximum time to allow a websocket to be connected (in seconds) + openwisp2_daphne_websocket_timeout: 1800 + # the following setting controls which ip address range + # is allowed to access the openwisp2 admin web interface + # (by default any IP is allowed) + openwisp2_admin_allowed_network: null + # install ntp client (enabled by default) + openwisp2_install_ntp: true + # if you have any custom supervisor service, you can + # configure it to restart along with other supervisor services + openwisp2_extra_supervisor_restart: + - name: my_custom_service + when: my_custom_service_enabled + # Disable usage metric collection. It is enabled by default. + # Read more about it at + # https://openwisp.io/docs/user/usage-metric-collection.html + openwisp2_usage_metric_collection: false + # enable sentry example + openwisp2_sentry: + dsn: "https://7d2e3cd61acc32eca1fb2a390f7b55e1:bf82aab5ddn4422688e34a486c7426e3@getsentry.com:443/12345" + openwisp2_default_cert_validity: 1825 + openwisp2_default_ca_validity: 3650 + # the following options for redis allow to configure an external redis instance if needed + openwisp2_redis_install: true + openwisp2_redis_host: localhost + openwisp2_redis_port: 6379 + openwisp2_redis_cache_url: "redis://{{ openwisp2_redis_host }}:{{ openwisp2_redis_port }}/1" + # the following options are required to configure influxdb which is used in openwisp-monitoring + openwisp2_influxdb_install: true + openwisp2_timeseries_database: + backend: "openwisp_monitoring.db.backends.influxdb" + user: "openwisp" + password: "openwisp" + name: "openwisp2" + host: "localhost" + port: 8086 + # celery concurrency for the default queue, by default the number of CPUs is used + # celery concurrency for the default queue, by default it is set to 1 + # Setting it to "null" will make concurrency equal to number of CPUs if autoscaling is not used + openwisp2_celery_concurrency: null + # alternative to the previous option, the celery autoscale option can be set if needed + # for more info, consult the documentation of celery regarding "autoscaling" + # by default it is set to "null" (no autoscaling) + openwisp2_celery_autoscale: 4,1 + # prefetch multiplier for the default queue, + # the default value is calculated automatically by celery + openwisp2_celery_prefetch_multiplier: null + # celery queuing mode for the default queue, + # leaving the default will work for most cases + openwisp2_celery_optimization: default + # whether the dedicated celerybeat worker is enabled which is + # responsible for triggering periodic tasks + # must be turned on unless there's another server running celerybeat + openwisp2_celerybeat: true + # whether the dedicated worker for the celery "network" queue is enabled + # must be turned on unless there's another server running a worker for this queue + openwisp2_celery_network: true + # concurrency option for the "network" queue (a worker is dedicated solely to network operations) + # the default is 1. Setting it to "null" will make concurrency equal to number of CPUs if autoscaling is not used. + openwisp2_celery_network_concurrency: null + # alternative to the previous option, the celery autoscale option can be set if needed + # for more info, consult the documentation of celery regarding "autoscaling" + # by default it is set to "null" (no autoscaling) + openwisp2_celery_network_autoscale: 8,4 + # prefetch multiplier for the "network" queue, + # the default is 1, which mean no prefetching, + # because the network tasks are long running and is better + # to distribute the tasks to multiple processes + openwisp2_celery_network_prefetch_multiplier: 1 + # celery queuing mode for the "network" queue, + # fair mode is used in this case, which means + # tasks will be equally distributed among workers + openwisp2_celery_network_optimization: fair + # whether the dedicated worker for the celery "firmware_upgrader" queue is enabled + # must be turned on unless there's another server running a worker for this queue + openwisp2_celery_firmware_upgrader: true + # concurrency option for the "firmware_upgrader" queue (a worker is dedicated solely to firmware upgrade operations) + # the default is 1. Setting it to "null" will make concurrency equal to number of CPUs if autoscaling is not used + openwisp2_celery_firmware_upgrader_concurrency: null + # alternative to the previous option, the celery autoscale option can be set if needed + # for more info, consult the documentation of celery regarding "autoscaling" + # by default it is set to "null" (no autoscaling) + openwisp2_celery_firmware_upgrader_autoscale: 8,4 + # prefetch multiplier for the "firmware_upgrader" queue, + # the default is 1, which mean no prefetching, + # because the firmware upgrade tasks are long running and is better + # to distribute the tasks to multiple processes + openwisp2_celery_firmware_upgrader_prefetch_multiplier: 1 + # celery queuing mode for the "firmware_upgrader" queue, + # fair mode is used in this case, which means + # tasks will be equally distributed among workers + openwisp2_celery_firmware_upgrader_optimization: fair + # whether the dedicated worker for the celery "monitoring" queue is enabled + # must be turned on unless there's another server running a worker for this queue + openwisp2_celery_monitoring: true + # concurrency option for the "monitoring" queue (a worker is dedicated solely to monitoring operations) + # the default is 2. Setting it to "null" will make concurrency equal to number of CPUs + # if autoscaling is not used. + openwisp2_celery_monitoring_concurrency: null + # alternative to the previous option, the celery autoscale option can be set if needed + # for more info, consult the documentation of celery regarding "autoscaling" + # by default it is set to "null" (no autoscaling) + openwisp2_celery_monitoring_autoscale: 4,8 + # prefetch multiplier for the "monitoring" queue, + # the default is 1, which mean no prefetching, + # because the monitoring tasks can be long running and is better + # to distribute the tasks to multiple processes + openwisp2_celery_monitoring_prefetch_multiplier: 1 + # celery queuing mode for the "monitoring" queue, + # fair mode is used in this case, which means + # tasks will be equally distributed among workers + openwisp2_celery_monitoring_optimization: fair + # whether the default celery task routes should be written to the settings.py file + # turn this off if you're defining custom task routing rules + openwisp2_celery_task_routes_defaults: true + # celery settings + openwisp2_celery_broker_url: redis://{{ openwisp2_redis_host }}:{{ openwisp2_redis_port }}/3 + openwisp2_celery_task_acks_late: true + # maximum number of retries by celery before giving up when broker is unreachable + openwisp2_celery_broker_max_tries: 10 + # whether to activate the django logging configuration in celery + # if set to true, will log all the celery events in the same log stream used by django + # which will cause log lines to be written to "{{ openwisp2_path }}/log/openwisp2.log" + # instead of "{{ openwisp2_path }}/log/celery.log" and "{{ openwisp2_path }}/log/celerybeat.log" + openwisp2_django_celery_logging: false + # postfix is installed by default, set to false if you don't need it + openwisp2_postfix_install: true + # allow overriding default `postfix_smtp_sasl_auth_enable` variable + postfix_smtp_sasl_auth_enable_override: true + # allow overriding postfix_smtpd_relay_restrictions + postfix_smtpd_relay_restrictions_override: permit_mynetworks + # allows overriding the default duration for keeping notifications + openwisp2_notifications_delete_old_notifications: 10 + # Expiration time limit (in seconds) of magic sign-in links. + # Magic sign-in links are used only when OpenWISP RADIUS is enabled. + openwisp2_django_sesame_max_age: 1800 # 30 minutes + # Maximum file size(in bytes) allowed to be uploaded as firmware image. + # It overrides "openwisp2_nginx_client_max_body_size" setting + # and updates nginx configuration accordingly. + openwisp2_firmware_upgrader_max_file_size: 41943040 # 40MB + # to add multi-language support + openwisp2_internationalization: true + openwisp2_users_auth_api: true + # Allows setting OPENWISP_USERS_USER_PASSWORD_EXPIRATION setting. + # Read https://github.com/openwisp/openwisp-users#openwisp_users_user_password_expiration + openwisp2_users_user_password_expiration: 30 + # Allows setting OPENWISP_USERS_STAFF_USER_PASSWORD_EXPIRATION setting. + # Read https://github.com/openwisp/openwisp-users#openwisp_users_staff_user_password_expiration + openwisp2_users_staff_user_password_expiration: 30 + # used for SMS verification, the default is a dummy SMS backend + # which prints to standard output and hence does nothing + # one of the available providers from django-sendsms can be + # used or alternatively, you can write a backend class for your + # favorite SMS API gateway + openwisp2_radius_sms_backend: "sendsms.backends.console.SmsBackend" + openwisp2_radius_sms_token_max_ip_daily: 25 + openwisp2_radius_delete_old_radiusbatch_users: 365 + openwisp2_radius_cleanup_stale_radacct: 1 + openwisp2_radius_delete_old_postauth: 365 + # days for which the radius accounting sessions (radacct) are retained, + # 0 means sessions are kept forever. + # we highly suggest to set this number according + # to the privacy regulation of your jurisdiction + openwisp2_radius_delete_old_radacct: 365 + # days after which inactive users will flagged as unverified + # Read https://openwisp-radius.readthedocs.io/en/latest/user/settings.html#openwisp-radius-unverify-inactive-users + openwisp2_radius_unverify_inactive_users: 540 + # days after which inactive users will be deleted + # Read https://openwisp-radius.readthedocs.io/en/latest/user/settings.html#openwisp-radius-delete-inactive-users + openwisp2_radius_delete_inactive_users: 540 + openwisp2_radius_allowed_hosts: ["127.0.0.1"] + # allow disabling celery beat tasks if needed + openwisp2_monitoring_periodic_tasks: true + openwisp2_radius_periodic_tasks: true + openwisp2_usage_metric_collection_periodic_tasks: true + # this role provides a default configuration of freeradius + # if you manage freeradius on a different machine or you need different configurations + # you can disable this default behavior + openwisp2_freeradius_install: true + # Set an account to expire T seconds after first login. + # This variable sets the value of T. + freeradius_expire_attr_after_seconds: 86400 + freeradius_dir: /etc/freeradius/3.0 + freeradius_mods_available_dir: "{{ freeradius_dir }}/mods-available" + freeradius_mods_enabled_dir: "{{ freeradius_dir }}/mods-enabled" + freeradius_sites_available_dir: "{{ freeradius_dir }}/sites-available" + freeradius_sites_enabled_dir: "{{ freeradius_dir }}/sites-enabled" + freeradius_rest: + url: "https://{{ inventory_hostname }}/api/v1/freeradius" + freeradius_safe_characters: "+@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /" + # Sets the source path of the template that contains freeradius site configuration. + # Defaults to "templates/freeradius/openwisp_site.j2" shipped in the role. + freeradius_openwisp_site_template_src: custom_freeradius_site.j2 + # Whether to deploy the default openwisp_site for FreeRADIUS. + # Defaults to true. + freeradius_deploy_openwisp_site: false + # FreeRADIUS listen address for the openwisp_site. + # Defaults to "*", i.e. listen on all interfaces. + freeradius_openwisp_site_listen_ipaddr: "10.8.0.1" + # A list of dict that includes organization's name, UUID, RADIUS token, + # TLS configuration, and ports for authentication, accounting, and inner tunnel. + # This list of dict is used to generate FreeRADIUS sites that support + # WPA Enterprise (EAP-TTLS-PAP) authentication. + # Defaults to an empty list. + freeradius_eap_orgs: + # The name should not contain spaces or special characters + - name: openwisp + # UUID of the organization can be retrieved from the OpenWISP admin + uuid: 00000000-0000-0000-0000-000000000000 + # Radius token of the organization can be retrieved from the OpenWISP admin + radius_token: secret-radius-token + # Port used by the authentication service for this FreeRADIUS site + auth_port: 1832 + # Port used by the accounting service for this FreeRADIUS site + acct_port: 1833 + # Port used by the authentication service of inner tunnel for this FreeRADIUS site + inner_tunnel_auth_port: 18330 + # CA certificate for the FreeRADIUS site + ca: /etc/freeradius/certs/ca.crt + # TLS certificate for the FreeRADIUS site + cert: /etc/freeradius/certs/cert.pem + # TLS private key for the FreeRADIUS site + private_key: /etc/freeradius/certs/key.pem + # Diffie-Hellman key for the FreeRADIUS site + dh: /etc/freeradius/certs/dh + # Extra instructions for the "tls-config" section of the EAP module + # for the FreeRADIUS site + tls_config_extra: | + private_key_password = whatever + ecdh_curve = "prime256v1" + # Sets the source path of the template that contains freeradius site configuration + # for WPA Enterprise (EAP-TTLS-PAP) authentication. + # Defaults to "templates/freeradius/eap/openwisp_site.j2" shipped in the role. + freeradius_eap_openwisp_site_template_src: custom_eap_openwisp_site.j2 + # Sets the source path of the template that contains freeradius inner tunnel + # configuration for WPA Enterprise (EAP-TTLS-PAP) authentication. + # Defaults to "templates/freeradius/eap/inner_tunnel.j2" shipped in the role. + freeradius_eap_inner_tunnel_template_src: custom_eap_inner_tunnel.j2 + # Sets the source path of the template that contains freeradius EAP configuration + # for WPA Enterprise (EAP-TTLS-PAP) authentication. + # Defaults to "templates/freeradius/eap/eap.j2" shipped in the role. + freeradius_eap_template_src: custom_eap.j2 + cron_delete_old_notifications: "'hour': 0, 'minute': 0" + cron_deactivate_expired_users: "'hour': 0, 'minute': 5" + cron_delete_old_radiusbatch_users: "'hour': 0, 'minute': 10" + cron_cleanup_stale_radacct: "'hour': 0, 'minute': 20" + cron_delete_old_postauth: "'hour': 0, 'minute': 30" + cron_delete_old_radacct: "'hour': 1, 'minute': 30" + cron_password_expiration_email: "'hour': 1, 'minute': 0" + cron_unverify_inactive_users: "'hour': 1, 'minute': 45" + cron_delete_inactive_users: "'hour': 1, 'minute': 55" + # cross-origin resource sharing (CORS) settings + # https://pypi.org/project/django-cors-headers/ + openwisp2_django_cors: + # Setting this to "true" will install the django-cors-headers package + # and configure the Django middleware setting to support CORS. + # By default, it is set to false. + enabled: true + # Configures "CORS_ALLOWED_ORIGINS" setting of the django-cors-headers + # package. A list of origins that are authorized to make cross-site + # HTTP requests. Read https://github.com/adamchainz/django-cors-headers#cors_allowed_origins-sequencestr + # for detail. By default, it is set to an empty list. + allowed_origins_list: ["https://log.openwisp.org"] + # Configures "CORS_REPLACE_HTTPS_REFERER" setting of the django-cors-headers + # package. Read https://github.com/adamchainz/django-cors-headers#cors_replace_https_referer-bool + # for detail. Setting this to "true" will also configure the + # Django middleware setting to add "CorsPostCsrfMiddleware". + # By default, it is set to false. + replace_https_referer: true + +**Note**: The default values for settings provided to control the number +of process and threads of uWSGI and Daphne are set conservatively. It is +expected from user to update these settings to suit scale of their +project. The same thing applies for concurrency and autoscale settings for +celery workers. diff --git a/docs/user/system-requirements.rst b/docs/user/system-requirements.rst new file mode 100644 index 00000000..da20d431 --- /dev/null +++ b/docs/user/system-requirements.rst @@ -0,0 +1,48 @@ +System Requirements +=================== + +The following specifications will run a new, *empty* instance of OpenWISP. +Please ensure you account for the amount of disk space your use case will +require, e.g. allocate enough space for users to upload floor plan images. + +Hardware Requirements (Recommended) +----------------------------------- + +- 2 CPUs +- 2 GB Memory +- Disk space - depends on the projected size of your database and uploaded + photo images + +Keep in mind that increasing the number of celery workers will require +more memory and CPU. You will need to increase the amount of celery +workers as the number of devices you manage grows. + +For more information about how to increase concurrency, look for the +variables which end with ``_concurrency`` or ``_autoscale`` in the +:doc:`role-variables` section. + +Software +-------- + +Generally a fresh installation of one of the supported operating systems +is sufficient; no pre-configuration required. The Ansible Playbook will +install and configure all dependencies and leave you with a running +OpenWISP installation. + +.. important:: + + Ensure the hostname of your target machine matches what is in your + Ansible configuration file. Also, please ensure that Ansible can + access your target machine by SSH, be it either with a key or + password. For more information see the `Ansible Getting Started + Documentation + `__. + +Supported Operating Systems +--------------------------- + +- Debian 12 +- Debian 11 +- Ubuntu 24 LTS +- Ubuntu 22 LTS +- Ubuntu 20 LTS diff --git a/docs/user/troubleshooting.rst b/docs/user/troubleshooting.rst new file mode 100644 index 00000000..d2f875f9 --- /dev/null +++ b/docs/user/troubleshooting.rst @@ -0,0 +1,68 @@ +Troubleshooting +=============== + +OpenWISP is deployed using **uWSGI**, it also uses **daphne** fo +WebSockets and **celery** as task queue. + +All this services are run by **supervisor**. + +.. code-block:: shell + + sudo service supervisor start|stop|status + +You can view each individual process run by supervisor with the following +command: + +.. code-block:: shell + + sudo supervisorctl status + +For more info about Supervisord, refer to `Running supervisorctl +`__. + +The **nginx** web server sits in front of the **uWSGI** application +server. You can control nginx with the following commands: + +.. code-block:: shell + + service nginx status start|stop|status + +OpenWISP is installed in ``/opt/openwisp2`` (unless you changed the +``openwisp2_path`` variable in the ansible playbook configuration), these +are some useful directories to look for when experiencing issues. + +========================= ========================== +Location Description +========================= ========================== +/opt/openwisp2 The OpenWISP 2 root dir. +/opt/openwisp2/log Log files +/opt/openwisp2/env Python virtual env +/opt/openwisp2/db.sqlite3 OpenWISP 2 sqlite database +========================= ========================== + +All processes are running as ``www-data`` user. + +If you need to copy or edit files, you can switch to ``www-data`` user +with the following commands: + +.. code-block:: shell + + sudo su www-data -s /bin/bash + cd /opt/openwisp2 + source env/bin/activate + +SSL Certificate Gotchas +----------------------- + +When you access the admin website you will get an SSL certificate warning +because the playbook creates a self-signed (untrusted) SSL certificate. +You can get rid of the warning by installing your own trusted certificate +and set the ``openwisp2_ssl_cert`` and ``openwisp2_ssl_key`` variables +accordingly or by following the instructions explained in the section +:doc:`certbot-ssl`. + +If you keep the untrusted certificate, you will also need to disable SSL +verification on devices using :doc:`openwisp-config +` by setting ``verify_ssl`` to ``0``, +although we advice against using this kind of setup in a production +environment. diff --git a/files/generate_django_secret_key.py b/files/generate_django_secret_key.py index d468b937..6faa365e 100755 --- a/files/generate_django_secret_key.py +++ b/files/generate_django_secret_key.py @@ -1,14 +1,15 @@ #!/usr/bin/env python -""" -Pseudo-random django secret key generator -""" +"""Pseudo-random django secret key generator""" from __future__ import print_function + import random -chars = 'abcdefghijklmnopqrstuvwxyz' \ - 'ABCDEFGHIJKLMNOPQRSTUVXYZ' \ - '0123456789' \ - '#()^[]-_*%&=+/' +chars = ( + 'abcdefghijklmnopqrstuvwxyz' + 'ABCDEFGHIJKLMNOPQRSTUVXYZ' + '0123456789' + '#()^[]-_*%&=+/' +) SECRET_KEY = ''.join([random.SystemRandom().choice(chars) for i in range(50)]) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..21ea6859 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,2 @@ +[tool.docstrfmt] +extend_exclude = ["templates/**/*.py"] diff --git a/templates/load_initial_data.py b/templates/load_initial_data.py index 4894cbf7..45d41693 100644 --- a/templates/load_initial_data.py +++ b/templates/load_initial_data.py @@ -7,7 +7,9 @@ template to use the same """ import os + import django + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'openwisp2.settings') django.setup() @@ -22,13 +24,12 @@ changed = False if User.objects.filter(is_superuser=True).count() < 1: - admin = User.objects.create_superuser(username='admin', - password='admin', - email='') + admin = User.objects.create_superuser(username='admin', password='admin', email='') print('superuser created') if 'django.contrib.sites' in settings.INSTALLED_APPS: from django.contrib.sites.models import Site + site = Site.objects.first() if site and 'example.com' in [site.name, site.domain]: site.name = '{{ inventory_hostname }}' diff --git a/templates/openwisp2/__init__.py b/templates/openwisp2/__init__.py index 67014dab..493e5e2c 100644 --- a/templates/openwisp2/__init__.py +++ b/templates/openwisp2/__init__.py @@ -2,4 +2,6 @@ __all__ = ['celery_app'] __openwisp_version__ = '24.0.0a' -__openwisp_installation_method__ = '{{ openwisp2_installation_method | default("ansible-openwisp2") }}' +__openwisp_installation_method__ = ( + '{{ openwisp2_installation_method | default("ansible-openwisp2") }}' +) diff --git a/templates/openwisp2/asgi.py b/templates/openwisp2/asgi.py index e9477f95..cf450b81 100644 --- a/templates/openwisp2/asgi.py +++ b/templates/openwisp2/asgi.py @@ -4,6 +4,7 @@ """ import os + import django from channels.routing import get_default_application diff --git a/templates/openwisp2/celery.py b/templates/openwisp2/celery.py index 20e28ef5..a171e1c8 100644 --- a/templates/openwisp2/celery.py +++ b/templates/openwisp2/celery.py @@ -10,9 +10,11 @@ app.autodiscover_tasks() {% if openwisp2_django_celery_logging %} -from celery.signals import setup_logging from logging.config import dictConfig +from celery.signals import setup_logging + + @setup_logging.connect def config_loggers(*args, **kwargs): dictConfig(settings.LOGGING) diff --git a/templates/openwisp2/routing.py b/templates/openwisp2/routing.py index cc43522e..3cbd22a0 100644 --- a/templates/openwisp2/routing.py +++ b/templates/openwisp2/routing.py @@ -10,11 +10,14 @@ {% if openwisp2_controller_urls %} from openwisp_controller.routing import get_routes as get_controller_routes + routes.extend(get_controller_routes()) {% endif %} {% if openwisp2_network_topology %} -from openwisp_network_topology.routing import websocket_urlpatterns as network_topology_routes +from openwisp_network_topology.routing import \ + websocket_urlpatterns as network_topology_routes + routes.extend(network_topology_routes) {% endif %} diff --git a/templates/openwisp2/settings.py b/templates/openwisp2/settings.py index 49f336ed..7f7a314b 100644 --- a/templates/openwisp2/settings.py +++ b/templates/openwisp2/settings.py @@ -1,8 +1,9 @@ import os import sys -from celery.schedules import crontab from datetime import timedelta +from celery.schedules import crontab + TESTING = 'test' in sys.argv # Build paths inside the project like this: os.path.join(BASE_DIR, ...) diff --git a/templates/openwisp2/urls.py b/templates/openwisp2/urls.py index 1bb7a0f7..c76a57c9 100644 --- a/templates/openwisp2/urls.py +++ b/templates/openwisp2/urls.py @@ -1,14 +1,15 @@ -from django.urls import include, path, reverse_lazy from django.contrib import admin from django.contrib.staticfiles.urls import staticfiles_urlpatterns +from django.urls import include, path, reverse_lazy from django.views.generic import RedirectView + {% if openwisp2_firmware_upgrader %} # When using S3_REVERSE_PROXY feature of django-private-storage, # the storage backend reverse the "serve_private_file" URL # pattern in order to proxy the file with the correct URL. -from openwisp_firmware_upgrader.private_storage.urls import ( - urlpatterns as fw_private_storage_urls, -) +from openwisp_firmware_upgrader.private_storage.urls import \ + urlpatterns as fw_private_storage_urls + {% endif %} redirect_view = RedirectView.as_view(url=reverse_lazy('admin:index'))