From 64b84776b6ebe363eb854d0c366a45e6f7af0e26 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 13:46:52 -0600 Subject: [PATCH 01/40] Renamed to wagon and added README info --- LICENSE.md | 9 +++ README.md | 116 ++++++++++++++++++++++++++++++++--- back/admin.Dockerfile | 8 +-- back/admin_peer.cgi | 14 ++--- back/admin_user.cgi | 12 ++-- back/dashboard.Dockerfile | 8 +-- back/dashboard.cgi | 14 ++--- back/dashboard_ssl.cgi | 8 +-- back/fed.Dockerfile | 6 +- back/fed.cgi | 12 ++-- back/lib/admin/peer/add | 40 ++++++------ back/lib/admin/peer/del | 34 +++++----- back/lib/admin/peer/list | 16 ++--- back/lib/admin/user/add | 36 +++++------ back/lib/admin/user/del | 32 +++++----- back/lib/dashboard/peer/add | 42 ++++++------- back/lib/dashboard/peer/del | 34 +++++----- back/lib/dashboard/peer/list | 16 ++--- back/lib/dashboard/ssl | 20 +++--- back/lib/fed/peer/add | 16 ++--- back/lib/fed/peer/del | 16 ++--- back/lib/fed_peer_add | 2 +- back/lib/fed_peer_del | 2 +- back/lib/http_res | 2 +- back/lib/ips_to_peers | 4 +- back/lib/ns_lookup_axfr | 6 +- back/lib/ns_lookup_rdns | 6 +- back/lib/ns_lookup_send | 4 +- back/lib/ns_update_add | 10 +-- back/lib/ns_update_del | 10 +-- back/lib/ns_update_rev_ipv4 | 2 +- back/lib/ns_update_rev_ipv6 | 2 +- back/lib/ns_update_send | 4 +- back/lib/ssl_peer_add | 4 +- back/lib/ssl_peer_del | 4 +- back/lib/wg_peer_add | 4 +- back/lib/wg_peer_del | 4 +- back/lib/wg_user_list | 6 +- docker-compose.yml.sample | 30 ++++----- etc/servers.sample | 4 +- 40 files changed, 362 insertions(+), 257 deletions(-) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..24ebe93 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,9 @@ +# The MIT License (MIT) + +Copyright © 2023 Keith Irwin ([ki9.gf4.pw](https://ki9.gf4.pw/)) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 204ae63..9d2a417 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,113 @@ -# wgapi +# wagon 2022-2023 Keith Irwin ([ki9.gf4.pw](https://ki9.gf4.pw/)) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -wgapi is a web application for managing a large number of hosts on a wireguard network. Each host is assigned a domain name on a custom top-level-domain (TLD) and TLS certificates are signed by a custom certificate authority (CA) and provided to the user. +`wagon` is a an api, user dashboard, and admin ui for managing devices and services on a dns-enabled wireguard network. It was built with small web communities in mind. -## Features +## IP address allocation - - Multi-server federation (hub-and-spoke networking with one or more hubs) - - No login screen; authentication is IP-based - - Private keys are not stored in a central location - - No database; all data are stored stored in wireguard and the nameserver +`wagon` manages devices on a wireguard network, `10.X.Y.Z/16` where `X` is a number associated with the community, configured at the first setup. Servers are hosted on `10.X.0.Z/24`, where each `Z` is a different server. Finally, each user gets a number `Y` (between 1 and 254) and a `/24` subnet for each of their their devices, `Z`. -## Installation +**For example:** Your home pc could be `10.11.1.1` and your phone `10.11.1.2`. After configuring wireguard, you can use either device to ping your friend, whose pc is at `10.11.2.1`. -Installation involves multiple steps. +IPv6 is also preconfigured for a `/96` subnet, with users getting their own `/112` network for each `/128` device. -**TODO**: Write complete implementation instructions +## Nameserver + +`wagon` manages a bind9 nameserver through the `nsupdate` command. Device domain names have a similar structure as IP addresses, `A.B.C`, where: + + - `C` is the community's top-level-domain (TLD) + - `B` is the username + - `A` is hostname of the device + +The TLD could be anything that isn't already a global TLD like `.com`. The recursive nameserver provides private wireguard IPs to on this private domain zone. It must be configured to answer `.mynet` queries only within its own network on `10.X.0.0/16`. This nameserver is then preconfigured in clients' wireguard configs' `DNS = ` setting. + + **For example:** Your home pc could be `pc.myuser.mynet` and your phone `phone.myuser.mynet`. Either can ping up `phone.myfriend.mynet`. These would point to `10.11.1.1`, `10.11.1.2`, and `10.11.2.1` respectively + + Servers (IPs with `Y=0`) have domains of the form `A.C`, as above. Wildcard subdomains are CNAMEd to their base address, that is, `*.phone.myuser.mynet` CNAMEs to `phone.myuser.mynet` and `*.smyerver.mynet` CNAMEs to `myserver.mynet`. Of course, this means no username can match a server hostname. + + The nameserver is also preconfigured for rDNS so you can perform lookups on IP addresses: + + ```sh + $ nslookup 10.11.1.1 +1.1.11.10.in-addr.arpa name = pc.myuser.mynet. + ``` + +Using this setup, the community's entire wireguard network and DNS can be accessed from any device by importing a single wireguard config. One purpose of `wagon` is to easily generate these device configs. + +## Certificate authority + +`wagon` also automatically signs SSL certs for its own invented TLD (`.mynet`) so network-hosted services can be encrypted. The certificates are signed for the IPs and wildcard domains listed above, so, with the right web proxy configuration, a user can use the *same* certificate to self-host a service on any of these domains: + + - `https://10.11.1.2/` + - `https://[fd69:1337:0:420:f4:11:1:2]/` + - `https://mypc.myuser.mynet/` + - `https://myservice.mypc.myuser.mynet/` + - `https://myotherservice.mypc.myuser.mynet/` + - `https://anyotherservice.mypc.myuser.mynet/` + +The `wagon` user dashboard provides a server certificate and key that the user can download. Any wireguard-connected device with the community's ca certificate imported in their browser or OS will be able to see a green lock on their browser when visiting these private sites. + +These certs can be used for other internet protocols like irc or imap. + +## Self-hosting and firewalls + +Since firewalls and web proxies understand CIDR notation, controlling access to services is easy: + + - Allow `10.11.1.1/32` to allow access to pc.myuser.mynet only + - Allow `10.11.1.0/24` to allow access to any of myuser's devices + - Allow `10.11.2.1/32` to allow access to a friend's pc + - Allow `10.11.2.0/24` to allow access to any of a friend's devices + - Allow `10.11.0.0/16` to allow access to anyone in the community + - Allow `10.0.0.0/8` to allow access to any other community (someday, maybe) + +Allowing access to virtual webservers is just as simple. For example, I can let my friend access my development server with these allow/deny lines in an nginx vhost config (only showing IPv4, but works with IPv6 too). + +```nginx +server { + server_name dev.mypc.myuser.mynet; + listen 10.11.1.1:443 ssh http2; + + ssl_certificate /path/to/downloaded/mypc.myuser.mynet/server.crt; + ssl_certificate_key /path/to/downloaded/mypc.myuser.mynet/server.key; + ssl_stapling off; + + allow 10.11.1.0/24; # My devices + allow 10.11.2.0/24; # My friend's devices + deny all; # Everyone else + + # Proxy to local dev server + location / { + proxy_pass http://localhost:8080; + } +} +``` + +## Dashboard + +Users can access a dashboard with a list of devices and links to download `server.crt` and `server.key`. Users can add and delete these devices, and admins can add/delete devices and users from a seperate admin interface. When adding a new user or device, the dashboard displays a wireguard configuration which must be copied or saved before the page is refreshed. + +In this way, there is no central server storing all the private keys, like with most wireguard dashboards. In fact, `wagon` does not have a database and does not store any data at all; everything is stored in the server's nameserver and wireguard config. + +This also means there is no login to the dashboard. Users simply connect to the dashboard over wireguard from any connected device, and `wagon` will recognize your IP and serve up a list of other devices on that same `/24` subnet. + +## Structure + +`wagon` is written in bash and run as a cgi script. It can be run in- or outside of docker. Why bash? Because it has great "SDKs" for wireguard (`wg`), nameserver updates (`nsupdate`), and SSL certs (`openssl`). The libraries used in the scripts are themselves scripts. Each script follows the unix philosophy of handling text through standard means (arguments and stdin to stdout), so individual libraries could be replaced with faster alternatives (c, rust, go) in the future. + +## Project status + +The wireguard dashboard and admin are in a working alpha state. I have it implemented on my own network, [gf4](https://www.gf4.pw/), and it seems to be working there. What still needs to be done: + + - The code probably contains hardcoded variables specific to gf4, that must be moved to configs/environment files + - There is almost no documentation, and extensive tutorials are needed for the initial setup of wireguard, bind9, and the CA keys. + - Future implementation of a mail relay, web proxy, and SIP server, and their respective tabs on the web dashboard + - Replacing + +## Contributing + +If you think you can help with any of these bulletpoints, please reach out to me: + +[@ki9:gf4.pw](matrix:@ki9:gf4.pw) on matrix +[wagon@ki9.gf4.pw](mailto:wagon@ki9.gf4.pw) by email +[https://ki9.gf4.pw/contact]() diff --git a/back/admin.Dockerfile b/back/admin.Dockerfile index ebd7c87..7f46499 100644 --- a/back/admin.Dockerfile +++ b/back/admin.Dockerfile @@ -7,9 +7,9 @@ RUN apt-get update && apt-get install --yes \ && rm -rf /var/lib/apt/lists/* # Create dirs and temp files -RUN mkdir /usr/lib/wgapi /var/log/wgapi /var/local/wgapi -RUN touch /var/local/wgapi/tokens -RUN chown -R www-data:www-data /usr/lib/wgapi /var/log/wgapi /var/local/wgapi +RUN mkdir /usr/lib/wagon /var/log/wagon /var/local/wagon +RUN touch /var/local/wagon/tokens +RUN chown -R www-data:www-data /usr/lib/wagon /var/log/wagon /var/local/wagon # Configure apache RUN a2enmod cgi rewrite @@ -26,7 +26,7 @@ RUN echo "www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/wg, /usr/bin/openssl, /usr/b COPY admin_peer.cgi /usr/lib/cgi-bin/peer COPY admin_user.cgi /usr/lib/cgi-bin/user # TODO: Copy only needed libs -COPY lib/ /usr/lib/wgapi/ +COPY lib/ /usr/lib/wagon/ # Run time! EXPOSE ${PORT} diff --git a/back/admin_peer.cgi b/back/admin_peer.cgi index 216912b..ddf139a 100755 --- a/back/admin_peer.cgi +++ b/back/admin_peer.cgi @@ -1,24 +1,24 @@ #!/bin/bash -# FILE: wgapi:back/admin_peer.cgi +# FILE: wagon:back/admin_peer.cgi # DESCRIPTION: Recieves incoming admin requests for peer operations -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # List peers - 'GET') /usr/lib/wgapi/admin/peer/list "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'GET') /usr/lib/wagon/admin/peer/list "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Add peer - 'POST') /usr/lib/wgapi/admin/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'POST') /usr/lib/wagon/admin/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete peer - 'DELETE') /usr/lib/wgapi/admin/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'DELETE') /usr/lib/wagon/admin/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight - 'OPTIONS') /usr/lib/wgapi/http_res 200;; + 'OPTIONS') /usr/lib/wagon/http_res 200;; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/admin_user.cgi b/back/admin_user.cgi index f757f24..d2a37f8 100755 --- a/back/admin_user.cgi +++ b/back/admin_user.cgi @@ -1,20 +1,20 @@ #!/bin/bash -# FILE: wgapi:back/admin_user.cgi +# FILE: wagon:back/admin_user.cgi # DESCRIPTION: Server for requests to /user/ -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # Add new user - 'POST') /usr/lib/wgapi/admin/user/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'POST') /usr/lib/wagon/admin/user/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete user - 'DELETE') /usr/lib/wgapi/admin/user/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'DELETE') /usr/lib/wagon/admin/user/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight - 'OPTIONS') /usr/lib/wgapi/http_res 200;; + 'OPTIONS') /usr/lib/wagon/http_res 200;; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/dashboard.Dockerfile b/back/dashboard.Dockerfile index 3b38fa3..3d5d4ae 100644 --- a/back/dashboard.Dockerfile +++ b/back/dashboard.Dockerfile @@ -7,9 +7,9 @@ RUN apt-get update && apt-get install --yes \ && rm -rf /var/lib/apt/lists/* # Create dirs and temp files -RUN mkdir /usr/lib/wgapi /var/log/wgapi /var/local/wgapi -RUN touch /var/local/wgapi/tokens -RUN chown -R www-data:www-data /usr/lib/wgapi /var/log/wgapi /var/local/wgapi +RUN mkdir /usr/lib/wagon /var/log/wagon /var/local/wagon +RUN touch /var/local/wagon/tokens +RUN chown -R www-data:www-data /usr/lib/wagon /var/log/wagon /var/local/wagon # Configure apache RUN a2enmod cgi rewrite @@ -26,7 +26,7 @@ RUN echo "www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/wg, /usr/bin/openssl, /usr/b COPY dashboard.cgi /usr/lib/cgi-bin/index.cgi COPY dashboard_ssl.cgi /usr/lib/cgi-bin/ssl # TODO: Copy only needed libs -COPY lib/ /usr/lib/wgapi/ +COPY lib/ /usr/lib/wagon/ # Run time! EXPOSE ${PORT} diff --git a/back/dashboard.cgi b/back/dashboard.cgi index 66ab10f..10fc82f 100755 --- a/back/dashboard.cgi +++ b/back/dashboard.cgi @@ -1,24 +1,24 @@ #!/bin/bash -# FILE: wgapi:back/dashboard.cgi +# FILE: wagon:back/dashboard.cgi # DESCRIPTION: Recieves incoming dashboard API requests -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # List peers - 'GET') /usr/lib/wgapi/dashboard/peer/list "${HTTP_X_REAL_IP}";; + 'GET') /usr/lib/wagon/dashboard/peer/list "${HTTP_X_REAL_IP}";; # Add peer - 'POST') /usr/lib/wgapi/dashboard/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'POST') /usr/lib/wagon/dashboard/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete peer - 'DELETE') /usr/lib/wgapi/dashboard/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'DELETE') /usr/lib/wagon/dashboard/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight - 'OPTIONS') /usr/lib/wgapi/http_res 200;; + 'OPTIONS') /usr/lib/wagon/http_res 200;; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/dashboard_ssl.cgi b/back/dashboard_ssl.cgi index 36c5756..2fd6417 100755 --- a/back/dashboard_ssl.cgi +++ b/back/dashboard_ssl.cgi @@ -1,15 +1,15 @@ #!/bin/bash -# FILE: wgapi:back/dashboard_ssl.cgi +# FILE: wagon:back/dashboard_ssl.cgi # DESCRIPTION: Sends SSL certs and keys to users -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # Get cert - 'GET') /usr/lib/wgapi/dashboard/ssl "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'GET') /usr/lib/wagon/dashboard/ssl "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/fed.Dockerfile b/back/fed.Dockerfile index 6cd3d36..7433a4b 100644 --- a/back/fed.Dockerfile +++ b/back/fed.Dockerfile @@ -7,8 +7,8 @@ RUN apt-get update && apt-get install --yes \ && rm -rf /var/lib/apt/lists/* # Create dirs and temp files -RUN mkdir /usr/lib/wgapi /var/log/wgapi -RUN chown -R www-data:www-data /usr/lib/wgapi /var/log/wgapi +RUN mkdir /usr/lib/wagon /var/log/wagon +RUN chown -R www-data:www-data /usr/lib/wagon /var/log/wagon # Configure apache RUN a2enmod cgi rewrite @@ -24,7 +24,7 @@ RUN echo "www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/wg, /usr/bin/[, /usr/bin/tee # Copy over cgi and libs COPY fed.cgi /usr/lib/cgi-bin/index.cgi # TODO: Copy only needed libs -COPY lib/ /usr/lib/wgapi/ +COPY lib/ /usr/lib/wagon/ # Run time! EXPOSE ${PORT} diff --git a/back/fed.cgi b/back/fed.cgi index c5f55d8..1f08f8e 100755 --- a/back/fed.cgi +++ b/back/fed.cgi @@ -1,21 +1,21 @@ #!/bin/bash -# FILE: wgapi:back/fed.cgi +# FILE: wagon:back/fed.cgi # DESCRIPTION: Recieves incoming federated requests -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # Add - 'POST') /usr/lib/wgapi/fed/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'POST') /usr/lib/wagon/fed/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete - 'DELETE') /usr/lib/wgapi/fed/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'DELETE') /usr/lib/wagon/fed/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight - 'OPTIONS') /usr/lib/wgapi/http_res 200;; + 'OPTIONS') /usr/lib/wagon/http_res 200;; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/lib/admin/peer/add b/back/lib/admin/peer/add index 3f7d684..c1d61cd 100755 --- a/back/lib/admin/peer/add +++ b/back/lib/admin/peer/add @@ -4,15 +4,15 @@ # USAGE: add $remote_ip $querystring # QUERYSTRING: ?t=$token&host=$newhostname&user=$username&num=$usernumber -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" # Check token token_fail(){ printf 'Rejecting admin %s request for new peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit 1 + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit 1 } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -23,9 +23,9 @@ username="$(<<<"${qs}" grep -oP 'user=(.*)' | sed 's/^user=//')" usernumber="$(<<<"${qs}" grep -oP 'num=(.*)' | sed 's/^num=//')" if ! domain="${hostname:?}.${username:?}.${TLD:?}"; then printf 'ERROR! Hostname "%s" or username "%s" or tld "%s" missing!\n' "${hostname}" "${username}" "${TLD}" >&2 - printf 'Hostname or username missing!\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname or username missing!\n' | /usr/lib/wagon/http_res 400; exit elif [[ "${usernumber}" == "" ]]; then - printf 'Usernumber missing!\n' | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 400; exit + printf 'Usernumber missing!\n' | tee >(cat 1>&2) | /usr/lib/wagon/http_res 400; exit else printf 'Admin %s requested new peer %s for user number %s\n' "${ip}" "${domain}" "${usernumber}" >&2 fi @@ -33,31 +33,31 @@ fi # Check hostname length if ! [[ ${#hostname} -ge 3 ]]; then printf 'Rejecting hostname %s because it is too short.\n' "${hostname}" >&2 - printf 'Hostname too short\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname too short\n' | /usr/lib/wagon/http_res 400; exit fi # Check if new peer already exists -if /usr/lib/wgapi/ns_lookup_send "${domain}" >/dev/null; then - printf 'Host %s already exists!\n' "${domain}" | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 409; exit +if /usr/lib/wagon/ns_lookup_send "${domain}" >/dev/null; then + printf 'Host %s already exists!\n' "${domain}" | tee >(cat 1>&2) | /usr/lib/wagon/http_res 409; exit fi # Get all peer IPs if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out the user's user_peers="$(grep "${IPV4_NET%.*.*}.${usernumber}." <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == "" ]; then printf "ERROR! Couldn't find any peers for %s!\n" "${IPV4_NET%.*.*}.${usernumber}." >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Get user peer domains -if ! peers="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peers}")"; then +if ! peers="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peers}")"; then printf 'ERROR! Failed to retrieve peers for %s!\n' "${IPV4_NET%.*.*}.${usernumber}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create new IPs @@ -72,7 +72,7 @@ ipv4="${IPV4_NET%.*.*}.${usernumber}.${hostnumber}" ipv6="${IPV6_NET%:*:*}:${usernumber}:${hostnumber}" if ! printf 'IP addresses for %s created: %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to create IP addresses for %s!' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create wg config @@ -81,13 +81,13 @@ pubkey="$(echo "${privkey}" | /usr/bin/wg pubkey)" address="${ipv4}/${IPV4_NET##*/},${ipv6}/${IPV6_NET##*/}" # Update nameserver -if /usr/lib/wgapi/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" +if /usr/lib/wagon/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" then printf 'Successfully added %s to DNS server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s %s %s to DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & # Create SSL cert -if /usr/lib/wgapi/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" +if /usr/lib/wagon/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" then printf 'Successfully signed SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to create certs for %s with IPS: %s %s!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi @@ -101,22 +101,22 @@ while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey se if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/${IPV4_NET#*/},${server_ipv6}/${IPV6_NET#*/}\nEndpoint=${server_endpoint}\n" # Add new user to local wireguard - if /usr/lib/wgapi/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then + if /usr/lib/wagon/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then printf 'Added %s to local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s to local wireguard server!\n' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Remote server else server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/32,${server_ipv6}/128\nEndpoint=${server_endpoint}\n" # Send new user config to federated server - if /usr/lib/wgapi/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then + if /usr/lib/wagon/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then printf 'Sent %s to remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to send %s to remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 fi fi -done &2 # Check token token_fail(){ printf 'Rejecting admin %s request to delete peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -24,33 +24,33 @@ printf '%s token was valid\n' "${ip}" >&2 # Get peer IP list if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out this user's user_peer="$(grep "${pubkey}" <<<"${wg_output}" 2>/dev/null)" if [ "${user_peer}" == "" ]; then printf 'ERROR! Could not find user for pubkey %s!\n' "${pubkey}" >&2 - printf 'Peer not found' | /usr/lib/wgapi/http_res 404; exit + printf 'Peer not found' | /usr/lib/wagon/http_res 404; exit fi # Get peer domains -if ! peer="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peer}" | grep "${pubkey}")"; then +if ! peer="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peer}" | grep "${pubkey}")"; then printf 'ERROR! Failed to lookup domain for pubkey %s!\n' "${pubkey}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi domain="$(<<<"${peer}" cut -f1)" ipv4="$(<<<"${peer}" cut -f2)" ipv6="$(<<<"${peer}" cut -f3)" if ! printf 'Delete request was for %s %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to collect peer data: %s %s %s\n' "${domain}" "${ipv4}" "${ipv6}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Make sure admin isn't deleting their own peer if [ "${ip}" == "${ipv4}" ] || [ "${ip}" == "${ipv6}" ]; then printf 'Admin requested to delete peer from itself: %s.\n' "${ip}" >&2 - printf 'You cannot delete a peer from itself!' | /usr/lib/wgapi/http_res 400; exit + printf 'You cannot delete a peer from itself!' | /usr/lib/wagon/http_res 400; exit fi hostname="$(<<<"${domain}" cut -d'.' -f1)" @@ -65,34 +65,34 @@ for_server_do() { server_endpoint="${5}"; server_url="${6}"; server_secret="${7}" if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then # Local server - if /usr/lib/wgapi/wg_peer_del "${pubkey}"; then + if /usr/lib/wagon/wg_peer_del "${pubkey}"; then printf 'Deleted %s from local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to delete %s from local wireguard server!\n' "${domain}" >&2 # TODO: clear existing progress - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi else # Federated server - if /usr/lib/wgapi/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then + if /usr/lib/wagon/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then printf 'Deleted %s from remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to delete %s from remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi fi }; while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_url server_secret do for_server_do "${server_hostname}" "${server_ipv4}" "${server_ipv6}" "${server_pubkey}" "${server_endpoint}" "${server_url}" "${server_secret}" & -done &2 else printf 'ERROR! Failed to delete %s %s %s from DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & # Delete SSL cert -if /usr/lib/wgapi/ssl_peer_del "${hostname:?}" "${username:?}" +if /usr/lib/wagon/ssl_peer_del "${hostname:?}" "${username:?}" then printf 'Successfully deleted SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to delete certs for %s!\n' "${domain}" >&2 fi @@ -101,4 +101,4 @@ fi # Do it before updating nameserver and certs because # if wireguard worked, there's no going back. The admin # can clean up missing records and certs after checking the logs -printf 'Deleted %s.%s.%s' "${hostname}" "${username}" "${TLD}" | /usr/lib/wgapi/http_res 202 \ No newline at end of file +printf 'Deleted %s.%s.%s' "${hostname}" "${username}" "${TLD}" | /usr/lib/wagon/http_res 202 \ No newline at end of file diff --git a/back/lib/admin/peer/list b/back/lib/admin/peer/list index d9c9e35..5e5bafe 100755 --- a/back/lib/admin/peer/list +++ b/back/lib/admin/peer/list @@ -4,23 +4,23 @@ # USAGE: list $remote_ip $querystring # QUERYSTRING: ?un=$username -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" un="$(<<<"${qs}" grep -oP 'un=(.*)' | sed 's/^un=//' | xargs)" printf 'Admin %s requested peer listing...\n' "${ip}" >&2 # Create token if needed -token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" if [ "${token}" == "" ]; then printf 'Creating token for %s...\n' "${ip}" >&2 token="$(>/var/local/wgapi/tokens + printf '%s\t%s\n' "${ip}" "${token}" >>/var/local/wagon/tokens fi # Get peer IP list if ! peers="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out single user (if provided) @@ -28,15 +28,15 @@ if [ "${un}" != '' ]; then peers="$(grep "${IPV4_NET%.*.*}\.${un}\." <<<"${peers}" 2>/dev/null)" if [ "${peers}" == '' ]; then printf 'User number %s not found!\n' "${un}" >&2 - printf 'User not found!\n' | /usr/lib/wgapi/http_res 404; exit + printf 'User not found!\n' | /usr/lib/wagon/http_res 404; exit fi fi # Get domains for each peer -if peers="[$(/usr/lib/wgapi/ips_to_peers json <<<"${peers}")]"; then - printf '{"token":"%s","peers":%s}' "${token:?}" "${peers:?}" | /usr/lib/wgapi/http_res 200 'application/json' +if peers="[$(/usr/lib/wagon/ips_to_peers json <<<"${peers}")]"; then + printf '{"token":"%s","peers":%s}' "${token:?}" "${peers:?}" | /usr/lib/wagon/http_res 200 'application/json' printf 'Sent peers to admin %s\n' "${ip}" >&2 else printf 'ERROR: Failed to lookup user domain: %s\n' "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi diff --git a/back/lib/admin/user/add b/back/lib/admin/user/add index b7657ce..1324ba5 100755 --- a/back/lib/admin/user/add +++ b/back/lib/admin/user/add @@ -4,15 +4,15 @@ # USAGE: add $remote_ip $querystring # QUERYSTRING: ?t=$token&host=$hostname&user=$username -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" # Check token token_fail(){ printf 'Rejecting admin %s request for new peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -22,28 +22,28 @@ hostname="$(<<<"${qs}" grep -oP 'host=(.*)' | sed 's/^host=//' | xargs | tr -dc username="$(<<<"${qs}" grep -oP 'user=(.*)' | sed 's/^user=//' | xargs | tr -dc 'a-z0-9' | head -c10)" if ! domain="${hostname:?}.${username:?}.${TLD:?}"; then printf 'ERROR! Hostname "%s" or username "%s" or tld "%s" missing!\n' "${hostname}" "${username}" "${TLD}" >&2 - printf 'Hostname or username missing!\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname or username missing!\n' | /usr/lib/wagon/http_res 400; exit else printf 'Admin %s requested new user created with initial peer of %s\n' "${ip}" "${domain}" >&2 fi if ! [[ ${#hostname} -ge 3 ]]; then printf 'Rejecting hostname %s because it is too short.\n' "${hostname}" >&2 - printf 'Hostname too short\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname too short\n' | /usr/lib/wagon/http_res 400; exit elif ! [[ ${#username} -ge 3 ]]; then printf 'Rejecting username %s because it is too short.\n' "${username}" >&2 - printf 'Username too short\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Username too short\n' | /usr/lib/wagon/http_res 400; exit fi # Check if user already exists -if /usr/lib/wgapi/ns_lookup_axfr | grep ".${username}.${TLD}" >/dev/null; then - printf 'User %s already exists!\n' "${username}" | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 409 +if /usr/lib/wagon/ns_lookup_axfr | grep ".${username}.${TLD}" >/dev/null; then + printf 'User %s already exists!\n' "${username}" | tee >(cat 1>&2) | /usr/lib/wagon/http_res 409 exit fi # Get all peer IPs if ! peers="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create new IPs @@ -59,7 +59,7 @@ ipv4="${IPV4_NET%.*.*}.${usernumber}.${hostnumber}" ipv6="${IPV6_NET%:*:*}:${usernumber}:${hostnumber}" if ! printf 'IP addresses for %s created: %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to create IP addresses for %s!' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create wg config @@ -68,7 +68,7 @@ pubkey="$(echo "${privkey}" | /usr/bin/wg pubkey)" address="${ipv4}/${IPV4_NET##*/},${ipv6}/${IPV6_NET##*/}" # Update nameserver -if /usr/lib/wgapi/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" +if /usr/lib/wagon/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" then printf 'Successfully added %s to DNS server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s %s %s to DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & @@ -76,9 +76,9 @@ fi & # Create SSL cert if ! sudo mkdir "${SSL_CONFIG_DIR:?}/${username:?}/"; then printf 'Failed to create directory %s/%s/:\n' "${SSL_CONFIG_DIR}" "${username}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi -if /usr/lib/wgapi/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" +if /usr/lib/wagon/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" then printf 'Successfully signed SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to create certs for %s with IPS: %s %s!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi @@ -92,23 +92,23 @@ while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey se if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/${IPV4_NET#*/},${server_ipv6}/${IPV6_NET#*/}\nEndpoint=${server_endpoint}\n" # Add new user to local wireguard - if /usr/lib/wgapi/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then + if /usr/lib/wagon/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then printf 'Added %s to local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s to local wireguard server!\n' "${domain}" >&2 # TODO: clear existing progress - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Remote server else server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/32,${server_ipv6}/128\nEndpoint=${server_endpoint}\n" # Send new user config to federated server - if /usr/lib/wgapi/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then + if /usr/lib/wagon/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then printf 'Sent %s to remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to send %s to remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 fi fi -done &2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -21,9 +21,9 @@ printf '%s token was valid\n' "${ip}" >&2 username="$(<<<"${qs}" grep -oP 'user=(.*)' | sed 's/^user=//')" usernumber="$(<<<"${qs}" grep -oP 'un=(.*)' | sed 's/^un=//')" if [[ "${username}" == "" ]]; then - printf 'ERROR! Username missing!\n' | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 400; exit + printf 'ERROR! Username missing!\n' | tee >(cat 1>&2) | /usr/lib/wagon/http_res 400; exit elif [[ "${usernumber}" == "" ]]; then - printf 'ERROR! Usernumber missing!\n' | tee >(cat 1>&2) |/usr/lib/wgapi/http_res 400; exit + printf 'ERROR! Usernumber missing!\n' | tee >(cat 1>&2) |/usr/lib/wagon/http_res 400; exit else printf 'Admin %s requested deletion of user "%s" with usernumber "%s"\n' "${ip}" "${username}" "${usernumber}" >&2 fi @@ -31,20 +31,20 @@ fi # Get all peer IPs if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out the user's user_peers="$(grep "${IPV4_NET%.*.*}.${usernumber}." <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == "" ]; then printf "ERROR! Couldn't find any peers for %s!\n" "${IPV4_NET%.*.*}.${usernumber}." >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Get user peer domains -if ! peers="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peers}")"; then +if ! peers="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peers}")"; then printf 'ERROR! Failed to retrieve domains for peers for %s!\n' "${IPV4_NET%.*.*}.${usernumber}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Run this function in parallel in the while loop below @@ -55,20 +55,20 @@ for_server_do() { server_endpoint="${5}"; server_url="${6}"; server_secret="${7}" if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then # Local server - if /usr/lib/wgapi/wg_peer_del "${pubkey}"; then + if /usr/lib/wagon/wg_peer_del "${pubkey}"; then printf 'Deleted %s from local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to delete %s from local wireguard server!\n' "${domain}" >&2 # TODO: clear existing progress - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi else # Federated server - if /usr/lib/wgapi/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then + if /usr/lib/wagon/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then printf 'Deleted %s from remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to delete %s from remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi fi } @@ -82,10 +82,10 @@ delete_peer() { # Remove peer from wireguard while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_url server_secret do for_server_do "${server_hostname}" "${server_ipv4}" "${server_ipv6}" "${server_pubkey}" "${server_endpoint}" "${server_url}" "${server_secret}" & - done &2 else printf 'ERROR! Failed to delete %s %s %s from DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi @@ -104,4 +104,4 @@ fi # Do it before updating nameserver and certs because # if wireguard worked, there's no going back. The admin # can clean up missing records and certs after checking the logs -printf 'Deleted %s' "${username}" | /usr/lib/wgapi/http_res 202 \ No newline at end of file +printf 'Deleted %s' "${username}" | /usr/lib/wagon/http_res 202 \ No newline at end of file diff --git a/back/lib/dashboard/peer/add b/back/lib/dashboard/peer/add index 85eacb8..4b080ec 100755 --- a/back/lib/dashboard/peer/add +++ b/back/lib/dashboard/peer/add @@ -4,7 +4,7 @@ # USAGE: add $remote_ip $querystring # QUERYSTRING: ?t=$token&name=$hostname -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" # Check hostname @@ -12,31 +12,31 @@ hostname="$(<<<"${qs}" grep -oP 'name=(.*)' | sed 's/^name//' | xargs | tr -dc ' printf '%s requested new peer with hostname %s\n' "${ip}" "${hostname}" >&2 if ! [[ ${#hostname} -ge 3 ]]; then printf 'Rejecting hostname %s because it is too short.\n' "${hostname}" >&2 - printf 'Hostname too short\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname too short\n' | /usr/lib/wagon/http_res 400; exit fi # Check token token_fail(){ printf 'Rejecting %s request for new peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 # Check user -username="$(/usr/lib/wgapi/ns_lookup_rdns "${ip}" | cut -d'.' -f2)" || ( +username="$(/usr/lib/wagon/ns_lookup_rdns "${ip}" | cut -d'.' -f2)" || ( printf 'User domains not found for %s\n' "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit ) printf '%s identified as %s\n' "${ip}" "${username}" >&2 domain="${hostname}.${username}.${TLD}" # Check if new peer already exists -if /usr/lib/wgapi/ns_lookup_send "${domain}" >/dev/null; then +if /usr/lib/wagon/ns_lookup_send "${domain}" >/dev/null; then printf '%s.%s.%s already exists!\n' "${hostname}" "${username}" "${TLD}" >&2 - printf 'Hostname %s already exists!\n' "${hostname}" | /usr/lib/wgapi/http_res 409; exit + printf 'Hostname %s already exists!\n' "${hostname}" | /usr/lib/wagon/http_res 409; exit fi # Create new domain @@ -46,27 +46,27 @@ printf 'New domain will be %s\n' "${domain}" >&2 # Get peer IP list if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out this user's user_peers="$(grep "${ip%[.:]*}" <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == "" ]; then printf "ERROR! %s accessed the dashboard but isn't on the network!\n" "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Get domains -if ! peers="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peers}")"; then +if ! peers="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peers}")"; then printf 'ERROR! Failed to parse peers for %s!\n' "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Make sure hostname isn't taken hostnames="$(<<<"${peers}" awk '{print $1}' | cut -d'.' -f1)" if <<<"${hostnames}" grep -x "${hostname}"; then printf 'User %s already has a host named %s!\n' "${username}" "${hostname}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create new IPs @@ -82,7 +82,7 @@ ipv4="${IPV4_NET%.*.*}.${usernumber}.${hostnumber}" ipv6="${IPV6_NET%:*:*}:${usernumber}:${hostnumber}" if ! printf 'IP addresses for %s created: %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to create IP addresses for %s!' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create wg config @@ -91,13 +91,13 @@ pubkey="$(echo "${privkey}" | /usr/bin/wg pubkey)" address="${ipv4}/${IPV4_NET##*/},${ipv6}/${IPV6_NET##*/}" # Update nameserver -if /usr/lib/wgapi/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" +if /usr/lib/wagon/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" then printf 'Successfully added %s to DNS server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s %s %s to DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & # Create SSL cert -if /usr/lib/wgapi/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" +if /usr/lib/wagon/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" then printf 'Successfully signed SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to create certs for %s with IPS: %s %s!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi @@ -111,22 +111,22 @@ while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey se if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/${IPV4_NET#*/},${server_ipv6}/${IPV6_NET#*/}\nEndpoint=${server_endpoint}\n" # Add new user to local wireguard - if /usr/lib/wgapi/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then + if /usr/lib/wagon/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then printf 'Added %s to local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s to local wireguard server!\n' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Remote server else server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/32,${server_ipv6}/128\nEndpoint=${server_endpoint}\n" # Send new user config to federated server - if /usr/lib/wgapi/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then + if /usr/lib/wagon/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then printf 'Sent %s to remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to send %s to remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 fi fi -done &2 # Check token token_fail(){ printf 'Rejecting %s request to delete peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -24,33 +24,33 @@ printf '%s token was valid\n' "${ip}" >&2 # Get peer IP list if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out this user's user_peers="$(grep "${ip%[.:]*}" <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == "" ]; then printf "ERROR! %s accessed the dashboard but isn't on the network!\n" "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Get peer domains -if ! peer="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peers}" | grep "${pubkey}")"; then +if ! peer="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peers}" | grep "${pubkey}")"; then printf 'ERROR! Peer %s not found for user %s!\n' "${pubkey}" "${ip}" >&2 & - printf 'Peer not found\n' | /usr/lib/wgapi/http_res 404; exit + printf 'Peer not found\n' | /usr/lib/wagon/http_res 404; exit fi domain="$(<<<"${peer}" cut -f1)" ipv4="$(<<<"${peer}" cut -f2)" ipv6="$(<<<"${peer}" cut -f3)" if ! printf 'Delete request was for %s %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to collect peer data: %s %s %s\n' "${domain}" "${ipv4}" "${ipv6}" >&2 & - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Make sure user isn't deleting their own peer if [ "${ip}" == "${ipv4}" ] || [ "${ip}" == "${ipv6}" ]; then printf 'User requested to delete peer from itself: %s.\n' "${ip}" >&2 - printf 'You cannot delete a peer from itself!' | /usr/lib/wgapi/http_res 400; exit + printf 'You cannot delete a peer from itself!' | /usr/lib/wagon/http_res 400; exit fi hostname="$(<<<"${domain}" cut -d'.' -f1)" @@ -65,34 +65,34 @@ for_server_do() { server_endpoint="${5}"; server_url="${6}"; server_secret="${7}" if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then # Local server - if /usr/lib/wgapi/wg_peer_del "${pubkey}"; then + if /usr/lib/wagon/wg_peer_del "${pubkey}"; then printf 'Deleted %s from local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to delete %s from local wireguard server!\n' "${domain}" >&2 # TODO: clear existing progress - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi else # Federated server - if /usr/lib/wgapi/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then + if /usr/lib/wagon/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then printf 'Deleted %s from remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to delete %s from remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi fi }; while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_url server_secret do for_server_do "${server_hostname}" "${server_ipv4}" "${server_ipv6}" "${server_pubkey}" "${server_endpoint}" "${server_url}" "${server_secret}" & -done &2 else printf 'ERROR! Failed to delete %s %s %s from DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & # Create SSL cert -if /usr/lib/wgapi/ssl_peer_del "${hostname:?}" "${username:?}" +if /usr/lib/wagon/ssl_peer_del "${hostname:?}" "${username:?}" then printf 'Successfully deleted SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to delete certs for %s!\n' "${domain}" >&2 fi @@ -101,4 +101,4 @@ fi # Do it before updating nameserver and certs because # if wireguard worked, there's no going back. The admin # can clean up missing records and certs after checking the logs -printf 'Deleted %s.%s.%s' "${hostname}" "${username}" "${TLD}" | /usr/lib/wgapi/http_res 202 \ No newline at end of file +printf 'Deleted %s.%s.%s' "${hostname}" "${username}" "${TLD}" | /usr/lib/wagon/http_res 202 \ No newline at end of file diff --git a/back/lib/dashboard/peer/list b/back/lib/dashboard/peer/list index 1f9bdd8..23e430f 100755 --- a/back/lib/dashboard/peer/list +++ b/back/lib/dashboard/peer/list @@ -3,36 +3,36 @@ # DESCRIPTION: List a user's peers # USAGE: list $remote_ip -source /etc/wgapi/config +source /etc/wagon/config ip="${1}" printf '%s requested peer listing...\n' "${ip}" >&2 # Create token if needed -token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" if [ "${token}" == "" ]; then printf 'Creating token for %s...\n' "${ip}" >&2 token="$(>/var/local/wgapi/tokens + printf '%s\t%s\n' "${ip}" "${token}" >>/var/local/wagon/tokens fi # Get peer IP list if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out this user's user_peers="$(grep "${ip%[.:]*}" <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == '' ]; then printf "ERROR! %s accessed the dashboard but isn't on the network!\n" "${ip}" >&2 - printf 'User not found!\n' | /usr/lib/wgapi/http_res 403; exit + printf 'User not found!\n' | /usr/lib/wagon/http_res 403; exit fi # Get domains for each one -if peers="[$(/usr/lib/wgapi/ips_to_peers json <<<"${user_peers}")]"; then - printf '{"token":"%s","peers":%s}' "${token}" "${peers}" | /usr/lib/wgapi/http_res 200 'application/json' +if peers="[$(/usr/lib/wagon/ips_to_peers json <<<"${user_peers}")]"; then + printf '{"token":"%s","peers":%s}' "${token}" "${peers}" | /usr/lib/wagon/http_res 200 'application/json' printf 'Sent peers to user %s\n' "${ip}" >&2 else printf 'ERROR: Failed to lookup domains for user: %s\n' "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi diff --git a/back/lib/dashboard/ssl b/back/lib/dashboard/ssl index edc7290..7d62c7d 100755 --- a/back/lib/dashboard/ssl +++ b/back/lib/dashboard/ssl @@ -4,7 +4,7 @@ # USAGE: ssl remote_ip querystring # QUERYSTRING: ?host=$hostname&ext=crt -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" # Parse querystring @@ -13,42 +13,42 @@ ext="$(<<<"${qs}" grep -oP 'ext=(.*)' | sed 's/^ext=//' | xargs)" if ! file="${hostname:?}/server.${ext:?}"; then printf 'ERROR! Hostname "%s" or extension "%s" missing!\n' "${hostname}" "${ext}" >&2 - printf 'Hostname or extension missing!\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname or extension missing!\n' | /usr/lib/wagon/http_res 400; exit else printf 'User %s requested SSL file %s\n' "${ip}" "${file}" >&2 fi # Make sure extension is 'crt' or 'key' if [ "${ext}" != 'crt' ] && [ "${ext}" != 'key' ]; then - printf 'Invalid extension: %s\n' "${ext}" | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 400; exit + printf 'Invalid extension: %s\n' "${ext}" | tee >(cat 1>&2) | /usr/lib/wagon/http_res 400; exit fi # Get username -if ! domain="$(/usr/lib/wgapi/ns_lookup_rdns "${ip}")"; then - printf 'ERROR! Failed to lookup domain from user IP %s\n' "${ip}" | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 500 +if ! domain="$(/usr/lib/wagon/ns_lookup_rdns "${ip}")"; then + printf 'ERROR! Failed to lookup domain from user IP %s\n' "${ip}" | tee >(cat 1>&2) | /usr/lib/wagon/http_res 500 exit 7 fi; if ! username="$(<<<"${domain}" cut -d'.' -f2)"; then printf 'ERROR! Failed to parse username from domain "%s"\n' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit else printf 'User %s is "%s"\n' "${ip}" "${username}" >&2 fi if ! path="${SSL_CONFIG_DIR:?}/${username:?}/${file}"; then printf 'ERROR! Username "%s" or SSL_CONFIG_DIR "%s" missing!\n' "${username}" "${SSL_CONFIG_DIR}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Check that the file exists if ! [ -f "${path}" ]; then printf 'ERROR! File missing: "%s"\n' "${path}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Try to return it to the user -if <"${path}" /usr/lib/wgapi/http_res 200; then +if <"${path}" /usr/lib/wagon/http_res 200; then printf 'Sent SSL file "%s" to %s\n' "${path}" "${username}" >&2 else printf 'ERROR! Failed to return file: "%s"\n' "${path}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi diff --git a/back/lib/fed/peer/add b/back/lib/fed/peer/add index 0a68c61..0d67a9b 100755 --- a/back/lib/fed/peer/add +++ b/back/lib/fed/peer/add @@ -4,7 +4,7 @@ # USAGE: add $remote_ip $querystring # QUERYSTRING: ?secret=$secret&pubkey=$pubkey&psk=$psk&ips=$allowedips -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" secret="$(<<<"${qs}" grep -oP 'secret=(.*)' | sed 's/^secret=//' | xargs)" pubkey="$(<<<"${qs}" grep -oP 'pubkey=(.*)' | sed 's/^pubkey=//' | xargs)" @@ -12,24 +12,24 @@ psk="$(<<<"${qs}" grep -oP 'psk=(.*)' | sed 's/^psk=//' | xargs)" allowedips="$(<<<"${qs}" grep -oP 'ips=(.*)' | sed 's/^ips=//' | xargs)" # Check that requesting ip is in the servers file -if ! sed '/^#/d' /etc/wgapi/servers | cut -f2,3 | grep -qw "${ip}"; then +if ! sed '/^#/d' /etc/wagon/servers | cut -f2,3 | grep -qw "${ip}"; then printf "ERROR! Federated server %s requested to create new peer but isn't in servers file!/n" "${ip}" >&2 - /usr/lib/wgapi/http_res 403; exit + /usr/lib/wagon/http_res 403; exit fi # Check server secret -local_secret="$(grep -w "^${LOCAL_SERVER}" /etc/wgapi/servers | cut -f7)" +local_secret="$(grep -w "^${LOCAL_SERVER}" /etc/wagon/servers | cut -f7)" if ! [ "${local_secret}" == "${secret}" ]; then printf "ERROR! Federated server %s provided a secret, %s, that doesn't match the one in our servers file, %s\n" "${ip}" "${secret}" "${local_secret}" >&2 - /usr/lib/wgapi/http_res 403; exit + /usr/lib/wagon/http_res 403; exit fi # Add peer to wireguard -if /usr/lib/wgapi/wg_peer_add "${pubkey}" "${psk}" "${allowedips}"; then +if /usr/lib/wagon/wg_peer_add "${pubkey}" "${psk}" "${allowedips}"; then printf 'Added %s to wireguard.\n' "${pubkey}" >&2 else printf 'ERROR! Failed to add %s to wireguard!\n' "${pubkey}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi -/usr/lib/wgapi/http_res 200 +/usr/lib/wagon/http_res 200 diff --git a/back/lib/fed/peer/del b/back/lib/fed/peer/del index 961ff40..f2e40c2 100755 --- a/back/lib/fed/peer/del +++ b/back/lib/fed/peer/del @@ -4,30 +4,30 @@ # USAGE: del $remote_ip $querystring # QUERYSTRING: ?secret=$secret&pubkey=$pubkey -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" secret="$(<<<"${qs}" grep -oP 'secret=(.*)' | sed 's/^secret=//' | xargs)" pubkey="$(<<<"${qs}" grep -oP 'pubkey=(.*)' | sed 's/^pubkey=//' | xargs)" # Check that requesting ip is in the servers file -if ! sed '/^#/d' /etc/wgapi/servers | cut -f2,3 | grep -qw "${ip}"; then +if ! sed '/^#/d' /etc/wagon/servers | cut -f2,3 | grep -qw "${ip}"; then printf "ERROR! Federated server %s requested to create new peer but isn't in servers file!/n" "${ip}" >&2 - /usr/lib/wgapi/http_res 403; exit + /usr/lib/wagon/http_res 403; exit fi # Check server secret -local_secret="$(grep -w "^${LOCAL_SERVER}" /etc/wgapi/servers | cut -f7)" +local_secret="$(grep -w "^${LOCAL_SERVER}" /etc/wagon/servers | cut -f7)" if ! [ "${local_secret}" == "${secret}" ]; then printf "ERROR! Federated server %s provided a secret, %s, that doesn't match the one in our servers file, %s\n" "${ip}" "${secret}" "${local_secret}" >&2 - /usr/lib/wgapi/http_res 403; exit + /usr/lib/wagon/http_res 403; exit fi # Delete peer from wireguard -if /usr/lib/wgapi/wg_peer_del "${pubkey}"; then +if /usr/lib/wagon/wg_peer_del "${pubkey}"; then printf 'Deleted %s from wireguard.\n' "${pubkey}" >&2 else printf 'ERROR! Failed to delete %s from wireguard!\n' "${pubkey}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi -/usr/lib/wgapi/http_res 200 \ No newline at end of file +/usr/lib/wagon/http_res 200 \ No newline at end of file diff --git a/back/lib/fed_peer_add b/back/lib/fed_peer_add index a0b4cc4..14fa77a 100755 --- a/back/lib/fed_peer_add +++ b/back/lib/fed_peer_add @@ -3,7 +3,7 @@ # DESCRIPTION: Sends details about a new peer to a federated server # USAGE: fed_peer_add url secret pubkey psk allowedips -source /etc/wgapi/config +source /etc/wagon/config url="${1}"; secret="${2}"; pubkey="${3}"; psk="${4}"; allowedips="${5}" if curl --silent -o /dev/null --fail --request POST --cacert "${SSL_CA_CERT}" "${url}?secret=${secret}&pubkey=${pubkey}&psk=${psk}&ips=${allowedips}"; then diff --git a/back/lib/fed_peer_del b/back/lib/fed_peer_del index dd75688..c53f782 100755 --- a/back/lib/fed_peer_del +++ b/back/lib/fed_peer_del @@ -3,7 +3,7 @@ # DESCRIPTION: Sends details to a federated server about a peer to be deleted # USAGE: fed_peer_del url secret pubkey -source /etc/wgapi/config +source /etc/wagon/config url="${1}"; secret="${2}"; pubkey="${3}" if curl --silent -o /dev/null --fail --request DELETE --cacert "${SSL_CA_CERT}" "${url}?secret=${secret}&pubkey=${pubkey}"; then diff --git a/back/lib/http_res b/back/lib/http_res index 8454344..877e6e1 100755 --- a/back/lib/http_res +++ b/back/lib/http_res @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/http/res +# FILE: wagon:back/lib/http/res # DESCRIPTION: Formats an http response from arguments # USAGE: [printf "message" |] res [200] [text/plain] diff --git a/back/lib/ips_to_peers b/back/lib/ips_to_peers index 84de325..940db2b 100755 --- a/back/lib/ips_to_peers +++ b/back/lib/ips_to_peers @@ -9,11 +9,11 @@ # 5: Invalid format # 6: Config file not found -source /etc/wgapi/config +source /etc/wagon/config format="${1}" # Perform AXFR lookup -res="$(/usr/lib/wgapi/ns_lookup_axfr)" || exit 4 +res="$(/usr/lib/wagon/ns_lookup_axfr)" || exit 4 # This should read from stdin # TODO: Run this loop in parallel diff --git a/back/lib/ns_lookup_axfr b/back/lib/ns_lookup_axfr index 9cd7765..7f50541 100755 --- a/back/lib/ns_lookup_axfr +++ b/back/lib/ns_lookup_axfr @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns_lookup_rxfr +# FILE: wagon:back/lib/ns_lookup_rxfr # DESCRIPTION: Get all records # USAGE: ns_lookup_rxfr # OUTPUT: The complete set of records for the TLD @@ -11,9 +11,9 @@ # 7: nslookup refused # 8: nslookup error -source /etc/wgapi/config +source /etc/wagon/config -res="$(/usr/lib/wgapi/ns_lookup_send "-query=AXFR" "${TLD}.")" +res="$(/usr/lib/wagon/ns_lookup_send "-query=AXFR" "${TLD}.")" case $? in 0) printf '%s' "${res}"; exit 0;; 4) printf 'Domain for %s not found!\n' "${1}" >&2; exit 4;; diff --git a/back/lib/ns_lookup_rdns b/back/lib/ns_lookup_rdns index 078f86d..a6f5828 100755 --- a/back/lib/ns_lookup_rdns +++ b/back/lib/ns_lookup_rdns @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns_lookup_rdns +# FILE: wagon:back/lib/ns_lookup_rdns # DESCRIPTION: Get a domain from an IP address # USAGE: rdns ip # OUTPUT: The domain for that IP @@ -9,9 +9,9 @@ # 5: nslookup not found # 6: Bad usage -source /etc/wgapi/config +source /etc/wagon/config -domain="$(/usr/lib/wgapi/ns_lookup_send "${1}")" +domain="$(/usr/lib/wagon/ns_lookup_send "${1}")" case $? in 0) printf '%s' "${domain%.}" | cut -d'=' -f2 | xargs -0; exit 0;; 4) printf 'Domain for %s not found!\n' "${1}" >&2; exit 3;; diff --git a/back/lib/ns_lookup_send b/back/lib/ns_lookup_send index c64f1bf..b94434b 100755 --- a/back/lib/ns_lookup_send +++ b/back/lib/ns_lookup_send @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns_lookup_send +# FILE: wagon:back/lib/ns_lookup_send # DESCRIPTION: Send nslookup command to DNS master server # USAGE: send [option] cmd # ERRORS: @@ -8,7 +8,7 @@ # 5: other nslookup error # 6: nslookup refused -source /etc/wgapi/config +source /etc/wagon/config # Ignore SC2068 and leave ${@} unquoted so it can expand if ! res="$(/usr/bin/nslookup ${@} "${DNS_MASTER}")" diff --git a/back/lib/ns_update_add b/back/lib/ns_update_add index 6c25446..a6486d6 100755 --- a/back/lib/ns_update_add +++ b/back/lib/ns_update_add @@ -1,14 +1,14 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/add +# FILE: wagon:back/lib/ns/update/add # DESCRIPTION: Add a new peer's domain to nameserver # USAGE: add domain ipv4 ipv6 -source /etc/wgapi/config +source /etc/wagon/config -/usr/lib/wgapi/ns_update_send "update add ${1}. ${DNS_TTL} A ${2} +/usr/lib/wagon/ns_update_send "update add ${1}. ${DNS_TTL} A ${2} update add ${1}. ${DNS_TTL} AAAA ${3} update add *.${1}. ${DNS_TTL} CNAME ${1}. send -update add $(/usr/lib/wgapi/ns_update_rev_ipv4 "${2}") ${DNS_TTL} PTR ${1}. +update add $(/usr/lib/wagon/ns_update_rev_ipv4 "${2}") ${DNS_TTL} PTR ${1}. send -update add $(/usr/lib/wgapi/ns_update_rev_ipv6 "${3}") ${DNS_TTL} PTR ${1}." || exit 1 +update add $(/usr/lib/wagon/ns_update_rev_ipv6 "${3}") ${DNS_TTL} PTR ${1}." || exit 1 diff --git a/back/lib/ns_update_del b/back/lib/ns_update_del index 0c639b8..92e2af7 100755 --- a/back/lib/ns_update_del +++ b/back/lib/ns_update_del @@ -1,14 +1,14 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/del +# FILE: wagon:back/lib/ns/update/del # DESCRIPTION: Use nsupdate to delete host RRs # USAGE: del domain ipv4 ipv6 -source /etc/wgapi/config +source /etc/wagon/config -/usr/lib/wgapi/ns_update_send "update delete ${1}. A +/usr/lib/wagon/ns_update_send "update delete ${1}. A update delete ${1}. AAAA update delete *.${1}. CNAME send -update delete $(/usr/lib/wgapi/ns_update_rev_ipv4 "${2}") PTR +update delete $(/usr/lib/wagon/ns_update_rev_ipv4 "${2}") PTR send -update delete $(/usr/lib/wgapi/ns_update_rev_ipv6 "${3}") PTR" || exit 1 +update delete $(/usr/lib/wagon/ns_update_rev_ipv6 "${3}") PTR" || exit 1 diff --git a/back/lib/ns_update_rev_ipv4 b/back/lib/ns_update_rev_ipv4 index 76874d9..f9c89f5 100755 --- a/back/lib/ns_update_rev_ipv4 +++ b/back/lib/ns_update_rev_ipv4 @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/rev_ipv4 +# FILE: wagon:back/lib/ns/update/rev_ipv4 # DESCRIPTION: Returns the rDNS reversed version of an IPv4 address # USAGE: rev_ipv4 10.2.0.1 # OUTPUT: 1.0.2.10.in-addr.arpa diff --git a/back/lib/ns_update_rev_ipv6 b/back/lib/ns_update_rev_ipv6 index 7c9f64d..b328726 100755 --- a/back/lib/ns_update_rev_ipv6 +++ b/back/lib/ns_update_rev_ipv6 @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/rev_ipv6 +# FILE: wagon:back/lib/ns/update/rev_ipv6 # DESCRIPTION: Returns the rDNS reversed version of an IPv6 address # USAGE: rev_ipv6 ... # OUTPUT: ...ip6.arpa diff --git a/back/lib/ns_update_send b/back/lib/ns_update_send index 495a50f..62bef71 100755 --- a/back/lib/ns_update_send +++ b/back/lib/ns_update_send @@ -1,9 +1,9 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/send +# FILE: wagon:back/lib/ns/update/send # DESCRIPTION: Send stuff to the nsupdate server # USAGE: send cmd -source /etc/wgapi/config +source /etc/wagon/config printf 'server %s\n%s\nsend\n' "${DNS_MASTER}" "${1}" \ | nsupdate -y "${DNS_KEY}" | tee >(cat 1>&2) diff --git a/back/lib/ssl_peer_add b/back/lib/ssl_peer_add index 2cdb2f9..e20b433 100755 --- a/back/lib/ssl_peer_add +++ b/back/lib/ssl_peer_add @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ssl/peer/add +# FILE: wagon:back/lib/ssl/peer/add # DESCRIPTION: Create SSL certs for a new host # USAGE: add hostname username ipstring # ERRORS: @@ -7,7 +7,7 @@ # 7: openssl failed # 8: failed to set permissions -source /etc/wgapi/config +source /etc/wagon/config hostname="${1}"; username="${2}"; ipstring="${3}" # Make a directory for the new files diff --git a/back/lib/ssl_peer_del b/back/lib/ssl_peer_del index ccd0547..d99f088 100755 --- a/back/lib/ssl_peer_del +++ b/back/lib/ssl_peer_del @@ -1,9 +1,9 @@ #!/bin/bash -# FILE: wgapi:back/lib/ssl/peer/del +# FILE: wagon:back/lib/ssl/peer/del # DESCRIPTION: Delete SSL cert for a removed device # USAGE: del hostname username -source /etc/wgapi/config +source /etc/wagon/config hostname="${1}"; username="${2}" if ! sudo rm -rf "${SSL_CONFIG_DIR:?}/${username:?}/${hostname:?}/" 2>/dev/null; then diff --git a/back/lib/wg_peer_add b/back/lib/wg_peer_add index d36f7ec..fb76cf8 100755 --- a/back/lib/wg_peer_add +++ b/back/lib/wg_peer_add @@ -1,9 +1,9 @@ #!/bin/bash -# FILE: wgapi:back/lib/wg/peer/add +# FILE: wagon:back/lib/wg/peer/add # DESCRIPTION: Add a new peer to a wireguard interface # USAGE: add pubkey psk allowedips -source /etc/wgapi/config +source /etc/wagon/config pubkey="${1}"; psk="${2}"; allowedips="${3}" if ! res="$(printf '%s\n' "${psk}" | sudo /usr/bin/wg set "${TLD}" peer "${pubkey}" preshared-key /dev/stdin allowed-ips "${allowedips}")"; then diff --git a/back/lib/wg_peer_del b/back/lib/wg_peer_del index 3f73481..72d22b6 100755 --- a/back/lib/wg_peer_del +++ b/back/lib/wg_peer_del @@ -1,9 +1,9 @@ #!/bin/bash -# FILE: wgapi:back/lib/wg/peer/del +# FILE: wagon:back/lib/wg/peer/del # DESCRIPTION: Delete a peer from a wireguard interface # USAGE: del pubkey -source /etc/wgapi/config +source /etc/wagon/config if ! res="$(sudo /usr/bin/wg set "${TLD}" peer "${1}" remove)"; then printf 'ERROR! Wireguard failed: %s\n' "${res}" >&2 diff --git a/back/lib/wg_user_list b/back/lib/wg_user_list index 59e92b0..b8afdc3 100755 --- a/back/lib/wg_user_list +++ b/back/lib/wg_user_list @@ -1,15 +1,15 @@ #!/bin/bash -# FILE: wgapi:back/lib/wg/user/list +# FILE: wagon:back/lib/wg/user/list # DESCRIPTION: List all devices from all users # USAGE: list json|tsv -source /etc/wgapi/config +source /etc/wagon/config /usr/bin/wg show "${TLD}" allowed-ips | \ while IFS=$' ' read -r pubkey ipv4 ipv6; do ipv4="${ipv4%%/*}" ipv6="${ipv6%%/*}" - domain="$(/usr/lib/wgapi/ns_lookup_rdns "${ipv4}")" || exit 4 + domain="$(/usr/lib/wagon/ns_lookup_rdns "${ipv4}")" || exit 4 username="$(<<<"${domain}" cut -d'.' -f2)" hostname="$(<<<"${domain}" cut -d'.' -f1)" case "${2}" in diff --git a/docker-compose.yml.sample b/docker-compose.yml.sample index 7aa4b56..b4dca55 100644 --- a/docker-compose.yml.sample +++ b/docker-compose.yml.sample @@ -1,7 +1,7 @@ version: '3' networks: - wgapi: - name: wgapi + wagon: + name: wagon ipam: config: - subnet: "172.19.0.0/16" @@ -13,22 +13,22 @@ services: dockerfile: dashboard.Dockerfile args: PORT: 4442 - container_name: wgapi-dashboard-backend + container_name: wagon-dashboard-backend cap_add: - NET_ADMIN network_mode: host volumes: - '/etc/ssl/private:/etc/ssl/private' - - './etc:/etc/wgapi:ro' - - '/var/log/wgapi.log:/var/log/apache2/error.log' + - './etc:/etc/wagon:ro' + - '/var/log/wagon.log:/var/log/apache2/error.log' dashboard-frontend: build: context: front dockerfile: dashboard.Dockerfile - container_name: wgapi-dashboard-frontend + container_name: wagon-dashboard-frontend networks: - wgapi: + wagon: ipv4_address: 172.19.0.2 admin-backend: @@ -40,19 +40,19 @@ services: cap_add: - NET_ADMIN network_mode: host - container_name: wgapi-admin-backend + container_name: wagon-admin-backend volumes: - - '/var/log/wgapi.log:/var/log/apache2/error.log' + - '/var/log/wagon.log:/var/log/apache2/error.log' - '/etc/ssl/private:/etc/ssl/private' - - './etc:/etc/wgapi:ro' + - './etc:/etc/wagon:ro' admin-frontend: build: context: front dockerfile: admin.Dockerfile - container_name: wgapi-admin-frontend + container_name: wagon-admin-frontend networks: - wgapi: + wagon: ipv4_address: 172.19.0.3 fed-backend: @@ -64,7 +64,7 @@ services: cap_add: - NET_ADMIN network_mode: host - container_name: wgapi-fed-backend + container_name: wagon-fed-backend volumes: - - '/var/log/wgapi.log:/var/log/apache2/error.log' - - './etc:/etc/wgapi:ro' + - '/var/log/wagon.log:/var/log/apache2/error.log' + - './etc:/etc/wagon:ro' diff --git a/etc/servers.sample b/etc/servers.sample index 56803da..7b55126 100644 --- a/etc/servers.sample +++ b/etc/servers.sample @@ -1,3 +1,3 @@ # host ipv4 ipv6 pubkey wg-endpoint admin-endpoint secret -myhost1 10.3.0.1 fd69:1337:0:420:f4:f3:0:1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= 123.123.123.123:51820 https://wgapi-admin.myhost2.tld XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -myhost2 10.3.0.2 fd69:1337:0:420:f4:f3:0:2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= 234.234.234.234:51820 https://wgapi-admin.myhost2.tld XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +myhost1 10.3.0.1 fd69:1337:0:420:f4:f3:0:1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= 123.123.123.123:51820 https://wagon-admin.myhost2.tld XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +myhost2 10.3.0.2 fd69:1337:0:420:f4:f3:0:2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= 234.234.234.234:51820 https://wagon-admin.myhost2.tld XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX From 27cb4059a522ec5c810281ae2dca3b29f02c71cb Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 13:48:58 -0600 Subject: [PATCH 02/40] Small README formatting fixes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9d2a417..f917a30 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # wagon -2022-2023 Keith Irwin ([ki9.gf4.pw](https://ki9.gf4.pw/)) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +2022-2023 Keith Irwin ([ki9.gf4.pw](https://ki9.gf4.pw/))\ +[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) `wagon` is a an api, user dashboard, and admin ui for managing devices and services on a dns-enabled wireguard network. It was built with small web communities in mind. From ce87632deecbef0424c43c2c3b567a713ef82af3 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 13:53:08 -0600 Subject: [PATCH 03/40] Better contact section --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index f917a30..47edf5f 100644 --- a/README.md +++ b/README.md @@ -106,8 +106,4 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem ## Contributing -If you think you can help with any of these bulletpoints, please reach out to me: - -[@ki9:gf4.pw](matrix:@ki9:gf4.pw) on matrix -[wagon@ki9.gf4.pw](mailto:wagon@ki9.gf4.pw) by email -[https://ki9.gf4.pw/contact]() +If you think you can help with any of these bulletpoints, come by [#wagon:gf4.pw](https://matrix.to/#/#wagon:gf4.pw) on matrix. From cb179b02ef1d358136ad0f68e316e6099850ffa6 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 13:56:03 -0600 Subject: [PATCH 04/40] Finished thought --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 47edf5f..0a779ff 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem - The code probably contains hardcoded variables specific to gf4, that must be moved to configs/environment files - There is almost no documentation, and extensive tutorials are needed for the initial setup of wireguard, bind9, and the CA keys. - Future implementation of a mail relay, web proxy, and SIP server, and their respective tabs on the web dashboard - - Replacing + - Replacing some of the bash scripts with faster languages like c or rust. ## Contributing From eb1858a6f0ac99789c3909d443473a1445d1fa52 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 20:33:11 -0600 Subject: [PATCH 05/40] Improved text --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0a779ff..4a7599f 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,11 @@ IPv6 is also preconfigured for a `/96` subnet, with users getting their own `/11 - `B` is the username - `A` is hostname of the device -The TLD could be anything that isn't already a global TLD like `.com`. The recursive nameserver provides private wireguard IPs to on this private domain zone. It must be configured to answer `.mynet` queries only within its own network on `10.X.0.0/16`. This nameserver is then preconfigured in clients' wireguard configs' `DNS = ` setting. +The TLD could be anything that isn't already a global TLD like `.com`. The recursive nameserver takes these private domains as questions and provides private wireguard IPs as answers. It only responds to `.mynet` queries from its own network on `10.X.0.0/16`. This nameserver is then preconfigured in clients' wireguard configs' `DNS = ` setting. Optionally the community's TLD can be set as a search domain for the wireguard interface. **For example:** Your home pc could be `pc.myuser.mynet` and your phone `phone.myuser.mynet`. Either can ping up `phone.myfriend.mynet`. These would point to `10.11.1.1`, `10.11.1.2`, and `10.11.2.1` respectively - Servers (IPs with `Y=0`) have domains of the form `A.C`, as above. Wildcard subdomains are CNAMEd to their base address, that is, `*.phone.myuser.mynet` CNAMEs to `phone.myuser.mynet` and `*.smyerver.mynet` CNAMEs to `myserver.mynet`. Of course, this means no username can match a server hostname. + Servers (IPs with `Y=0`) have domains of the form `A.C`, as above. Wildcard subdomains are CNAMEd to their base address, that is, `*.phone.myuser.mynet` CNAMEs to `phone.myuser.mynet` and `*.myerver.mynet` CNAMEs to `myserver.mynet`. Of course, this means no username can match a server hostname. The nameserver is also preconfigured for rDNS so you can perform lookups on IP addresses: From 3cd7b371fd21dec218372dd7b13fe1ddcf9f8cd9 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 20:33:30 -0600 Subject: [PATCH 06/40] Added logo --- img/wagon-1000.png | Bin 0 -> 195413 bytes img/wagon.xcf | Bin 0 -> 355237 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/wagon-1000.png create mode 100644 img/wagon.xcf diff --git a/img/wagon-1000.png b/img/wagon-1000.png new file mode 100644 index 0000000000000000000000000000000000000000..dc517283c12fe6a630c7bd09400fac875f6d2d39 GIT binary patch literal 195413 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�m$Orq~@c}&>bLGZuoAz6JGAP-3JjxxBB(VQd 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 z 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

y)hC52%F@m5 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�ijHGLp7J}Jt2$F-)l{aEB#7NQ_Glk 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 literal 0 HcmV?d00001 diff --git a/img/wagon.xcf b/img/wagon.xcf new file mode 100644 index 0000000000000000000000000000000000000000..ad84a8c1d8dfc67dfe6644bacfe48ab5d2e9b831 GIT binary patch literal 355237 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%0Ar$uer($gFLrPaZb{ztEF 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�cu7REmodp%N;5x$nNceZ5JD}e|H{q`QJqE20y&2jYD(J=wq5YvZ zL6y&i&|1(}38(yh4gHwsBHW*WDj)NqeW8Lp91k4>{XMi3bRDz~bUWb$tXB%%!SnIB zZ-AZ#6=dQ#=tQW(DgCFQ4WXYw9pohR3!a-mpM?&E&VpVKRk+2_K2QMbT=~@wr97X) z^ET)}=nAOnX9jc;bQJV`DCNwj&51MwK($I>Coe`p*FtZBs)C+`j)r~-ZHB+YPAteL zayXoN)Ir?=1vU3~sv`NcJFPfZ%gi9+U;CdvJo=#Gul_ zgJh~BMDF(SVFo2Y^Olc6W^k$A=`V1WJ@$oO<={KJ9>q2oykBNK_#1py67wEMa+$$k zf1|rNc$eJ6*U+;90KxNvdF{C??Ox&PjZ3FMsrW9+^V?|e8WgN?I>LTn?ldh|ye zXM+)Tq^_DHj<=-(KG&Za>4Auz<&N7@5&fTND~$}1(u+o(Y$Fu({3vXA`XeouHwsYq zQ6v3Pdq)Z=U4NrSCP#t%Gs=!G8f8X%qlAyn;%+oSz(@B-r$^y1dNd2~(M{~$(HLAA zGe-a5rF*087$lKkrB@!q5`4^9GiLu-jC{I3&NXshIF@OC?AfWYoMvH1ob7S%Y&I;< z<{Z#Dvi8a5?m3;gFG+PnX+F|7)W%;O=2h_kIuozewl)W4->cZIv$cI#g|}K*H{|k} zi9_fCg{w`{lz%>7&MxuI z@lmz2S?G{pD7hWVsZ#f$n4$S$Lt8Si7VDcq4m~_SY9|F@_IiOjcik8IvE4p<9E?k+$ZTjQcVYd=c2Y%%-FR1jBu`H6WGi3-6iV+$OOmc z_?C*tf+p#dO`JUe)J-hr2FzGzeIVc#g9Br+H!!xQJ;ZslV{15C-Ih7cm9x)Do*kUC zU&<`*8AAfl@<)_g%-I;1!Ob9mtj=Z5Db;KJC3p<<4WColCeHEB#ZIp|XRlL`aauDx zA?oA`c!`b-&j2t*Vox7x5OnUtfB4U%v~A9H&U#hJRz5c?p=ouLacZ8+Ty!2*fY0@j zry7K){&~A3Qw{%g7Ybdo;cX;uRUrGD`cCG`#3@?`zaauAtVPS`H$O<48!7@J(+%ai zKE{Nx;Nko@6A4B(hI!{ZCv#rHQDDl?FG8P4a$#9UsK!+lGYT0eF0O>71S5H}o_uam zML8cLdkV%$l9T7>kU}TU_ncU|^7$O5LVL->aDop-V2zkM5vnzr3vxVRH$kFog)-+? zx5fA@O*W!W*f2zw$IvHNh5 z2{#Zfs{A{|p>Ef~W9LCT6FGJrQojRu?sr8O?`H!-dS{_I2XpbsSa;B7N9Bv_TDQ${ zF%I;%aHTN9Gfd_AWh0sC%e=QQ*mteNbjprjUiB))ShUB0wMSdoGpPumsaNg8*nyB z1SB2!Pr%vOd1X67Gy1`^di?yqo8fg@{NLeb#xp#t2U}8%{gL0C4>xr_Dv@AIYM`(e z(El!IXWhua_uj@9@x`~Y$qUorx64sJ?W|qM_pGlU!R2o=?vsVF<7>tii;S%JzhwiM zhpHDfvRUovRpFat!gk-L$0zGH_;AxbT1V^{${Knllt2C7IdkZteHA`eHVm`+MmZLL zF)B>hgo@XV# zNHn(C`waC`nV-?x`dQzi{v%rGv{^a#%l@c$DN0`ElHk&;K3BsYYJh8L`1M|L>EW&# z|J~QCFD!|IT?}kU&#V>!8*;0iDXH^?fKJ-337OXu-3P60rb52PL-}ZrcB*LyfB8<^&a|6m{}0E6-a2cZ+s(okzd z>_ZLC4{}RPkg`H+kf~@{Ian?%*;oa#7))rbh*GT9i7A$a{#h&wwOAxkF0qmEN>0l> zR)|A*!=)8k!mZuBA@G<(Sl*ptcZu2L-mT__3@ILp{_fC>R%pW#EX-Khu?QoZa&QZ> z(7coxhCfze)wT5EGy$tEnU@^K@{5()@C2_=S7td@1L_Um?^a$cutpS%BgL)q2yb}N z2$cC@Ig1?IiNBE+Ce(~54H?prBV=oevcqRqABi5ZTUWti8Z1C{Ciert`Qc%$}< z*>rz?$au19;)N$(a#T&0SMao>9W#j&++vaY#Y44nEaXp+XF*Yw_Q!Ki~0*YJY8-(pkaTRl)7guM`@z2hSt#ePI2`aovqZtNJ++KKj zXXkh(&^hN8!@?D#;=Ef-n&aB^>%-iMmBRxC=JrtN{&Kd=KQ{*pXWYg&nLamw6)WOO zaG?@%Uj8?5VM%y2a~{FOfH@}2XB*vjmZ|*T5G}0Lp-|7UTE1hVq}+{W&G|WY=>zV> zHi;4P&M$R){V+_9Z9*FyO#trg`Bk_ta#{iQLJU-)Q0_An!sbLQ5quYJ-h~--3oiU^ z4R;TNwk!o5^3k(P!O z@a?$T+@ENVDPc4zIl|T}In*{Pslj(H=0P*7pyzb2MRfuy&0d{Q)Px#?&&6)?r-?p* z>RuNEo96fMNTa6n1FslQ7!D6SjO(Ktv zYliHCP;4tkCDtK6AgQ%}Mbtm}`!%QxFiy5MS4Qb{7s@sW_ zU%bx|Olyb2U)2cZ1chBOvIBY?CeAx3Q;xUhX*3UH>&(6Pcy44d@%e;Vw|~6@;sJ`sU{DPV zlQnAr?pr4dqWCo%a>R_D$C`{>@$cg%(`$7xhUTv^YdvE1F-Gd+%JvsVKRsNtG9+rs zlS4agrNIKIOoxU692C-1?5wRYEA1-Z1@Z`C*30baQ^#2klW1n87rinVDfM06kFox8 ze}!39wtCg-HNXhUT$?XDr{s%m`=v6J=CAOGG+1rd1mtAh6U3_YkRS3oj5xPyB~kBD zVdLT&Y_1+*^NW}GOS8+CV|Hyt>BU^3s&XVPz9E#O4mK%>itR9j+j%EAyd!g%~0r! z%*Wx;;4!V%S--xf&C05pS>!GDmsrv@u6oQW>l#5-VAj{L`xeO8!bOV~<4p;BBJU-X+BAjM1$K zi|wsWs~OgkS9PyS);{7B!WmsH&#mfQ+3;2eYf7nc>S+D?V!Iy&Sk5ML{LqiGW1?IK zE6B_$TF8msd^N>v_aOg~Q4ej@5;~cv4B1~p{ef!-Q zjL%Dp*zPn@hWf0+HWPv6iheh0_Jkk_c9;+nXqw*BM`{6_H- zvCDv}O@jEaR^(Y3J=E^#eL5(`L>*;gFpPAR4ZP!rOxtB%nD1TLt~TQb5-#)Sc^}QB|k~e{;bF zh4#~qojPM?s2iqwdMK;lPE+Y&gGP-Xb~!U@PuO+OQIh)53;q>JR#N$vNK_=Hm!%S| z=_Rg_2^5KNehtM<8V(gv+@u%y?@-(%atbm0TiXIRf463D+H40F=wt5_%#VKLZTEKo zM)pYykX}HF-45;#&&_Eu1HS;cS z-t&n^vHKqhLynpG9kbQE>%C{*_o7sRRNKDe1e+Gb<~#5ByelPjVOvJY+Z|{&y=}Ib zcRYgn?|B6Ew&gzDrbxG=CjOS^-e$IvBJVQ_>mpbEFiXE_@L{+3gfEqsupD8okaF_c zf7{#Q@p>6w7xBkd@ayIc zA$5S zhqYx$DyyUv5&NXCm{-kfO3r`Nd&{`2`&&V$i7M5AU+BN$5mi7`ah7t_uGwl`{h1Fk z+o-+|F?IU#OD`Mzn%7K}xdX}i@8tnpqN=?QF=+9U#iRdfSPDb_!b(>ea&!Ryee0^6 zt>ew!OWw=Mq(@n@Z@l>iMK-SL)by5Inh*SKNZw!cH=A;=>DL8I>9T9_95%KkUiB0E zVWG7z_%C|IZCpNlSKHRLoS|SI1yi50+fvqh-h08|*SwT@`K4E0CfA_QMaA=|F8Q}n zb)~QmY4DG>68?Si9ae__hPsW3+CbH&Zvt)i=QjCx_g)M(%X2A+KHzD-_IiN-u+5Zn zwSCIwz|SVTf*e&OGlEy{S+&IpPodR+t};+!tB@S;2wE zneklvsAG7q`}80CR^Uo%w=zIJW1sb%->?o1b*OUgdrjz;{qP`4=1jDX5@^5(clN!#t}xIH>Uq zvC5}vxndjISAEx^?VIe0Z1l-wSXYLc&1`-NDChD&|2gjo-W1h}zR6VGSVLjwt ze1Q_!mssySrG=e&#&hrd=W~GHn$0H>$|q4nnJr;F8pOVcj6f?lZ=?52{@JL;R2x8` zv)D3E+bAA2HfX^t;BsUvtXs2*)2Fy7wH%pI-)yW^q}Gueqb#6INJKsn`Sh`7Hvi;? zfDryhgx9Q>6x!R!A=D?$2A?G#2cMj)eY&m9u?{jD+GAteZs^Fe6YS0P(=43yvgONJ zMX)wo+tOy2V2@fW9|IrX!lqd>$(%L3JqEO!*`HzHWuBTKE40dDB3$tE`o zV;HD*3x_4Fp$NmoIM18^9d8Lp$j2Yo>S+o2BvU8Ze}e78K|{^}MsF7`G>bhg5SOo@ zHD`HqzMabv#V~T0BZ5ci!bs0VjhXY4k(ctUDFw2&f~oR;{5-%hO#IBlrn5_j^14jA z?88Xk%fV56;Yl&clQJ9DiV|DCoJo@dcV9YhF0zACRDqSJWk=Z0?z$U2Xcr-QBh@HE zW$m%YRnO#X=`t|#?)*#S^?uS03!#F#q#s*g9#4mbfRDcYjyur>zgyADZ@K5N*0j7+ z^ARtL-CMoecY?d3sC9ynqlhXNbv!RDmTT3peQMgDZbsRelX@LF_f`S2wu;x7~4jm_n2xHGwOqd1w#KsQjprmsGPq%|H>KFn}AW5O?2ge*Y7N zP_7ilwTRAgK57Llt~@ko$GN1c5mEyY3V}y zmus&>ZMvicU2T$#>JSZnQoIKpe4QKqA+8d&k-9xi#KGTdJ_v(Ok24#VQ8g1K8ueAz zYr^k|U{`Iu`kD#>RXZ-bcPP8+Zeg9ePNb0TOMEnCw@l>}JV6O7oo^DIp^9}ir_b_i`EqMr86wQ*_pmWUp4TaW$zI zs6karQNy^tiLLXw97N{0+a&a~Ke$2}1~-gEl`0kN`p+$#q;U1CTH;&1eK$>ik#pt`KCfa)rC~Ou9C>CnPulNRR^+Zx4DOa{Ai!O)CBF6`IE6AO+qwB0@CJX=w31;#?2*KGMQc>o@M&P8t z&EBmX7@<%K;=b$}b~^#0G+e%1-K!c@_t9tMnp`0cu|FVgiAx_RV5WU9|3D77F5*5Q z>bsWx7W@XzHbr%%LaS3KJ7&gi_qE-MXSEJ|`-Fce=1Hm`SFvGBPBYVYt3l!pbjRWL zuTJKpJiEF)(ATC33BMAfU3g{fS7-L&gVPO|$#L6%;d$$MOnpgvVcY+PLO4<#N3oqWX<)t@RG zmSPv5y$6c>EOxPKxF)0wrfhfTSHQpOW?Sf~Pl1n*eEftoF z!O{IK+d6>mA{T`-k#%GNv?4H!%*;udQM)OE zrIDtC&P`|wIX(v=cuwtn$b6m7UkJW4Hj*c04{c4yM)CyxDUAzhUKra6iN`c2btwH5 z!xTGrezr3-^5K_TSTSGAQjGUk^DX*ppLn18JH5{`fB54c{^-nxcz^OR-64x7rGNS6 zFW6A|>$g~J#IldS(|qP(-^2gheqrz=V=ZA+_OG=;FaG2c|I_qmJ3ssE56+YMQ}Cq> zg_y6iiU-~8kMST=A~J#Ee{Q}wkdpn&k-*p+tQvT{_jxaiD)~Qs;ggD@fR905lK9ko zmixnJMDKl``{Hw#i}Y8Ro%!?EN6YLG;matma^Mq#jm(;$aJWNnLqjIPA53h1bQQU@@?U&fQ+3_)kHNvvXwu$%0?B{>{BRRK!LOy~7rtA|eDtxljl`5+m zRJPeZ+mVqGi%$XyA5h?H{yJqpgq)8z&Q8d;QK|>k zlq-yR72O$a)2#hT$tgW8I2Dh1A*0HC<#_wGmNhQt@(`wk4=31f^ghgSxd+9d z>OIMR8@;8D!uotV%INd#-LL#!Yb>|d6gMOx>)G$z0*MV7*9_sVA7PAZtZ($TOhy+1$)7}X~cWTOi^|~I*RObEA(9n z93_V`Tl4R3C6Rahtr;YYczCB0BETi!v?#;5nrmf)TImUoz!w%~7zktCL@@a?pu zpl`p8A`Y^|pWc#4Df$tmXb7>4yUIWk*T0c?^-W@VQz9uSvkbg!36K*vXmkZGTYyMOHzTlF>jY9UmjQvcN)lBGfkO<$$>h;1ry zNqj>LucQ&x@Q+mWWx(Pkw~+%GdD*;#2$j#+Mi)XKr8 zHl-yHdwvrwfppFwE3(fe0GZ#k$$!o|*JqzI&+dQjS@-wcvj#x-fD8YU9Yta_N088D z5jZ_V7i1VgepK{~-I(I>@QtMT^hPHKLQ+%pX&#??TJo6WQ+rVZ;5*ho&d889lu5wD zzuAx#No>Hz=##*p>z@l}Za4T(=J-W3Nc-6uz1F9mEOmE0(ERJO?EkZ)Y}X~%=eQ-w zbx%}ZXP*eTJ^TqC*FNF1@t)M?`&xGN*XEyCO9s|zce`*+Vy$!lXvWq1*JzWTQ3tqp zZ%tOW!5Z3cwYH?)zCSzIV6(4AVzg>CF|0JJvWSmXrdHXNNiHH;X;&1l%&l0tBE{3; zEBIQL+Z9#0{N-e1*>ay9f3qyJTzmGZW%=dHXs~6T_Q;poWdWDJloXfXvZRzfd&C<{ zw8bx4$4a#{WZZ;-A^eLYVAMkOl>hrGDRp2d85Kf1Ew8=y>Z{H$09Hw!e_jas2TY6r zhQE3><~t%R{6z~F7TZ6?=3M~MFSjS~Tx9=*&W8TT6F;nV20WbE4>0rzw_riB-4fed z2+cf@+NS474}%LEo)Yvv*!yeN&_@Tfh0U@#6NVCEKRw$a z_S3!MU`v)PG7B@0FIe#CBdn(}XhIfWGB19@2TLA96D~R=YMa%YKL}+0`-0JUDM2iV{&amMtTR z#ZhKK+*UT`&68Hsx2})63`8Y)L@(#ho6DH9{JZjSu6I04w7i*v?$omH;(imhD#cfz zIjpyr0?V(y&TXr#E>r$JqUIL$`f zuK1$N;V=s!|HFI3yvoC@R#s0+YtF1$KyP^SONosa4?Mv7dv1CTP=OE31oqWYFgr55 znt6XG3n2LYT{tpblA7);jvW|NVq+c{4x!J+AG!O8)W>Dr$8|$}L~cy^$(ew`oCiZu zWP<3Abl=F@kvd2CX~ccfg`;mED}9r#Fh(M_kv8wq2k5@ojT`Bpe~mtDyXKlm|9?RkPm{gq%4`QDF$`0o^*jO>fmt@wXX$ zB#&uC@m~DGjgGD;WXgTZ;SdpKN`22PEPGsEs74g;c^RA86%P1uEt}Q9Ew>@WsFO8VxCK{4F0+@Z^dS_Yt+58jie$ z!(BY4l#fgr=M;?H zKWb`qj{5pFd^EP+L9I>;+? zhzHJz=%knM&ng;*6h4{`^Gb~;KFAdthK!9jO8rM_K*C*%PjAI|Z4xNTW{+J`#X3{~;qd{lKG%Bq$yF&GcljF%6V#zSdqyEm*64W%<% z+1;vURi6rbKL!V*XZLvjz4ub9^MA(2Y*h|+6u>aLhuWX_lN+UH&72uJ-FEj_+5PW5nQf!-g(FE_3hunDDZxtppotg-9d_~YXNhe4O(bsrb3u| zyt}+R(|7RZmRnA--)I(a3ExK`Lfu7ddUx~9H=bm_Cg6db-hH={x*Y@~Az0lw;{;ne zCn|`!_vbKd9QY;y3{5}Ie(7cuiWTNbu`7aGZo2VCK!-4408Y}ZFUu=~;@ouyakwP# z0^CqZ$@QQE{T%1xUKRPSJI(F?Q~_=#9_I%%q3fpY-vGdol65|(Ucv6g z%uk%(d+t#+MpY3-s$w{=#5(ngDO0dxs~pgT6)PRjWWkmBy6Zp$1xXszHn2FcXDHul z@hEPW4P_YLaW<|7t>}s?CQk-Tu7=$?lOE@Kh-*{w?OM$hutHv@8UTtWT|RNbWz{T3 zJ?{1H`SL(7xaFpsU51n+_F9Fa z!pxMPCr=_28RV222jhN+V$MCE@=dtzM+3&eRCTTa6>bU@t(q{GVdLSFO9=M6-(E<_ zyTDMp?enO+xo$g6d333f$0?JA-bZR!XWFmSWSQXttdS`(*Gr?$PQRjLVXI!DU@97Q z80GOIjuc*SJ_n+`+kVyu81@C%yyjYrZNz=ST>g)+8eJAiOu^1SkMrJJZd1`*JyIh| zE$o}rK1FkRRPF1u;O~@2Qu_^ujVjswVPfF{rbv*!Rl&xbmllrqfQL5?w=c#!x9;bkT(u zTu8CV-#KTGtp)~>lKD978tR2%KaXl63_&WY2?ZHD7G`PM_Uq%meQ^E|@~L^v8|Y06*J-}Fg@{VmGj`HBq)fwA6bJBsz!q%RM&LfA_Vv>Zu- zeZq)6@z3Rr%O^s$a8f_cy}TT6e^jQ!Pmf%y$C&f>aW0P1jRt@MUdfe7?Hq?c?_6F} zsL|k9u>QK_TTZmP$O)_xySGF>as*b=$Ek+Z6?OV8sx}22Uf1rT>r^Pe8Cy06+zQSu zvH<(-_xi%h^E%oE8O8$af`8(y`ahctD2E(_1bl;B?{e891`ae1A2yWf`aI#Vj2&x6 zmxXS_Sb({rk&d!}uNHQ{so4fk}hjH)kfp0_)YVI!0 z<&K$flLDOJyizd+V#~0%rFqD47~Wg};XxgTktiRc88)fBx!&w(eih>qPu1cuzIDup zauiNz@j!d)&2SiEhum~49>9ePheZZBnt9H?a$X3uM(@r&ZuZv{%g}Oy{VwJ(90Q?o z-@P|Cr^C5A<}e&@^ZUE+2|YOeMRT-fp=0eAu8_)G$S}o|fRb=?$Fy<|BP?<`hoLz$ zoB+eo6objc6>)AcKcqo79;>547Y-w=YsZNl$W;0K9*)h|Ty>Q=4DbH$4=@67X5svF zqq)H=+2f{mH-}E0Dh^|B#9@dR!_va7-mS;c(U;e@SKgW!T=X@^3Ha z+CpBzRTKcXQ-5Nd*Kk}ujQ|Dqd++Y=#lJCkJDw@*B$(K`&b#JsQGue#TcezY=8(bo zrkv?^^&EAsu%69Te-CHjaGKEQ7|o1gFt$b&&NrbNk6Aj`?&2`w$?>vqa@34^;e|}w zcRG%XE?{o_Zbms5RFT6l6U}A2G8PPOL@^W*c#3)SF(T5ClWK)QODC9=St?< zS)n+fd(mEv-O;Fyc=yIKg@R2p*X4o#EH)n0oP; zRByzMXj;|0>pa6?cvs`s@uOn(^zD!h*Mj0j+`NZZO>hi4S9*Z|W6tw(Z^Ad_EI~M@ zmNQ*UU`N`2hTm1l+=RW>T*QHI(l+On#xv$o_RlIkH5@Wb75bZ-pkXj_Opj>1Ivy-) zg|JU5YnsHx{4n=|F7@TXd6nv^YnfyE!U15eb__sI6z!~?)!{NO%6SNAST@ib;+UJM4PKjwlT zRT^;(%Im0+fOUz%;3)oi;M$+PFJyt>C15bpp;t3@zbh8J0}KY||0#$WBcv{Q8_J}9 zjyKjD12#g)gbZl`CIJix@CjhviN7d#2{}d=r#vJuRqcyQsp!A8B^(37YG3|<&8=Uz zB`l12?XktSgkwOqiqI|py-Y_q@BgVxr-ZZhc5D}$qe_w4xcWwB1Ke1C)Cd&VM`u)B z!_k;g?Q(Vw7z`My(fguW9D3H^mUg#lc?7jQbjVqQ2O+bG>X=8K2M*v&7qz^bT9ya7 z3^=oi{iln0=#a>%fB!T4!BK&S@lzBL{`#MJX1~6Dk=Zzw5U(yidF|V`&l#s9vk^n- z(iuEZ-uv<5j5AK}eHt8w+qS{VPN*`Xu5>ocIXH5zEAi#RoNGK9ITG=o z`;uuBm~+1MjBB0Nc8}f;SLY#fQCAZCKa{2(?7C9;0S_6X3Ln_anvuI)P}dbyX1;dU zG54rZT<4-i(b7@410Ak^f78$QiF=Z~y5^znRTE)P8XoneL1C-Wu4;GoqlW+8WzXdx zY%VH~9&sAHIXx-v!ckKyl-j!2NjBrUpc(v+^1d9kj@q!t3HGbu<$>uaXGRt68l{KY z7~VWeS-o3bNzEJfQ#A#x25(;R8;W{cm;vIDm(HCI>P!6W@RKH1dR}8u$JL{C{n9>_L<<>(r2FKkAENa zt56M#BbXeE%X7vrB=|;w%WUFEY4BWb69-H6`y9!m@D*%w%3hnEPjO;!lT$kCs5zaO3AN~ld)9U+x}ZwsRSAwghoNogZjKEM4k8Tx3?sm`rzAJP#>(m z#lD?Hw~zzXobh%VhaC0Zl6(jA+&WUeb?ZBct)(J*;^;3gvhQx?sJPQ%EYq29o^*!T zqPqA`bRFN-U--}6d&zexKkAX3Tn^PFr7`JF1fvz1fB%E(PN9<8K)JFIWy`84TUPo| z2d7cEL!7iXgViSM4v0H~=LUG25P-aa6h6cuc!R|awP(@dpvL*2#`%MDa0mt$4+!&M zkOwxo;Yv74A_Mb-1|~s1FCK)Kf!+XbU~a&`0o4XlYXkaM9$*J12ISz_$ZLN)z>lsZ z6c1Z|}4m{6Wy$oaS*)Jg4PPJ@PYqV=>rOmwAsTHexodf4toJ@P$!ptajQ z2S;IgnC`T5_n=!EHl};G?xvd_vfRnNThKKP%h|1Kw?tR3TfQqiF(m}uqKoNjx_Dg^ zTpsu2qf6&XU2Nx67q2rNu5-E*j7sNDL1)`3frIT>sgvz!I%PY;dX`gS`-n7fLZ`UrtBcD#& zcI`~teeK%nkNdWMyNvF6W!n_D_1buCZJShEo?4qWwsmE$L>oZOT3dd-RHqo8aHlYVnSSvY~#uWUZZT|MvWR1su7s0js71~`TtL_$9{=9RsqvBRr0G= z!^Nwa=zNnP<8+xwT~@04HBh~fx_)Rjj-J7L@rMox-ko_m(JD-BR58Q{iZ3(;d5bfqaB@m;@HN11Ar>I^gqJ5cT+x%FQ&Ptj zc*L$0#0?fXX!%pP_Yrb5ckZD%?1nrG7Ef7F32PMuD0ff;n>wQi1#tcgNCjRrFMtrW z+0EXYH@C6-9Yz5Y^=5QhG*9cFzZSOWfJF`RY}nGUPbC!dafzvK%CNHT7B! z($MBPd-7Tt6S3xE^LobJG(bPzG8bo2kY`#hgYfq{@W~ugNuW``?+vu*(WU2)>U}c@ z=E)&%o@A>q^;UWd{L{DXTg6pX!D2aFK*buoT*qUY@W-?BNI4t3`yp=Ot?-jqB)jXWy zR6!3Q3&Bf?tA z;dBV6BK&PRFjf3*2Ba6Eoao7H17~F$4gxc&!6~L~AM)};1M*6K+lMJ|NRr$3;rQXU zZTxPlZoLope#F@ePG5Y)um53=-)inR(C>#;IiQi*&XK6?$>_+2j%^fiB{|aJj$FYR z9LCwIs$50ei)}3qeAL+CZ7(8r|Hq&+8#l7IyRFO zb5{3mZLHVLb`7{%SthJ5$UVAtZDDhrySVv?Ufr2q-6_Y6S6wf5Wit-Ut+)(}qiG1)K)xoM}kRlapA)0!^aGQ-5vs-@qG z38t0rF3mt*t9;8=b*$ggYhhaM*Bs;~B+Wr`DRWOPS{`Z3!g;89wHCSNEt)4` z{Wq^|Yc#XX6I@lB(S4hG%tfYIvZ-wrG%ah^)csXydWdBrYSJ{-WIyu}GZH_h>3-d~ z$0Ft`w!a#eHfgNC#>`ZviRJR*sY;JNGgpT9O&T+aTlhkvi0SJ%|@>+Y{tw_f<~*Ujq2uWRd>y19CFd7a}qQP-!$3kx~H5{ z_msN)yFXLcJ0)2+?HuX`rx4jGe%*{7Pce1vDXtqMFX;?`b4O0UN-<9gdKC?+>g4Z# zYDiUzfwJ@w8&cKD-+yOFRrp>945`YXY8xaNvEkIlZW=3!WVt$9LdDkx4^4F?#Yahjjs+7<5c1W*Vm%sK#M~=vG?nEz zFj_^A0YY9vccJ17Bh7k8QG-&mjIF0y0JsmfohoZ96>X=c3fhv-gKVdIU2JokeB3TT zc^^DgzXQn}v)$i?ZmsF7_8WRe8=kF#Ige zAyfgIWl3^z7BR~bCQ%_}a-|%Fg*$y*DW zrME^Dpwl(TUAVk8WfIHq50(<=uQ+>E|8sE*~fRL=7-|%sRV1u@3mub^8QJs$*a4*W-VE#yvR**L9d20O3`azkUz0 z8xD!-TK{CiiFDH8gOls5uL|r?3YefO00SkTOe4t5ArE>HJe9+t$m(EQe74OzEfn0RQcnX#`&8m-;VbDbaKHZ3DT@T?>5YX?dmA|t zw=pAe5coy{h!Px9z+JG>b8i`{LNKI_X;j@gWM?*d&v+X%?!j*3PBPE{kp3O+A>U z3%RP10u_NvCO%@_#$0mb6T)n5?y%`VsVFn>!o0G zR`RS$n}Nj>lpGjgNW9#YfFAnNp*9JM))Ab~OuP)A_)6~OS6(iD1ygjdR2S#`3gp#3Iy$79JLk9pZ^X+6!I+JozQi{F0&O3 zW|-(CU~?Seeb2tz1p9YM80f@%&1{NOzrp*Aj*e@_5ET4xT9AVuY{M$97+#p*wqOFl z>Y9(**}RS-cd)q~+qa`XzoWzrtwO0U9^2HGvFoY-z*$IYEO2~(be0`y2#EKi8`>nM znhckRjWU@x8(B0;u=`ke8d=X4kF+De=0}=^v|_~Y+H8y$V`)m(rV58+7D}e6F!45A zzjnAUO94Jc+U#(w6A$y8dAQ`zv@fj>~}{8VvDWBUej1%mJl+b1|9*XIm=+3!6g{P+79+>6gBb&vd{tdEGza21`NJL7bO zZ9uf1?wyg>?H(M2UhDqN=^!kEGus=_y#uH{-S3?~9c0$tz5Ub6MENtl_wej)`RxsK zV(-%s(e*yfM?mNI&Yy;?PBJ@!JNcd8I}0o1_SDL~vXbQ$_sT&SDiPwDo>_MKdIe5gXM6cQ%k=16auCMM zo`pTUp8I>SC)cwFdxEB?-^2Dy^zfl&kt0K8k3@H^k@7vd`;c8dx+Cgi7tj6SkkMoJ zYPQTRpt^N4-MwyJciS!5-R~B3&*3VU@PeW5>UYaX2G|whVAmv9qFYwae%BNaSeNSB zrKoF;W!F(%F{X$V@YpW3ZOzWMOOng)T-t?&7#o*eUBCd=ChMkVG;R;P6LXRuxn3d2l=$Px!u>)V4mTG=`ufu+~ zV$%;Bl{|axgAT`7E#AC#yW6)za>!OVqx^)}O)VK0mn^yZ;w`!$-uKG5|+AV0gTcSh#>8Di#n`5yS zASyJ-4^7KP)JqwOGOwazh5k25xYSxL_Rt(ovuWaKH87e04-mMvWUotsgl$#bJ}e_4_maugg2Pu?rA{O6Ue+FDpiwKNiu}FGt7BF*$*=ZT zlUQZcil^`wT)qr){esIcp2mSPyCC4I!c`dE)2A15&}^Z7Jhd<#a{Wb|;`J9EVY3Ti z^aVNZK1aHz|PU>~G=mJloqFkb-nB|6b80+K5ox_*M& z1~##(lp~A!UmdJ!WUH@kVk@u73lcMA^Al@xF!#-E0(Rbig5JHZRD8Ssu==@vU4mWJ zHX#HjJUJ_>C+XQ6=-E$|P}lbCLzwp2%fdRSRM4@rItB(nTJvM8jLDB3lNg)8exf$D z0%reWZEubC(TH;nuv7rL+fe})jYHLZyC0Gof%1{q% z6SyIr-=d$J?wRB#NTSyvBsL55rzE+QU5hGhMr!LYiRFe+yX zuonxDAWOCNF=+d<;|9bIIF^9@uLidGEN^fcet>^0hRVp29aJ>9i7jH*_Xkm{gDMZC zHksM|0WI0t%4!a$Cc}x^_HSd$w3P)SI(6BPy6oG@=KJ(jWmfzk1>p6+{UBu`?H3

s+qDOQ#B%!=Laa*c@EQSS*8@*p5<}7?Ker4PD-xhy+d;2Aa5e&3u zw+=cTY?a0{-eMsxfnt?y6rd1?L;I7I zM5~H}XRmv+q^4ZVsUq$2@l12h%S%8n|g zkfcVB`~uUG0a}~rA*(xL_`rW!&$Nb2J;UKsCJN?7!p9Pg$4IJ0;q8@kLARPaKKgwO zmLF`JIJ9Jt-s1qCR-M40A8gRQ2qtVn;f%2#D`NyL$nmomVx@Wio{j@G)gz29!Ns~p zJ3bHB4W(BYf=V?LeEmXbo1mCIa~S6YB#)G_Owo69^a)-xWhCg4O=u7?pjJnNqMIq| zcMhaY7>_6fa;$ES()mm=c}71+VfKN2faVb+xDwx|>aYC!`}-06440_rSn|)uVy@<| zT)r}a)O`+^;~|N2Pw2tj1}&$Qd% zL&!J{^jF~Ic0J0t=zIngipUZwYynh4B;suMKoSjwzFYuomJlDm1PeCgk*BLszsvPJ zS@AZ%FxN3n%wK@01+lt$H;4~52QJ!=6j4wz2-)|0A%X6_IzgX{$u&80I`GA%YM7wj3{Z zV+yEv$Lw0`lRm^ZU}&%$1?rn$eZJ*G&w6HBU(G+je(qcZ)PsQC*@vrqQL8MH#AwN} zr&{d8EkQvaUlXJD-D$*nozE zn#jc#wK|fgvnMeTGRRACxRs}G!^4_dGf>4-~2-p-O!H~=7!B$|DmTcP>D34S zPs4Okhu*_aXXL;b%bh!A<{d;2pDfV=%Q52vgc;VrEg;Ord=zd-6TJ89pWJQY~j9$f_=jC}S34F|;_T(W6 z1=`M!{y>nG5n&W)&gzY*RZ?cjgzSkrw?d@!0miXws6GbOoSc%fJ(lrG9cL8ZK$K-Z zi(DV?o$~^y)JnDpm25`X&7BL^J^28BX+PCu9Zfj|oo)gYDGi7oKRisbAdf|<#Kx%}_{sh)bC0CXl*P5vHE+@xcbw{EPR0kAePmxN}hf+OW{TBxB zJ#D|$*qxC%KJb8cQDwtjec9FH-Cwa-iYSs_25thSGiCNU=vsBV_g zW*mtXoq_F4*nojKHrOJuubAJ6dZ$E%76Q=_bVJvkD@x>9Y)Sj>;dbrH$ogEO)X$GNIC{T5%sNN5q z7v=rX-YPq{1xKnAXA=E^Afo4gf*XP0GEjP+yB|YEN3fG(JWJnTYH#O6aFn_e2xo|> z{IIaF(4jxz=a{h5*M@VzX%4$*n}aC*c6@QZh4M2;}MKtL2W&seccOtYjdSFX8vO@V-IF>* zFJw+%J-+apyE!#)(+r2>`S8ZoB4D$RSNz^gutWdq_wNK~u$)p-rl2_1EOTQy@8m|Q z-+{R}L^J@e9IKJxI#m|}XK4dU(^N1He|>Jb^AF2Q)GdbxT02iZCPC78+=rzuwk!+`kr0ra7)&_xV}iPhP_441aZFB` zndq}k#?tf1TUUUPX}P;T3#!Q#jSSc=a5Fy zw>q~Iz=qo4)$56)dOvp3MF?t)Bt09U>_w(Am@oOPnF1Ub)Gw?;glHH?umMS7l@LW0 zAD7%a)BTA3A~Hw?)hWH?9imVo!4P=p?{Wi;mEO=hsgY9PHZK2z3%~}R8O+7YP7{}! zU>>7{{|^`l2(w0f(bd=}s#xme-c|tFI51riiBvE7FLd<(Sk}Qo-3Foe4xwxA+cOn= zoZj8v{AT`qT9(@&m*HO9f<|ONS`z25rVsC}fW(E2Op~xsf=-ni9peUGgS_(hfmU$(sSFJb zYdU8pY8}r%5p&H!tQi+Mw2jp(9R3n;Hxz{6O{h}pI@8c^t-ic=286cQ&4tdyFi<|w zNuEX-QU0-0c>p~p;g<VWtdse1dR|8Z8kd2$X0srU};5_(I+w_JW3ED&VlFc z0b*|eD+a#$kogh8Db)x>PI`T&h~j0M2=ulcw=A-!Ul2A86A*b2hb4T!VO9XKM0WT0 zYr=T2KtpS<(r_X@&bfvkbjH9)O| z^HzEHzLV5o&c=ZQlCRnVBxR(SBDu9&?QSkqu-c)hlpMiy?Jnl+-V*awhmp>8+XpcJ z``YCzCGbTT&=?)9%atGel_TCp-D2W;smoolKIGv*3y&*+s*WI2m`uGKU<`&y%#h4J z)hQYl%Tt=kH^rkQbr=}2cmjw8<@||;h)D?r1Swu5N7>1&$`UG#2X7WJYpS_n-PJf8 zDSVxJ29^wd4t6*5szWG%b?e^8oLN)Zd@+}9t0$9{Xl4t5jOMiKxIaHPSBdQY+EfO8 zEj@~xt_HV4P>~@~J8B4EEbbk!#-wf`+DHKgG0&kwA(R8uYQ}~#;J#nVFyO7|i0MuL?og7Qhij17^E$B&*bNd?X1Ibuj>f-3n2t zJ_38VKZz<{9mh=#$~3O12#nwh;`cbFAN(~_NJAu3ApOXA$7DXeEuE-Hf%*q9AU7uM za`Qn^ge3wK+5kPW4e8Et1m%eIQX7BzS{=jS9s9D*oXrEzpk|5?YGS8%;pQDW)@Wkdz4AW&kNxGyG*f1eS&DTV|YCKv!;`R10XsBMw=ReIy{b>{c)Gw08rS4jHLkeUIEPyAUnYRjIbh5t zQg|LT0L1nU*cw(^U5LUGUF5{{6G3v(0=S9PH0L(M_AZ=5>0HNfXVK*a^5>20r&jO^ zyVl26`aXj3=Rcd9*aPke2ecZQ{eF|1T?mbnFu3F75~5n=np=$UM*#;qVX$4AJwST>S!7 ze5MdM+sbg^L!`NDzi~0^NWBb15{UpPh4pRKE4cF^QIA-J8jMwTj6%cn%Y@K1uYNkn zzid1H@`~*2MQZh`vZ75>qLHTnfZm~L<^QnJqz<*r{4hwJtaIZ+W?7(vGrf)ld94HP ziadhi>DB`-i6~2fCt|gOmnRQHLDaXq5#bxy+65`!OJYU_Su@sj$#l0$EoxT%Svh9u z4cHQfzx>tDXS;07Q=Uv`wE6eeTZK867F?tl_hq+~kFP$tC{q?S-Mv8ccEQ0g6&cur zo{G%8ccgBB8fa9FrvQ7QUXQjI#Z0ZklrgIr_W!h*dttUaQNnNKR`BQ6hscGBi&7Tv zx3+Lq9~fug6rGp#ykcAZKLy7^`%}nFoR~>bG~w=TAgfI9p^yWS`L)113p>p$+W)W7$G`~Of# zkqvmlj&^~vPYR=EK*ayNwS{u10A?)=`udl-H;~6Xl8nmU;s7&r3xa!8J2%*Dj_iiL$-GOZ{{&sABdiF6HAW>|hD<=o$ zhS5}q+>fO~lfsv0lgy*O?NMuWRCf-^9>+oryRf4$eUQW57O$V3lN=x*Q4X9o`uM+pXG$*TopU&yz^VQweOXo4zCYN1dUErcO6g=w^4D&A(F36? za8Uv%;7O%;mdp4(@Zh7sJ+y+&ZGZpXS@_L`gzGf7FuKFAAsauQ<|5jDq>zP^lhA9| zZ}G5G?l!ilkc)W%6nUQ=Rfj@8dRUeYMWt-L4VRlD!cBhK;Weh}_;9~R&JmTiS{^=P z4`DF5C>i5dz7<;)nPN+SRmNuT2$K_STMtkg!6v=gl5aQ%e4suAz^pq`-3H}~g1IUQ zXQ8VY#j;9{Rrb9AL<4@=yg*6(V%Z`3Pc@z(?qi>J+N=e^;}@@>dsyK{MtDNn(|bm&(PyV zm@j4Pj%SSl_rhbDLl-%UcW}QYyro4JMqV9yH_htq5rZ(L2q{xvRlRkv?NM~dhTHt6 zN^eQNU1``m^n{Fb37c>;d7CwOQ_8?3jlv}Jgqm|Z3*6lL#tQ}DC<5bJ9=u~47QEB) z{9^-M?jH?4UX+9Z z3=rib!Qpo)b4nso*0uh~Z!9sdK^2$8g%1fjcI9XcuIi)H(Q`AoxefEnEy7iY%zfY`A_K=%>@qBn>0+jP z&kbHu%F4=~6*AI}y>K}+jh>D_Tp#D{3}IOS(?u|iUNqa!0N2f6jyDgu*_8IA_tEvi zf-jz}Efjps5Eji(mm6QTq^SrMsJk3n#OU)rbBKNwzCB*#2DKMEsvgsMOFnwOaVM{z zRItK$pT^PV%?ZEjslNbFAz*+5&_|@;7a-REp*PU8B`Hz96r7-9fv?j3<;$1HeJ@}b z07U3>>gKk`{6e}zAG17{O1-RzUwupZST32Ez53j|l|ybuiTvF%54wL<zi@~LYt7n{Y+1a+&*f2YU185Y^+@)5%_vy;()psUI{KFkg>@G*wOSn_7de;w z@MCogXSlzw(BXX^p-Z_@LIv;gM15|Bw!3mTdszOE=He;1nrVA^MPTncKfjoCG0tG* z#LG$Hmy0ziZ!=?i#>dZ}J`Zj%9=6;7>?L16KTdJ+^hVUAG*4x3c|>?P0ra^J0N3|y zC1KzX&|h?LFp&#iN2NNC112Sr>(=De%ET_a2-58@X{B+~i4R*T__%yaFRS}Kp@ z2Q?7l02yniHWUR#@RjQ~Ht-^+oO{b*Ovd{sIQ)nQd=qXsQW?GmjA8|@8&XWglJf^m zKMiWu4(bZG8|Qn!eoC zN;_$hwCHg_5;mEj64q58g7^Tw`Aul?a9ppy&0L9b(UZw&IM^;4XTkq2l^(l7-1OPU zxQRz4imOrgB5(c~F|>~Vm*eyDhpVDLR&UuxOMNAt^o7dyvWsQ1gL$!*Psa?yzq z_g5*kS=Y*h{s?RJP&tC@1$3;8-H(k!JVic@0~%UBkL zTPz%PiLq($Oq=0?n~_;l&G21_TMbyp55w7*kaX+DPV4x%A(XyC;JuLVaD_z{?qm>M zu^U{7#C92%70pZUxyv&&^rv}glfUFn88VhSKbGpH&G#^Q*Pa5iHOIp}@?~pOjU-7Q z$M{`oGMns^dmBYH&$Hz#{ye5y15L&z-`*e8`oZWlC0uz72Nn0|Pww%B=T0IbA{QjR zg+MRo1IMPHg?~~Cwq=R>!lfHjEaJ2<9E&xb1Q8}2d@y9-bT$&Z$XI63uEMdsARg>q zp!P#7FK3-ZmwN=G;;ke<@YqaODv7};arf>;7xRKGPht~H$`$=umoUQB_gdw#WGW74PzMSKsb=)U6XV z=4muVox#X&9~wFXcRwNp#(^`yjRQ?U^Y^$imZrSUCiC76`b6>hrEt>NkbKYm8~ww^ z$4wXWdBv_K=rYxSt}f_?~18i0ZX)vfaXb61Aw%AI#Jnm0vbJS-F5Qvx7{OAKPBn=3FjV)Vv^ zHOX*ECOcxAF}qgg#SUu)_GQ_0C6jhzp8SlRi%G#N(S6dGnop#0OS~2$#96J`z0qW} zKzQXxWIKwcb#%rOO@p^}4E*C~R32JrhS&wNv9Tdfh3WOX&)g;89#qir5uosya##S& zw5foNaSj<;KoI$@a`2OoW`H<1Vu__g)_SLkO66~>Xoad)yQh|UEoE(qeSF)q=|Q(O z$R|uo8p7dn2dzf&!KYB$(XQ2h@Ocz@3`gaqDl76yD~%yjgAbEaTT|Dxo&BVb8&tQA z+f=?f--HXtmDXL9aN%WKd-1t>^L4ny8dhb~v)L;z8ii~LqikT)_vvOyxcTbz%>AaK zqBSVIh)5@v$nT(@F7k1yT=id85!b6*nHSagJ2gx-`3|Xz_g;l}H}E}Ri&7Dyp!2^s zN^hJ~e^*1p?$;FxO1pBFNV#OEs`lbgZF_++_fCiA^OXj4rxUxR^**NR@IB2LHllFa zFM**4St)?Z0N5j7;Ki!{7Tn6%TKRMuZqd_O1Zmkig91RHrI`VLC zD~lK}yxez*N}YXuf;7;IE@riHl3u4|S7mW6^sa{X(5E{8HGTV+QBUn?grx`8>Eyp$ z0mL=c;B^|ga|QD?p!jS_nL7Zk+$e z9Gg-Wy|4Hp^<82_N8$k!X^Ob~2;mhs5t{gzr>dxPTu8~5|M0i5V13E8e}ap4M~rdY za`Iv>fz?AxG)05^Bx7HyKY70w;MuRi(UmT}N)(eEU{{$XPb1o1NExwtQTQ@hCU^JY zXkxmq+7shO&xCi5Fbs}dO984lT<2!fkv!1XNAb16D-8aDM6slcQGb+Fm-K_|jAaFcU7pQ`O4@Xs^V!bKw?D z;E$CVhn8UE|-$ z1C(WR<#Id2TeWoh6xHLO6wSE#gmPO2c)l=@hU6x#xeLBJzLl7|_w4K=)kObLic0q$ zIX(;g#SxQ}aYL8gY}sXYXHFot9$fN_l|*27wFt^ndQdK(}Cv$0*&_))t` zlYIWOgUX{=!N{Bzt6#@GCIfvff}E^RsrtVOSJIKRO=iEn`!Yx>#CSXkTwuZ zQ#ZUh`6rVu7^~4xjtd*{yk4N-8Tjq?!AVM&d-rzwt=c-fh3K+jXnHE>Sk+*wK`?L8e4xxil4gS?ys1AmcEqkoL0zu7ro zO`B%q$=4CBHiP}?gmLZ<&?!Ea8IRK1LYHD`YHo%Lq#TNm*xq9pGDzr+@RV?C3lRVj zh0>}Yoc_xJFf@w%!#u$A}(tw8b={G7Ll8RYdiloJwFdPPi)3*gmXSTKbH~_v+d@uk6T; zc~=TSC3nYxyNA>q4=656|M5-u1#q1K_!j}W)eO`8<(&QcZv*_mpPPp(>eg_D3}Df$ z8;uaQ3C4tDU^WyP62D}7-FKY>toDwD6tfY@pAoj!eEj}zyb~03AIqMkQ{-B78e;e+ z><~Uq=NY+aQWI+=m0FhV&X>X^cUk|u(diJcsfgaD_tPe$I+^DOOh&n|`~wRq@sn(N z*G|-ya0Y4oD#`I*%B8#B&wCud@%WO=M)33HoF)^be^kE$7Yxx>U|jI3dPY`O)(7ab zvFx%rjXaEOu(S3EU_sgmz!Yk|5*TorL9{hUWyqdQA%kD_CUs5;?@<2oe}fK_I(6%C z+V%kk_U{FpokP7NM#&S#8rkl???~B-RT08kjcVOhq|nYSV%2_YV@0B?MRX=*F-qOi zcCOiO^u8MX%fe?Pw6rSYI(qxR@3QtK1_lvRSeP7Kdl{ZG_ID)?GqLq+6ux<5Scx5x zePJ*CbwPqFUB<&68AnAOdD#;RtWXBYMP-h_Yju;w@K<}1r`SEe<} ztqbS%5ymS0F?0+}Rlo^lh8|E_7c)Nd6GmmI-?JW34ZQg>rzo}-W%6N<AlSC;xv01KyiH~YPAFM2)QDL%-$eFGxvIr+_;hJ;qW@B^XGY?EBZ-rGSVqo zCU8=-Ue`y;7)*>^!}(c*CFS+gfTv>hh|0jRC~1T{;BH~{NBMhRbR-;BMe%whdtVac zZIhQKbeXLS{+g?in55C8_o|b&X(w90#=ILoSZusUQl`~k_*9Ss8*+<*s~i)@6<#z? zUTo)7F*c*<$W=&mn6~zSM#bmP_&dqdKb4f5|AunxBV%*mcEGQ17^7V*HK`SV`W*o? zDehw23f3esRCZu4BM2XiJ26ZVy(o*$n>u7h zKP~jdkfg0}#fxRhv$BG6WuG0XYxolK|u?rsVQn}y|Y-8XrZgJ(x>9s>j5;^FCr z)dJiFk@k{hE74j3UR>QWAs=oRMZ--u_#F$Aw2LsZq6j)}Q}Y$j(f@BRu(b&^H;`J6o0M71-B}$S>xZ`sqje~V=B-0jvUe> z#pYe3HFB=JeYO>+9DjV!fnf80Vg?X7*=!9=+ zYHEVJ&7q(eD81w$aa;T07Zee|$r0a{!F!Wn_cd2mmKuqg$S>r2?&X!o#-@+ zkNrYMFgzf}3gl`e&yLAkQsXwaqWl#Z0hVcvOg7Q!zg767TyQU!o|8Xquf{XBPE{nc z=yzgQ@~OK&eFQP8o3jtutwAC1-TI!u*{=seJaFI+FsT{^8NsQ+lf(VRb1=*UcP-;N z`~S?eohZBgh6Yk`p_?R`YsD;KYmNDT+(Ww-Q@BK!ar5BX8HMUmXpFIEwN&xn6Yv?8#{nT5F$Fvt zFh?=TsWY{Ws~{b zzTR$1L}(PvP#fCT%tUy$_4^T^6m3pdGAJjrChV;N;ZtWQ){{}7ur&rk2v=+kPjL3C z{{A0E6j_CEh62>nUPNAFp$Jt?DQhW;kI@kOt)uwZMx92b>#(PtpL*aYV{N?XRm$KpbJ+^0jU~VAEv^X`5Fe84H+id(GM$vd{3!<5uT|W_FgOz_ zfwC*fDo(VJeSa-Q&$JU{)-Gdmq?HzmJ(?s0D!v_AVy*meGROldgw!{6we3csM|^f7 zHa=mb-i%fJ^_Y=47MjX5wbELz8GR3HGTz|sA1qp~;-%|S^9DB$=P4Xg$eg1vZ?TJ@ zl*auG^V8p-=aNyFWh~stWAxhgB-$MX%=9@Bt)_s?3ux$Tyvm_qF~w5?3eW%#{j_e|75V{tS&w%ZNF3`|AePRUJjFIrlS&jbH}m&)YZqj z!G1KFZQTAz^MTaz^V|XUYfLeY@*_2kiJx_RfEYa=aI<#_hD~fg$}Ywl8X7_n{hI}T z7U3Ne#4DfNEIydVJ>M7Et>}K-xTrFAvOTWCW78e)g{ym&TAzBL{i+d<%Np*-YK#+x z%~0#OHabk;+Txw*w)^Dd7GIkb?VXH^a5HOhip{g zSOVosu_IXov(F@5n@AVRNNfc{sM`QrQ8v(xfr$b#Hdxe#_ZIK-(ToS(hSZZvGB-+; zH${XZa=D%5Ii*}=daC~FijGbf_EggAeSMho#GSgoe(R~NpbeqFKvGv13IChw{++~e z*2Rh)d)8PB){PCF>xX@B%C2=RsgeGcY^)7GfE7Hm3^|awa8VlWvJ_k)#x?BSexLZb zERFEN4(5jtFlAl#u=GU6Py^l>SI3ga#q@G z4F4LjkNl|qbG{A_5vNr>lSz3k#%dUT7EO6WtkS#^X(d^R9CTI3;+r<>&?8dTp@?an zPfs3?9Y)PEvfj2+#preRoTWxA`|LxX3xPFuACr6K?A!}fh3Pk~egN40VPEtm9B|tSxFAZ;Y20L|Jwz0dVFBAELv7syda<$O0s$(>{6=#_Nh#^G!@0>9w=2 zIJJi3=$ygRxN@^^Fm2ORYq(#XkR3<8-+9}khTnNzbA6vwVh+c-YeCI-9<7vr2CLI( z?>e7*^HEDpoVa*y$Ikb3GM7JR$#brsHtYd4>`h*>a?p9`9$yL4v#Yjg z5*kv{?lz_d(h%R7Fr|&L@2FAd{NmpTdwOx0beOL5!wsCYNovCC8|5wOb{VL)$LmJU zuX_Fc=PD?>E(aYZLgGbF$!LJSaJ@DAE;UhiL20p|mYu23v8ai6Dlf||PE z^w}V|k>Asd-LODfn{v~NkeMJDqoNy`0L-4Niy@vP6qN2u$=!@Cz=_o*oCp~V>#E1b zpg(zdvGfv?=!pVx^mhpH%XhV5IrLF~d0F)zcS1bv#znb=ayP$u1Y-HAaizM4G(+`Q zHsjM13<~OR2xC+{WzRgXK8YC=LVtPk^p23qEI;Tbq`Ac`!;_&Qv*KII!=f8hh@Jw# z@PFQ!A~J3j?nX3J44hXsgYm~(tf9$KplTQZ&IoSp9|25;j}QP0w;kaMLAGvDbp1=S zky)KDC(N!ZX082ngYV`{A(C*-zjtZD56y?B#0$PzNsWK~7XMw+XpD>oP~TKSWM(Rr zGI2853Lq~;AXCQiLraM}t~LUZ4KQRC?oY)`-WSx4&j>%?Fva1^&)r~`s&h4J z`~DgIs`5)sux;e}CgWRN0=GHf3y5sxCsnM*JqNoNP*Nm;fzz+J7Xv8b6^aJ>EncoV zWaWsKDbN^#d$vjHye%@och=$J`IjkJ0OsGSQ4A;Xw;kwjyZz$3 zVo`mWh;}jm7Vo9_nKoF|E~c_KMwSMJ4hO_y>{4fWE)qn;gWT;pPK~vP#N(4VsG=2R zBh;@`1}w-N1+2eYld=RHeH{CvQmoz|Gn|jM?@A8GC-vIf8HbMyyrn*hX@K8U{ar*? z7qn>M&-x%M;XCI^tZ#rnZh#nX{_TjkV&d)U_(#!oGH|tKm}I((B4%d;zt^&cL0Sng(jp8%e<6a?pB3`hDhg^PUT0ZeWhP z>-j1<$RFIvLBBO6>E$y7z&m(nstY%cT3@#X%lV9mKJ{CiO?wXp>BQ)2JeIl$sVjQ7 zMd0gRyOJeQ1*gyESq`={3aTC@R?X(bH_wk=Ret5R6>w>+xkrm(qJO#1HSw}`h>*Km zL-m_Ep{QlJZ09>3xE_i*JrVOC^oj_q$wP8puXN z+By5VK_A9<#+i|U+CZmFT_K%Hb3rt`iW}i)Q8FJq8q+tw>cd}?E3e8^#I41N=@mO` zhUCaz*%gicBC`54-r8=QcV3@!7`WXt#hUyuAe1-r_3b!52WlbfS^XaBl>}*2o65O_NfH4Eo)kYt& zmF`KTtOzv)MN9voHTyT5dyR^!+l$ku?cuhmO&Ft%NaSh0FXrqhDkG;Fd8I|JURbu2 zk3fUmLx}Oqcw6AG6bzF*Tc21G0}!n2c;5D$dHc@nZyBjydd5=1VWxI<4@RQr0D;pw zRcbT<6zc$Rxvmx$eI2+neJpk;g}8a~6V$3~`s*sFX_040_QCD+09dSw`xi$mA9z-T z+ploJCKeKcurU;l^%#fDwng~Uy84^pscmI;1)e?MBX7LdJMnFh+)0lX7@1FbA&XQ{ zlc@(k*XpZdUJcLzw{5lyqg>8dJmE!x^K`^h9FCNl4NYY#6DAuef|Dj#OL1a(`c?- zY#;gSrXD;Q#9=J4(pC}MIQRHFah7Z(J6tZ)T2rmG_r=sGnqG~45Lb9U$mn$=g4x`E zXBv(}jv)1FqA3<3PJT4VZwyLu1{M)nBBB_Oy!xp&&6*!lYG5{=Bsnb zOw^Zi${tgoOG~6OmzZzjWeIqa#q;M0quk_yA2 z!!dFcD`lNc8dGRqilciRn~WQcwh2YKpTJ{fCv3VsrAN^c#dL@fT>wD~;XOHWX9~&_ zSCI8p-z2@1MkQfO2Zl8RQ7m60)%>@$8W(@J6OLNt*K08BC9op6Wi+3#$x!xF^~3{@nNtsaZogFs^RHp61PYt(qViOt@_awfvR4ZUGnUp4g!I0S&$hb!SZm=EQks{E zY_frk-o;XPP%z{&sm_7)BETv(wr=C|S3LV3`V>202(<}{1|Xb?`rebAvyN^XRKBvIis`i!5SycCfhmbh{HFQ_g2Kv)`rlSm0PQC4~Jklfvz_baZI zn7Rux-3~PntDJwFJ>ffHPp}&&AcJp7rpt?B?s_j~0(cU6&1mRP0i_nKV5Ahc_MT;co(4Ib@A^X(bX#x$mkKDmwXEeb1YxYeF*0wCMTS|7yWtqq|*oUkJjt$7fD|Eo-3J@_L6wQ@A^US|?H>>)Tj{ zweH%)LK+d&)NR{vteaO&E)_kOY(h-Tl?`TWFyDD#e!JlkQdkBENEnt$YM^G zB^*Mby<;1nz+e2R+5Byc520Y|V!N?&BP_GzV*r^&@^y}}VO=5=@c9v?m7YI; z3bE#uFfe~6ff1L0&te}?zPq&olM5enpeSxw3c+Tj>A}L)?->9I0vk9*+~Cxg8y~EK zS@r_-=FWw5YLk0z?NgHE z%P1x+Uu4*?5ZDQ*>3(|#Eyki@pP)dW4~G)-%{I_0%SigW3xy7O(@dUI%;{35;!=^J z{PK)DTC1(i*vfmMxB%E8#0XO=M4i3kzgs(HDgqYP^%pLlQqMQ&2@ma-`d%T?O%8?b|>ogofeM@y09#$J2tI$TsKZ zXreRC;TMXg#-1}a2>9$CgccC^0Y$&-W8kfo5N0I|mE`B>>?}L5g&jDfxd-`^CBl;f zSVtn}r75J_Jz2+*Wx?ofnw#hHjOe9IT~EgM8lxW?t|JQ@tLBVJAC>)x7T=)-1}(V? zxzv7WpXp7Mn&SJy{lo!Y+ut3&%r0MLr7Y8Mel%HCJIu)L*q}`PrZ|QLX_$Q?h{<*3 zz~RCCImZpBoT4D2jOR3{LPJ>ZzHR*ov?)2YwJEtUeh?Hj=RwjjK0lv%V2M!*# z@8j7``+O#&PT%EHiaV)TaNDUA3`N?Mctc#zvIu+hpih->VtKbl>Au|2>Efcq>Q5>Y zj%q$p5U!4TXSoF-dMNp~48tAMFUC+VeZyXv7Y^~`Nre~83;ZIZfH%3Lo4=?kuOa_g zcG9V!R+0%EaI658rEyUKr1q~HmNACo8PRd|^S>PUZ9GSSROUrrJO|DsX#5VPwciuO z##aoiXz9hQm0c#rCkCK2`b%i{Z~nYk>w}HO92e&AEKCV> za0jbGlU}POLO7D*+3)%Jm`AjJyi>l@0OD~0lUjPdc=cE=tVRZv1Q`hj^!E@PZh-cR zPu+N3ZxxZBsFoP}#=aP&Jl>8vyM#i=!^NFT z|Kk}WuEAts@8{XF^j{_@<G#+EX)yEB7e=Z+shx4eZSQtzwC(bw%zO_c!j{+UfC6j1P%u}!lw&xTGoB=5TOPk ztORmEAjCrZo3YFu#T@ zu?e{>Fg|`!N3^OF;x`0x|h=(+=F~eLRJJ zUtbBS%Qr?jHM-t4C-Mr)%EbPS-J@y9wahe*Nz@t!SMOAB1CNb>wfIoqkk&1+vVdy( z-|*%4IzMS4wNn0?PC~_QF%*@Lz1q?llG(f3>auBLD6sUXi_tB7W^{JBK&D@a}MsjH3}!EHPJP` z%uip%!${9!xaF3$Su-swB|>Mp>1(ta-E8GZUXbdkrWbNYnV=Jjy^zs0UCE*wrtTIp zW@LKRlus}AxO4UMl#Z$aZU$GCe?QND-gpMuIpeP8ik;0b-t-+3(;}H=%1rep?Ncl9 zRbzq3H#J3@Nrp>RgWTP~qVNzz7lx^uSFd09c}$roRNA||>ToazMMg-8;%po6rOWg` zp8*rKQZe+xAxj|Flx>LS5`YvD;TTwIJ#dmh=*YQtbEg@V660&l?xB&TcwX|X^r-lFAvy)bpSg1*C*VNw<#X`8Z;ukK#*eW$@PZO4WSnVCL7#J03d|b)426R!Da;i zUDSd9fv*#erVL~7n*DNhG!{+vpj?5*C5Y1D;t$%zSZCDEr7(x$*S(lu1hl*0tC>$N zb)-&ZUZ%9UJ4#p)%P@DWH4Ei~M77nf~SGM3YEA)^JIKS^Z#wASfh-*4pZlp$aCwVuY&2Ei?U6crd)UbHgO>M*-WON6D(aM zpw-q5Bx^?i9{yJ!t_1-lh!}`?Fg^!fa4_hA^()ja(-i}p-n9As|HNcKHo@n8Yz-pd zdnRY=hBW0RwSgfUr?0FrQqz~#)z+9Rn%ChIGnSGG{j1JOpQ&S{; zb(D~e5IJ}l#$vCey00Z1jymC6^?80#LuYKeyekfyEn&k~e+s)m)8zL|)g32HtlPw}R(e&jhj^m%Q1mMKA;e&@DvjLxskv=-Xh9Gen zO8$%*sCHoI@zng(d0X+}K8D2R{G4}AfwRfphQr0D1Lvt%$EVbb9w{4N=Z5ntXer+r zUH5kIe~%U12{Y_vnyEW<>Re?{R(wwM&r!et^>tQ1ed#Q9lqM{OX>-;*V#)9o(bt8}+kWMlSgBbnL|Jj{Z2D|OKJFw`a2#`+6Ya5ZC_qtOBC|_vQ3MZt;HEX4 z32#$W6nqQbJFo&HH!jG4mOdZosYUC&mqOJ=Jp@RbDu4stwnn6x`e5mq`3q9MpUA=Z zfXM)J`h%m%RYP7C_wF0hz!YUI*cW3+wr4@6pec6m{ff%6aFF_)4|6e z0j(Vd?jEserUMrWRR9mY-L;do-oCy-7}_p_e|o`YouSK@ z(5)P(S3R@oh*a8ADZy$c;9xdOwJ~Gs-P}^%ejJLMPtvQGPGj)YGKKTLviPS{!5*P? zE8IQy)5}jxN3b02U^U1Yub3~u#9&E8NosUx8q2w&6G1H;*?Bqs% zPIZy+;$2RFoFbQi%>WVbZlwk7)1f_@^9A2G#=zIXDdt%OM%lB%+FG6K^Sz86aZo?w zAe@V=;-480U!y1}AH``vQzEsoAU}w43=+8=QyuKk>whHkd}9^jB%Xu&l%9&B1%@uE zIW1|*F53B3&ES8)fYTR3KhWq)n{tZr5|f4LbaZ4>$zzIq&YuV}k)_f5Crbf$fSp>g zKfacCB%x)B?Eoq@;EY*ie2{}M+H`g<@S5ZU-!aX@q!0w7=^nulHC=cE+VWE(vZriSDF{z}K9e4#JSU#jfLkkQsN2MgAc`%9aaX8Zu0cg!ZO2pp8KNsp;e=YTNKW` zHtTi5XvtzpU~m4_SM$Q^qj>67#Wop5#dbWPxc}@=U;uRcdJy{7(#&kfJvHCieuyh@ zjPcyzx0R(3QcSrBFPF|C|C3F)rd8nF$H+!jpdD(+O+8y#ubEr=aK%naBI#_7+Dv0p ztb-x*<8vzR_;4Vp^5anX!A(`yfyyj?9LQ`yp`?xScF*hhp!3!t7d|Qo!>fi8(W9wF zjvitZ)?TZR@jfftrR9BtJR50_)!^fj0hfPJ0n71~%7B0>1AL4^LDs@jztaxTdW1Jm zQeD!sN%Q3~DHD0*7tefyBdYUZ%rCtU1s_Zv-{GgFa=YubIvEZ{9eSo|WV9lck>_k9{&sR1} zY1&C_+RZx6=q^>P9Lw866|q(bm#5vV`TXz$wZWF;Z_R;)hv@$<+q=mojrEqWdHC7s zF|>*;sH)`rK>}Y-p1~t?8{c~>Qcbb-?H>a>#P}d+gTfBpumXuTrj|z4{emFziQb+5 z26WF0urYtKWc2{N{)G@mvExao39&N%OP*cL6f$k~z}A0ctT-|e2|rWH*$Y{l6tP>rfR@Si^xBhE_ej6W@>{A=z zp-iese&5xrlP5lIW_0I&U!1v)ZVZX!5|L7DJsf%y@I+1G%KG&bu>E`fQu59nhm1F9 zMVDnXNQcGPwU>Arm>aq^-vcto;oRaqNqNgL1l%!Knz~5D2G13dzYMOxwvodu)cJ`5 z-X}AlseAv{V1W00+0$Rs*m&~MJ9|~XlOxu?UwLU{@S{}qW*?XS=i=aLq)rUQA9=ic zRr2&6X&RjyBb#Kcd-qlByNzp2uYIdaAFmP@kIc|+y7cGp`^M%W4k%ZTS6A^ z&+EZ^En2THDnJu_8GLJVs|hR+iICfG{vKEZ>)1w<2Ow_fF?shl3}E(OW2Gs~uOM8@ zbzjT-E%D>0n`HC9YLG#~pnZROa$b_&`-tbjO1z6ZxuJr8;ci%_VM~*J1P{|CAwDPJ zRer+en9K59+UjgS7>I8?^^$4=b@&90b@ZZd8XO8YG#lZJp^qhMIUwW8{ z77u@l0tA@iptRyfc&dT42T<9Lniuclun(REVU$s9bYb%(14s-y<=X%*9zMX55W=vJ zw<(i}O^kn}67vqH*lspPzp3))X}D&jN`G9Cvd#1Q?`F)0ERHB$_7yr-WR*Qf(|#-8 zBM3fY{dLX>^BB&;uI17aSKMtCsD3d+tJO!Uduz%ou^QqmOH#S2oQha@EIhM#=y$!%iI}lz@-H! znpn6d7GyAz)ckr;Co!A+m*wsK z<^9~Bha*G74L8UpG>e zgNH-i}*ZhvZUtlX9HI_2xYM0k~BI_Q1Xr zs2V8WKV5PYN~W9ZSF#?m>j{}fQzt_U3wDXPw7*mSbzm%Cs=jG{^j+s9w^y>H-@o%nowy!>jS3U?>)dU)G>UnF^FA44Td2+FLrm1gFtU-|3$jcx_N zPnETPNAh%3W^<~XmNMk&H2pbI&swVkf4IKcaM|e*MEFSh2`0_q=@T2(zo}IEC2Y=I zk-yA{Qy2z)G9AsT0|VinbN}$W(G|%L{MUL^AHA><#X~x?-sAo$WS@dAa|K88HO>BH zEZueh+c^CqGi82i74DKgf0$|G^+eg4mTT=(*sfi^Gy>R0q+oMrpnDa7Fy2AYw;Dw) z?E_v$KJdO$;K;Lrz;I;Z!=G~WFu}*(l5|#(1iigmJ~Yf zY^LO_K_*(14285MF3g1zlOy47lq|HvXG1)mS+PZ2S zYn~1}@da`1(rRSif1o@yCD_0;8pmWy*kH~lKwvp;LlJ^Nj}0KFFS%f9K{_&-Z-+(s z{Vor|UIgxj*|oLA^?yAnDc`#&Q6{D8I5{L%mD)_CD9T?+5Ek4Ng#N;S3NDB-yK_~3 z!j3s%7m)ljhu>mi6njJzR219(W!Zl3a;4GXDZ%g#zEjn|rszFB39UBaO~b2q#|6yQ zX92$(1RK;XgYmuO6*|6%Af;+(paf#s%OaZ5HFb3>p!w9lM}v5a223j=S6^$#N>c#% z^qC%WJ_nvj#(sbyW+xMmVbbvx$FV_|nX0tmdvZm&W#r_+Wp-5F!}rQlj%qwMD<8bD zimu;kL+biQ(>bL)Kf?c@K$>;7PKMubm6rI~pJVipe=cfQ^Vi+F)#ZcwOVCQ2c?W+w znQ5c!VdAUg#Yo(4ZzJ*~yprI%UZy`6A77dWXp+d)za+2=!QBx9yuj4)9RY`J5)+7_ ze@%Lw0ionLpwj9PL%jPNBv365$YIg)u?#sbvPOYgk((+)!YS%mIOu~tr#fkk9W*Q~ zmmFvZ+6kd5U|%>iKB9a>;-HeMImV+cS7Cj?v0CnCj2E|1GHR zCHKBsGOSA_^pa8}3A~$A@3u@OOY471fbfvYcx~zN6sD>2lK2|8uIGe6 z69saoyeSEN!@j0|P;1q@N}BXDo_aMcUSznAJOr@vhbFhSzojIFlQD3;US-%JQv= zuBCIz{}N?eZa3M7bF6Kb2hF+XP?p1ft_+=Awh|B8_mnVo>zH2Ld*;~Y53VXfxut!a zxY^SP=&&*w{!KZ&maI}=O^P4>b(_=SsBhi5lcBsr3}r*yu)tj4pXVKLb6JKr1Nnw7 zU_j~cN!~8w*?|5XxYE+?zIFmW{4{>3Y_ZkcQc|`bL=qZ6bPdZ`G>4h%DqC)T{hMf&RAjQ}&UEqnA1I`8?*ce++$?J3RA}qABGFrgg0^wA> zG5ikkFjYYTI^wk_8GJ(Rq+i=_BvN7q^)+dTuBDb;KF$(lDD_VsywD1VO>gwNwv5L* z+pg!GwuM~KUCs$9!zW^oN{kRS zxs4dLh0lyDMSXvRJoo3}&0A=ggtC)K!81ed--C=9yN04Z#;OaPX8Jj$5wuXqoqYqn ziNLoe1<5Epp8T=scoBHhHaqaH6{+8$bsv>RxQ_JJDuYFXG#(Fd*Z_NgMw38bu&HXP z5UEwL{VO2x?q{lsp{B0?PO18(L%uy--(uhVl*e$8eOIc+b1kaQL(7RW`jB=x%Bto}d^zQJps0@Ou9!a2rMj+p|kFn_As8d)>R zz$nteCN~FTf|0@a4PYK@xjLA*`a1pK3;)MkblXGRN}nC!77X|+>Q4k5Qr(CLh3b^- z#Pu<^#2^vU%e)b@!~-V8jt)}Uk_w>$Bq!!kHfAZUw4EfF_xlOj_M-&sw}I_?{oLzL z#A_NY4DyO}3y%bo(VidezS+sSd(}X1lXjNX334Kcb2stOed`(ST-?3p#PQ(u&Ctmd76nMR3rijN_oNCXz6j z92eGI?>S?CLHWlpr4=i;wx|NCH2Yh@j~ZcI2Qr7juGUtANe2&sYB$67@Z=hLnxx!C z;VLDz)?NZnGJfV$u8Dt)`Nq|O{jvv%YaT}JE*WC;WDP#I9{fQMCF05Po^iWz0tXQ<6@GiN56T7yH)m{K$psq<9r@;X;# zFGRr^J6%xuS6ac}TB8)F=Js3y6;`c38;A8U_FMh1MlB|0?FPN+bEQ2V*MdjU<=xnV zB3Nu2Wp8fE;?LpHSN753De>d~p-;d%VID3C9!3i%)CEL79Rlz0#}c5)i=g*X24l=Z zb^nhG5TBS@8LrG^t8Za$Q0j+)1{-+arI&q3+{5y^-oHHJ5_y^8EuVcHaaS*as&fT{ z7GbR3y4D-)nt98kCS}eW7S^FGZY%XfDLnqqQ+k7wDGZ9j#%DRALE2vD2Tp7_m-3RH zR_L)?_~v+$jQMV? ze&mo=g7Yqv77Sz8-Eu}hCv~`(e9eT1OhUbrDiJ^C zxVy(ieQNAtI}y4l=&q1~2#?d%XF>6FV2n-#5&<4xSaZ8WeJp|m=*-zQx}et6L6*Gi z#B=-ptO2;;8+)&%IAOw+4g2~qR(h-lvLBKB{3yhbTH3B6oAvI~b4EJhk_kT-ZtvNs z*i8$&k1JFeKOmSHBEbzyW129WvjaSii9d{t<-}5|-XBIWx06_4kr|-UBm_1G0O2kFooLLDdNF@KCR*92X;wd*b0s%+SIq4B)Jf8C!f z`0RW)hW`axG;oaEI=>1$HDBuoe$D?tZZy1ijezgL%LU*TOKwT7<^=3?6htamWZRve&|2YH2x)a0?Wrs{%M9KOaQ`MUa-lQhQ%PFF}v zo7w@)9*pX7{;2EBK;z)8<(5ZiK&Ya$ zi1?HM-XQJNP1mJV;vC&v8gUv9dqV+NBqkhqqq99?ur4~igSAB^yx_%P>bqA9#s`ky zh?jG)FEX={IUa#dI|mR3fshXnIPkB3=3=q=lV{LLyl_+tgE5 z)Z?}4!{Icn0Yw+^??${AO0;bJCog|R3{bYl%gx%sKI}lnGY5JDCp4I{X@^j^i8Pls z+mN2?3wzY#J-^ZXaO)NC&{C|vftUlY?A41pldGlX$a-^OIp%Q7J;?egH3PwqixtA; z38W%@b+RN1{W1r@wLMJ33j||ySeXN;uzWi1Pif4|bpuST0T6NsmATjHn!< zteS=~E zw47b0Ox{&OF}I$!;Y+VphuD$t7#7uLhl?XLe%KZKNef{22)-dOTSip1a!rYj zY7!v>t|098^ZlSo8mt9`o>(C1tRleNIt@9S?rLUszQhT8k$#i$BOMxAeVMHkJNWYh zX2itxzmBu}w|)&aD;}5ri@y$8($b>H`3uU|ecc+B9Fnyl;xptV-^PiB=fuDF&=@)< z6{IBN!Rpch&2BA~*$&v4h@4MbvGo&&(C8Ce0^9AxG~_L?D!qu6k*CZ5pnZDk>v~Is z524I|L{cnCbgr<~X_uqD^3*gXDe$O9d%&yUmf=%zK1X)^d6uJ(CW}B@RgCq@LLrKP zBs71g;d;CDEjAMsaE?W^CM)6iV1*;Wqv4hj)SjSZ0RCz{!1;3;Gt_;C|Ia078{|D- z%Abxk&SFZU^N6khWKp-D=xcQ4V?$-6Y=tP?_XMhef%rs^bC;th(*2}z2{H2*nkC-; zVaaz)2UH{y@Ywrc?Yn7TaMVV?6LNQe*tSWRmV9!F5lM~n;vEvRtmW4fgD#)JXl7P zK|uWaFlFk?mF5VTEI7c;pg=#3oT6gj7m(9d?7***?@fXH1N14o!8cRUd2aTFOATFU zhwt_-_fvu$dFV3*K7>KgmXCF9dyqYYx`Cj#X?% zbRO2#MsR0>v^)GrSGp}o%FtgaLUzxr-&0;OZ|ENDHl5R|8wU%zW&!92Uf{2|HF|=M z=FtbU+YowF`Bxq644^aIzt#jWXQ4v1tYHkge5XM@I&OmIAqEwX7CqzP#J>EY_}Y4f zKdg9@yyK0(_HMAiw{iW~c}fs=WB?sj!HzT54~>W00r7?x;7n5vV2rYYFTxCpQjVMb z<~Ja+0I=(I(-t#g`ewu70ak+bl;k|21JCT8h|a^iOi4s9QD|R2_S2yK%$Ya+5Z)DV z+C(2Ks&DhJvlcR1Uu0@Y)m@wwU*-Dyg|G!M%WgFGUG%@`1It+n9~p99EY`OZEoniZ831p)b^!E^mcikRkwBE6lEI8yhris%z*8cKzf5$( zZN`$wy#_jQ!%P>GA9&g#K~filE2TI?QYiz8(<|Y1-!AWR`Fur_dhwzUfBs1G)!KXJ zWWf@5oeGhE$MN_`WI3^lQFY?>wB@^B_0**-L#dm@YW}D%V1hTTS`Jap7Xu$&(zc&5 zNU>!X)4`RAO{GS2bCYx9-$741wg=?u6}S30lm?lm#vU_IjE3dfqX-(oN>ZM5_qW1(q*BOuxc@R7&Gbm@zNYhEO$vC)) z^Cx;0$s9_fKly*Z3m&Ujc*O4N^k|pHFzD~493Cf(y&I5n_}n)~H}4*fEas|Aq)!^g z#Ve4$6~>KdoN%;O){*;|JMX}nfB(^D;E6*5R$g^_SWdGwSdw>JYG71t#oCwc?`*rJ zj8kAnhsfY(A@ZszyDhYHH}1n<=S#oT6!&jWizItNZztr&{}B1GGXni;qV>BwURiFM zO;m`gTA4FwJv*n5KAS`So=#O8Yg8|vLkX`}k;13+ICuIYQOeM5zq}f=Dhj z3}6%o8{%wyxUBy6b}+tX0N82aKp!X4{&2Ghu;>v;l_KuugC??Z&HuO8m z$SN_1(yxM#m837YK6@eWUb1bZ)A;W4QF%^VfaIRN%7q#&(Cu8^%i>ZbtPx}woog|J z?b`-)Zc&Q;SYaAJ9r87)2R)21En*T>ki--X81i$)!0L+t)L3iozOG=XT7fuqz4zbl zp2hnxXCK0M-|FyTOtW_3gsId%<{q92t=|{)_NqVa2Vz>Qw$TPmum5=UKOmw4idmfP zu=g0V0?T_zSby#LqyN^@m3TAS3l}6s>&h;+r+}8G9@Dxz*}zY5n2eKFN*@Ta4!iQ zRio)gieq3$>aQ;#7j={Ofcua{8q*WH`Hi8f6mVc)iCDCK|G9F1N_5vnTG$Z7>K&8v*f$AoTcWMVnj3l?pl37>cPvEXvu_-M`^k5)R~q9hOO#;zcnRZWU*v)Q<%*!4YVWc`d1#fCcvDZ z8{%Y8676`kZFuZ3XhhIN^8_)J$VrAIc=+B}$@~o83IS$Om$!0z-Fb{nu9x}Ep)kgu z4J2BIVGQz{*)JH{HaXHhTxC7{w8(w}uBhT-HO9H$IXBFPFf1r_fogPOl76xcLBG)( z=>@+JA2Z^sc&wNzo=(=Y$v(m!UHk-oTX7Vz6l=W>YfZd7Cu{&H?wx(A_n#*kx={wu z7duI;=r@+`9!wU$Ev-pQMGMFTj!q(!C5W-;>*w86Sk@^%u;^6QbNqF&iHxE#cg#5M z!JI&+d((pKy^1SD1XgtT8VCklsnX!!Tq_EWoMQg^Gw|u}6X#|x+dw!9$bd|}hw6 zYiZ>x#<^cTb!^>?EExhXv*qHU_#t8dv+5W{1W_iJ2o0q9AZvgLZ=HJS0WP9J-@vh$8B%E z2;C#oXdP@59FRBBA1f71=+;?Mop!JX1A+AI2naJ8xp2oLjhYlL#a7PWrX}I!TVXaC zu(|UjJ>kk_%&jV>viqsj03FUnmbe3d^oIYg2wZ_cr_F3xnjZ#P@o=kd`OYk1W%;GD z?HcGO%aYma%CHONL4TX;yhyuIe36i19FSt;0U`8K;B?~AXb|yF0Q#~4qa04xKPoZg zzi>!7Z*}AoJ#EOU`P)7e#&3`3kLN@x)0MZOc&`x)(L+tDk_CZtACtqfZ-K9ceLD1u z-2a~k7ZFE7@BJ;&K=M!7{ZMz@!0V*^iIte9GHB?P54_6g+g`%k*P%ECKBCY32%W1x^Yag+Ynk786TYYz zzZuMWK)E`}n)wv!4ly(37~$(B*W8*j7J&ZmUU@gEPcXu{f4!@+`w}y1buA4&@HQ|1 z{pX(lN7Olm*VQ%9I&5P$#uwW*8z+rz+l{khG&UPIwryv}wi-2V-1w~g&pFSz%SA5s z+-t9iF~@jEb!>^6y#nrC$oZ4U&~yY(^yJ)C(s!Gm8MfnS-*Y>GwlAU&Gt+=1@L6C0 zLRu#?v0gpL88fb9wH5=HzRCxK!&&&42O{fi_HR!UC-!CCbpI05&yW5(e`8o$*vzm!neyI_$cv8cMu#KW+@5Ud-5&u>XnAq=$c10l*M ze^4^_OoUOH{Y-887WlQ53cc%ppTj2iTtebqFD3gC%hE@TZ{TLS#7%qNLmaQ%-6F$Y zH6iNAWxq={UcHaqroF!OY`E@8aKvfFID8jS)_=3018xNfU`PIEP@bBIUB3fOyR(48 znZ9w0kk|XSNBCs{2|=gs*W+!RegwlO$5A=vx;}V7FAswrVs+cJLR9IFnF!i`r*Eu6~Xyq1$O3*CL#2zEe<03bw>#( zuU!c)0n#n=%E=!^3@&Aw&~8K{<_sU3I$QQ0n(+nHXGJXxEl4ymKF=q-KK5x@zL-WP zcI;mXlTosofhm-|WAdDvIoq;$M=6zj*;fjpT&8hecB+Mo2YJCL{WX4f^eD*0zF?6h!m`)P*E)`hFaK2=qEve%-TVet^YI9o2qA2L9M$diO0 zk`yo5bk+K%S!Eb$xzIlRDn}*>-Z}{eHeV-=U>eHvQ&2E375Z5jQhR~BWV6&6@ZV&WFr>(!MVrdoc8foMH)+Cd=oIu7u@D?>RJWsm0Ax|w^bknh zB4xX~>y@v3kDs!ax|#W0JJ}-GO5ji60dS)uaSzzkF*G*l>MEURw=76`|8mn}l%l|?uhuj4o3Us_ z=?ABr4_9Gr>BT8sbA4eu6Y=xddEj|7^Q#x2ZVCY>n%%!U0mNF(5mI06*BZ-ip`*G3 z|D)E1m%%F@WD-4}D?mCS&e8b>mo?Xi^s{7i_mh5Ovs`%biX5t9`_jxrNl z7lP`4FO;w?&21%l724UCS&HZ7orG0(W3Cre&j>@z)C4v?&)5yHFuPpw3c!{3e`B!x}F4jm5%TnqJ;SiX@+-RaGXdrwzBIr^veTSv z^$a`@VQctEZd;r3?-F9HF*>RBa3<@D9gFnt{|}lU$-36OQjv+$W%cwahm@}{q3{?LO<*@3)|={32psW? z65&4}2x;7mZoPvga@fVw%&&p!R7nU|rb+Cl^>>s!QC&YKZ6Lfr-^lL78q7Rc2ZOT` zqhDrARg2#p`AnI*=-uKV(vl6nnQ&jX=l)nzvPXbV90R~-)MNQhO0TngM~E07OQSOs z2kULVKl16Y4HrSVFk+z%{a!VXMaa-@#kFG4MrDEApB*8I69P|(<3ptA`_biUrrN?2 zmMeah7Nif16aD)+TrXW<1W;UZ0=NAamQ*-Q5}y8RcwzS}<&e929&{BFJIM$q#;7!8 z)(%c$JBe&Fn=ZaygNn4vQN!j{#~w)2V#-0#Uf>Mu51aP=wBmJiE!^`fmJgvM$D1x3 z0l;E$eCS-?0fV3~&cEA|K*h`bR7u^jV0m@%I_aNmeq5Z;0h16fzwa#!B2YaV{^-mNyzdrIJo1`&sD+oI>;Xxv4+Gu?EuNmk#X2@E!q zxiKN;dq%9dFv#PJ;DL}tulPSXX(dz($_$l&=$+LYH%l4gp^d3Bb` zlVZrVTm4+qxovm(<{9QZuIA zw)=5cn8j%jE^2?34sA_-dB(+f6-mvznUBQ$aLQ~5(>_#3o-PjMl0o;6@yS*pXg?u* zNpz{ow1mv9J@c-}waG3?>6~;*s?Y$L3{|vt%LJirEK;r*S5gZ;2Zd&rtKpX%ydiWS zeynYw!!YZw+^Fr#wPyXcsUa+gGInB5k=jGZW0tShClv9M{3#^1o;DBpGk(12a_M=; zSVd(8)+y=&^){tV78It+$XoW@q52;7&-cP_d%}N#JgvrU+ePF2w+~r~Ukehy7D7Iq zMHFyN>0X@zZPge+-%HrZ>;Rbt__we%;u@zM8!oYagvR3p5+esaZYIW0mHwt<%~cHW zPxcm(B_TNNj#Q%Pg=IDkI~TNahCeFrt=}o{=onAQ_6OSa8b=Yz8VfGy)pzMN^BXel zrB0-o;`NIxE!;_%gt1!@NZf|Y)q@r*hO()rRLpDjL2hR4tk>oI2Nkct&O|PhO2?OH zVuxZrmjZpqHCO%LndSUxGJyXy1(2&){=)!Ud`LUvdojw;Bcy{#rF(kB^Kki_)8QuE$Iry8N;EIHCP`&f5TCDhQzJ^yj}-A` zWzTQK@CFa4%9KBebqXzG&_Z`#<`(vTpb z?T_re(m&xbB|uoN&slF(yzz5?$LY~?0IJM^3nfj7+=q{5Ij5c8u>V-_x1enS;6a$7htdOFnfkFOL=b1{o8tsy^|mD}T=-$4OFq;uH5xmXhMwJ=dW@hH zJ1LdV6%afY=SsXdp0SjL*lm|WKK11b0>)#JLDFSH8~ht{~w{7?Y_LP~Gz7*J?^ zPOO}fh~VU@2Dzkybe;(4`NlBRIG7zcf~_j#0ooa8p&$zV^IA}{)y;}Z@Mq_JYR+b- zSA>lm3MNNPSKXv5?$@q<1R*OGQieZ^&V96wg)NQw zJ280GW~m3FmN4kxR+yBNZx7nf{7z7CaWyO*QI!G_(ONJ*h7^jqgk-J&jxr=2-O`%sbb-|dj09!w z7j05&{-aiNotbQH)yd6JGo6KNH(H!{ZS|RRyk(gP;{jB0CCNF6a(I`pB1z;u8qaM_ z&s(-N_Gw*!g_;n!D6Y2hsnqYlmLm2t8$cmMJ`HpOY}Q}^L2Gbz3RKFr%#V~apF!T$ zyxUk|g!-y^uZE}vQcGDGoz#Fo;hYxVx(_6Ok48zvJ^XGjsX>g{ikHp+)#kywZ$MQ; z)%2@7EeC$U4dv~VoK4vgb9f_xws`j^9bxVp=Juy9PSjMdD$7+g{a*H1ba{dG>^E2M zM^~x1QI5K5T+!NOQ_`|PZA0G*$P`WoYs1x>5qM3=!uGaj2f&b{bV}|AY1L zXP_u;lln#l+)Y*nICPkBU&ovx6AU!amdizJu9vTSqynbN&it-g{3Vw(sf&tmVsAL$ zLiIFr>~`9J%A4buSW$^+OC>@`hvI&ASVNS>)R!%m{l;(=Nu6t&X})D)w5ljpFqQpN zSwF0u{xJ+JKFa?D&`CZ3>m&^63lc( z3PT9ianyO_hU&w6;7T;BF@?oKh3AY;?I$15PjmkGO+`+~=L=n8Z6K{fM5q6yI>FVL zv+(m$OV8_hq>mv8NHYRpPWQBI#q&1m1p^;^Ng69+6-nZX-^pd~NH8R({aoE(Z!^64 zT0bK5mC33@ugTV;33ZXa{+{o&mMAKVC%*UG#D>^-Buq{8{^691E9;ka)0DIfRPgZo zO>DySUrW7`Q(U6Ws;TK}`7O!wdT|Wl>kYKIn5&ZKVERm&nakLCox2p#P&yb7vO@MJ z`$K~yq9|1Jr{!&t6wWb6k{!lPlCFlun(OntvN*r$3)je2{4Apkb>BWQa4 zarMS36u@8V`@FvGFiKiTTICKTgcBj5KdIej0t@vp&}Tf(-S>7CC+)-5my;`-<^W2T zp6Jx9)x`ZWawN}G{o@rD*8dxBTRmU5<_OUU@Y5Y5Yi{AP3%h<_>AnGN-)kFF0t;N? zo1e#5Lnc4Vo8-Bk8!uf*X9MlfhcW?eU>Z%a+?k$C>NRAY^xa-P38_A@JA6edu|ycl zc+)|tj1N~Yd+qu6$b0Xq0?VL9LhDE^XqkNBmU3M=S8SmhOJ@t)TU=?GQtzn^dEu+k z3{qE>@}tiq*Ia&k)|Bi9>h(gi&JdBg130oiF9GN=-79eLN2@lV)Puc|n=ZSRp5JuW z_K~CT);faJQUeaYchj-^t9z%|`Z=CiB8sZ9fE5cBZt6W*DZ&v@LsrzDD$750JQeT! z6H>d3itqG!G=WR~(-2j{{L=zOEB59f1kp?9_?gy}*hIZw#cQ~L=d`;p0+`vRY1CyG z`_$yhMTkjF*P-AJo$V+V>!FmcQa>YnUrxl|wWyBZ}(`vD1I? zrbZBltIV)xSVYK9ioWpA4|qjY!eTdo{D>3)4HdzW&HA}QAg7DABd!gWIVbFn|BF+k z^PU8Jr#pZ*r+S0pc~0)0P$R;@Np=n_GVCK;AF+YC45xa#166;gZ2#E6u=>Wfjwwgx zB@%<%ml3w#=y@L6IJrIg{0rg-v!&w7`qy1Qz|3U&pJ51(qgZd|GWaKT#lm#+Y5RQ% zwZ;!iqlad;6s!3TS*Yhi`8Y5ftY{v-@!;#9^>4*#2xEb7k|+$KzC)8rewDwEj#gV_ zP$sf79>o7fml3aH0`CHtF%!LF8FZzwBEB zj0{}9?^Y5uUhl6Dra;UGnezun^5>;=R#UnQP!n+N0=VA03YOKL&p$W4zpXKpr|~8< zUV$y5gX~jua3yYUR;JFg%7zR;U?f-hY$-OkcJnuZDIN;yTNoD$HeR^^f7y6nIUQgo zy_Tqj2nwaV7k9S1_EHY@MK>DNnz*_hM7U!3-6>>;(8esKQS3HI6iJidKk0hXwZjB= zv9BfLLO?BtN{Zw~;BrsxHM2(7dh_kLw8*?Pifr}!SjLw$8Ll0vhdH)WFD&XWR}6s? zMTlX&NIS~d{-5`_Za9Fq@&ir*FyHZb5+gFtR-=9&(6x?5WCQmVu%{|9~q4F0@ zZr5X3q0+E8HC;y2<9pZbY&|#Xw06((08n;SND$STcT;vkzbNmZjLp@8la%VetY@uU zq*=`IuiOUqwtf}35?#q)+qx~f^T?Phf>mkns(1vaukgfL-N06qIEJ~FISIjegvex4 zswlcsIfGC&lln^|q4v{}ngc!VBD_LeC6yFs|8EaT6vk~3Eku{MdK}Uw=wTDUI8^`P zOk*~T1#HNi6C!gg#99E;P-UpA=A&bH11Ozud%rx%3(iA1DWhy+>8g~+Y^h^p9hcYY zhu$r9r_qVQHg7A&Yfew6q%%4z+3e5u5YxHbxBE(0e4+aat0tef}fhV znLrjEa0MZjTeAB6?K?*A%gECw7)myl$JlGVza;z>YyAb&v>hkBpB#1|z^&;gvDiT@ zKM#8XVQOv8Q{Ojr<=joofS&fm$cHU{@(H+ZB`s6o*%zxpm6rkQ+j@QO!0nn5_c(iI zz#ql~7s;mXIe2{ZVGWFQE#9LI7pS%aw1^TP}$Ac=9RU{ zS6W@9>%5kd=4}O~8ZFt4{iCBWscBLtbi#D)=6XemS6Fax&tTOAF}Pl&EO~hPnq(bZyi9Hqky+0?|#G9=}&$wgS*`dw@^5tXtwd zts7>sB5h~|#^+A7fe^-M)d9bJX7|!@(#xEN=loY$8EzkoH?NC3t;pd9B+%^6jzxQO z&8cQPTJl3qV;0rh3Vlw!s|71)DL@pi=t2B|U7KfrP+L~I??U?^k@w3>6v{omBR=x> z`*z1pjJYaUT(+ZIp-&|rJXe7s{&~((0gX#@?Lzcjm(bcVe8)XDzYvLnW>S;mpev}h zFS08&Ie6Uy!D5PoOtTTCw9#)(NFb^xF%Qqvv^+|Zp><`B;W-udZ{hTp@iv%$V9j#> z*q*~oTcAziPDT;(47m+$ zy>1h3>qWMu>Z#;NgwWkfKW~5PvnN!Q!L#(uRR&X$BkayGg?y)M*`!SW#x$13X0?{bGyqeVl*LYT@GY{^G|cZ^2^4NP&nXKZn_9h zY3DWqx*qcimH{Q@!RhsGdHIk6^v77q@U>jRzZS0|AlVtrCl^IolbX<{n4D0lU+-@Z zA7~%32WeaHnc+-tHjFgoR5(5Xoe}v{dE_6LE4*BLf#nuLpZ#uk#XF60>{Uj2{qWUN zy*R?IlTMl}&Ki>v4-!JSLqkHz7LvC9tMFZ22-a|8xv81FHUvdG>PUtt$g6H*&oOWZ zJGRb@z~W`Wu@x@7SrSK##EhWr;2|+1Q{p#Y@uWvDAC-?Eh{ct(UmDI)^|M=wQV%L9 zw;Ob7+TH#3bo${}Uu-%j&%IM5y7{^NA~_}aun}o+129^Lfi+U|zoh%8yJP%PF6d-~ zP&!q6mNAFaxgPzXjs^U|R~zMM&5wny%c2B8K%B zpFPu6?gmq3|M|(z@Cu$i`qJnm=IY;In1+G!2Z6pZo7pM*K3+;>_b;13&6+0BxP7!w z?cd}qW0i7KIz6ISb(-82!5BQk7*Nd*D^YI6xtFM%4T<`nId+LI(2n zc{!KigR^G%ytWKX=s+)}DZnUqTobDI&{JRrr;0Sou{sEbDRqkoUyJKkWmTLPD z8A5e@99$)b&`(7sU)1DHbZ>o1_%4zNkkOC4kPkfdc*eBAC> z&%Fv5p0T=BGn>;?{)+dphJ<+UGfMNTL@h2PJQ>`+S>DSv09}awO<43wnPVc_%~2iO zQ6l+@t1-e&R-@&~IIHNPrTWPCO-ylF8Qu2?^z^`d=iGta%IxLwV>Dkj&$-=#bjUAQ>@| zkXi)beGr3+O#8Qg1)e{8OTWlCnJ;Pg>2@r(;AftW&)6#ODL*M!b( z(2~8Y%fi6WB$VD~CEB?8Vrv>sif$6Cb3P|xNG+1Qt6q)}gBPinrp26c?Kn2~{2CA>g{uyP#9dc%)tZXxF) zD@?d}3yj90=k3cxA}g#*BP!3N2a21?4Li%;BEJMb)8II0Jr8n!r^OX+VqKo;jW%>o zJxuJWdceac6ZHeP-j-x($U6(63)F-*_Tm}CnsHS5?$yGLj-}%#!+XnsHcnd~>i1&1 zUd4dXIP|_e-UO$%0YlsaGOx$0#>JNKm2sdmQ_*qVHWx~uHsLx4^v~+|eIAj!h$MX| zZ^fr{{8!&L)zDfes!pYNlZc`T;-j;PQ3iopfnTfuD{v=Q--i8{F$7hm;$S8M_Iv-W z(ef<|Zlw3Fxsl$XROd;La2t3k53Os}}$KI42OP2|^88x!5J{BPt9e8=5X zfo#Mo^{b04^wXoC|1Hj6du!%c$~h>Kzd{Man#RU-g#~5w{9u{9HN5sQN0%SmoWVVu z*lpBfIq|ABqn3lM`?^}BcB1v;AVuq2TMzk27RmNX)_hsf0xN|4Rs@TeiofT8!3PVY z&Ba{NmDKqB7x5r~l$fy01-Z|#U3OdwodIh6D|`O7zrUMVGA#u~{?OTMgUW3+k1TUL z$4L$rDl;~*frPoGz|ik{@__EYUbsl@=p7O4c3kB?ly`xIkdW1mbR>bBwv_zRTwPlleU4kE`!I2wy4NS|gq{B&lh17A9|yg;e->soW4=PU!1g#OcG zvo^E-VdJzGOQd~7@n#Enr*St0Nn`kfYvp2m<-==64WxOy6esm%9=*l%TncYvDh(WK zTGyw!{BgynXmp3^Xvo~g^_Bq_*DLujWrH@dlCg)=WQL0>NdC-qWDU+6EgC7+c;Uv| zoDBh7r$%)W>wnpfc*p1k3-J+u*aB)|at^=tuUZL)iK7Z8Gk4vpRJNa#_kptj2Rx8D zU1>q3*mm{U43>>GxcGy^`%CLY%aS!W&AIko9})Arl>32D0S!o4ho!j{hwsVirv&m8 z%q#jI1IA3t$PU3(jlj$@MlXpW2;&^}#=c`$R{;P`%08#u%KKhhHdNU#J=7$sGCwD>x5IA<$ z)%+*9=9P9r;d_)#=A;9oY&l9_7^k4!k>g4}LYTUWZVu5x;G{4U+>1wi$r!+#q0e|Y zZrF^z9ItP`guU;z3Rm`TW8#z}_^$rHD51hT*411(Fz@IiN|7+QJ5#ebbu*rbO|Anc zpw>0*+xLQUUaDX5s*_&t_oI8=x-a1`24fn3$}6l9LECVrZZxBEFo^n=aJ&cbcP;W> zI3t5Yn)Y_h+QKEd`(B7P&rx5ukY6LBn0~7j7|nfI-Fz*zB!u}|Z(EI_dU1tiof3JK zw39Kt-}>$DbSYIMxfz2_PuM+9(C#HUOH>-l7O)Bp0Yi@jf@}3Ht>HPDX6f6H04#Cu zeF;br8JRQbG{OOl^CH0n2mY702kRO-k_thrHVT{SoA_Q_!T$A0K5JGN@S?*sO!F7=zIX6KZP+iuaIeZ{SR9SaC>{Ae!R`oyRE3= zYXQk2H>GO?2#2ma4Ihjm^zIR2>5`VezTp!iboWJ_jmaA|Y)QJ3S=lL-p;vNIb!Qb4crdQC z&}i#|FExSgI{kU?qQ4-m25`GRX;JDrR?L0f^?X9yY#6jmk^@0E)Q@5uEYr{ zo;?n!-|e!~S{AwaBxl@qkY0ne8*m#eoVfyEyhlbypr=s-`H&!WD_5w zg|N*>R=Vz~$ZPnb`L%#+J?Fbc&38jZXXLKi5ulJYIUMyr;>u278Nddjfn|abUYPIp zEuQ%Ihc-e<=OF5$OaMz6#uOKy+6 z3r_16w`c#YRsX(yR}nRn9-g#*ME4y0YJ z4PD9i%VfJy7j#8w#9rG%kpvHHSwh`E*`dGXT`n&7CQOSRSqzRx*eZ(7Of!!R4RT)_ z?n=7*ypD?8s%^AklD4Zou;#WDI4`N4nd0xa5)D){CPE9%xGL4Q+iZw6v78;T9=u~) zmW7_Rgqfm%>V{80?doM}uYrZo+z!~=2+oTL?ghF5^-EOgE>s1@+-rkG91ilHWvSx!PtXPP5#SgHlT zbx1=FcrcL@SegFG-TDrRi_?3$`<1sWRORwA@P#3`+jjqMUceCA5bw^uOVVHwjxM(v z1Un?q)Liph%S6!X!JjY$lqJj%=Sg>=KGdagdgt{{W(mWDktd8A?P`B^@iSu^hf9mY zibvA1DG&7>BmD9A%}uylXElYtkT> zeYbk7`c4Zrprbkbg4L#b4PzA}Lv-Xn$C&jS$umisOUS)-X1}Nj`w&=-S;6f%i@u*t zaid9N)96Jz0?Z;0J~=oV%7+td+6WCj@c&(Ix~~T{7!xu1Yl$6oH%}%_2V&pdL+!NW z*g1F+D|*2M#lg*swO@l{5WsN=VE)-oOK*H#9(=8CGZ+ctU}{@IS~3?N^9= zpM%*Zu$3yUjz)%EC@&tgx?-gnUwL5ziOm7kbBTPNA3tsT&&thvKAvsH zcAKaP=G=UC34;)N(6ikT$|Jts{%Mm~1-oqOr7!OIkav@R^4ex&nEZFJjbPZsHsFT$X($L(-v8;peY7hHc%fmWaW4K zvg5Slw8%~;*|_+Wv+A*Df0YXfre)l87YIDB#ZbL|K=}S3G2afxiwn*{dIDKGU_q=m zA7`;!Vez^CWQ(@(Pq$F8Ao(nKhi5O3T}Nta=HeoWScNu@;l32RJwGskq|VH$Kq_3$ zjJ+`FTmA6447B?f@TpG9V!w-KwHdLN;JU|@1o%|;u2J?Ov{F(hK|@`prdM8LAkYFA z2JZPmks#Kx2aD3JHgZB-;vE6P%J`iD&Oy4f?o*-yT8xhxWe=iT(`XG--sVq@rLseX zdDRuYF|qWAjs(-BZMmxHTf!;6s70i}>fw|M?E@QK^$pWJTjfWAcCe>a8NRMbM}_@? z!Co(PRSg&BN7feLM|K$<2m+TLE5J#*qZ?iG_+HouaOds;CB(qNW~r+NDuJX$iCK zJ}_40jo@*`iELUnidtY-`1#P*b+ETTX-0jxpk3H-kXkaR@K!YFgj}RLvX*&?@shY6 zl*UptO~p_|w=cBq7}Hta%Y41{IUWCfcbVNsFel(T-_P9FbQ679?guX)+ng%twEyhu zTi3s3?wI61Wf{VkEj7XrL!eP_8OL28_BNrgv9Cn?b|%zn(=rfx4G3*a7Dw6X zK9%ea38sFfRKe`bbu6}HoOrlAzUZVa|IZ8XkL0wh>i3uXZQ+gaUf|m>{rFZsCjJV7 z#?$PjIDuEiZbF%8%Q>^9b9+_ML#T(Wl|zcR8S-xlvy$Yeo%@T;fjYG3UqV zI94Q*b~62!Whri~`_Y|-DX8fzYvc_aDu&~6CMHZ8qliYInvyJJ$&}G*-9VbQ&M{S; zFj}SxfGS6_I1D%{+MsU2e^9QB1WqY$< z6!e~_R!cBoAIN+Bmxu4R@aAcSLnV~0@|a;}E#9~KJbK1~h_mfw>zL(n#KYNHMm4|; z{ka_)+8=3y^@9>K*>z<;f79bJmnYrnZ=a+=6T%0;5Re~(Qn&%00wGY7AZVQE#tA^< zdaj;MYyPY3^tovJ3^db32|8D?VE~kCgJ5_Q8W$PJg|Xu3e;w4{XNVFG{xA$}*=m2L zW&Dj2z7Gx|@fO1e>U1X^b@to^X|Ig;!?h^auf>`gDo`9$FzCRzOJIF z#jw(5;O52KL*gUbSG~RGy*Vt~x2E&v2VF{hT7}Z3(A$GwzK*Ep#y?5(@YCLX5D*(b z+H?zhT>Z{CJhWS_(?dsKK=+(>OXWNCB(?mTe|t9>jbGiQ;#;yMxQ1HU2GB(bzLaJ>5QZfD;jkj}|1N;UK7QS|uBg}y!K;x7o?_E{-{5~T{EZyNQm&f@pOndf4uv(-& zs0oh#%1Y6vZf^0MwYs@$6>hY1TX6nxT7=5c;v$@mILDkRX$E;TA@NzWnaba+_%Fx6 zm^V|Ni)ep|Sf*-OyDb?4J6C@qN?y>E)Zn)xZoj!_J1H_Uew8wcbM@P2g=HIC0^Nx3 zGel(F{BUFSSiICxmdS93!}G#I`{1$_&>(1R0na-QXqzjn2+ym&$W|17<#232F75;C z0_c|JH5+=LIWc^oAx`yScy4f!eM`gS%cpt+HQHHEg;GJVjf*we4FmYoT#jji52&!S z=}$C!rE|xW6;X!17gf-wHu?qGzVfE-?AjUN=|2s5WOv7p813IBk+D9IQH6wz7;as8 z9Y`nKE9yW~pLa5z9-p{S{AH^*@!HZtni*&|a=O~yQSsJH(0h-N*YVoYBpIn|H`DIk zHt*`g?adh0az`HKePvOMW1JoUOLNWI}{0K^2 z^=t+P#Jl&h0$dt;(^V^9NT7rSH=m3<{sPy(WQD~K?9&3lK+%AQeXvK>=Or2H>@Ocj zB;cUDnN!=FCypXYbyk07=VM%Iq@kW85A5_?KtutkxHhqsl0Nxf<5 zLFU4!I4zBw=+HO}+DmAlARB_=`mPzrqk0RQ8wYp9{-2tp3?*|qt!$K;88}j@vP1nH zO~`s*-GWV}8^>B-J$bL`6!I{z$cPUv*ZsEc`UOk%7cDm$_UIF4V9?FALLV9yKmcrx;x{Eb!Jit z>NoZ~OLOLj^y!G6tl6&1C*dYp?SKdV(c#zb4tKJ)t~ap}q?5h�m$Orq~@c}&>bLGZuoAz6JGAP-3JjxxBB(VQd z*$JeaQTfjsRW;oM)Z4F$spZpqfs>y(paucdI-mMAq^H~4lMw$QEZ)?DU;413lICoK zZK-B~Od1xPJo(GGW_>xmePu0iH=kImrGE6qIo*s>M8?S!u_`J=N zQgM!j`e~niH&J^L&q}4CjcwD_*MV$Xcm4d20U*8EkD>oW-;dVZPe(61jd-^Fgu*{D z{PWwu>%;bc$-QeX)89SwZ7z*O4*i?LK=Ws3NbdbWY`%kQUNIfI6?ip zRP*a`PBY_m@BC9l&+834s?GN2L}QlMpH8KmP8mYAT}Zl8ZFa%<+{bmDe@Jzel84Nl z&C7Mf#h@!_OpTQ@ku_E2yzL;}nE1$Ns=NlVpyKp0(a!+4;)YuvD<93l1#xoi41Y+KV6 zcDJO8kjnWtFV ztXmoanGcB%A11wA(1dJYR6}uMYtI4*g6CQqcAVR>IE%DL-7shjV^=F`~#k)JTso}w~;iSgER zb@!N@)JL6bhrHoju}s#$HNAng4hL%%p5KL->KJf^{N;1-{vEt$Did1|r_z=oOwL4&mYVC*-lI)oI=m(fDyHTMSC|Nhc8Kl%nZV z2RR2#A`;m{{*yFIn_##GvwcSa`jVXc;j^w{<+|Qe&uQd+GZ+N55o$e`*e?g+wb4Bo z9phC|e9Qv$&6DfUMRks1<<-0%O|M{i2tXlju zI+z56Ghov15>(!-|I>Lp*NBrW`BmaV9$GMZCYy-tep>zvGkjSLDXIQfy9Unn1!@!8 zSH2@c+l^*S{DJ&%gjB3`CX_2O0SBzjdv_tcN9)6YK=_97Zq^wgHOX{+;aI0u&c7nh zLll(y`go)s3TMOQ{*n*tWTq_Xd+6)mq+zYTLh)WE&7>=JbUKjlMwmZPn~gG<@~nrk zI`_;y#kUw@HCDa6mNz--I=?t)A>W8|6*6PKm4srDF=kaqv=3l@qZyyX^6~)RrQC!v z>-3yR3IGA`bRK7u+G}hEtpNL$&E^U|In9Vx#caNmkr)D;#tGoiu$WWG1O-rK7HQJi zM;sXo4J;{yx)X?*^A7uB;^Mw8^=1AEB`MD9a)}73FA(=k5Ra#9aqov$2UXroHAp(J zcO_6E_|mI-B*Bqa$$=tIGxKM+QUz&C1RLF#?y-IlQGzQuLp7LMixqdWPgCh}HVFcq zLO7k~sWP&*lU<|jQX>WLCx>xYUE!Mz;+V8v(bu?d9PgfBE)8eukmH{HRaiS~bJ; zNo;o$eM-uu$x*3}@1T0Q@cuSbEJsnDFhQqm2mU(66&puwm~KoVMu;`dlE7rXn{r#1Pm9sB@hMXhviI*$mp>LEj|i0n6`F;G==X4t6TGLXs0{EQR)7uI&e z;x1uK&rSiWN*XaX|JiPKR$h-xz*3J*?4|&6Zr2d~y35*kJxZXuAbr3=?S+5UJrG@6 zloh|SIYn`gP7GS?;ws&USj*V?Y?+5X>mssNRRdyEu$pQv$5TSRe#DAckF%yscI{Nw zVEQ!hfUv^L7W6p26z2^)E%eMF^fVg>ybK>@m_SMD8YfX{1xKw|7z)(l_tdZpSkP5e z-me}l>YyET7mrEhN50?&xy>g|k}vq$ntI=Z4=BA->Vk$q77Ij>Z%@m8hVSj1PM>Fp zy-m)^5+2AJme8tU4Nd7%IHX z@wFHS(g;BeQ{?zx!9H}j3AC2`Oeu$fQC*E}%PtpJwnn}~hf#U#UH92E>#+&*2IeZ> z`w^}LI>9x5DT{>iO(bwX9yYGDx4XU+{#B^a9&QG>L{#+N_+P*VK=Nj&2&sO zJUSJEUeeV;_DTPHKBog3`F$|WQN%B=(Yyt^)Y=s~K51P)qJ!^czU7+-YYona_CK%XF731*gf6*>=wf zb-9c~#gWZA22;xdj*M->j}M%-1F3uThGk2hLm5J2zerQgDh8FGA}-X1GGf(HD+b5Q z6YrB<1S|EJnXT|OQ_i^NI2wMR0uHz(4{t2sB6(mYUpzR)1F$~+9>i2Ui$q!E#Mk=h zo0z!<`ti_xT)dIKPo(wX7-pe3C|Vm>^VUd&^~yJk7EY^YTWcw5i#d2>VAnV|+D85z z{-^bJqFGU5=$pXlLh|&h8|tpgBMr7GWz(W4S>FYyE?1tU7dC+7u4QMbYJ zKc5R|;=_Rwd=#{9V2Q99y~sy~l*rT~hV<}x(T%DZ#sUSZ&YJt0@8WGnS$y8UFZkOa z;Qwv=)ekRvRWbl3<1TR6b$}`klsr$3R5g&+qt;ZzJNv`s_7{e#UWN*LgM+;$A=H_T zdIH-pH6(u7jl}9syElZh{!(IAWyrp#p+?rvr?tBKi3h%q;huFpYzdAxam*8*O3P=k zQI>i>f82xtFlum47BLLyfIhFrchM1{eM^y{1^NytXbxHq21`kFSj=gOS$lrMgmOZe zvxWRG>xdTgXLeILSWxdXO6r6!^0teiL}ti6qj0NHTWM29+~D_WDTzL@?(TR)s$E?2 znjm@NsUCQ4#_VGbUN%O78A0Mv*&;lhFjG+;E)>QI^8ZSWzA#sKs8jLi{VKkZq#WyG z4`2>-Zk(hPwE)Fj{!o&aPn>)bb-taA{?(I=jFXJYt;!Xi^q`FcNti*XIA`{N1jSID zUu5l^hE=~|8q;}#sOPq*{z3N%PT>YRg@Mr)(T9~(dqP$Bym<=&&ZFRz7NB&-u4z%@ ze*ZSu*rgA4)yUO-0O=r_GH9DuWpL%dugn_jI6pL_R*X?zd3K~clwwKZ_;@5uYmaO5 z$1BA3K)>%gVzct53aNlK*5wRGFo;Cky3|vtkQyE6 z@Dr&H7w;iD&04Q-UUR>%d6s7Nn`z)9Ze06;hGb|Pu}g#gs4QCIm{8io1R5dbr`${_ zjrqUI)D`B*;z|-GG&@;Bl4O=BJX=aF@nno;OYuzCU@fmsa}dVz@e5Xa7^Zixovih;=zB zrgACa=nEB)uxqqbwm2#QR^|Ag37eurWHC1t#NP|ik>vHp(Q~>;NJ39hi?FkbekL&+ zU+D^)5fl!z?n5!ew5!P0M^%cJX9|~|FkXy3b)Nr;z4`72j@ILPhTLBRuO4%7f8p`O)U_f(Z~(k=_oud+;hd z(+vIa2pn4T1zBHPcLd)BD8Hi;UsA`3@RN;1A&h!!wTYdNBD5T(d>%ZaZgAS~(JT}k z{8J*_^of{*^cvEfQ&-~$KW{i;BDoL4E^Wo1;>N{Uno9}TWE{DNEZqi+@#3tcXYe`o zOB$y`$J4?Ew3da6X@%-jFr&&^#D6rz+R*S=$!5vE)5%AR>KbN3tD3{6r*Jrz{{lT11_rDn4{hsTT{i>ZGV)J2H2DxK@_ZhUN~$rd{e4>*KnoMrPs25AB8< z#z}D>z4^h=!C11Herw6^>Tum5-NxUQ`_~ZA+(1FNy`M+p*p|qYk?jX$c##vhgZ8~w zJO#=)HVf+;empa$w6+ZN@oXIaEY^nXev2>BC|AHc1aW#2I`i!PC2t*_?sD)Rie_=v zAcDy`N-c!Hu(i~faPjCM{7-8dGsTYk8a%_~K*sUFhW4E!kkfju@N^`Wh@i3)*zTH4 zW%1q@-ahjkgkXwN=cMO=c7EnJ-j!3(?ZEXkU|`e0)5q*%Sk!$<&6S>LSj(ky~ z2kffx8et(6iEKyO>cjBZXIW@`FI@GI$5gi{E7)r(@_1~UZBY#l1zjj69G&$TJB+4+ z$Js(=dH)YhR~b-6w5=%#Idpe-cOzZW-Q5V1(jC&>APCYNx>Hg*Bo5smDBTTjxc9!l z2WDp1%-(CQFHTc65KD8-chd^u1>F9a0>Mk~C=p<62xwor`rTE$T!N6%}Hb}Cbf4>IxV3P$gV=tsJ|;bFwB38c#fHhX#h zV~bq2;*vU|Y~NVgtc)V;~I*NRIr!d zKcC6&&jGU!LA?opLa;f2A?qFO04n_FSyO%`7D86CKQ94$@#B#6+sBR9^*nS*c=vzh zf5T<$&wB?0UZV7W_~E2t{z_ceQkXQF;GW^cYR}UtGGr5Ys_h56Ajst$#DTkPG6Z5a zIlL#F?K*K#r|iCVT1ovr75?zvgb0`6_xCH_z7e3dR?(z6pwT{r^jAoeIOd~qrMaY7 z>2?lzZi$y=k`4D+9IMpmc`6CgCIJm6RdS>R>ji$w&kwM_3jV~+pT*YDkh4(DoLmk$ zsnXWexEvJ3PWeR~mQ-;nIhb`swfdM7cA#F4|FwxqJ8XX(N%;_!_UlF;v@NP46c^jc z=}s(*ksWI1<+xtXchgkkAIAoG90D2LtC^30eNd4IMTDQE^{?2gPkV^P3jrSsZeoqo za$MLIV%k2cuzJ$QC8DTUYG2j3N^LsqQP7a9=op&C8Q2a~=QsGUFgZ(3i}+PMB2MW_ z<2Cp14_p;{xA9OepB#-v*6ladFdNhoNd3J_3h^cP>nChUd0aC-YAI|DOVcvnQ)pSD zEJ<-G*@@b*rjOl3qZ{`vF7W=di$N9_J)Ch4|MBJdvxREcVi`1sr-_06HR<3E6xW$& z<*T9J!>nPBw*U6N*cuk&Qr`KDYxh1Z&yj79og`n6@j`LP>fo<$V&JXA5X@%4uJP?0t|pAR@x!Do-dK2R-^^ZBxg%osgV6 zTCP>yYqFCsE&@{7t(i>wJnw4dyBuqEgeQKRd|AH9e>$0SjL@LaHq;k!Gf3(6^?!jouT&R^cX5 zw^1d8EOqm=zpatK9eZnT&FfjB$9ET$yPuegWiO7g3&)@;_=?#!q!py_gsLaFMoTMc zzMZu5TRL{mm(dj)Zj!%0kE_3@H98Rv0yv$`CUgBwVohJo-;>-ukz~k=>r+i1)I_u3|3%8dzaDhVgpkyhLFQ_V2n;{rGOcr10$W z61(#eV6D*#AgDPkhZD*7SOBwLz}C%J_RDho+mfHycaPhTOoWvf%D(TV8){!dS_`y-3?MF{OYc7jJ7)9LN)#U~!BZfj zxWscil-mke$ff9bzaZ&3@5VBkU#z}R65?RjuAC3IgT+hcZR5H-&hG7T=tL)m zB75xVcYzhF5|BL0sy!2nbL#8AtW&SXN!zHnc-+lKyJtvG%UgdM#=wE|@0rkPOb{%=GD21i zo*o<1t|isDm$N{6l4ggc61nj>z^|4>g{Fjmo@#;&m(va-BYhMMXKO?my(y%T|Db(Y zI>05hw1=OB*l`{HXy*ZbzDd=<4>{wv z>n}D2saQbBsBoc_K2|q+Q>U+4>X?X|Gx*uP%VQ>6AZ?)}t~vDdE?}@1p@DFnZXQ=I zHs^=~3G*}km%yQgLjL%4rt8CnNxGnIe}ZokHlU0JB`4nP_FJuYJ)Sm;mln3HHW=!r zBHVOb=qX?-b|A6aeOTQQ(l*ou><{>&eyt)H5r0^^RfJe@d7Tky2<#6g1Cod+%c5!; zNO6ZrIc}xSNNB<~xy+(Ro-HLY{sNVoTur?x0^VndqkC37@9k~4z6O8ep?s-{*SxXT zDteDR40ARG5*^mghSpEyZ0<>CBt*m=ZJ$r}@N z&c)%VsG4P6zt5V-@534mZJth1{1q(y`Drf*k$%tJ+zX#mLcJbYB%k$!{@V(1LNt~@ z-HU3rxe?e3=ggfFA(i_I-5!T9kw{ec%VJ0XqfC+yj&(4j*Z2@0T5g_-KutWkT+y*!5QZq)w zM^ON;x~mUHz3?JwdNvskI9{Cmi-8tBAU_L6xZ&wiXAO%Dx6`-IGNTC7x=^5ky7(7y z6#$-R^3F&oE3dWZ6CotG{G3il%SwtnTE@!{w)!9KXhGalB_%9k&5MBiFlHi(vx_GAk3Or+MAO4|I> z{UcP^h%}z6G+t#S=g&${f|!)lY$fZL-!S!C&n6{FCn9f)6;M?Tv4|Ha+4=W<2NCSp zyhN+3_a+uw%~@wJ$pqo&vI&{YE(7F29#?;YIJX-QN2r~!;udf?H@sdd=y(RJ2kMj*IF z#0(yh>l6D?mNZQK`DM%#vbch-^gLrN1z{rjw!kYl$GLnrYQs1C; z%%UWyE|6@NRk|i;?u#Y&9G(x!#%Ox zuG$mC74*__HS+9d&kc^`e2t_!Mjkl-!F%pn6LO3Q!UIHdY7@W)1_1Z~zMyr3xCVoNcpGC8}J?_kqY<@pjmFvYjkWc^gBw&d&6bX$vMai`U#it8m zQc7=5@4Xdf1!nUeA#yyQjp3)DgPXvMhv&vsh%B^V=o)5w?-1+v$e_f(x{5Gi<*G+|SfAPU5T$Bi07Cc50n zBL@mPA){2iy@j8{)8c=7_b@DKGAQ~ADJRqWxAWAswIMrUw;MkdEZ5vMOjKC|CQYzj z($}>W`bSkKy2}P(6Q6gi=*a~n?z$f?k>1;(sS@;lIle30`0GoX>lkV@g}N=Uvg#xS z+gVaBaLYUyNA$p7nzZL`vRhN>=*d-#6M^V@&)&bfBjx=V^-O5nI(PDM%D zap`c;hDnDYd6|1#2ny_=&NNZ_7#DvM+a{n+buPWa;(w(jr5(vYQ6KP_DZ< z;Vn$qZ-zGazN(eDQ8JC@c}`Fc;vX*-?M(ryF{kj(=QXjeY33*DS4NKu5DEWqvR^1C z3R>z>YHIYid$Ecy7SY|XgZldAZn<&3!F4uhlNR3B;?pFMt*q-dspngmo7I%M1>;;^ z8=Mp#szb)XnZf(Ew4-wOWLjP=rLAF`FOoVda?$KSw99}vVg(`-B?csz?1w-)B$B4b zz=2PEtOF1TtlB49?m!iM^_vFkg?w^-nYep(gQO@-?h;SkHSI_<7HGaF_RKHL)@xv; z6fe7%Ytr5IKke%EJ)TeDRutfxb3_{zkaZX{uB`L#S)?0!N>By=+cuCulnEYa0~>u! z%okDT#L4re405hUG56;&rTVD9C$JxNl6Cmqj#_(T>npk8LD2({F~PbQ3Ne`z`TT2? zN?UzDIe%azSLN?18LUNuC}RAWCDC}f3Asc3wLQx5eVw4o-VIu73BycVj4ti4OgcWb zm!%Pf9DQlG!%)YvquMI2=Gk{7tm8gpM7*bIczelxa_$U_>`DgC5kVLr*SiB4*1%0Cq)YhxZYaoDtm*JYM~XRtNdGGKd+SGdGd~@eK=SdI-q_$pv9E4$Q3iC#^qZ zW9L0omA|i@%i1UvtqSCA5=)YIPE&a_@kRIFNr{yFgUOo@C=^y3snI#T7d`jfXsRDV z53mi@`Vc>bP)GVwDqnGL3E?K4N1^DP#Fc%Hw%BIpA!~y>CR|)--}(2DANwMxwGvUM?+qB)^ujQ5I`Xxp1}dg;p=|xx)$6HK0rhRHvsWH zK0pEh09}#SUXnw>tnKWN4^iP?l@*RLmxR0FerBZpsXR{BuTJ2004QGf@96fM5jEh{ z7q&%i4vMWlO@6NPnHbQehbAevXqC0MWh)NwGd~dP{_d}g{t+`zUOJf58=77EBgpmS z;H!-BH5a$>tX`sb%YCc*WjiPT9R^~9cqo>BsW}=m?jN!B@$|}2>AlYOFR&I1q?s#? z4|fhv-aIdz@TPiCdZ?QoP@kdhgn|MG$TmLBPAod|{c`GXp=A%k(P-waWF)DS@q0g2 zO2|>M$25xc-jr1?o_u^O+t%+waS{MFgGdq*bAJIjeiz{V_ZX<1$IwHh185&$Fd(!~ z^z&i920TP0i0OVlIPZO($;QN0M@tR$%F7RtjHX9V51t!O4oer#6QLzx!j;9;Zhdsp zs@|Fu>R1h9QFlnU)Y@iAEj<|*sY|x<1Kls-A=h)#G6bt&I@$`N>` z?@)zP1b&MLl!WZqLDATEGrxV{`w*{%f3}%L5FX0;c= zFZYrK$h9uQQ%E-D2ZoFpD0Ux(zT2OET`U|?9m2Dip-Z4=9A(!nqRgb5BlVtSBT~-9 zgLs(?Vd))PrV0fTFWT8ue|;(-O-C4@@N$9g4I8fDpJg5ag^b=%gH^2Y!1Rx6XCJcm zRFS3UIPqu~?nj7;LQ&SfzG>(H!f43q5a19H1y~?-9HS|$h}5#aWkYsx-l!l8KJ5h# zVi`~PfXBSu;K#oxdk=Q~I|fz%j0CKU4VoRk+( zh3%erYn~<<=)5C~=hmmF!^MZ@c-X!QJpa;)pVIRjdHR@DzJE(REs(Ywo5u*Fds>7i z3|-$x+j=^f9egJxfi36wL#LaWoX~d_@|urxTnS7MxFLL_1z#U0t2GWrYnvu$Dd(<_jmgOH`gQU>Y5>K4=R#_H_NUt6QV2y9JBpPOmpR1nXYH`el?N zyiqa0E<}!|Qe6r&5wnDToR$8TVJn!2BCgYy7Cpc`G^Tgs_QPPig%oh(WyvaH3%K+G z#IL^fIJg)x-5cHm>KFxDH$E5LlvB;#y*8ar*m=kwWIp|bwLv5|`6VV#YqyJu(YXXq zqnAcmLG1#ujS%1O7Vok8&~gr$7VU`=w7`D@=uE^w7Ef+FBl%?|K1z z`~I6vvCz+Yv+2jA+mD%Wzlw-|m>>&^w^#Ycz-y=TFzeh}NiwdARtY1FV#cr!4Kqo4 z$H=?geY~N0-1`~FPeBM0Xa$9t3@p7D_?pb{o@tz_{NfKKYb!0@w3KLJ9F!uIMF%;T zF`vydisva7EoXE7Fk=h@$-~;0Fz(w#Nxym%3RwNZPf8Cs?S(RoI!Tw$^<%@pQ>G}W zhw6S2I&8{*cu+Gy_}whp`{r?#K=wgYPVYZRZ<9d(!>x!s7_yhPPpD=Ljq!3}P>fr_ zrayJk98iin+Xg<@cobNvVXxq*uxH~L*G$47H3}|a>`A;3A`!TE<3+qn$FW~%z9&HF zn{tHWNDV|SY53q$cGEE)$}EBWSEsp*lRILH-z@z6lgWV#4hE-u_?VA_9n1;FlT>(- zVJAgo>SW=a^O$wJvBK?Aw&1dp5JaSavAtA_Rtl}IH1*I-Yb3g=RJcTyQc86_#npK9 zaI_7La`R%$(U0ef7cj}x0@TKt<@DanZL|#>=bOJ)I8vUBE51G~{0vFE1?tthQ@mHi z2lXbJ`K42&=`_ijr%dNUOPMn*A;TjqH}X`fm>Qf%suN39VRV%Kte;y*Y+s(lsFmt_+jK15;7}v$z1cQgx|Xa7o1?(mtr;zk{epXel>G;kY?1CoguHWVNV^v zA@}=*#B>!m%s@v7=_+irFv9pUk&s>x)9$cfeUSslte9H0^MllGxxZIr@nNC~zIiF) zkd~zQ-4s(QFIBl|yK>l~L(6`2(+~+Q&CE$Ate8=xh?{7tgAhqwb3!7f-_Py$M3yLB z33Pd0l=#8dzY_wm#}%dK(tDd60k0yPsd#O`uhevJ4Z!U~8c@1An%kc;zK^ltS*Cdv zXXQ9f)1Xt9y=+r=)ulRE6%H5i;V058=5q7o@;Z30IQFn8UYG{MEql-fanv2D54+JB znpz?sW~>?NNVnCE(zhN|u!NZ`nwsHnlE(-mHEp8_Cj^J16T(L^iQQ=tYnR2vqR(>f z$If7?Ws|8+U0U-{bHKRW>rvf{kj9>e=KXCQ^6lAt?XGJ1qxm?e$fXUI(8h$VJ<%%7 z@?&trQYbvy_1T4kYki)^62zAmfFQPBDDW--{WV=ul1 zvSi2PDK!lcNN7!hqZ+GU&F`a-ZpC2kppBqBGgYC|0OBoIB5Y8ouPEvS5=AQPM>SfB zsnCyqXiRNkN}@i6BSBNN?1hskxSF#6w7S30jq{p~4+L*z#Xr_w6IK2=H*gg>G!b@e zhdJhSS9#y8lRGV@W7(DLC8?Eq))(zos`>hDxipP#aGOctz|3!4OJ_;f{y^pbON{E; zLj8y+&lm75cuT@<1ap7mN^k0Im@d^*!hNE=AWW zrvtLker7DZmp@qo8Jd2pbE1?I8f!IzWqbSn=N*%*($2qr5+A&`#YACqM1J~z%T7Jh z88t)44`Xs}uSBs;;k_`LcvJ9kLsPW<%q8_sb7`l z2&b8QijnJExj&X--1f5{IOwl){nhCu?H*+*IZMM*s zRm{#o+)zp%pCxz4qr0k}ML|caQLBjYZCQb#hjgxizJGHM?@C$h>|)*4A0OONG-2(5 z@(;J0n8!;M;-S17KbU@h%wc!~UJ}d2F?lP)Eu>-TL$*DYdk8?=6QTHkY_8_aud2)+ zK#XtUX44U16ZRbV+UgSPlH>MAj-`#;cbtdio?BSHPQ#H=Fc^d?w};|7RqBcfUNE-U zP3uKZzO=Q$H#5k)0ru51fMG*Y1b#D+S+xBT2L`%H`V^%yXY(pI#*Y}-ZNAX1DvA8< zkQyR|E$|Dzv>#O5gc)@d;q+%9RZiH3lW}HyP>Jq~k6l;Q!jPAhR(1G;R_eT`71Tb6 z`l>c*x`J)|IQ`3`PI?`73tL@`9) zx>r+gdr=W0Uc^P(z7@7$1V}seZf=L;8TSB|s3ED>!&C{TIgZUpFX+uQVP`+co^5OE znf<0sBjZ8=FOCXt&*|RyZ*+>1$=dWx1rZ}#MTkuf6d~%h-)3v(ibyl4D|<*W9(4Bs zTRg_3>)jO6`Vtkq)!}5_*oicpMz$g}fuVcz{A96Ig{aFhM5L&|dFNmMJb@%mFC^^! zy{7qd=9*I$B1*8c|7veZ^dw{WT2oRh`&`28R-{VOhFUSvM6?H~(oof}O(@y$ zp$U(O(x&0N?uKxl`uRK#xHW(hMDOS$AiQBAvSjLv0y(T1i`Xw;dXLka*uCTPrIqsQU@?eHR#Ly058cfzkKkW8oL3Er=%FgCE;BKX&O{}{Wp z3O^Non1guhFVatvF$l`s=?$jjWT6Fvt1S2t)g& zEmahbOG$LG9|5GmVFy2ZRsYpjOY%LY&q3iB(Y_n!vYsqq$KB(E5$wJPS%&*e_jtS? z9kzmAb-PZK?z@J7Bb+VvFlc14r4RTUHX0HFoMJd7`4yoTB(9TL%fqq%SfMLEYfB&n zyJjK9NZ@M>3FR4M1lfQYkU6XyKfonO!He^RsUQ(3hQAa9phVE+m>w-@A?vww;zKye zXn!)rXJoq7@U7cg6!ogY1HOO6yz5>&H1H9+Y4VQpaUw_TGqz4}|ePso01Q%k4Weww{lV^vk0e?*(HhUFsg}(-0VoQ*wdBrDwlPv!eMal&EaQ0*y zTnyTwS%^Ez)(G7<>b}0GQ_%|}u3Po9Av`^K&ZD!eAS@Rx%&g3pA+E$`W<7YI__zF~WB z=aMlr#3bp!_NS;IVJVJ$OUYWo;fxWX){R(|5ZO%;s0`gh_2>M3&BC|x-Ig7M{pK79 zH2U6jFMQW4s0R)L2#e#p!DdfbB8EVurSy4b9rn@*v)R~w!}AI zb>NT>!j-{~?OC=f{T8CNolNubY|P|k#;3Y>I@SY-VGm2}WzNI`RCtqy`RSR>TqkEG zu!`$#k6XQddK;slC-^q+)90xsA^L?3&yrlsY4RISZNP+d1+lv?i$$8lRH)UD0@2jh z9aQuebWc^2GV-V-;yeP%&&}r~bTy6*{%&WxDZ`Asw&ut6j;WsN$>Zi1E#>b2Y+z1W zL!F06co7Lf6TjF3?>_>nO#nBPqAkx9?oCiLP2!^Mh&e z>3f~oF8kElQ7nHxd_fRl6wQb1sYYH{so~qLcNa}fASGVt)H+soQla0m4I7(>Wi5CJ75rV38`=4LXzJGXv z&RY1Kyh^?|Z#)rVmV}%W-uol0(aQLmwjlII^oz6ZkzT+s%~zGiE|A^edkpfC%9Sbx z5Q*p=MdfFj>l#8NqB*!tlnB&cM&zp`Uvc`lwqfrHklVhm>?djRuJGZhh-S?fgjj@N zxT7)CJEmi7&>0Pg2>huQLh^j+g%=4e$ly=Hppr2K#I42GdEh8&-%M6a({4wZYD{mA zmLL`=5!%&zC!NUd3r2k*E(6%Br()nEJznH*i+LC$kw5Xh=c$=x1V+{hJ+~$UV4jQ( zuN}iSLQUC-L2K*>y{Gg{6 z;5ds=*;?wT=D;3iFuUg8Vo@M9>Cm$HK#@=j6J|x-fYJUcqfWmr`yC%1!Gt}sL;q_% z@o&~NvUpuBt@}`|wgO}Xk-LWX+Nl7DQ?)Hj=belxK|AVgh;#mo%VjF2KNo7^X|I*- z`H@PWcpi4S`lxqPv6o5P%gXKg$JTvgqFqqL7jkMo%;-xyf#AXMQ+ytK%~quAb>FH| zLJ-A*+wD4X`)T*0tINznk$bf+hV5-;nf-3oPO$VRJ%pV2p>LyfsT$Pcy{=RpU4%id z8Coqsiv%sZ%0{Ex9rj@ZjDQbOjPnOXt6AUO3CbX4?Inl5kV4u6RFTW?+sF}J7vtPgo3;I?Cfq-Z7`5Gu{$ve8%J!C$WH z?syHDhD9UCVWjPUnbWC`7W1|5xXi)#8XaGPY`R!QZBbQUNFZMqBW;laz%e{DXZjk? zy%i?{L==%|1aYsj9-_*~M#hT)&PMd=j?`3sr2qvSsL^g4ced-E(6C3cTIfkrTRwos z6SX&%fxvLMb{fFC!B^Gd3&^rz5g&5WrEvtfBtv2B&2r=0!2bLC6|CJ+A@q!9_ ztWrP`;VkQ|any5=Lt*Z4JoFF|HlGwhlyv!hK`t9 zkRo1!M?oT@K@1!I>sqYddt;&pd7s&@_(|WH6;vh+##vEu!!<+c>RKrO5N=Ndh{L?j z1faFBL__&Xf$!-Ux+%0u+iw*qLQ4X`z53g=BCyRtf)a#b^jq00@fio#vP76U7j7gJH|oX zkXQ`q*!xyGc&y%mm6ZsoaicLRoI!^ZS#UPUpVzj)EM}5BA z_Wmlu8mw=}{R7t3i1V@#*!XK`z)T2|G4p`=#0=aKXDowl2msvyId{OI;2_{g}j6`AYtR^h`xSo5HR(+WUwD*^UF>=gWlcx(o}FuyD6HMK=MA~CfAuK>%LET((p z8agT$S|Pw@s(&YM>>(iAP9>+;+COyS1-SjS7a*v5-hJD}CZ`9)D0ohQ7)S{UqtbPc z;ARkPh}Hvu8#NV~GG*t2m>!z~+y2x&Cx&)zAdlKjv|B7Lr>%qZf2Io*jGp|_j#qY0 z6UO0av96a9Fr?0_&9nJ$C$7(ultn4N09BfIgZg^^Kju<$ti?;jY8psjwI4F?DkC=l z#KATeEy?A23*w z_}CblR#9M1>Wu%4HoRnv^Z$Ie0Tf)|^EHS6!&OOnGIw0hGN33Ps&(f!C1TSx`M-;8 zmv!QNOzbE^fkVlE8et17;mSC%8=Wm<8b>N3sQZrDuyxue_rEjAJ{?K#*`cy3vZNE7 zKhF8zm4FzVn5)3mR#=jy{68E*^Haj>?a$XZ;LX|ww&8kXVA|Q4AB}9P*MQj}PU!BR z7mpGSO<7eoXQ$dXIoS9M@|^+kUJ`x!!-o$ts|CcM&ELxUKmyUg7y{Tl*RA^;@>rSL zMI%6fDi&@Spv{nB>@zaV^xtVPTX3z;NIUINX(XBE!qva~{@>Q}ZUPVQ`^eUXT?Bq> zN^L)?!>B=Y3HpCHaJA9A&;Pp~s9O5jOAT~|xZ|4-R?Po*XmrDNwX+8acm^$(-Dj0T zpSRFHJk?%v|M!VoVoEQ=hyPoca58dE#d^7F8sjBE6dAVw5Ngw3f4>RI0CL@SBEX>l zHWO3Ers}QpqzTrI0aAstNAg_wpKe<8Hh|?d2wV`(1JV7lx5sSI3<9D!qAMsaz}E)w zfqh2-h&4?GzBF93|M$tqz+!ByZuH0pkuX0v{b!~1qN5k^rvp58wAm6RqAP=FaV*`A z<7R`}(dQkqS6h+s|8)omb53re8%$o(33cWang088sM#jsNF8^m5MkqAZ1q=rK>QTa z4~h`gXCnlYfFj~Um^zJj1&Wi5MEk}_|JQp*F}e6+g4N&Ol}dg-?Xh+C!V@(ffWa6#;E4VG zgC(r?*kbJ;6POhENm8!bs+M@>yJ88Ru~)Ec9O3-MhYOR}2Rw+b12eOKJ1H`SFqIvO3YyT$-0tNf980+{ohf)%n2T_avZh&%lOl?eIFPq zQ<}{@wt}zO3<3#2&mqA1%@mNX`|K?c_%NGa`&)(xW$}OjFm^!raMw$o)&_VU9IC-f zeqhGj*h|z2@}_Adf;-FP*bG{4hL+GbkzO-(qv)xcpNvJAJznA$(D`q%g%k$BbIG2rgevnn6_d(O9EX=|Go&0|c{?iVc*^b&ym zb>2|F>0yNR&tmMNvTkF?xw_Qm1Ye5}$JO74Ah31XIIrC3`7%egYzZ1>r-@H>_KX6Y_dxgs(Mfasf^sD6}#a~&_s!J4DR_KXk5bPv|BSt2l*4^N2KNAbR2wP#sZk??M{)$6KQw{sKs$%%8 z<6C|=)dXG#8q)tJ%h`EobZYM{knrJ!|E=H91fsAvJ%pluUWp2RducjgIs#BvBf6jG zwZ`aW&;)X2RaugjysxVL*2Ka7uRP8>huD%Jd|=XnwAWT%Gg%UD|T9CQ^m#jL!*tqhvjnagK%=Z zwOSTEE)y7^RRa1cDtZ8Xoi(%J<7vX?{7F*Jtmf20vV9C`kH{B}(p zTJW*AQfs7AA_0zmgK3mk@=hA?)hxLh5=d%UK@~O&nJ*}~&5Me*0T+gxkI8yze4DT5xV7PzQy-|M6B2Uj;O4At|5;R=AoH=6~OrA23yzwBtQm(4cE){x$94bHOv5 zR$B7(R!4T|=2CsMJ|94WLge}QsbRj*geeWi6z-$F+@T@EMO#% z*WsYydsMq~qT=4?Fx%Dtqjrjwo!k4_z_P|KlHw`(W4B*Tw_V1LoqX#y9>BbhJ3zOf;in={29tMGsf3%v0JMNMKu&}{QQ3-Jhek++GS zvmlI`P^02hUAPN9*mIGzb0=OqE`rr$m*P-FtG6e7mBB`l8^0Yfg_aA5mX<3hX&h-D zy`=dsXkXh=#YQhpjdfZ29@oV%;pMO$jEg0Z)NIHcjJ4ICR_6O%wbM=nOikAos`5}G zSS9IEt-t50_rpPeiusUa1PJLu7SNG*gMUkLN$jZ4EGI zLm;O+c3Kxhp1Ja6pHbv2Mp#06=v>oMAjV*TRUB876`i0b*qB z;l%EaB;mpiG^-bA-a;*!571B`Fe3oJsc@Kz38M&qS>u3AXg3-c$*2%? z<>l`D9Rs#FL86Xh+(Sc*idWifZQ{TLvXtdpufTc{*A}`VnZFjvZVoH_UB`b*!6fi; zVNw-H2~l-l7hS$G2?g2RWcxi1qf(9Z)L&Pz0F43wKuop3;%w>6eWO1DH22TLQ1*+k z4tHl;;*7^YzBcBX7>Jed+#C=uM)6p6eJ}s$E!JJSpwQ9BNZ$JGH0Q){SeS=Ii4>(_ z>4;@7hL0-;dHJzX}?CC1YAnVuNTn>o;~o|Ai#C}g zTIzdkKLl0=0O5oz1vVZRx>Gp?%;B7d%AS_C9?dY>C15dx%RYNl%+pE`5={eIyB>U#v-rZ!sH0+Cg4~4puK>hdb%0B>^+l^2wtkyF1j)3%^B8mmW=( z>;9!ecB=xa6+K1BWRtuiUEeU~GU=bXTHr%2Tob&q6ME03Wu z-a|fRUiba%Kq|Q(1OuF8dCfQc@gMy<6%4hKxAZ$BDOmtj75};T&_rn|AHs4auF3Q1 z5)i$5bW^Rn>6NWRi~3!U3A8h_-QPr6B!YKaX2pZ{CC19)UQW^+-tX3C->X4VDz{fZ zhW9$P5j_<@aNvU+`{Vf5Bi}Rz<@DlQ6;UvB$?kd(LY^>aH=WoUlV-eBt~DBPH46OV zZM0|y66)bnuKJRZ?EH|Wj)^@D%q>V0oyF zd?A96Ys-~H7M9z#QTbypx1~Hu_gzfO&$(f$YHzvT-;EOK?iK9x6vd438Cr2rZX@M) zgiSk?r7k}N&BDvNrzX~SUcU6BF@gLxtu|q6bcqN-juQ0BC2H}&TjH=-YbO4Jh~>V_dcZlm}Z4IQ!ieHVTAmO7CTz@K?>j zV53!qrMf!y(>ux1Xx3qxR3`uENc#WJnPM<5?Jc>#x^2}I_$uS3Su~8LUX)$0r zex2@3-q;$^#ur#Oh!p8cy&#X`gvfI!35yEY+^IY0gi?@8xNx5O?F+fg$kV0ay0R&m z#*ql|>RPP<(LBTg6aiI+q0=p$I$ju#iCo<`h|lLmnl?KF6Fb1zm-+jlLaf=tUc7qH z)A`GMlK!Bx;5fUqs#a>E2Hy{}cg7(szlQ`jp&UL+`hHLPr*ADm_S+c4!me1&VcZm- zA5}QfWm8jm@6YfsiGY8au-djg>w(g;W-@{?=?e9k^ z7SRo7nBkXMpa9P`1 z(Cx+Qb-O@JZJ|*GBj=rlM^^tv{A-)7mQA-}@fQ_(k=41FfrQ#X-}VWdSwi#zbkBvt|-0Hz_kR!KTfq4c-RJ z02Ycj_BF4V>S&7>Uq1{m1KR@N?8uZ<^N0(Y**(kuIeexfwGx4<-qjT2vsmG&f!#<% zI~Y2QGRb%8n|N(gtlat6xi5KI{^bF1YnU9zbX=9&K{xAE&*1D^?6G6lcd735adU-7 zOm|^r3fC+Ow?sNDi)|*N2j3Z!Jk~rQ(-Dvwq?ly2*0q$6v2i#+%Drlk?nAE!PY@yl z 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

y)hC52%F@m5 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�ijHGLp7J}Jt2$F-)l{aEB#7NQ_Glk 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 literal 0 HcmV?d00001 diff --git a/img/wagon.xcf b/img/wagon.xcf new file mode 100644 index 0000000000000000000000000000000000000000..ad84a8c1d8dfc67dfe6644bacfe48ab5d2e9b831 GIT binary patch literal 355237 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%0Ar$uer($gFLrPaZb{ztEF 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�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 literal 0 HcmV?d00001 From a9fed7cd0990460732e6c78a66bd7352e8fa701e Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:12:14 -0600 Subject: [PATCH 27/40] Improved missing features section --- README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a7599f..def2ec9 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,25 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem - The code probably contains hardcoded variables specific to gf4, that must be moved to configs/environment files - There is almost no documentation, and extensive tutorials are needed for the initial setup of wireguard, bind9, and the CA keys. - Future implementation of a mail relay, web proxy, and SIP server, and their respective tabs on the web dashboard - - Replacing some of the bash scripts with faster languages like c or rust. + +### Implemented features table + +Work is still needed on all these unchecked boxes. + +| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | ++-----------+------------------+----------------+------------+-------+ +| wireguard | X | X | | | +| bind9 | X | X | | | +| SSL certs | X | X | | | +| nginx | X | | | | +| postfix | X | | | | +| asterisk | | | | | + +[ ] Replace bash scripts with binaries* +[ ] API documentation +[ ] A good CLI/TUI + +*binaries compiled from languages like c/rust/go/haskell, as long as SDKs are available. ## Contributing From a13480754802d32160959ed74168e7258f71afe8 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:18:34 -0600 Subject: [PATCH 28/40] Working markdown table? --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index def2ec9..d356cc9 100644 --- a/README.md +++ b/README.md @@ -107,14 +107,13 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem Work is still needed on all these unchecked boxes. -| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | -+-----------+------------------+----------------+------------+-------+ -| wireguard | X | X | | | -| bind9 | X | X | | | -| SSL certs | X | X | | | -| nginx | X | | | | -| postfix | X | | | | -| asterisk | | | | | +Feature Multiuser daemon Dashboard CRUD Documented Tests +wireguard [X] [X] [ ] [ ] +bind9 [X] [X] [ ] [ ] +SSL certs [X] [X] [ ] [ ] +nginx [X] [ ] [ ] [ ] +postfix [X] [ ] [ ] [ ] +asterisk [ ] [ ] [ ] [ ] [ ] Replace bash scripts with binaries* [ ] API documentation From 62e76ab907706a7ce6ca3407186736bcc0aa06fa Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:25:58 -0600 Subject: [PATCH 29/40] Fixed table for commonmark hopefully --- README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d356cc9..73647ab 100644 --- a/README.md +++ b/README.md @@ -107,13 +107,14 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem Work is still needed on all these unchecked boxes. -Feature Multiuser daemon Dashboard CRUD Documented Tests -wireguard [X] [X] [ ] [ ] -bind9 [X] [X] [ ] [ ] -SSL certs [X] [X] [ ] [ ] -nginx [X] [ ] [ ] [ ] -postfix [X] [ ] [ ] [ ] -asterisk [ ] [ ] [ ] [ ] +| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | \ ++-----------+------------------+----------------+------------+-------+ \ +| wireguard | [X] | [X] | [ ] | [ ] | \ +| bind9 | [X] | [X] | [ ] | [ ] | \ +| SSL certs | [X] | [X] | [ ] | [ ] | \ +| nginx | [X] | [ ] | [ ] | [ ] | \ +| postfix | [X] | [ ] | [ ] | [ ] | \ +| asterisk | [ ] | [ ] | [ ] | [ ] | [ ] Replace bash scripts with binaries* [ ] API documentation From 6d95e43507668c2a02cbeeb801a449083576376b Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:26:51 -0600 Subject: [PATCH 30/40] Removed redundant stuff --- README.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/README.md b/README.md index 73647ab..3045671 100644 --- a/README.md +++ b/README.md @@ -97,15 +97,7 @@ This also means there is no login to the dashboard. Users simply connect to the ## Project status -The wireguard dashboard and admin are in a working alpha state. I have it implemented on my own network, [gf4](https://www.gf4.pw/), and it seems to be working there. What still needs to be done: - - - The code probably contains hardcoded variables specific to gf4, that must be moved to configs/environment files - - There is almost no documentation, and extensive tutorials are needed for the initial setup of wireguard, bind9, and the CA keys. - - Future implementation of a mail relay, web proxy, and SIP server, and their respective tabs on the web dashboard - -### Implemented features table - -Work is still needed on all these unchecked boxes. +The wireguard dashboard and admin are in a working alpha state. I have it implemented on my own network, [gf4](https://www.gf4.pw/), and it seems to be working there. Work is still needed on all these unchecked boxes. | Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | \ +-----------+------------------+----------------+------------+-------+ \ From cf3343adbcbf08f0d8010eee0b788f8f69997886 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:27:21 -0600 Subject: [PATCH 31/40] Dang commonmark with no tables --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 3045671..b3b9562 100644 --- a/README.md +++ b/README.md @@ -99,14 +99,16 @@ This also means there is no login to the dashboard. Users simply connect to the The wireguard dashboard and admin are in a working alpha state. I have it implemented on my own network, [gf4](https://www.gf4.pw/), and it seems to be working there. Work is still needed on all these unchecked boxes. -| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | \ -+-----------+------------------+----------------+------------+-------+ \ -| wireguard | [X] | [X] | [ ] | [ ] | \ -| bind9 | [X] | [X] | [ ] | [ ] | \ -| SSL certs | [X] | [X] | [ ] | [ ] | \ -| nginx | [X] | [ ] | [ ] | [ ] | \ -| postfix | [X] | [ ] | [ ] | [ ] | \ +``` +| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | ++-----------+------------------+----------------+------------+-------+ +| wireguard | [X] | [X] | [ ] | [ ] | +| bind9 | [X] | [X] | [ ] | [ ] | +| SSL certs | [X] | [X] | [ ] | [ ] | +| nginx | [X] | [ ] | [ ] | [ ] | +| postfix | [X] | [ ] | [ ] | [ ] | | asterisk | [ ] | [ ] | [ ] | [ ] | +``` [ ] Replace bash scripts with binaries* [ ] API documentation From 555990199f9b5afe69b0a718261165164862a4a3 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:27:38 -0600 Subject: [PATCH 32/40] Better list --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b3b9562..1b91f8c 100644 --- a/README.md +++ b/README.md @@ -110,9 +110,9 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem | asterisk | [ ] | [ ] | [ ] | [ ] | ``` -[ ] Replace bash scripts with binaries* -[ ] API documentation -[ ] A good CLI/TUI +- [ ] Replace bash scripts with binaries* +- [ ] API documentation +- [ ] A good CLI/TUI *binaries compiled from languages like c/rust/go/haskell, as long as SDKs are available. From 9836f0b2d7d566e087f912a447f1256800bf8a1f Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:28:39 -0600 Subject: [PATCH 33/40] Need checkboxes in lists --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1b91f8c..0f117e3 100644 --- a/README.md +++ b/README.md @@ -108,11 +108,11 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem | nginx | [X] | [ ] | [ ] | [ ] | | postfix | [X] | [ ] | [ ] | [ ] | | asterisk | [ ] | [ ] | [ ] | [ ] | -``` -- [ ] Replace bash scripts with binaries* -- [ ] API documentation -- [ ] A good CLI/TUI + [ ] Replace bash scripts with binaries* + [ ] API documentation + [ ] A good CLI/TUI +``` *binaries compiled from languages like c/rust/go/haskell, as long as SDKs are available. From 2450446f67200b95401de5d4c753bb0390c1887a Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Fri, 7 Apr 2023 01:32:37 -0600 Subject: [PATCH 34/40] Started installation docs --- INSTALL.md | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 4 +++ 2 files changed, 100 insertions(+) create mode 100644 INSTALL.md diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..268fbca --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,96 @@ +# Installing wagon + +Before installing wagon, the server needs to be set up with the following basic services: + + - wireguard + - bind9 + - openssl ca + +Theoretically, wireguard, bind9, and wagon could all live in docker containers, or none of them. If wagon is in docker but either wireguard or bind9 *aren't*, then the wagon container has to use `host` network mode. + +Almost all commands in this guide need to be run as root/admin. + + +## 1. Wireguard + +On the server, [install wireguard](https://www.wireguard.com/install/). Then modify and run these commands to set some variables: + +```sh +# Choose a short lowercase name for the network +net_name=mynet +# Choose a number (between 2 and 254) for the network +net_num=99 +# Find an unused UDP port between 1024 and 65535 +srv_listenport=58395 +``` + +Create the wireguard interface + +```sh +srv_privkey="$(wg genkey)" +psk="$(wg genpsk)" +ip link add dev "${net_name}" type wireguard +ip addr add dev "${net_name}" "10.${net_num}.0.1/8" +echo "${srv_privkey}" | wg set "${net_name}" listen-port "${srv_listenport}" private-key /dev/stdin +ip link set up dev "${net_name}" +``` + +Get the server's public key and psk (copy the output of these command) + +```sh +wg pubkey <<<"${srv_privkey}" +XXXXXXXXXXXXXX +echo "${psk}" +YYYYYYYYYYYYYY +``` + +Now on your first client, install wireguard and set these variables: + +```sh +net_name=mynet # Match what's on the server +net_num=99 # Match what's on the server +srv_listenport=58395 # Match what's on the server +srv_pubkey='XXXXXXXXXXXXXX' # The public key we copied above +psk='YYYYYYYYYYYYYY' # The psk we copied above +srv_endpoint='1.2.3.4' # The server's public IP address +``` + +Create the interface on the client and add the server as a peer: + +```sh +our_privkey="$(wg genkey)" +ip link add dev "${net_name}" type wireguard +ip addr add dev "${net_name}" "10.${net_num}.1.1/8" +echo "${our_privkey}" | wg set "${net_name}" private-key /dev/stdin \ +peer "${srv_pubkey}" allowed-ips "10.0.0.0/8" endpoint "${srv_endpoint}:${srv_listenport}" persistent-keepalive 25 +ip link set up dev "${net_name}" +``` + +Now grab the client's pubkey: + +```sh +wg pubkey <<<"${our_privkey}" +ZZZZZZZZZZZZZZ +``` + +Go back to the server and add the client as a peer: + +```sh +our_pubkey='ZZZZZZZZZZZZZZ' # From the client +wg set "${net_name}" peer "${our_pubkey}" allowed-ips "10.${net_num}.1.1/32" +``` + +Make sure the client can ping the server with `ping 10.${net_num}.0.1` and the server can ping the client with `ping 10.${net_num}.1.1`. If that's working, proceed to the next section. + + +## 2. bind9 + +TODO + +## 3. Certificate authority + +TODO + +## 4. Wagon + +TODO diff --git a/README.md b/README.md index 0f117e3..f1f176b 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,10 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem *binaries compiled from languages like c/rust/go/haskell, as long as SDKs are available. +## Installation + +You want to use this half-built product on your server at your own risk? Fine, go right ahead! Take a look at [INSTALL.md](INSTALL.md). If you have trouble, ask for help in the matrix room below. + ## Contributing If you think you can help with any of these bulletpoints, come by [#wagon:gf4.pw](https://matrix.to/#/#wagon:gf4.pw) on matrix. From 130ba9203e92c9b065e6b34fed5237c7778933b5 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Fri, 7 Apr 2023 14:40:11 -0600 Subject: [PATCH 35/40] Wrote ns and bind installation instructions --- INSTALL.md | 376 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 370 insertions(+), 6 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 268fbca..8efbe98 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -6,7 +6,7 @@ Before installing wagon, the server needs to be set up with the following basic - bind9 - openssl ca -Theoretically, wireguard, bind9, and wagon could all live in docker containers, or none of them. If wagon is in docker but either wireguard or bind9 *aren't*, then the wagon container has to use `host` network mode. +Theoretically, wireguard, bind9, and wagon could all live in docker containers, or none of them. If wagon is in docker but either wireguard or bind9 *aren't*, then the wagon container has to use "host" network mode. Almost all commands in this guide need to be run as root/admin. @@ -52,7 +52,7 @@ net_num=99 # Match what's on the server srv_listenport=58395 # Match what's on the server srv_pubkey='XXXXXXXXXXXXXX' # The public key we copied above psk='YYYYYYYYYYYYYY' # The psk we copied above -srv_endpoint='1.2.3.4' # The server's public IP address +public_ip='1.2.3.4' # The server's public IP address ``` Create the interface on the client and add the server as a peer: @@ -62,7 +62,7 @@ our_privkey="$(wg genkey)" ip link add dev "${net_name}" type wireguard ip addr add dev "${net_name}" "10.${net_num}.1.1/8" echo "${our_privkey}" | wg set "${net_name}" private-key /dev/stdin \ -peer "${srv_pubkey}" allowed-ips "10.0.0.0/8" endpoint "${srv_endpoint}:${srv_listenport}" persistent-keepalive 25 +peer "${srv_pubkey}" allowed-ips "10.0.0.0/8" endpoint "${public_ip}:${srv_listenport}" persistent-keepalive 25 ip link set up dev "${net_name}" ``` @@ -85,12 +85,376 @@ Make sure the client can ping the server with `ping 10.${net_num}.0.1` and the s ## 2. bind9 -TODO +These instructions are adapted from [Digital Ocean: How To Configure BIND as a Private Network DNS Server on Ubuntu 22.04 (2022-08)](https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-22-04) + +On the server, open a root shell and [install bind9 nameserver](https://kb.isc.org/docs/aa-00648). Set some variables to make the rest easier. + +```sh +tld='mynet' # The same as $net_name (see below) +net_num='99' # Match what's used with wireguard +public_ip='1.2.3.4' # The server's public IP address, as above +``` + +The `$tld` should match the `$net_name`, which is the wireguard interface name. Probably using a different `$tld` could be possible in a future version. Ok, let's configure bind. In older documentation, you'll see reference to `named.conf`. In newer versions of bind, this file just includes `named.conf.options` and `named.conf.local`. We will follow this convention too. + +If you're already running a nameserver, you can add these configurations alongside your existing settings. + +**`/etc/bind/named.conf.options`** +```named.conf +// Access control lists +acl "mynet_acl" { + // change 99 to $net_num + 10.99.0.0/16; +}; +acl "intervpn_acl" { + 10.0.0.0/8; +}; + +options { + + // This is bind's default location for zonefiles + // Just make sure you include it in backups. + directory "/var/cache/bind"; + + // https://serverfault.com/a/381923 + notify explicit; + + // Add listen-on-v6 if using IPv6 + // Listen on your public IP too if you are + // also running a public nameserver + listen-on { + 127.0.0.1; // localhost + 10.99.0.1; // VPN + }; + + // Whom we provide nameservice to + // https://tldp.org/HOWTO/DNS-HOWTO-6.html#ss6.2 + recursion yes; + allow-recursion { + localhost; localnets; + intervpn_acl; // or mynet_acl to be more restricitve + }; + + // Enable DNSSEC validation for forwarded queries + dnssec-validation auto; + + // Keep these settings restricted and change them + // per-zone in named.conf.local. + allow-transfer { none; }; + allow-query { + localhost; localnets; + }; + + // If we don't know a domain, forward to these nameservers + // A good list of public nameservers by country: + // https://dnschecker.org/public-dns + forwarders { + 1.1.1.1; + 8.8.8.8; + }; + +}; +``` + +That wasn't so bad, was it? Now we'll set the per-zone settings. wagon requires reverse DNS so stop complaining and just do it. I spent a while searching for a good tool to turn IP addresses into their respective rDNS domains before I realized that `nslookup` does that. `nslookup` and `nsupdate` should have been installed with bind; if not, install them. + +Ok, let's use nslookup to grab the rDNS domain for our IP: + +```sh +nslookup 10.99.0.1 +** server can't find 1.0.99.10.in-addr.arpa: NXDOMAIN +``` + +Now we know that to provide rDNS for all the IPs in `10.99.0.0/16`, we must serve on the entire zone `99.10.in-addr.arpa`. Do this for IPv6 if needed to get a zone ending in `.ip6.arpa`. + +**`/etc/bind/named.conf.local`** +```named.conf +// We'll create these keys in the next step +include "/etc/bind/keys/admin.key"; +include "/etc/bind/keys/wagon.key"; + +// mynet is your tld +zone "mynet" { + type master; + // "file" is relative to the "directory" we + // set in named.conf.options + file "mynet.db"; + allow-query { + localhost; localnets; + intervpn_acl; // or mynet_acl to be more restricitve + }; + // This should be include slave servers AND + // Any machine that will be running wagon + allow-transfer { localhost; 10.99.0.1; }; + // This should be set to slave servers + also-notify { localhost; }; + // Here we give two keys nsupdate permissions + update-policy { + grant admin zonesub ANY; + grant wagon zonesub ANY; + }; +}; + +// The rDNS zone we got from nslookup +zone "99.10.in-addr.arpa" { + type master; + file "10.99.db"; // relative to "directory" + // The next settings can be copied verbatim from above + allow-query {localhost; localnets; intervpn_acl; }; + allow-transfer { localhost; 10.99.0.1; }; + update-policy { + grant admin zonesub ANY; + grant wagon zonesub ANY; + }; +}; + +// Any existing zones will live happily alongside +// zone "example.com" { +``` + +Excellent. This file referenced four files that don't exist yet and must be created. Let's start with the keys. `nsupdate` uses symetric keys, so one copy will live on the bind server and the other will be copied to the nsupdate client. + +I like to keep my keys in `/etc/bind/keys`. Let's create this directory and the two keys named above. Actually you should rename the "admin" key as your username and give a different key to each admin. "wagon" is of course the key our future dashboard will use to update the nameserver. + +```sh +mkdir /etc/bind/keys +tsig-keygen -a hmac-sha512 admin >/etc/bind/keys/admin.key +tsig-keygen -a hmac-sha512 wagon >/etc/bind/keys/wagon.key +chown -R root:bind /etc/bind/keys +chmod 750 /etc/bind/keys +chmod 640 /etc/bind/keys/*.key +cat /etc/bind/keys/admin.key +``` + +Copy the key we just catted and paste it into an `admin.key` file on your pc. Now you will be able to modify DNS records by running `nsupdate -k admin.key` on your PC. When we set up wagon, we'll copy the value from `wagon.key` into the wagon config. But let's not get ahead of ourselves, we still have one more thing to do with bind: create the zonefiles. + +Firstly, let's assume some variables: + + - Our server's $HOSTNAME is `hn` and it's domain name will be `hn.mynet` + - The single wireguard client we set up at `10.99.1.1` is going to get the domain name `pc.myuser.mynet`. + +Start with fDNS: + +**`/var/cache/bind/mynet.db`** +```bind +$ORIGIN . +$TTL 604800 ; 1 week +mynet IN SOA hn.mynet. myuser.mynet. ( + 2 ; serial + 604800 ; refresh (1 week) + 86400 ; retry (1 day) + 2419200 ; expire (4 weeks) + 604800 ; minimum (1 week) + ) + NS hn.mynet. +$ORIGIN mynet. + +; Record for our servers +hn A 10.99.0.1 +*.hn CNAME hn.mynet. + +; Record for our user +$ORIGIN myuser.mynet. +pc A 10.99.1.1 +*.pc CNAME pc.myuser.mynet. +``` + +In the SOA line, there are two values that require explanation: + + - **`hn.mynet.`** is the default server `nsupdate` will send updates to. Of course it's our VPN domain, not a public domain name; we don't accept nsupdates from the internet. + - **`myuser.mynet.`** is actually the email `myuser@mynet` and should be set to the server admin. If you want to use a public email address, you can set it to something like `hostmaster.example.com.` for `hostmaster@example.com`. + + Now do one for rDNS (same thing goes for the SOA line here): + +**`/var/cache/bind/10.99.db`** +```bind +$ORIGIN . +$TTL 604800 ; 1 week +99.10.in-addr.arpa IN SOA hn.mynet. myuser.mynet. ( + 2 ; serial + 604800 ; refresh (1 week) + 86400 ; retry (1 day) + 2419200 ; expire (4 weeks) + 604800 ; minimum (1 week) + ) + NS hn.mynet. + +; Server records +$ORIGIN 0.99.10.in-addr.arpa. +1 PTR hn.mynet. + +; User records +$ORIGIN 1.99.10.in-addr.arpa. +1 PTR pc.myuser.mynet. +``` + +See, that wasn't so hard! Now start the nameserver and check that it doesn't throw any errors: + +```sh +systemctl start named +systemctl enable named +systemctl status named +``` + +If it's not working, fix it and then go back to your pc and check the lookups. + +```sh +nslookup pc.myuser.mynet 10.99.0.1 +nslookup hn.mynet 10.99.0.1 +nslookup 10.99.0.1 10.99.0.1 +nslookup 10.99.1.1 10.99.0.1 +``` +Each of these commands uses `10.99.0.1` as the nameserver by setting it as the second argument; you can also make that your default nameserver or the nameserver for the `mynet` TLD. Look into setting "search domains" for your VPN interface in your operating system. `systemd-resolved` users, for example, can run these commands: + +```sh +resolvectl dns mynet 10.99.0.1 +resolvectl domain mynet '~mynet' '~99.10.in-addr.arpa' +``` + +This will tell the OS to send `.mynet` queries to our vpn nameserver. Not all programs respect this setting though; `dig`, `ping`, and your browser will work but you'll still have to set the nameserver by hand for `nslookup` (as above) and `nsupdate` using the "server" command (even though we set it in our SOA): + +```sh +nsupdate -k admin.key +> server 10.99.0.1 +> add test.mynet 86400 TXT "hello" +> delete test.mynet TXT +> send +> quit +``` ## 3. Certificate authority -TODO +The last major step is to set up the certificate authority. Unlike wireguard and bind, this won't require running some background service; we just generate a few files and keep them safe. + +A good place to keep your SSL certs and keys is in `/etc/ssl/private/mynet`. Let's make things easier by setting some variables: + +```sh +tld='mynet' +crt_dir="/etc/ssl/private/${tld}" +ca_key="${crt_dir}/_ca.key" +ca_crt="${crt_dir}/_ca.crt" +``` + +Now we'll create the ca key and cert. You will be asked for some details about your organization; put whatever you want. You'll also be asked to create a passphrase: create and store one using the most secure methods! You'll need this passphrase for the `wagon` config later. + +Here we're setting `-days 3650` which will require re-signing and re-distributing the certificate every ten years. You can avoid that by setting it to 100 years with `-days 36500`. This field is required but I think there is no limit, so you can set it to `99999999` if you want. + +```sh +openssl genrsa -des3 -out "${ca_key}" 4096 +openssl req -x509 -new -nodes -key "${ca_key}" -sha256 -days 3650 -out "${ca_crt}" +ln -s "${ca_crt}" "/etc/ssl/certs/${tld}.pem" +``` + +The last step makes the cert available to verification from the host OS. This cert file, `/etc/ssl/private/mynet/_ca.crt` should be shared with everyone who will be accessing your network. One easy way to do this is to serve it on your public website at `https://www.example.com/ca.crt` so users can easily download it. It must be added to every user's OS and/or browser. How this is done will depend on the OS and browser... so you should provide instructions to your users! A sample of such instructions can be found at [www.gf4.pw/nebuchadnezzar/ca/](https://www.gf4.pw/nebuchadnezzar/ca/). + +We can use these CA files to sign certificates for hosts using our `mynet` domain. Let's sign one for the server first: + +```sh +org='My Cool Network' +tld=mynet +host=hn +domain="${host}.${tld}" +crt_dir="/etc/ssl/private/${tld}" +host_dir="${crt_dir}/${host}" +ca_crt="${crt_dir}/_ca.crt" +ca_key="${crt_dir}/_ca.key" +ips='IP:10.99.0.1' + +# Create a subdirectory for the host's files +mkdir -p "${host_dir}" + +# Generate the host's key +openssl genrsa -out "${host_dir}/server.key" 2048 + +# Set certificate configuration +# If /etc/ssl/openssl.cnf doesn't exist, look for +# openssl.cnf somewhere in your openssl installation +cat /etc/ssl/openssl.cnf \ + <(printf "\n[SAN]\nsubjectAltName=DNS:${domain},DNS:*.${domain},${ips}\n") \ + >"${host_dir}.cnf" + +# Now we'll create the certificate signing request +openssl req -new -sha256 -reqexts SAN \ + -key "${host_dir}/server.key" \ + -config "${crt_dir}/${host}.cnf" \ + -subj "/O=${org}/OU=${host}/CN=${domain}" \ + -out "${crt_dir}/${host}.csr" + +# Finally, sign the certificate +# This will request the CA passphrase set previously +# Set -days to whatever you want using the tips above +openssl x509 -req -sha256 -extensions SAN \ + -CAcreateserial -days "3650" + -CA "${ca_crt}" -CAkey "${ca_key}" \ + -in "${crt_dir}/${host}.csr" \ + -extfile "${crt_dir}/${host}.cnf" \ + -out "${host_dir}/server.crt" +``` + +That should do it! Let's check that the cert is valid for all domains and IPs: + +```sh +openssl x509 -text -noout -in "${host_dir}/server.crt" | grep -A1 'Subject Alternative Name' +``` + +That should return something like: + +```sh +X509v3 Subject Alternative Name: + DNS:hn.mynet, DNS:*.hn.mynet, IP Address:10.99.0.1 +``` + +It contains our domain, wildcard domain, and IP address. Since everything went well, we can delete the CSR and cnf file: + +```sh +rm -f "${crt_dir}/${host}.csr" "${crt_dir}/${host}.cnf" +``` + +One last thing: we need to generate a certificate and key for our pc. Everything is basically the same as with the server, except that our domain will be `pc.myuser.mynet` instead of `hn.mynet`. So let's breeze through this and check the comments from above if you get confused. + +```sh +org='My Cool Network' +tld=mynet +host='pc.myuser' +domain="${host}.${tld}" +crt_dir="/etc/ssl/private/${tld}" +host_dir="${crt_dir}/${host}" +ca_crt="${crt_dir}/_ca.crt" +ca_key="${crt_dir}/_ca.key" +ips='IP:10.99.1.1' +days=3650 + +mkdir -p "${host_dir}" + +openssl genrsa -out "${host_dir}/server.key" 2048 + +cat /etc/ssl/openssl.cnf \ + <(printf "\n[SAN]\nsubjectAltName=DNS:${domain},DNS:*.${domain},${ips}\n") \ + >"${host_dir}.cnf" + +openssl req -new -sha256 -reqexts SAN \ + -key "${host_dir}/server.key" \ + -config "${crt_dir}/${host}.cnf" \ + -subj "/O=${org}/OU=${host}/CN=${domain}" \ + -out "${crt_dir}/${host}.csr" + + +openssl x509 -req -sha256 -extensions SAN \ + -CAcreateserial -days "3650" + -CA "${ca_crt}" -CAkey "${ca_key}" \ + -in "${crt_dir}/${host}.csr" \ + -extfile "${crt_dir}/${host}.cnf" \ + -out "${host_dir}/server.crt" + +openssl x509 -text -noout -in "${host_dir}/server.crt" | grep -A1 'Subject Alternative Name' + +rm -f "${crt_dir}/${host}.csr" "${crt_dir}/${host}.cnf" +``` + +You might be thinking, this would all be easier as a script. A script that could add clients to wireguard and bind, then generate and server the ssl files. This is what `wagon` is designed to do. ## 4. Wagon -TODO +Now that we have this all set up, we can use wagon. Wagon will help us add clients to wireguard, give them a domain name in bind, and create SSL certificates for them in a single step on a nice GUI dashboard. + +TODO: Finish wagon setup instructions. \ No newline at end of file From d06f829559df1e975aa9a0a2c995a786b26f479b Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Fri, 7 Apr 2023 14:45:13 -0600 Subject: [PATCH 36/40] New documentation --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f1f176b..28d0e8a 100644 --- a/README.md +++ b/README.md @@ -102,9 +102,9 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem ``` | Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | +-----------+------------------+----------------+------------+-------+ -| wireguard | [X] | [X] | [ ] | [ ] | -| bind9 | [X] | [X] | [ ] | [ ] | -| SSL certs | [X] | [X] | [ ] | [ ] | +| wireguard | [X] | [X] | [X] | [ ] | +| bind9 | [X] | [X] | [X] | [ ] | +| SSL certs | [X] | [X] | [X] | [ ] | | nginx | [X] | [ ] | [ ] | [ ] | | postfix | [X] | [ ] | [ ] | [ ] | | asterisk | [ ] | [ ] | [ ] | [ ] | From 4c5319c211da14f518fcc4ec5090be466c06588f Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sat, 8 Apr 2023 00:49:39 -0600 Subject: [PATCH 37/40] Finished installation instructions --- INSTALL.md | 168 +++++++++++++++++++++++++++++++++----- README.md | 2 +- USAGE.md | 19 +++++ docker-compose.yml.sample | 60 +++++++------- 4 files changed, 199 insertions(+), 50 deletions(-) create mode 100644 USAGE.md diff --git a/INSTALL.md b/INSTALL.md index 8efbe98..67fb6da 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -80,8 +80,7 @@ our_pubkey='ZZZZZZZZZZZZZZ' # From the client wg set "${net_name}" peer "${our_pubkey}" allowed-ips "10.${net_num}.1.1/32" ``` -Make sure the client can ping the server with `ping 10.${net_num}.0.1` and the server can ping the client with `ping 10.${net_num}.1.1`. If that's working, proceed to the next section. - +Make sure the client can ping the server with `ping 10.${net_num}.0.1` and the server can ping the client with `ping 10.${net_num}.1.1`. If that's not working, post your error message on the matrix channel. If it is working, get a cup of coffee because the next section is a doozy. ## 2. bind9 @@ -214,9 +213,9 @@ zone "99.10.in-addr.arpa" { Excellent. This file referenced four files that don't exist yet and must be created. Let's start with the keys. `nsupdate` uses symetric keys, so one copy will live on the bind server and the other will be copied to the nsupdate client. -I like to keep my keys in `/etc/bind/keys`. Let's create this directory and the two keys named above. Actually you should rename the "admin" key as your username and give a different key to each admin. "wagon" is of course the key our future dashboard will use to update the nameserver. +As you can see from the first lines of this file, I like to keep my keys in `/etc/bind/keys`. Let's create this directory and the two keys named above. Actually you should rename the "admin" key as your username and give a different key to each admin. "wagon" is of course the key our future dashboard will use to update the nameserver. -```sh +```bash mkdir /etc/bind/keys tsig-keygen -a hmac-sha512 admin >/etc/bind/keys/admin.key tsig-keygen -a hmac-sha512 wagon >/etc/bind/keys/wagon.key @@ -288,9 +287,9 @@ $ORIGIN 1.99.10.in-addr.arpa. 1 PTR pc.myuser.mynet. ``` -See, that wasn't so hard! Now start the nameserver and check that it doesn't throw any errors: +Easy. Now start the nameserver and check that it doesn't throw any errors: -```sh +```bash systemctl start named systemctl enable named systemctl status named @@ -298,7 +297,7 @@ systemctl status named If it's not working, fix it and then go back to your pc and check the lookups. -```sh +```bash nslookup pc.myuser.mynet 10.99.0.1 nslookup hn.mynet 10.99.0.1 nslookup 10.99.0.1 10.99.0.1 @@ -306,14 +305,14 @@ nslookup 10.99.1.1 10.99.0.1 ``` Each of these commands uses `10.99.0.1` as the nameserver by setting it as the second argument; you can also make that your default nameserver or the nameserver for the `mynet` TLD. Look into setting "search domains" for your VPN interface in your operating system. `systemd-resolved` users, for example, can run these commands: -```sh +```bash resolvectl dns mynet 10.99.0.1 resolvectl domain mynet '~mynet' '~99.10.in-addr.arpa' ``` This will tell the OS to send `.mynet` queries to our vpn nameserver. Not all programs respect this setting though; `dig`, `ping`, and your browser will work but you'll still have to set the nameserver by hand for `nslookup` (as above) and `nsupdate` using the "server" command (even though we set it in our SOA): -```sh +```bash nsupdate -k admin.key > server 10.99.0.1 > add test.mynet 86400 TXT "hello" @@ -328,7 +327,7 @@ The last major step is to set up the certificate authority. Unlike wireguard and A good place to keep your SSL certs and keys is in `/etc/ssl/private/mynet`. Let's make things easier by setting some variables: -```sh +```bash tld='mynet' crt_dir="/etc/ssl/private/${tld}" ca_key="${crt_dir}/_ca.key" @@ -339,7 +338,7 @@ Now we'll create the ca key and cert. You will be asked for some details about y Here we're setting `-days 3650` which will require re-signing and re-distributing the certificate every ten years. You can avoid that by setting it to 100 years with `-days 36500`. This field is required but I think there is no limit, so you can set it to `99999999` if you want. -```sh +```bash openssl genrsa -des3 -out "${ca_key}" 4096 openssl req -x509 -new -nodes -key "${ca_key}" -sha256 -days 3650 -out "${ca_crt}" ln -s "${ca_crt}" "/etc/ssl/certs/${tld}.pem" @@ -349,7 +348,7 @@ The last step makes the cert available to verification from the host OS. This c We can use these CA files to sign certificates for hosts using our `mynet` domain. Let's sign one for the server first: -```sh +```bash org='My Cool Network' tld=mynet host=hn @@ -393,27 +392,27 @@ openssl x509 -req -sha256 -extensions SAN \ That should do it! Let's check that the cert is valid for all domains and IPs: -```sh +```bash openssl x509 -text -noout -in "${host_dir}/server.crt" | grep -A1 'Subject Alternative Name' ``` That should return something like: -```sh +```bash X509v3 Subject Alternative Name: DNS:hn.mynet, DNS:*.hn.mynet, IP Address:10.99.0.1 ``` It contains our domain, wildcard domain, and IP address. Since everything went well, we can delete the CSR and cnf file: -```sh +```bash rm -f "${crt_dir}/${host}.csr" "${crt_dir}/${host}.cnf" ``` One last thing: we need to generate a certificate and key for our pc. Everything is basically the same as with the server, except that our domain will be `pc.myuser.mynet` instead of `hn.mynet`. So let's breeze through this and check the comments from above if you get confused. -```sh -org='My Cool Network' +```bash +org='My Cool Organization' tld=mynet host='pc.myuser' domain="${host}.${tld}" @@ -455,6 +454,137 @@ You might be thinking, this would all be easier as a script. A script that could ## 4. Wagon -Now that we have this all set up, we can use wagon. Wagon will help us add clients to wireguard, give them a domain name in bind, and create SSL certificates for them in a single step on a nice GUI dashboard. +I keep services in `/srv` so I would do: -TODO: Finish wagon setup instructions. \ No newline at end of file +```sh +cd /srv +git clone https://gitea.gf4.pw/gf4/wagon.git +cd wagon +``` + +### 4.1. Configuration + +Copy the sample environment file and docker-compose file: + +```sh +cp etc/config.sample etc/config +cp etc/servers.sample etc/servers +cp docker-compose.yml.sample docker-compose.yml +``` + +Configure the `docker-compose.yml` file however you like, or don't use it at all. The other two files are tab-separated text files. Lines starting with a hash (`#`) are ignored as comments + +The `etc/servers` file is a list of servers on the `/16` network. For now, just set our single server with the correct variables. + +```tsv +# host ipv4 ipv6 pubkey wg-endpoint admin-endpoint secret + hn 10.99.0.1 XXXX XXXXX= 1.2.3.4:51820 https://wagon-admin.hn.mynet XXXXXX +``` + +We're just gonna leave `XXXX` as a placeholder for ipv6 since we aren't using it. But do set the pubkey to hn's wireguard public key from above. Set admin-endpoint to whatever you want right now; this is actually used for server-to-server communication, not administration. Same thing for secret: leave it as `XXXXXX` or generate something random; in any case it isn't used unless your network has multiple servers. + +Now edit the `etc/config` file + +```sh +TLD='mynet' +LOCAL_SERVER='hn' +IPV4_NET='10.11.0.0/16' +IPV6_NET='fd69:1337:0:420:f4:11::/96' +WG_DNS='DNS=10.11.0.1' +SSL_CONFIG_DIR="/etc/ssl/private/${TLD}" +SSL_CA_CERT="${SSL_CONFIG_DIR}/_ca.crt" +SSL_CA_KEY="${SSL_CONFIG_DIR}/_ca.key" +SSL_ORG='My Cool Organization' +SSL_DAYS='3650' +SSL_CA_PASS='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' +DNS_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==' +DNS_MASTER='10.3.0.1' +DNS_TTL='86400' +``` + +This file should be mostly self-explanitory. "SSL_CA_PASS" is the CA key passphrase created in the last section. The "DNS_KEY" can be found in the "secret" section of the `/etc/bind/keys/wagon.keys` file, which looks like this: + +```tsig +key "wgapi-ksn" { + algorithm hmac-sha512; + secret "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=="; +}; +``` + +Wagon comes as 4 services: + +1. An api users can access to add/delete hosts +2. An api admins can access to add/delete hosts and users +3. A frontend for the user dashboard +4. A frontend for the admin dashboard + +The two frontends were built with knockoutJS and html and are very bare (no css) as they are packaged, but you can easily incoporate them in your existing web portal's design. There is no login (authentication is IP-based) so the frontend works fine on static sites. + +For now, there's no authentication for the admin dashboard and maybe there never will be (out-of-scope). It runs on a different port, so simply set firewall and web proxy rules for whatever authentication configuration you like. + +With that in mind, let's boot up the two API servers. This guide assumes the use of docker and docker-compose, but you can run everything outside docker too. You just need to host the `dashboard.cgi` script on one endpoint and `admin.cgi` on another. The `back/dashboard.Dockerfile` and `back/admin.Dockerfile` files can be a guide to doing so with apache2. + +If you *are* using docker, you should be able to `touch /var/log/wagon.log` and run `docker-compose up` from the wagon directory. This should make the user API available on `localhost:4442` and the admin API on `localhost:4441`. + +That's not bad. We could take requests on that port, but let's take secure https requests on a subdomain instead. With `nginx`, this would work: + +**`/etc/nginx/sites-enabled/wagon.conf`** +```nginx +# User API +server { + server_name wagon-dashboard-api.hn.mynet; + listen 10.11.0.1:443 ssl http2; + ssl_certificate /etc/ssl/private/mynet/hn/server.crt; + ssl_certificate_key /etc/ssl/private/mynet/hn/server.key; + ssl_stapling off; + allow 10.11.0.0/16; # All users + deny all; # Everyone else + location / { + proxy_pass http://localhost:4442; + } +} + +# Admin API +server { + server_name wagon-admin-api.hn.mynet; + listen 10.11.0.1:443 ssl http2; + ssl_certificate /etc/ssl/private/mynet/hn/server.crt; + ssl_certificate_key /etc/ssl/private/mynet/hn/server.key; + ssl_stapling off; + allow 10.11.1.0/24; # One admin + allow 10.11.7.0/24; # Another admin + deny all; # Everyone else + location / { + proxy_pass http://localhost:4441; + } +``` + +Our frontends are going to need these APIs. At the top of `front/dashboard.js` is a hardcoded variable: + +```js +const API_URL = 'https://wg-dashboard-backend.myhost.mytld' +``` + +Set that to the nginx proxy virtual host we just set: + +```js +const API_URL = 'https://wagon-dashboard-api.hn.mynet' +``` + +Or use direct http: + +```js +const API_URL = 'http://localhost:4442' +``` + +Do likewise in `front/admin.js` and set the `TLD` too: + +```js +const API_URL = 'https://wagon-admin-api.hn.mynet' +// or const API_URL = 'http://localhost:4441' +const TLD = 'mynet' +``` + +The frontend should work now, though it could use a bit of design work or implementation in your website. + +That's the whole installation, phew! Take a break. When you come back, start learning how to [use wagon](USAGE.md). \ No newline at end of file diff --git a/README.md b/README.md index 28d0e8a..0cf64af 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Allowing access to virtual webservers is just as simple. For example, I can let ```nginx server { server_name dev.mypc.myuser.mynet; - listen 10.11.1.1:443 ssh http2; + listen 10.11.1.1:443 ssl http2; ssl_certificate /path/to/downloaded/mypc.myuser.mynet/server.crt; ssl_certificate_key /path/to/downloaded/mypc.myuser.mynet/server.key; diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 0000000..75a05f6 --- /dev/null +++ b/USAGE.md @@ -0,0 +1,19 @@ +# Wagon usage + +This hasn't been written yet, but it will contain good information on all the dashboards and API endpoints. + +## User dashboard + +TODO + +## User API + +TODO + +## Admin dashboard + +TODO + +## Admin API + +TODO diff --git a/docker-compose.yml.sample b/docker-compose.yml.sample index b4dca55..2648524 100644 --- a/docker-compose.yml.sample +++ b/docker-compose.yml.sample @@ -4,7 +4,7 @@ networks: name: wagon ipam: config: - - subnet: "172.19.0.0/16" + - subnet: "172.19.0.0/24" services: dashboard-backend: @@ -22,14 +22,14 @@ services: - './etc:/etc/wagon:ro' - '/var/log/wagon.log:/var/log/apache2/error.log' - dashboard-frontend: - build: - context: front - dockerfile: dashboard.Dockerfile - container_name: wagon-dashboard-frontend - networks: - wagon: - ipv4_address: 172.19.0.2 +# dashboard-frontend: +# build: +# context: front +# dockerfile: dashboard.Dockerfile +# container_name: wagon-dashboard-frontend +# networks: +# wagon: +# ipv4_address: 172.19.0.2 admin-backend: build: @@ -46,25 +46,25 @@ services: - '/etc/ssl/private:/etc/ssl/private' - './etc:/etc/wagon:ro' - admin-frontend: - build: - context: front - dockerfile: admin.Dockerfile - container_name: wagon-admin-frontend - networks: - wagon: - ipv4_address: 172.19.0.3 +# admin-frontend: +# build: +# context: front +# dockerfile: admin.Dockerfile +# container_name: wagon-admin-frontend +# networks: +# wagon: +# ipv4_address: 172.19.0.3 - fed-backend: - build: - context: back - dockerfile: fed.Dockerfile - args: - PORT: 4443 - cap_add: - - NET_ADMIN - network_mode: host - container_name: wagon-fed-backend - volumes: - - '/var/log/wagon.log:/var/log/apache2/error.log' - - './etc:/etc/wagon:ro' +# fed-backend: +# build: +# context: back +# dockerfile: fed.Dockerfile +# args: +# PORT: 4443 +# cap_add: +# - NET_ADMIN +# network_mode: host +# container_name: wagon-fed-backend +# volumes: +# - '/var/log/wagon.log:/var/log/apache2/error.log' +# - './etc:/etc/wagon:ro' From 2e94e3fd46c42f983ac1751fe8a7bd6f7964d812 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sat, 8 Apr 2023 14:15:57 -0600 Subject: [PATCH 38/40] Checkboxes, not bullets --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0cf64af..d751273 100644 --- a/README.md +++ b/README.md @@ -122,4 +122,4 @@ You want to use this half-built product on your server at your own risk? Fine, g ## Contributing -If you think you can help with any of these bulletpoints, come by [#wagon:gf4.pw](https://matrix.to/#/#wagon:gf4.pw) on matrix. +If you think you can help with any of these checkboxes, come by [#wagon:gf4.pw](https://matrix.to/#/#wagon:gf4.pw) on matrix. From 417850e3382df26e3dc47ca94b9827754691138e Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sat, 8 Apr 2023 14:54:57 -0600 Subject: [PATCH 39/40] Missing } --- INSTALL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/INSTALL.md b/INSTALL.md index 67fb6da..43ec696 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -557,6 +557,7 @@ server { location / { proxy_pass http://localhost:4441; } +} ``` Our frontends are going to need these APIs. At the top of `front/dashboard.js` is a hardcoded variable: From fea5a8da89e51754a2f04985b9db6babfe597342 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sat, 8 Apr 2023 15:21:40 -0600 Subject: [PATCH 40/40] #9 Added some USAGE instructions --- USAGE.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/USAGE.md b/USAGE.md index 75a05f6..d3be02e 100644 --- a/USAGE.md +++ b/USAGE.md @@ -4,7 +4,20 @@ This hasn't been written yet, but it will contain good information on all the da ## User dashboard -TODO +The sample frontend shows a user's devices in a table like this: + +> ``` +> Host SSL +> mypc.myuser.mynet cert / key [DELETE] +> myphone.myuser.mynet cert / key [DELETE] +> mylaptop.myuser.mynet cert / key [DELETE] +> ``` + +The first column is each host's domain name. The next column has links for users to download an SSL cert/key for that device. Finally there is a button to delete that host. (Every host has a DELETE button, but the backend will not let you delete the device you are connecting from) + +Below the devices list is a place to add a device: + + ## User API

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 literal 0 HcmV?d00001 From 0f7ece51c91bbff312539f3d1b29c024972e3361 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:12:14 -0600 Subject: [PATCH 07/40] Improved missing features section --- README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a7599f..def2ec9 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,25 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem - The code probably contains hardcoded variables specific to gf4, that must be moved to configs/environment files - There is almost no documentation, and extensive tutorials are needed for the initial setup of wireguard, bind9, and the CA keys. - Future implementation of a mail relay, web proxy, and SIP server, and their respective tabs on the web dashboard - - Replacing some of the bash scripts with faster languages like c or rust. + +### Implemented features table + +Work is still needed on all these unchecked boxes. + +| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | ++-----------+------------------+----------------+------------+-------+ +| wireguard | X | X | | | +| bind9 | X | X | | | +| SSL certs | X | X | | | +| nginx | X | | | | +| postfix | X | | | | +| asterisk | | | | | + +[ ] Replace bash scripts with binaries* +[ ] API documentation +[ ] A good CLI/TUI + +*binaries compiled from languages like c/rust/go/haskell, as long as SDKs are available. ## Contributing From ee1136c7369d8c8139edbeee84ef60d99a748f8b Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:18:34 -0600 Subject: [PATCH 08/40] Working markdown table? --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index def2ec9..d356cc9 100644 --- a/README.md +++ b/README.md @@ -107,14 +107,13 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem Work is still needed on all these unchecked boxes. -| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | -+-----------+------------------+----------------+------------+-------+ -| wireguard | X | X | | | -| bind9 | X | X | | | -| SSL certs | X | X | | | -| nginx | X | | | | -| postfix | X | | | | -| asterisk | | | | | +Feature Multiuser daemon Dashboard CRUD Documented Tests +wireguard [X] [X] [ ] [ ] +bind9 [X] [X] [ ] [ ] +SSL certs [X] [X] [ ] [ ] +nginx [X] [ ] [ ] [ ] +postfix [X] [ ] [ ] [ ] +asterisk [ ] [ ] [ ] [ ] [ ] Replace bash scripts with binaries* [ ] API documentation From 7d4a6ce2a4ce793f335dd42513dd001d5f1f82e6 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:25:58 -0600 Subject: [PATCH 09/40] Fixed table for commonmark hopefully --- README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d356cc9..73647ab 100644 --- a/README.md +++ b/README.md @@ -107,13 +107,14 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem Work is still needed on all these unchecked boxes. -Feature Multiuser daemon Dashboard CRUD Documented Tests -wireguard [X] [X] [ ] [ ] -bind9 [X] [X] [ ] [ ] -SSL certs [X] [X] [ ] [ ] -nginx [X] [ ] [ ] [ ] -postfix [X] [ ] [ ] [ ] -asterisk [ ] [ ] [ ] [ ] +| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | \ ++-----------+------------------+----------------+------------+-------+ \ +| wireguard | [X] | [X] | [ ] | [ ] | \ +| bind9 | [X] | [X] | [ ] | [ ] | \ +| SSL certs | [X] | [X] | [ ] | [ ] | \ +| nginx | [X] | [ ] | [ ] | [ ] | \ +| postfix | [X] | [ ] | [ ] | [ ] | \ +| asterisk | [ ] | [ ] | [ ] | [ ] | [ ] Replace bash scripts with binaries* [ ] API documentation From 2ca78f780c694b26873c881a61b8f7f1bed03b07 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:26:51 -0600 Subject: [PATCH 10/40] Removed redundant stuff --- README.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/README.md b/README.md index 73647ab..3045671 100644 --- a/README.md +++ b/README.md @@ -97,15 +97,7 @@ This also means there is no login to the dashboard. Users simply connect to the ## Project status -The wireguard dashboard and admin are in a working alpha state. I have it implemented on my own network, [gf4](https://www.gf4.pw/), and it seems to be working there. What still needs to be done: - - - The code probably contains hardcoded variables specific to gf4, that must be moved to configs/environment files - - There is almost no documentation, and extensive tutorials are needed for the initial setup of wireguard, bind9, and the CA keys. - - Future implementation of a mail relay, web proxy, and SIP server, and their respective tabs on the web dashboard - -### Implemented features table - -Work is still needed on all these unchecked boxes. +The wireguard dashboard and admin are in a working alpha state. I have it implemented on my own network, [gf4](https://www.gf4.pw/), and it seems to be working there. Work is still needed on all these unchecked boxes. | Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | \ +-----------+------------------+----------------+------------+-------+ \ From cfa95dd288f2206ee909d691f484877d563877ea Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:27:21 -0600 Subject: [PATCH 11/40] Dang commonmark with no tables --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 3045671..b3b9562 100644 --- a/README.md +++ b/README.md @@ -99,14 +99,16 @@ This also means there is no login to the dashboard. Users simply connect to the The wireguard dashboard and admin are in a working alpha state. I have it implemented on my own network, [gf4](https://www.gf4.pw/), and it seems to be working there. Work is still needed on all these unchecked boxes. -| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | \ -+-----------+------------------+----------------+------------+-------+ \ -| wireguard | [X] | [X] | [ ] | [ ] | \ -| bind9 | [X] | [X] | [ ] | [ ] | \ -| SSL certs | [X] | [X] | [ ] | [ ] | \ -| nginx | [X] | [ ] | [ ] | [ ] | \ -| postfix | [X] | [ ] | [ ] | [ ] | \ +``` +| Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | ++-----------+------------------+----------------+------------+-------+ +| wireguard | [X] | [X] | [ ] | [ ] | +| bind9 | [X] | [X] | [ ] | [ ] | +| SSL certs | [X] | [X] | [ ] | [ ] | +| nginx | [X] | [ ] | [ ] | [ ] | +| postfix | [X] | [ ] | [ ] | [ ] | | asterisk | [ ] | [ ] | [ ] | [ ] | +``` [ ] Replace bash scripts with binaries* [ ] API documentation From d8fb26bf5f9223b8956c47c66fb9cb6d1b9d5a39 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:27:38 -0600 Subject: [PATCH 12/40] Better list --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b3b9562..1b91f8c 100644 --- a/README.md +++ b/README.md @@ -110,9 +110,9 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem | asterisk | [ ] | [ ] | [ ] | [ ] | ``` -[ ] Replace bash scripts with binaries* -[ ] API documentation -[ ] A good CLI/TUI +- [ ] Replace bash scripts with binaries* +- [ ] API documentation +- [ ] A good CLI/TUI *binaries compiled from languages like c/rust/go/haskell, as long as SDKs are available. From 2ae7f396942ab3b669908ebe4a3711ff95c18990 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Thu, 6 Apr 2023 12:28:39 -0600 Subject: [PATCH 13/40] Need checkboxes in lists --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1b91f8c..0f117e3 100644 --- a/README.md +++ b/README.md @@ -108,11 +108,11 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem | nginx | [X] | [ ] | [ ] | [ ] | | postfix | [X] | [ ] | [ ] | [ ] | | asterisk | [ ] | [ ] | [ ] | [ ] | -``` -- [ ] Replace bash scripts with binaries* -- [ ] API documentation -- [ ] A good CLI/TUI + [ ] Replace bash scripts with binaries* + [ ] API documentation + [ ] A good CLI/TUI +``` *binaries compiled from languages like c/rust/go/haskell, as long as SDKs are available. From b0a3930c645271b4eeb757dce2908edb298f3fb3 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Fri, 7 Apr 2023 01:32:37 -0600 Subject: [PATCH 14/40] Started installation docs --- INSTALL.md | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 4 +++ 2 files changed, 100 insertions(+) create mode 100644 INSTALL.md diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..268fbca --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,96 @@ +# Installing wagon + +Before installing wagon, the server needs to be set up with the following basic services: + + - wireguard + - bind9 + - openssl ca + +Theoretically, wireguard, bind9, and wagon could all live in docker containers, or none of them. If wagon is in docker but either wireguard or bind9 *aren't*, then the wagon container has to use `host` network mode. + +Almost all commands in this guide need to be run as root/admin. + + +## 1. Wireguard + +On the server, [install wireguard](https://www.wireguard.com/install/). Then modify and run these commands to set some variables: + +```sh +# Choose a short lowercase name for the network +net_name=mynet +# Choose a number (between 2 and 254) for the network +net_num=99 +# Find an unused UDP port between 1024 and 65535 +srv_listenport=58395 +``` + +Create the wireguard interface + +```sh +srv_privkey="$(wg genkey)" +psk="$(wg genpsk)" +ip link add dev "${net_name}" type wireguard +ip addr add dev "${net_name}" "10.${net_num}.0.1/8" +echo "${srv_privkey}" | wg set "${net_name}" listen-port "${srv_listenport}" private-key /dev/stdin +ip link set up dev "${net_name}" +``` + +Get the server's public key and psk (copy the output of these command) + +```sh +wg pubkey <<<"${srv_privkey}" +XXXXXXXXXXXXXX +echo "${psk}" +YYYYYYYYYYYYYY +``` + +Now on your first client, install wireguard and set these variables: + +```sh +net_name=mynet # Match what's on the server +net_num=99 # Match what's on the server +srv_listenport=58395 # Match what's on the server +srv_pubkey='XXXXXXXXXXXXXX' # The public key we copied above +psk='YYYYYYYYYYYYYY' # The psk we copied above +srv_endpoint='1.2.3.4' # The server's public IP address +``` + +Create the interface on the client and add the server as a peer: + +```sh +our_privkey="$(wg genkey)" +ip link add dev "${net_name}" type wireguard +ip addr add dev "${net_name}" "10.${net_num}.1.1/8" +echo "${our_privkey}" | wg set "${net_name}" private-key /dev/stdin \ +peer "${srv_pubkey}" allowed-ips "10.0.0.0/8" endpoint "${srv_endpoint}:${srv_listenport}" persistent-keepalive 25 +ip link set up dev "${net_name}" +``` + +Now grab the client's pubkey: + +```sh +wg pubkey <<<"${our_privkey}" +ZZZZZZZZZZZZZZ +``` + +Go back to the server and add the client as a peer: + +```sh +our_pubkey='ZZZZZZZZZZZZZZ' # From the client +wg set "${net_name}" peer "${our_pubkey}" allowed-ips "10.${net_num}.1.1/32" +``` + +Make sure the client can ping the server with `ping 10.${net_num}.0.1` and the server can ping the client with `ping 10.${net_num}.1.1`. If that's working, proceed to the next section. + + +## 2. bind9 + +TODO + +## 3. Certificate authority + +TODO + +## 4. Wagon + +TODO diff --git a/README.md b/README.md index 0f117e3..f1f176b 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,10 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem *binaries compiled from languages like c/rust/go/haskell, as long as SDKs are available. +## Installation + +You want to use this half-built product on your server at your own risk? Fine, go right ahead! Take a look at [INSTALL.md](INSTALL.md). If you have trouble, ask for help in the matrix room below. + ## Contributing If you think you can help with any of these bulletpoints, come by [#wagon:gf4.pw](https://matrix.to/#/#wagon:gf4.pw) on matrix. From 23b3c9def123a482019ab3ccce43eb25d9677ee1 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Fri, 7 Apr 2023 14:40:11 -0600 Subject: [PATCH 15/40] Wrote ns and bind installation instructions --- INSTALL.md | 376 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 370 insertions(+), 6 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 268fbca..8efbe98 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -6,7 +6,7 @@ Before installing wagon, the server needs to be set up with the following basic - bind9 - openssl ca -Theoretically, wireguard, bind9, and wagon could all live in docker containers, or none of them. If wagon is in docker but either wireguard or bind9 *aren't*, then the wagon container has to use `host` network mode. +Theoretically, wireguard, bind9, and wagon could all live in docker containers, or none of them. If wagon is in docker but either wireguard or bind9 *aren't*, then the wagon container has to use "host" network mode. Almost all commands in this guide need to be run as root/admin. @@ -52,7 +52,7 @@ net_num=99 # Match what's on the server srv_listenport=58395 # Match what's on the server srv_pubkey='XXXXXXXXXXXXXX' # The public key we copied above psk='YYYYYYYYYYYYYY' # The psk we copied above -srv_endpoint='1.2.3.4' # The server's public IP address +public_ip='1.2.3.4' # The server's public IP address ``` Create the interface on the client and add the server as a peer: @@ -62,7 +62,7 @@ our_privkey="$(wg genkey)" ip link add dev "${net_name}" type wireguard ip addr add dev "${net_name}" "10.${net_num}.1.1/8" echo "${our_privkey}" | wg set "${net_name}" private-key /dev/stdin \ -peer "${srv_pubkey}" allowed-ips "10.0.0.0/8" endpoint "${srv_endpoint}:${srv_listenport}" persistent-keepalive 25 +peer "${srv_pubkey}" allowed-ips "10.0.0.0/8" endpoint "${public_ip}:${srv_listenport}" persistent-keepalive 25 ip link set up dev "${net_name}" ``` @@ -85,12 +85,376 @@ Make sure the client can ping the server with `ping 10.${net_num}.0.1` and the s ## 2. bind9 -TODO +These instructions are adapted from [Digital Ocean: How To Configure BIND as a Private Network DNS Server on Ubuntu 22.04 (2022-08)](https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-22-04) + +On the server, open a root shell and [install bind9 nameserver](https://kb.isc.org/docs/aa-00648). Set some variables to make the rest easier. + +```sh +tld='mynet' # The same as $net_name (see below) +net_num='99' # Match what's used with wireguard +public_ip='1.2.3.4' # The server's public IP address, as above +``` + +The `$tld` should match the `$net_name`, which is the wireguard interface name. Probably using a different `$tld` could be possible in a future version. Ok, let's configure bind. In older documentation, you'll see reference to `named.conf`. In newer versions of bind, this file just includes `named.conf.options` and `named.conf.local`. We will follow this convention too. + +If you're already running a nameserver, you can add these configurations alongside your existing settings. + +**`/etc/bind/named.conf.options`** +```named.conf +// Access control lists +acl "mynet_acl" { + // change 99 to $net_num + 10.99.0.0/16; +}; +acl "intervpn_acl" { + 10.0.0.0/8; +}; + +options { + + // This is bind's default location for zonefiles + // Just make sure you include it in backups. + directory "/var/cache/bind"; + + // https://serverfault.com/a/381923 + notify explicit; + + // Add listen-on-v6 if using IPv6 + // Listen on your public IP too if you are + // also running a public nameserver + listen-on { + 127.0.0.1; // localhost + 10.99.0.1; // VPN + }; + + // Whom we provide nameservice to + // https://tldp.org/HOWTO/DNS-HOWTO-6.html#ss6.2 + recursion yes; + allow-recursion { + localhost; localnets; + intervpn_acl; // or mynet_acl to be more restricitve + }; + + // Enable DNSSEC validation for forwarded queries + dnssec-validation auto; + + // Keep these settings restricted and change them + // per-zone in named.conf.local. + allow-transfer { none; }; + allow-query { + localhost; localnets; + }; + + // If we don't know a domain, forward to these nameservers + // A good list of public nameservers by country: + // https://dnschecker.org/public-dns + forwarders { + 1.1.1.1; + 8.8.8.8; + }; + +}; +``` + +That wasn't so bad, was it? Now we'll set the per-zone settings. wagon requires reverse DNS so stop complaining and just do it. I spent a while searching for a good tool to turn IP addresses into their respective rDNS domains before I realized that `nslookup` does that. `nslookup` and `nsupdate` should have been installed with bind; if not, install them. + +Ok, let's use nslookup to grab the rDNS domain for our IP: + +```sh +nslookup 10.99.0.1 +** server can't find 1.0.99.10.in-addr.arpa: NXDOMAIN +``` + +Now we know that to provide rDNS for all the IPs in `10.99.0.0/16`, we must serve on the entire zone `99.10.in-addr.arpa`. Do this for IPv6 if needed to get a zone ending in `.ip6.arpa`. + +**`/etc/bind/named.conf.local`** +```named.conf +// We'll create these keys in the next step +include "/etc/bind/keys/admin.key"; +include "/etc/bind/keys/wagon.key"; + +// mynet is your tld +zone "mynet" { + type master; + // "file" is relative to the "directory" we + // set in named.conf.options + file "mynet.db"; + allow-query { + localhost; localnets; + intervpn_acl; // or mynet_acl to be more restricitve + }; + // This should be include slave servers AND + // Any machine that will be running wagon + allow-transfer { localhost; 10.99.0.1; }; + // This should be set to slave servers + also-notify { localhost; }; + // Here we give two keys nsupdate permissions + update-policy { + grant admin zonesub ANY; + grant wagon zonesub ANY; + }; +}; + +// The rDNS zone we got from nslookup +zone "99.10.in-addr.arpa" { + type master; + file "10.99.db"; // relative to "directory" + // The next settings can be copied verbatim from above + allow-query {localhost; localnets; intervpn_acl; }; + allow-transfer { localhost; 10.99.0.1; }; + update-policy { + grant admin zonesub ANY; + grant wagon zonesub ANY; + }; +}; + +// Any existing zones will live happily alongside +// zone "example.com" { +``` + +Excellent. This file referenced four files that don't exist yet and must be created. Let's start with the keys. `nsupdate` uses symetric keys, so one copy will live on the bind server and the other will be copied to the nsupdate client. + +I like to keep my keys in `/etc/bind/keys`. Let's create this directory and the two keys named above. Actually you should rename the "admin" key as your username and give a different key to each admin. "wagon" is of course the key our future dashboard will use to update the nameserver. + +```sh +mkdir /etc/bind/keys +tsig-keygen -a hmac-sha512 admin >/etc/bind/keys/admin.key +tsig-keygen -a hmac-sha512 wagon >/etc/bind/keys/wagon.key +chown -R root:bind /etc/bind/keys +chmod 750 /etc/bind/keys +chmod 640 /etc/bind/keys/*.key +cat /etc/bind/keys/admin.key +``` + +Copy the key we just catted and paste it into an `admin.key` file on your pc. Now you will be able to modify DNS records by running `nsupdate -k admin.key` on your PC. When we set up wagon, we'll copy the value from `wagon.key` into the wagon config. But let's not get ahead of ourselves, we still have one more thing to do with bind: create the zonefiles. + +Firstly, let's assume some variables: + + - Our server's $HOSTNAME is `hn` and it's domain name will be `hn.mynet` + - The single wireguard client we set up at `10.99.1.1` is going to get the domain name `pc.myuser.mynet`. + +Start with fDNS: + +**`/var/cache/bind/mynet.db`** +```bind +$ORIGIN . +$TTL 604800 ; 1 week +mynet IN SOA hn.mynet. myuser.mynet. ( + 2 ; serial + 604800 ; refresh (1 week) + 86400 ; retry (1 day) + 2419200 ; expire (4 weeks) + 604800 ; minimum (1 week) + ) + NS hn.mynet. +$ORIGIN mynet. + +; Record for our servers +hn A 10.99.0.1 +*.hn CNAME hn.mynet. + +; Record for our user +$ORIGIN myuser.mynet. +pc A 10.99.1.1 +*.pc CNAME pc.myuser.mynet. +``` + +In the SOA line, there are two values that require explanation: + + - **`hn.mynet.`** is the default server `nsupdate` will send updates to. Of course it's our VPN domain, not a public domain name; we don't accept nsupdates from the internet. + - **`myuser.mynet.`** is actually the email `myuser@mynet` and should be set to the server admin. If you want to use a public email address, you can set it to something like `hostmaster.example.com.` for `hostmaster@example.com`. + + Now do one for rDNS (same thing goes for the SOA line here): + +**`/var/cache/bind/10.99.db`** +```bind +$ORIGIN . +$TTL 604800 ; 1 week +99.10.in-addr.arpa IN SOA hn.mynet. myuser.mynet. ( + 2 ; serial + 604800 ; refresh (1 week) + 86400 ; retry (1 day) + 2419200 ; expire (4 weeks) + 604800 ; minimum (1 week) + ) + NS hn.mynet. + +; Server records +$ORIGIN 0.99.10.in-addr.arpa. +1 PTR hn.mynet. + +; User records +$ORIGIN 1.99.10.in-addr.arpa. +1 PTR pc.myuser.mynet. +``` + +See, that wasn't so hard! Now start the nameserver and check that it doesn't throw any errors: + +```sh +systemctl start named +systemctl enable named +systemctl status named +``` + +If it's not working, fix it and then go back to your pc and check the lookups. + +```sh +nslookup pc.myuser.mynet 10.99.0.1 +nslookup hn.mynet 10.99.0.1 +nslookup 10.99.0.1 10.99.0.1 +nslookup 10.99.1.1 10.99.0.1 +``` +Each of these commands uses `10.99.0.1` as the nameserver by setting it as the second argument; you can also make that your default nameserver or the nameserver for the `mynet` TLD. Look into setting "search domains" for your VPN interface in your operating system. `systemd-resolved` users, for example, can run these commands: + +```sh +resolvectl dns mynet 10.99.0.1 +resolvectl domain mynet '~mynet' '~99.10.in-addr.arpa' +``` + +This will tell the OS to send `.mynet` queries to our vpn nameserver. Not all programs respect this setting though; `dig`, `ping`, and your browser will work but you'll still have to set the nameserver by hand for `nslookup` (as above) and `nsupdate` using the "server" command (even though we set it in our SOA): + +```sh +nsupdate -k admin.key +> server 10.99.0.1 +> add test.mynet 86400 TXT "hello" +> delete test.mynet TXT +> send +> quit +``` ## 3. Certificate authority -TODO +The last major step is to set up the certificate authority. Unlike wireguard and bind, this won't require running some background service; we just generate a few files and keep them safe. + +A good place to keep your SSL certs and keys is in `/etc/ssl/private/mynet`. Let's make things easier by setting some variables: + +```sh +tld='mynet' +crt_dir="/etc/ssl/private/${tld}" +ca_key="${crt_dir}/_ca.key" +ca_crt="${crt_dir}/_ca.crt" +``` + +Now we'll create the ca key and cert. You will be asked for some details about your organization; put whatever you want. You'll also be asked to create a passphrase: create and store one using the most secure methods! You'll need this passphrase for the `wagon` config later. + +Here we're setting `-days 3650` which will require re-signing and re-distributing the certificate every ten years. You can avoid that by setting it to 100 years with `-days 36500`. This field is required but I think there is no limit, so you can set it to `99999999` if you want. + +```sh +openssl genrsa -des3 -out "${ca_key}" 4096 +openssl req -x509 -new -nodes -key "${ca_key}" -sha256 -days 3650 -out "${ca_crt}" +ln -s "${ca_crt}" "/etc/ssl/certs/${tld}.pem" +``` + +The last step makes the cert available to verification from the host OS. This cert file, `/etc/ssl/private/mynet/_ca.crt` should be shared with everyone who will be accessing your network. One easy way to do this is to serve it on your public website at `https://www.example.com/ca.crt` so users can easily download it. It must be added to every user's OS and/or browser. How this is done will depend on the OS and browser... so you should provide instructions to your users! A sample of such instructions can be found at [www.gf4.pw/nebuchadnezzar/ca/](https://www.gf4.pw/nebuchadnezzar/ca/). + +We can use these CA files to sign certificates for hosts using our `mynet` domain. Let's sign one for the server first: + +```sh +org='My Cool Network' +tld=mynet +host=hn +domain="${host}.${tld}" +crt_dir="/etc/ssl/private/${tld}" +host_dir="${crt_dir}/${host}" +ca_crt="${crt_dir}/_ca.crt" +ca_key="${crt_dir}/_ca.key" +ips='IP:10.99.0.1' + +# Create a subdirectory for the host's files +mkdir -p "${host_dir}" + +# Generate the host's key +openssl genrsa -out "${host_dir}/server.key" 2048 + +# Set certificate configuration +# If /etc/ssl/openssl.cnf doesn't exist, look for +# openssl.cnf somewhere in your openssl installation +cat /etc/ssl/openssl.cnf \ + <(printf "\n[SAN]\nsubjectAltName=DNS:${domain},DNS:*.${domain},${ips}\n") \ + >"${host_dir}.cnf" + +# Now we'll create the certificate signing request +openssl req -new -sha256 -reqexts SAN \ + -key "${host_dir}/server.key" \ + -config "${crt_dir}/${host}.cnf" \ + -subj "/O=${org}/OU=${host}/CN=${domain}" \ + -out "${crt_dir}/${host}.csr" + +# Finally, sign the certificate +# This will request the CA passphrase set previously +# Set -days to whatever you want using the tips above +openssl x509 -req -sha256 -extensions SAN \ + -CAcreateserial -days "3650" + -CA "${ca_crt}" -CAkey "${ca_key}" \ + -in "${crt_dir}/${host}.csr" \ + -extfile "${crt_dir}/${host}.cnf" \ + -out "${host_dir}/server.crt" +``` + +That should do it! Let's check that the cert is valid for all domains and IPs: + +```sh +openssl x509 -text -noout -in "${host_dir}/server.crt" | grep -A1 'Subject Alternative Name' +``` + +That should return something like: + +```sh +X509v3 Subject Alternative Name: + DNS:hn.mynet, DNS:*.hn.mynet, IP Address:10.99.0.1 +``` + +It contains our domain, wildcard domain, and IP address. Since everything went well, we can delete the CSR and cnf file: + +```sh +rm -f "${crt_dir}/${host}.csr" "${crt_dir}/${host}.cnf" +``` + +One last thing: we need to generate a certificate and key for our pc. Everything is basically the same as with the server, except that our domain will be `pc.myuser.mynet` instead of `hn.mynet`. So let's breeze through this and check the comments from above if you get confused. + +```sh +org='My Cool Network' +tld=mynet +host='pc.myuser' +domain="${host}.${tld}" +crt_dir="/etc/ssl/private/${tld}" +host_dir="${crt_dir}/${host}" +ca_crt="${crt_dir}/_ca.crt" +ca_key="${crt_dir}/_ca.key" +ips='IP:10.99.1.1' +days=3650 + +mkdir -p "${host_dir}" + +openssl genrsa -out "${host_dir}/server.key" 2048 + +cat /etc/ssl/openssl.cnf \ + <(printf "\n[SAN]\nsubjectAltName=DNS:${domain},DNS:*.${domain},${ips}\n") \ + >"${host_dir}.cnf" + +openssl req -new -sha256 -reqexts SAN \ + -key "${host_dir}/server.key" \ + -config "${crt_dir}/${host}.cnf" \ + -subj "/O=${org}/OU=${host}/CN=${domain}" \ + -out "${crt_dir}/${host}.csr" + + +openssl x509 -req -sha256 -extensions SAN \ + -CAcreateserial -days "3650" + -CA "${ca_crt}" -CAkey "${ca_key}" \ + -in "${crt_dir}/${host}.csr" \ + -extfile "${crt_dir}/${host}.cnf" \ + -out "${host_dir}/server.crt" + +openssl x509 -text -noout -in "${host_dir}/server.crt" | grep -A1 'Subject Alternative Name' + +rm -f "${crt_dir}/${host}.csr" "${crt_dir}/${host}.cnf" +``` + +You might be thinking, this would all be easier as a script. A script that could add clients to wireguard and bind, then generate and server the ssl files. This is what `wagon` is designed to do. ## 4. Wagon -TODO +Now that we have this all set up, we can use wagon. Wagon will help us add clients to wireguard, give them a domain name in bind, and create SSL certificates for them in a single step on a nice GUI dashboard. + +TODO: Finish wagon setup instructions. \ No newline at end of file From 1a0671949d8c3c24e7e5762b13367c9d7641c4ad Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Fri, 7 Apr 2023 14:45:13 -0600 Subject: [PATCH 16/40] New documentation --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f1f176b..28d0e8a 100644 --- a/README.md +++ b/README.md @@ -102,9 +102,9 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem ``` | Feature | Multiuser daemon | Dashboard CRUD | Documented | Tests | +-----------+------------------+----------------+------------+-------+ -| wireguard | [X] | [X] | [ ] | [ ] | -| bind9 | [X] | [X] | [ ] | [ ] | -| SSL certs | [X] | [X] | [ ] | [ ] | +| wireguard | [X] | [X] | [X] | [ ] | +| bind9 | [X] | [X] | [X] | [ ] | +| SSL certs | [X] | [X] | [X] | [ ] | | nginx | [X] | [ ] | [ ] | [ ] | | postfix | [X] | [ ] | [ ] | [ ] | | asterisk | [ ] | [ ] | [ ] | [ ] | From c3f34b4981d2b3aa2e043d3c586316b0818229c8 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sat, 8 Apr 2023 00:49:39 -0600 Subject: [PATCH 17/40] Finished installation instructions --- INSTALL.md | 168 +++++++++++++++++++++++++++++++++----- README.md | 2 +- USAGE.md | 19 +++++ docker-compose.yml.sample | 60 +++++++------- 4 files changed, 199 insertions(+), 50 deletions(-) create mode 100644 USAGE.md diff --git a/INSTALL.md b/INSTALL.md index 8efbe98..67fb6da 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -80,8 +80,7 @@ our_pubkey='ZZZZZZZZZZZZZZ' # From the client wg set "${net_name}" peer "${our_pubkey}" allowed-ips "10.${net_num}.1.1/32" ``` -Make sure the client can ping the server with `ping 10.${net_num}.0.1` and the server can ping the client with `ping 10.${net_num}.1.1`. If that's working, proceed to the next section. - +Make sure the client can ping the server with `ping 10.${net_num}.0.1` and the server can ping the client with `ping 10.${net_num}.1.1`. If that's not working, post your error message on the matrix channel. If it is working, get a cup of coffee because the next section is a doozy. ## 2. bind9 @@ -214,9 +213,9 @@ zone "99.10.in-addr.arpa" { Excellent. This file referenced four files that don't exist yet and must be created. Let's start with the keys. `nsupdate` uses symetric keys, so one copy will live on the bind server and the other will be copied to the nsupdate client. -I like to keep my keys in `/etc/bind/keys`. Let's create this directory and the two keys named above. Actually you should rename the "admin" key as your username and give a different key to each admin. "wagon" is of course the key our future dashboard will use to update the nameserver. +As you can see from the first lines of this file, I like to keep my keys in `/etc/bind/keys`. Let's create this directory and the two keys named above. Actually you should rename the "admin" key as your username and give a different key to each admin. "wagon" is of course the key our future dashboard will use to update the nameserver. -```sh +```bash mkdir /etc/bind/keys tsig-keygen -a hmac-sha512 admin >/etc/bind/keys/admin.key tsig-keygen -a hmac-sha512 wagon >/etc/bind/keys/wagon.key @@ -288,9 +287,9 @@ $ORIGIN 1.99.10.in-addr.arpa. 1 PTR pc.myuser.mynet. ``` -See, that wasn't so hard! Now start the nameserver and check that it doesn't throw any errors: +Easy. Now start the nameserver and check that it doesn't throw any errors: -```sh +```bash systemctl start named systemctl enable named systemctl status named @@ -298,7 +297,7 @@ systemctl status named If it's not working, fix it and then go back to your pc and check the lookups. -```sh +```bash nslookup pc.myuser.mynet 10.99.0.1 nslookup hn.mynet 10.99.0.1 nslookup 10.99.0.1 10.99.0.1 @@ -306,14 +305,14 @@ nslookup 10.99.1.1 10.99.0.1 ``` Each of these commands uses `10.99.0.1` as the nameserver by setting it as the second argument; you can also make that your default nameserver or the nameserver for the `mynet` TLD. Look into setting "search domains" for your VPN interface in your operating system. `systemd-resolved` users, for example, can run these commands: -```sh +```bash resolvectl dns mynet 10.99.0.1 resolvectl domain mynet '~mynet' '~99.10.in-addr.arpa' ``` This will tell the OS to send `.mynet` queries to our vpn nameserver. Not all programs respect this setting though; `dig`, `ping`, and your browser will work but you'll still have to set the nameserver by hand for `nslookup` (as above) and `nsupdate` using the "server" command (even though we set it in our SOA): -```sh +```bash nsupdate -k admin.key > server 10.99.0.1 > add test.mynet 86400 TXT "hello" @@ -328,7 +327,7 @@ The last major step is to set up the certificate authority. Unlike wireguard and A good place to keep your SSL certs and keys is in `/etc/ssl/private/mynet`. Let's make things easier by setting some variables: -```sh +```bash tld='mynet' crt_dir="/etc/ssl/private/${tld}" ca_key="${crt_dir}/_ca.key" @@ -339,7 +338,7 @@ Now we'll create the ca key and cert. You will be asked for some details about y Here we're setting `-days 3650` which will require re-signing and re-distributing the certificate every ten years. You can avoid that by setting it to 100 years with `-days 36500`. This field is required but I think there is no limit, so you can set it to `99999999` if you want. -```sh +```bash openssl genrsa -des3 -out "${ca_key}" 4096 openssl req -x509 -new -nodes -key "${ca_key}" -sha256 -days 3650 -out "${ca_crt}" ln -s "${ca_crt}" "/etc/ssl/certs/${tld}.pem" @@ -349,7 +348,7 @@ The last step makes the cert available to verification from the host OS. This c We can use these CA files to sign certificates for hosts using our `mynet` domain. Let's sign one for the server first: -```sh +```bash org='My Cool Network' tld=mynet host=hn @@ -393,27 +392,27 @@ openssl x509 -req -sha256 -extensions SAN \ That should do it! Let's check that the cert is valid for all domains and IPs: -```sh +```bash openssl x509 -text -noout -in "${host_dir}/server.crt" | grep -A1 'Subject Alternative Name' ``` That should return something like: -```sh +```bash X509v3 Subject Alternative Name: DNS:hn.mynet, DNS:*.hn.mynet, IP Address:10.99.0.1 ``` It contains our domain, wildcard domain, and IP address. Since everything went well, we can delete the CSR and cnf file: -```sh +```bash rm -f "${crt_dir}/${host}.csr" "${crt_dir}/${host}.cnf" ``` One last thing: we need to generate a certificate and key for our pc. Everything is basically the same as with the server, except that our domain will be `pc.myuser.mynet` instead of `hn.mynet`. So let's breeze through this and check the comments from above if you get confused. -```sh -org='My Cool Network' +```bash +org='My Cool Organization' tld=mynet host='pc.myuser' domain="${host}.${tld}" @@ -455,6 +454,137 @@ You might be thinking, this would all be easier as a script. A script that could ## 4. Wagon -Now that we have this all set up, we can use wagon. Wagon will help us add clients to wireguard, give them a domain name in bind, and create SSL certificates for them in a single step on a nice GUI dashboard. +I keep services in `/srv` so I would do: -TODO: Finish wagon setup instructions. \ No newline at end of file +```sh +cd /srv +git clone https://gitea.gf4.pw/gf4/wagon.git +cd wagon +``` + +### 4.1. Configuration + +Copy the sample environment file and docker-compose file: + +```sh +cp etc/config.sample etc/config +cp etc/servers.sample etc/servers +cp docker-compose.yml.sample docker-compose.yml +``` + +Configure the `docker-compose.yml` file however you like, or don't use it at all. The other two files are tab-separated text files. Lines starting with a hash (`#`) are ignored as comments + +The `etc/servers` file is a list of servers on the `/16` network. For now, just set our single server with the correct variables. + +```tsv +# host ipv4 ipv6 pubkey wg-endpoint admin-endpoint secret + hn 10.99.0.1 XXXX XXXXX= 1.2.3.4:51820 https://wagon-admin.hn.mynet XXXXXX +``` + +We're just gonna leave `XXXX` as a placeholder for ipv6 since we aren't using it. But do set the pubkey to hn's wireguard public key from above. Set admin-endpoint to whatever you want right now; this is actually used for server-to-server communication, not administration. Same thing for secret: leave it as `XXXXXX` or generate something random; in any case it isn't used unless your network has multiple servers. + +Now edit the `etc/config` file + +```sh +TLD='mynet' +LOCAL_SERVER='hn' +IPV4_NET='10.11.0.0/16' +IPV6_NET='fd69:1337:0:420:f4:11::/96' +WG_DNS='DNS=10.11.0.1' +SSL_CONFIG_DIR="/etc/ssl/private/${TLD}" +SSL_CA_CERT="${SSL_CONFIG_DIR}/_ca.crt" +SSL_CA_KEY="${SSL_CONFIG_DIR}/_ca.key" +SSL_ORG='My Cool Organization' +SSL_DAYS='3650' +SSL_CA_PASS='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' +DNS_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==' +DNS_MASTER='10.3.0.1' +DNS_TTL='86400' +``` + +This file should be mostly self-explanitory. "SSL_CA_PASS" is the CA key passphrase created in the last section. The "DNS_KEY" can be found in the "secret" section of the `/etc/bind/keys/wagon.keys` file, which looks like this: + +```tsig +key "wgapi-ksn" { + algorithm hmac-sha512; + secret "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=="; +}; +``` + +Wagon comes as 4 services: + +1. An api users can access to add/delete hosts +2. An api admins can access to add/delete hosts and users +3. A frontend for the user dashboard +4. A frontend for the admin dashboard + +The two frontends were built with knockoutJS and html and are very bare (no css) as they are packaged, but you can easily incoporate them in your existing web portal's design. There is no login (authentication is IP-based) so the frontend works fine on static sites. + +For now, there's no authentication for the admin dashboard and maybe there never will be (out-of-scope). It runs on a different port, so simply set firewall and web proxy rules for whatever authentication configuration you like. + +With that in mind, let's boot up the two API servers. This guide assumes the use of docker and docker-compose, but you can run everything outside docker too. You just need to host the `dashboard.cgi` script on one endpoint and `admin.cgi` on another. The `back/dashboard.Dockerfile` and `back/admin.Dockerfile` files can be a guide to doing so with apache2. + +If you *are* using docker, you should be able to `touch /var/log/wagon.log` and run `docker-compose up` from the wagon directory. This should make the user API available on `localhost:4442` and the admin API on `localhost:4441`. + +That's not bad. We could take requests on that port, but let's take secure https requests on a subdomain instead. With `nginx`, this would work: + +**`/etc/nginx/sites-enabled/wagon.conf`** +```nginx +# User API +server { + server_name wagon-dashboard-api.hn.mynet; + listen 10.11.0.1:443 ssl http2; + ssl_certificate /etc/ssl/private/mynet/hn/server.crt; + ssl_certificate_key /etc/ssl/private/mynet/hn/server.key; + ssl_stapling off; + allow 10.11.0.0/16; # All users + deny all; # Everyone else + location / { + proxy_pass http://localhost:4442; + } +} + +# Admin API +server { + server_name wagon-admin-api.hn.mynet; + listen 10.11.0.1:443 ssl http2; + ssl_certificate /etc/ssl/private/mynet/hn/server.crt; + ssl_certificate_key /etc/ssl/private/mynet/hn/server.key; + ssl_stapling off; + allow 10.11.1.0/24; # One admin + allow 10.11.7.0/24; # Another admin + deny all; # Everyone else + location / { + proxy_pass http://localhost:4441; + } +``` + +Our frontends are going to need these APIs. At the top of `front/dashboard.js` is a hardcoded variable: + +```js +const API_URL = 'https://wg-dashboard-backend.myhost.mytld' +``` + +Set that to the nginx proxy virtual host we just set: + +```js +const API_URL = 'https://wagon-dashboard-api.hn.mynet' +``` + +Or use direct http: + +```js +const API_URL = 'http://localhost:4442' +``` + +Do likewise in `front/admin.js` and set the `TLD` too: + +```js +const API_URL = 'https://wagon-admin-api.hn.mynet' +// or const API_URL = 'http://localhost:4441' +const TLD = 'mynet' +``` + +The frontend should work now, though it could use a bit of design work or implementation in your website. + +That's the whole installation, phew! Take a break. When you come back, start learning how to [use wagon](USAGE.md). \ No newline at end of file diff --git a/README.md b/README.md index 28d0e8a..0cf64af 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Allowing access to virtual webservers is just as simple. For example, I can let ```nginx server { server_name dev.mypc.myuser.mynet; - listen 10.11.1.1:443 ssh http2; + listen 10.11.1.1:443 ssl http2; ssl_certificate /path/to/downloaded/mypc.myuser.mynet/server.crt; ssl_certificate_key /path/to/downloaded/mypc.myuser.mynet/server.key; diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 0000000..75a05f6 --- /dev/null +++ b/USAGE.md @@ -0,0 +1,19 @@ +# Wagon usage + +This hasn't been written yet, but it will contain good information on all the dashboards and API endpoints. + +## User dashboard + +TODO + +## User API + +TODO + +## Admin dashboard + +TODO + +## Admin API + +TODO diff --git a/docker-compose.yml.sample b/docker-compose.yml.sample index b4dca55..2648524 100644 --- a/docker-compose.yml.sample +++ b/docker-compose.yml.sample @@ -4,7 +4,7 @@ networks: name: wagon ipam: config: - - subnet: "172.19.0.0/16" + - subnet: "172.19.0.0/24" services: dashboard-backend: @@ -22,14 +22,14 @@ services: - './etc:/etc/wagon:ro' - '/var/log/wagon.log:/var/log/apache2/error.log' - dashboard-frontend: - build: - context: front - dockerfile: dashboard.Dockerfile - container_name: wagon-dashboard-frontend - networks: - wagon: - ipv4_address: 172.19.0.2 +# dashboard-frontend: +# build: +# context: front +# dockerfile: dashboard.Dockerfile +# container_name: wagon-dashboard-frontend +# networks: +# wagon: +# ipv4_address: 172.19.0.2 admin-backend: build: @@ -46,25 +46,25 @@ services: - '/etc/ssl/private:/etc/ssl/private' - './etc:/etc/wagon:ro' - admin-frontend: - build: - context: front - dockerfile: admin.Dockerfile - container_name: wagon-admin-frontend - networks: - wagon: - ipv4_address: 172.19.0.3 +# admin-frontend: +# build: +# context: front +# dockerfile: admin.Dockerfile +# container_name: wagon-admin-frontend +# networks: +# wagon: +# ipv4_address: 172.19.0.3 - fed-backend: - build: - context: back - dockerfile: fed.Dockerfile - args: - PORT: 4443 - cap_add: - - NET_ADMIN - network_mode: host - container_name: wagon-fed-backend - volumes: - - '/var/log/wagon.log:/var/log/apache2/error.log' - - './etc:/etc/wagon:ro' +# fed-backend: +# build: +# context: back +# dockerfile: fed.Dockerfile +# args: +# PORT: 4443 +# cap_add: +# - NET_ADMIN +# network_mode: host +# container_name: wagon-fed-backend +# volumes: +# - '/var/log/wagon.log:/var/log/apache2/error.log' +# - './etc:/etc/wagon:ro' From 44c8a21436d64dee54d11ab5679a6c3887818065 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sat, 8 Apr 2023 14:15:57 -0600 Subject: [PATCH 18/40] Checkboxes, not bullets --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0cf64af..d751273 100644 --- a/README.md +++ b/README.md @@ -122,4 +122,4 @@ You want to use this half-built product on your server at your own risk? Fine, g ## Contributing -If you think you can help with any of these bulletpoints, come by [#wagon:gf4.pw](https://matrix.to/#/#wagon:gf4.pw) on matrix. +If you think you can help with any of these checkboxes, come by [#wagon:gf4.pw](https://matrix.to/#/#wagon:gf4.pw) on matrix. From e8d0a7a9b9e9c49a0a2e36755e18633f1bbee290 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sat, 8 Apr 2023 14:54:57 -0600 Subject: [PATCH 19/40] Missing } --- INSTALL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/INSTALL.md b/INSTALL.md index 67fb6da..43ec696 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -557,6 +557,7 @@ server { location / { proxy_pass http://localhost:4441; } +} ``` Our frontends are going to need these APIs. At the top of `front/dashboard.js` is a hardcoded variable: From 8e513f6845e1219827178698474a173578f4f8a4 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sat, 8 Apr 2023 15:07:50 -0600 Subject: [PATCH 20/40] #9 Added some USAGE instructions --- USAGE.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/USAGE.md b/USAGE.md index 75a05f6..d3be02e 100644 --- a/USAGE.md +++ b/USAGE.md @@ -4,7 +4,20 @@ This hasn't been written yet, but it will contain good information on all the da ## User dashboard -TODO +The sample frontend shows a user's devices in a table like this: + +> ``` +> Host SSL +> mypc.myuser.mynet cert / key [DELETE] +> myphone.myuser.mynet cert / key [DELETE] +> mylaptop.myuser.mynet cert / key [DELETE] +> ``` + +The first column is each host's domain name. The next column has links for users to download an SSL cert/key for that device. Finally there is a button to delete that host. (Every host has a DELETE button, but the backend will not let you delete the device you are connecting from) + +Below the devices list is a place to add a device: + + ## User API From 033863b3ed0b845554d4e5333f2470399d2a23d4 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 13:46:52 -0600 Subject: [PATCH 21/40] Renamed to wagon and added README info --- LICENSE.md | 9 +++ README.md | 116 ++++++++++++++++++++++++++++++++--- back/admin.Dockerfile | 8 +-- back/admin_peer.cgi | 14 ++--- back/admin_user.cgi | 12 ++-- back/dashboard.Dockerfile | 8 +-- back/dashboard.cgi | 14 ++--- back/dashboard_ssl.cgi | 8 +-- back/fed.Dockerfile | 6 +- back/fed.cgi | 12 ++-- back/lib/admin/peer/add | 40 ++++++------ back/lib/admin/peer/del | 34 +++++----- back/lib/admin/peer/list | 16 ++--- back/lib/admin/user/add | 36 +++++------ back/lib/admin/user/del | 32 +++++----- back/lib/dashboard/peer/add | 42 ++++++------- back/lib/dashboard/peer/del | 34 +++++----- back/lib/dashboard/peer/list | 16 ++--- back/lib/dashboard/ssl | 20 +++--- back/lib/fed/peer/add | 16 ++--- back/lib/fed/peer/del | 16 ++--- back/lib/fed_peer_add | 2 +- back/lib/fed_peer_del | 2 +- back/lib/http_res | 2 +- back/lib/ips_to_peers | 4 +- back/lib/ns_lookup_axfr | 6 +- back/lib/ns_lookup_rdns | 6 +- back/lib/ns_lookup_send | 4 +- back/lib/ns_update_add | 10 +-- back/lib/ns_update_del | 10 +-- back/lib/ns_update_rev_ipv4 | 2 +- back/lib/ns_update_rev_ipv6 | 2 +- back/lib/ns_update_send | 4 +- back/lib/ssl_peer_add | 4 +- back/lib/ssl_peer_del | 4 +- back/lib/wg_peer_add | 4 +- back/lib/wg_peer_del | 4 +- back/lib/wg_user_list | 6 +- docker-compose.yml.sample | 30 ++++----- etc/servers.sample | 4 +- 40 files changed, 362 insertions(+), 257 deletions(-) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..24ebe93 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,9 @@ +# The MIT License (MIT) + +Copyright © 2023 Keith Irwin ([ki9.gf4.pw](https://ki9.gf4.pw/)) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 204ae63..9d2a417 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,113 @@ -# wgapi +# wagon 2022-2023 Keith Irwin ([ki9.gf4.pw](https://ki9.gf4.pw/)) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -wgapi is a web application for managing a large number of hosts on a wireguard network. Each host is assigned a domain name on a custom top-level-domain (TLD) and TLS certificates are signed by a custom certificate authority (CA) and provided to the user. +`wagon` is a an api, user dashboard, and admin ui for managing devices and services on a dns-enabled wireguard network. It was built with small web communities in mind. -## Features +## IP address allocation - - Multi-server federation (hub-and-spoke networking with one or more hubs) - - No login screen; authentication is IP-based - - Private keys are not stored in a central location - - No database; all data are stored stored in wireguard and the nameserver +`wagon` manages devices on a wireguard network, `10.X.Y.Z/16` where `X` is a number associated with the community, configured at the first setup. Servers are hosted on `10.X.0.Z/24`, where each `Z` is a different server. Finally, each user gets a number `Y` (between 1 and 254) and a `/24` subnet for each of their their devices, `Z`. -## Installation +**For example:** Your home pc could be `10.11.1.1` and your phone `10.11.1.2`. After configuring wireguard, you can use either device to ping your friend, whose pc is at `10.11.2.1`. -Installation involves multiple steps. +IPv6 is also preconfigured for a `/96` subnet, with users getting their own `/112` network for each `/128` device. -**TODO**: Write complete implementation instructions +## Nameserver + +`wagon` manages a bind9 nameserver through the `nsupdate` command. Device domain names have a similar structure as IP addresses, `A.B.C`, where: + + - `C` is the community's top-level-domain (TLD) + - `B` is the username + - `A` is hostname of the device + +The TLD could be anything that isn't already a global TLD like `.com`. The recursive nameserver provides private wireguard IPs to on this private domain zone. It must be configured to answer `.mynet` queries only within its own network on `10.X.0.0/16`. This nameserver is then preconfigured in clients' wireguard configs' `DNS = ` setting. + + **For example:** Your home pc could be `pc.myuser.mynet` and your phone `phone.myuser.mynet`. Either can ping up `phone.myfriend.mynet`. These would point to `10.11.1.1`, `10.11.1.2`, and `10.11.2.1` respectively + + Servers (IPs with `Y=0`) have domains of the form `A.C`, as above. Wildcard subdomains are CNAMEd to their base address, that is, `*.phone.myuser.mynet` CNAMEs to `phone.myuser.mynet` and `*.smyerver.mynet` CNAMEs to `myserver.mynet`. Of course, this means no username can match a server hostname. + + The nameserver is also preconfigured for rDNS so you can perform lookups on IP addresses: + + ```sh + $ nslookup 10.11.1.1 +1.1.11.10.in-addr.arpa name = pc.myuser.mynet. + ``` + +Using this setup, the community's entire wireguard network and DNS can be accessed from any device by importing a single wireguard config. One purpose of `wagon` is to easily generate these device configs. + +## Certificate authority + +`wagon` also automatically signs SSL certs for its own invented TLD (`.mynet`) so network-hosted services can be encrypted. The certificates are signed for the IPs and wildcard domains listed above, so, with the right web proxy configuration, a user can use the *same* certificate to self-host a service on any of these domains: + + - `https://10.11.1.2/` + - `https://[fd69:1337:0:420:f4:11:1:2]/` + - `https://mypc.myuser.mynet/` + - `https://myservice.mypc.myuser.mynet/` + - `https://myotherservice.mypc.myuser.mynet/` + - `https://anyotherservice.mypc.myuser.mynet/` + +The `wagon` user dashboard provides a server certificate and key that the user can download. Any wireguard-connected device with the community's ca certificate imported in their browser or OS will be able to see a green lock on their browser when visiting these private sites. + +These certs can be used for other internet protocols like irc or imap. + +## Self-hosting and firewalls + +Since firewalls and web proxies understand CIDR notation, controlling access to services is easy: + + - Allow `10.11.1.1/32` to allow access to pc.myuser.mynet only + - Allow `10.11.1.0/24` to allow access to any of myuser's devices + - Allow `10.11.2.1/32` to allow access to a friend's pc + - Allow `10.11.2.0/24` to allow access to any of a friend's devices + - Allow `10.11.0.0/16` to allow access to anyone in the community + - Allow `10.0.0.0/8` to allow access to any other community (someday, maybe) + +Allowing access to virtual webservers is just as simple. For example, I can let my friend access my development server with these allow/deny lines in an nginx vhost config (only showing IPv4, but works with IPv6 too). + +```nginx +server { + server_name dev.mypc.myuser.mynet; + listen 10.11.1.1:443 ssh http2; + + ssl_certificate /path/to/downloaded/mypc.myuser.mynet/server.crt; + ssl_certificate_key /path/to/downloaded/mypc.myuser.mynet/server.key; + ssl_stapling off; + + allow 10.11.1.0/24; # My devices + allow 10.11.2.0/24; # My friend's devices + deny all; # Everyone else + + # Proxy to local dev server + location / { + proxy_pass http://localhost:8080; + } +} +``` + +## Dashboard + +Users can access a dashboard with a list of devices and links to download `server.crt` and `server.key`. Users can add and delete these devices, and admins can add/delete devices and users from a seperate admin interface. When adding a new user or device, the dashboard displays a wireguard configuration which must be copied or saved before the page is refreshed. + +In this way, there is no central server storing all the private keys, like with most wireguard dashboards. In fact, `wagon` does not have a database and does not store any data at all; everything is stored in the server's nameserver and wireguard config. + +This also means there is no login to the dashboard. Users simply connect to the dashboard over wireguard from any connected device, and `wagon` will recognize your IP and serve up a list of other devices on that same `/24` subnet. + +## Structure + +`wagon` is written in bash and run as a cgi script. It can be run in- or outside of docker. Why bash? Because it has great "SDKs" for wireguard (`wg`), nameserver updates (`nsupdate`), and SSL certs (`openssl`). The libraries used in the scripts are themselves scripts. Each script follows the unix philosophy of handling text through standard means (arguments and stdin to stdout), so individual libraries could be replaced with faster alternatives (c, rust, go) in the future. + +## Project status + +The wireguard dashboard and admin are in a working alpha state. I have it implemented on my own network, [gf4](https://www.gf4.pw/), and it seems to be working there. What still needs to be done: + + - The code probably contains hardcoded variables specific to gf4, that must be moved to configs/environment files + - There is almost no documentation, and extensive tutorials are needed for the initial setup of wireguard, bind9, and the CA keys. + - Future implementation of a mail relay, web proxy, and SIP server, and their respective tabs on the web dashboard + - Replacing + +## Contributing + +If you think you can help with any of these bulletpoints, please reach out to me: + +[@ki9:gf4.pw](matrix:@ki9:gf4.pw) on matrix +[wagon@ki9.gf4.pw](mailto:wagon@ki9.gf4.pw) by email +[https://ki9.gf4.pw/contact]() diff --git a/back/admin.Dockerfile b/back/admin.Dockerfile index ebd7c87..7f46499 100644 --- a/back/admin.Dockerfile +++ b/back/admin.Dockerfile @@ -7,9 +7,9 @@ RUN apt-get update && apt-get install --yes \ && rm -rf /var/lib/apt/lists/* # Create dirs and temp files -RUN mkdir /usr/lib/wgapi /var/log/wgapi /var/local/wgapi -RUN touch /var/local/wgapi/tokens -RUN chown -R www-data:www-data /usr/lib/wgapi /var/log/wgapi /var/local/wgapi +RUN mkdir /usr/lib/wagon /var/log/wagon /var/local/wagon +RUN touch /var/local/wagon/tokens +RUN chown -R www-data:www-data /usr/lib/wagon /var/log/wagon /var/local/wagon # Configure apache RUN a2enmod cgi rewrite @@ -26,7 +26,7 @@ RUN echo "www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/wg, /usr/bin/openssl, /usr/b COPY admin_peer.cgi /usr/lib/cgi-bin/peer COPY admin_user.cgi /usr/lib/cgi-bin/user # TODO: Copy only needed libs -COPY lib/ /usr/lib/wgapi/ +COPY lib/ /usr/lib/wagon/ # Run time! EXPOSE ${PORT} diff --git a/back/admin_peer.cgi b/back/admin_peer.cgi index 216912b..ddf139a 100755 --- a/back/admin_peer.cgi +++ b/back/admin_peer.cgi @@ -1,24 +1,24 @@ #!/bin/bash -# FILE: wgapi:back/admin_peer.cgi +# FILE: wagon:back/admin_peer.cgi # DESCRIPTION: Recieves incoming admin requests for peer operations -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # List peers - 'GET') /usr/lib/wgapi/admin/peer/list "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'GET') /usr/lib/wagon/admin/peer/list "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Add peer - 'POST') /usr/lib/wgapi/admin/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'POST') /usr/lib/wagon/admin/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete peer - 'DELETE') /usr/lib/wgapi/admin/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'DELETE') /usr/lib/wagon/admin/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight - 'OPTIONS') /usr/lib/wgapi/http_res 200;; + 'OPTIONS') /usr/lib/wagon/http_res 200;; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/admin_user.cgi b/back/admin_user.cgi index f757f24..d2a37f8 100755 --- a/back/admin_user.cgi +++ b/back/admin_user.cgi @@ -1,20 +1,20 @@ #!/bin/bash -# FILE: wgapi:back/admin_user.cgi +# FILE: wagon:back/admin_user.cgi # DESCRIPTION: Server for requests to /user/ -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # Add new user - 'POST') /usr/lib/wgapi/admin/user/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'POST') /usr/lib/wagon/admin/user/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete user - 'DELETE') /usr/lib/wgapi/admin/user/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'DELETE') /usr/lib/wagon/admin/user/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight - 'OPTIONS') /usr/lib/wgapi/http_res 200;; + 'OPTIONS') /usr/lib/wagon/http_res 200;; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/dashboard.Dockerfile b/back/dashboard.Dockerfile index 3b38fa3..3d5d4ae 100644 --- a/back/dashboard.Dockerfile +++ b/back/dashboard.Dockerfile @@ -7,9 +7,9 @@ RUN apt-get update && apt-get install --yes \ && rm -rf /var/lib/apt/lists/* # Create dirs and temp files -RUN mkdir /usr/lib/wgapi /var/log/wgapi /var/local/wgapi -RUN touch /var/local/wgapi/tokens -RUN chown -R www-data:www-data /usr/lib/wgapi /var/log/wgapi /var/local/wgapi +RUN mkdir /usr/lib/wagon /var/log/wagon /var/local/wagon +RUN touch /var/local/wagon/tokens +RUN chown -R www-data:www-data /usr/lib/wagon /var/log/wagon /var/local/wagon # Configure apache RUN a2enmod cgi rewrite @@ -26,7 +26,7 @@ RUN echo "www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/wg, /usr/bin/openssl, /usr/b COPY dashboard.cgi /usr/lib/cgi-bin/index.cgi COPY dashboard_ssl.cgi /usr/lib/cgi-bin/ssl # TODO: Copy only needed libs -COPY lib/ /usr/lib/wgapi/ +COPY lib/ /usr/lib/wagon/ # Run time! EXPOSE ${PORT} diff --git a/back/dashboard.cgi b/back/dashboard.cgi index 66ab10f..10fc82f 100755 --- a/back/dashboard.cgi +++ b/back/dashboard.cgi @@ -1,24 +1,24 @@ #!/bin/bash -# FILE: wgapi:back/dashboard.cgi +# FILE: wagon:back/dashboard.cgi # DESCRIPTION: Recieves incoming dashboard API requests -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # List peers - 'GET') /usr/lib/wgapi/dashboard/peer/list "${HTTP_X_REAL_IP}";; + 'GET') /usr/lib/wagon/dashboard/peer/list "${HTTP_X_REAL_IP}";; # Add peer - 'POST') /usr/lib/wgapi/dashboard/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'POST') /usr/lib/wagon/dashboard/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete peer - 'DELETE') /usr/lib/wgapi/dashboard/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'DELETE') /usr/lib/wagon/dashboard/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight - 'OPTIONS') /usr/lib/wgapi/http_res 200;; + 'OPTIONS') /usr/lib/wagon/http_res 200;; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/dashboard_ssl.cgi b/back/dashboard_ssl.cgi index 36c5756..2fd6417 100755 --- a/back/dashboard_ssl.cgi +++ b/back/dashboard_ssl.cgi @@ -1,15 +1,15 @@ #!/bin/bash -# FILE: wgapi:back/dashboard_ssl.cgi +# FILE: wagon:back/dashboard_ssl.cgi # DESCRIPTION: Sends SSL certs and keys to users -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # Get cert - 'GET') /usr/lib/wgapi/dashboard/ssl "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'GET') /usr/lib/wagon/dashboard/ssl "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/fed.Dockerfile b/back/fed.Dockerfile index 6cd3d36..7433a4b 100644 --- a/back/fed.Dockerfile +++ b/back/fed.Dockerfile @@ -7,8 +7,8 @@ RUN apt-get update && apt-get install --yes \ && rm -rf /var/lib/apt/lists/* # Create dirs and temp files -RUN mkdir /usr/lib/wgapi /var/log/wgapi -RUN chown -R www-data:www-data /usr/lib/wgapi /var/log/wgapi +RUN mkdir /usr/lib/wagon /var/log/wagon +RUN chown -R www-data:www-data /usr/lib/wagon /var/log/wagon # Configure apache RUN a2enmod cgi rewrite @@ -24,7 +24,7 @@ RUN echo "www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/wg, /usr/bin/[, /usr/bin/tee # Copy over cgi and libs COPY fed.cgi /usr/lib/cgi-bin/index.cgi # TODO: Copy only needed libs -COPY lib/ /usr/lib/wgapi/ +COPY lib/ /usr/lib/wagon/ # Run time! EXPOSE ${PORT} diff --git a/back/fed.cgi b/back/fed.cgi index c5f55d8..1f08f8e 100755 --- a/back/fed.cgi +++ b/back/fed.cgi @@ -1,21 +1,21 @@ #!/bin/bash -# FILE: wgapi:back/fed.cgi +# FILE: wagon:back/fed.cgi # DESCRIPTION: Recieves incoming federated requests -source /etc/wgapi/config +source /etc/wagon/config case "${REQUEST_METHOD}" in # Add - 'POST') /usr/lib/wgapi/fed/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'POST') /usr/lib/wagon/fed/peer/add "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete - 'DELETE') /usr/lib/wgapi/fed/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; + 'DELETE') /usr/lib/wagon/fed/peer/del "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight - 'OPTIONS') /usr/lib/wgapi/http_res 200;; + 'OPTIONS') /usr/lib/wagon/http_res 200;; # Bad request - *) printf 'Invalid HTTP verb' | /usr/lib/wgapi/http_res 405;; + *) printf 'Invalid HTTP verb' | /usr/lib/wagon/http_res 405;; esac diff --git a/back/lib/admin/peer/add b/back/lib/admin/peer/add index 3f7d684..c1d61cd 100755 --- a/back/lib/admin/peer/add +++ b/back/lib/admin/peer/add @@ -4,15 +4,15 @@ # USAGE: add $remote_ip $querystring # QUERYSTRING: ?t=$token&host=$newhostname&user=$username&num=$usernumber -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" # Check token token_fail(){ printf 'Rejecting admin %s request for new peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit 1 + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit 1 } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -23,9 +23,9 @@ username="$(<<<"${qs}" grep -oP 'user=(.*)' | sed 's/^user=//')" usernumber="$(<<<"${qs}" grep -oP 'num=(.*)' | sed 's/^num=//')" if ! domain="${hostname:?}.${username:?}.${TLD:?}"; then printf 'ERROR! Hostname "%s" or username "%s" or tld "%s" missing!\n' "${hostname}" "${username}" "${TLD}" >&2 - printf 'Hostname or username missing!\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname or username missing!\n' | /usr/lib/wagon/http_res 400; exit elif [[ "${usernumber}" == "" ]]; then - printf 'Usernumber missing!\n' | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 400; exit + printf 'Usernumber missing!\n' | tee >(cat 1>&2) | /usr/lib/wagon/http_res 400; exit else printf 'Admin %s requested new peer %s for user number %s\n' "${ip}" "${domain}" "${usernumber}" >&2 fi @@ -33,31 +33,31 @@ fi # Check hostname length if ! [[ ${#hostname} -ge 3 ]]; then printf 'Rejecting hostname %s because it is too short.\n' "${hostname}" >&2 - printf 'Hostname too short\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname too short\n' | /usr/lib/wagon/http_res 400; exit fi # Check if new peer already exists -if /usr/lib/wgapi/ns_lookup_send "${domain}" >/dev/null; then - printf 'Host %s already exists!\n' "${domain}" | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 409; exit +if /usr/lib/wagon/ns_lookup_send "${domain}" >/dev/null; then + printf 'Host %s already exists!\n' "${domain}" | tee >(cat 1>&2) | /usr/lib/wagon/http_res 409; exit fi # Get all peer IPs if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out the user's user_peers="$(grep "${IPV4_NET%.*.*}.${usernumber}." <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == "" ]; then printf "ERROR! Couldn't find any peers for %s!\n" "${IPV4_NET%.*.*}.${usernumber}." >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Get user peer domains -if ! peers="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peers}")"; then +if ! peers="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peers}")"; then printf 'ERROR! Failed to retrieve peers for %s!\n' "${IPV4_NET%.*.*}.${usernumber}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create new IPs @@ -72,7 +72,7 @@ ipv4="${IPV4_NET%.*.*}.${usernumber}.${hostnumber}" ipv6="${IPV6_NET%:*:*}:${usernumber}:${hostnumber}" if ! printf 'IP addresses for %s created: %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to create IP addresses for %s!' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create wg config @@ -81,13 +81,13 @@ pubkey="$(echo "${privkey}" | /usr/bin/wg pubkey)" address="${ipv4}/${IPV4_NET##*/},${ipv6}/${IPV6_NET##*/}" # Update nameserver -if /usr/lib/wgapi/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" +if /usr/lib/wagon/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" then printf 'Successfully added %s to DNS server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s %s %s to DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & # Create SSL cert -if /usr/lib/wgapi/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" +if /usr/lib/wagon/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" then printf 'Successfully signed SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to create certs for %s with IPS: %s %s!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi @@ -101,22 +101,22 @@ while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey se if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/${IPV4_NET#*/},${server_ipv6}/${IPV6_NET#*/}\nEndpoint=${server_endpoint}\n" # Add new user to local wireguard - if /usr/lib/wgapi/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then + if /usr/lib/wagon/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then printf 'Added %s to local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s to local wireguard server!\n' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Remote server else server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/32,${server_ipv6}/128\nEndpoint=${server_endpoint}\n" # Send new user config to federated server - if /usr/lib/wgapi/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then + if /usr/lib/wagon/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then printf 'Sent %s to remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to send %s to remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 fi fi -done &2 # Check token token_fail(){ printf 'Rejecting admin %s request to delete peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -24,33 +24,33 @@ printf '%s token was valid\n' "${ip}" >&2 # Get peer IP list if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out this user's user_peer="$(grep "${pubkey}" <<<"${wg_output}" 2>/dev/null)" if [ "${user_peer}" == "" ]; then printf 'ERROR! Could not find user for pubkey %s!\n' "${pubkey}" >&2 - printf 'Peer not found' | /usr/lib/wgapi/http_res 404; exit + printf 'Peer not found' | /usr/lib/wagon/http_res 404; exit fi # Get peer domains -if ! peer="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peer}" | grep "${pubkey}")"; then +if ! peer="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peer}" | grep "${pubkey}")"; then printf 'ERROR! Failed to lookup domain for pubkey %s!\n' "${pubkey}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi domain="$(<<<"${peer}" cut -f1)" ipv4="$(<<<"${peer}" cut -f2)" ipv6="$(<<<"${peer}" cut -f3)" if ! printf 'Delete request was for %s %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to collect peer data: %s %s %s\n' "${domain}" "${ipv4}" "${ipv6}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Make sure admin isn't deleting their own peer if [ "${ip}" == "${ipv4}" ] || [ "${ip}" == "${ipv6}" ]; then printf 'Admin requested to delete peer from itself: %s.\n' "${ip}" >&2 - printf 'You cannot delete a peer from itself!' | /usr/lib/wgapi/http_res 400; exit + printf 'You cannot delete a peer from itself!' | /usr/lib/wagon/http_res 400; exit fi hostname="$(<<<"${domain}" cut -d'.' -f1)" @@ -65,34 +65,34 @@ for_server_do() { server_endpoint="${5}"; server_url="${6}"; server_secret="${7}" if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then # Local server - if /usr/lib/wgapi/wg_peer_del "${pubkey}"; then + if /usr/lib/wagon/wg_peer_del "${pubkey}"; then printf 'Deleted %s from local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to delete %s from local wireguard server!\n' "${domain}" >&2 # TODO: clear existing progress - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi else # Federated server - if /usr/lib/wgapi/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then + if /usr/lib/wagon/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then printf 'Deleted %s from remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to delete %s from remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi fi }; while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_url server_secret do for_server_do "${server_hostname}" "${server_ipv4}" "${server_ipv6}" "${server_pubkey}" "${server_endpoint}" "${server_url}" "${server_secret}" & -done &2 else printf 'ERROR! Failed to delete %s %s %s from DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & # Delete SSL cert -if /usr/lib/wgapi/ssl_peer_del "${hostname:?}" "${username:?}" +if /usr/lib/wagon/ssl_peer_del "${hostname:?}" "${username:?}" then printf 'Successfully deleted SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to delete certs for %s!\n' "${domain}" >&2 fi @@ -101,4 +101,4 @@ fi # Do it before updating nameserver and certs because # if wireguard worked, there's no going back. The admin # can clean up missing records and certs after checking the logs -printf 'Deleted %s.%s.%s' "${hostname}" "${username}" "${TLD}" | /usr/lib/wgapi/http_res 202 \ No newline at end of file +printf 'Deleted %s.%s.%s' "${hostname}" "${username}" "${TLD}" | /usr/lib/wagon/http_res 202 \ No newline at end of file diff --git a/back/lib/admin/peer/list b/back/lib/admin/peer/list index d9c9e35..5e5bafe 100755 --- a/back/lib/admin/peer/list +++ b/back/lib/admin/peer/list @@ -4,23 +4,23 @@ # USAGE: list $remote_ip $querystring # QUERYSTRING: ?un=$username -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" un="$(<<<"${qs}" grep -oP 'un=(.*)' | sed 's/^un=//' | xargs)" printf 'Admin %s requested peer listing...\n' "${ip}" >&2 # Create token if needed -token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" if [ "${token}" == "" ]; then printf 'Creating token for %s...\n' "${ip}" >&2 token="$(>/var/local/wgapi/tokens + printf '%s\t%s\n' "${ip}" "${token}" >>/var/local/wagon/tokens fi # Get peer IP list if ! peers="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out single user (if provided) @@ -28,15 +28,15 @@ if [ "${un}" != '' ]; then peers="$(grep "${IPV4_NET%.*.*}\.${un}\." <<<"${peers}" 2>/dev/null)" if [ "${peers}" == '' ]; then printf 'User number %s not found!\n' "${un}" >&2 - printf 'User not found!\n' | /usr/lib/wgapi/http_res 404; exit + printf 'User not found!\n' | /usr/lib/wagon/http_res 404; exit fi fi # Get domains for each peer -if peers="[$(/usr/lib/wgapi/ips_to_peers json <<<"${peers}")]"; then - printf '{"token":"%s","peers":%s}' "${token:?}" "${peers:?}" | /usr/lib/wgapi/http_res 200 'application/json' +if peers="[$(/usr/lib/wagon/ips_to_peers json <<<"${peers}")]"; then + printf '{"token":"%s","peers":%s}' "${token:?}" "${peers:?}" | /usr/lib/wagon/http_res 200 'application/json' printf 'Sent peers to admin %s\n' "${ip}" >&2 else printf 'ERROR: Failed to lookup user domain: %s\n' "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi diff --git a/back/lib/admin/user/add b/back/lib/admin/user/add index b7657ce..1324ba5 100755 --- a/back/lib/admin/user/add +++ b/back/lib/admin/user/add @@ -4,15 +4,15 @@ # USAGE: add $remote_ip $querystring # QUERYSTRING: ?t=$token&host=$hostname&user=$username -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" # Check token token_fail(){ printf 'Rejecting admin %s request for new peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -22,28 +22,28 @@ hostname="$(<<<"${qs}" grep -oP 'host=(.*)' | sed 's/^host=//' | xargs | tr -dc username="$(<<<"${qs}" grep -oP 'user=(.*)' | sed 's/^user=//' | xargs | tr -dc 'a-z0-9' | head -c10)" if ! domain="${hostname:?}.${username:?}.${TLD:?}"; then printf 'ERROR! Hostname "%s" or username "%s" or tld "%s" missing!\n' "${hostname}" "${username}" "${TLD}" >&2 - printf 'Hostname or username missing!\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname or username missing!\n' | /usr/lib/wagon/http_res 400; exit else printf 'Admin %s requested new user created with initial peer of %s\n' "${ip}" "${domain}" >&2 fi if ! [[ ${#hostname} -ge 3 ]]; then printf 'Rejecting hostname %s because it is too short.\n' "${hostname}" >&2 - printf 'Hostname too short\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname too short\n' | /usr/lib/wagon/http_res 400; exit elif ! [[ ${#username} -ge 3 ]]; then printf 'Rejecting username %s because it is too short.\n' "${username}" >&2 - printf 'Username too short\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Username too short\n' | /usr/lib/wagon/http_res 400; exit fi # Check if user already exists -if /usr/lib/wgapi/ns_lookup_axfr | grep ".${username}.${TLD}" >/dev/null; then - printf 'User %s already exists!\n' "${username}" | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 409 +if /usr/lib/wagon/ns_lookup_axfr | grep ".${username}.${TLD}" >/dev/null; then + printf 'User %s already exists!\n' "${username}" | tee >(cat 1>&2) | /usr/lib/wagon/http_res 409 exit fi # Get all peer IPs if ! peers="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create new IPs @@ -59,7 +59,7 @@ ipv4="${IPV4_NET%.*.*}.${usernumber}.${hostnumber}" ipv6="${IPV6_NET%:*:*}:${usernumber}:${hostnumber}" if ! printf 'IP addresses for %s created: %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to create IP addresses for %s!' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create wg config @@ -68,7 +68,7 @@ pubkey="$(echo "${privkey}" | /usr/bin/wg pubkey)" address="${ipv4}/${IPV4_NET##*/},${ipv6}/${IPV6_NET##*/}" # Update nameserver -if /usr/lib/wgapi/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" +if /usr/lib/wagon/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" then printf 'Successfully added %s to DNS server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s %s %s to DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & @@ -76,9 +76,9 @@ fi & # Create SSL cert if ! sudo mkdir "${SSL_CONFIG_DIR:?}/${username:?}/"; then printf 'Failed to create directory %s/%s/:\n' "${SSL_CONFIG_DIR}" "${username}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi -if /usr/lib/wgapi/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" +if /usr/lib/wagon/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" then printf 'Successfully signed SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to create certs for %s with IPS: %s %s!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi @@ -92,23 +92,23 @@ while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey se if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/${IPV4_NET#*/},${server_ipv6}/${IPV6_NET#*/}\nEndpoint=${server_endpoint}\n" # Add new user to local wireguard - if /usr/lib/wgapi/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then + if /usr/lib/wagon/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then printf 'Added %s to local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s to local wireguard server!\n' "${domain}" >&2 # TODO: clear existing progress - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Remote server else server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/32,${server_ipv6}/128\nEndpoint=${server_endpoint}\n" # Send new user config to federated server - if /usr/lib/wgapi/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then + if /usr/lib/wagon/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then printf 'Sent %s to remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to send %s to remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 fi fi -done &2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -21,9 +21,9 @@ printf '%s token was valid\n' "${ip}" >&2 username="$(<<<"${qs}" grep -oP 'user=(.*)' | sed 's/^user=//')" usernumber="$(<<<"${qs}" grep -oP 'un=(.*)' | sed 's/^un=//')" if [[ "${username}" == "" ]]; then - printf 'ERROR! Username missing!\n' | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 400; exit + printf 'ERROR! Username missing!\n' | tee >(cat 1>&2) | /usr/lib/wagon/http_res 400; exit elif [[ "${usernumber}" == "" ]]; then - printf 'ERROR! Usernumber missing!\n' | tee >(cat 1>&2) |/usr/lib/wgapi/http_res 400; exit + printf 'ERROR! Usernumber missing!\n' | tee >(cat 1>&2) |/usr/lib/wagon/http_res 400; exit else printf 'Admin %s requested deletion of user "%s" with usernumber "%s"\n' "${ip}" "${username}" "${usernumber}" >&2 fi @@ -31,20 +31,20 @@ fi # Get all peer IPs if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out the user's user_peers="$(grep "${IPV4_NET%.*.*}.${usernumber}." <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == "" ]; then printf "ERROR! Couldn't find any peers for %s!\n" "${IPV4_NET%.*.*}.${usernumber}." >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Get user peer domains -if ! peers="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peers}")"; then +if ! peers="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peers}")"; then printf 'ERROR! Failed to retrieve domains for peers for %s!\n' "${IPV4_NET%.*.*}.${usernumber}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Run this function in parallel in the while loop below @@ -55,20 +55,20 @@ for_server_do() { server_endpoint="${5}"; server_url="${6}"; server_secret="${7}" if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then # Local server - if /usr/lib/wgapi/wg_peer_del "${pubkey}"; then + if /usr/lib/wagon/wg_peer_del "${pubkey}"; then printf 'Deleted %s from local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to delete %s from local wireguard server!\n' "${domain}" >&2 # TODO: clear existing progress - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi else # Federated server - if /usr/lib/wgapi/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then + if /usr/lib/wagon/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then printf 'Deleted %s from remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to delete %s from remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi fi } @@ -82,10 +82,10 @@ delete_peer() { # Remove peer from wireguard while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_url server_secret do for_server_do "${server_hostname}" "${server_ipv4}" "${server_ipv6}" "${server_pubkey}" "${server_endpoint}" "${server_url}" "${server_secret}" & - done &2 else printf 'ERROR! Failed to delete %s %s %s from DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi @@ -104,4 +104,4 @@ fi # Do it before updating nameserver and certs because # if wireguard worked, there's no going back. The admin # can clean up missing records and certs after checking the logs -printf 'Deleted %s' "${username}" | /usr/lib/wgapi/http_res 202 \ No newline at end of file +printf 'Deleted %s' "${username}" | /usr/lib/wagon/http_res 202 \ No newline at end of file diff --git a/back/lib/dashboard/peer/add b/back/lib/dashboard/peer/add index 85eacb8..4b080ec 100755 --- a/back/lib/dashboard/peer/add +++ b/back/lib/dashboard/peer/add @@ -4,7 +4,7 @@ # USAGE: add $remote_ip $querystring # QUERYSTRING: ?t=$token&name=$hostname -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" # Check hostname @@ -12,31 +12,31 @@ hostname="$(<<<"${qs}" grep -oP 'name=(.*)' | sed 's/^name//' | xargs | tr -dc ' printf '%s requested new peer with hostname %s\n' "${ip}" "${hostname}" >&2 if ! [[ ${#hostname} -ge 3 ]]; then printf 'Rejecting hostname %s because it is too short.\n' "${hostname}" >&2 - printf 'Hostname too short\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname too short\n' | /usr/lib/wagon/http_res 400; exit fi # Check token token_fail(){ printf 'Rejecting %s request for new peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 # Check user -username="$(/usr/lib/wgapi/ns_lookup_rdns "${ip}" | cut -d'.' -f2)" || ( +username="$(/usr/lib/wagon/ns_lookup_rdns "${ip}" | cut -d'.' -f2)" || ( printf 'User domains not found for %s\n' "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit ) printf '%s identified as %s\n' "${ip}" "${username}" >&2 domain="${hostname}.${username}.${TLD}" # Check if new peer already exists -if /usr/lib/wgapi/ns_lookup_send "${domain}" >/dev/null; then +if /usr/lib/wagon/ns_lookup_send "${domain}" >/dev/null; then printf '%s.%s.%s already exists!\n' "${hostname}" "${username}" "${TLD}" >&2 - printf 'Hostname %s already exists!\n' "${hostname}" | /usr/lib/wgapi/http_res 409; exit + printf 'Hostname %s already exists!\n' "${hostname}" | /usr/lib/wagon/http_res 409; exit fi # Create new domain @@ -46,27 +46,27 @@ printf 'New domain will be %s\n' "${domain}" >&2 # Get peer IP list if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out this user's user_peers="$(grep "${ip%[.:]*}" <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == "" ]; then printf "ERROR! %s accessed the dashboard but isn't on the network!\n" "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Get domains -if ! peers="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peers}")"; then +if ! peers="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peers}")"; then printf 'ERROR! Failed to parse peers for %s!\n' "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Make sure hostname isn't taken hostnames="$(<<<"${peers}" awk '{print $1}' | cut -d'.' -f1)" if <<<"${hostnames}" grep -x "${hostname}"; then printf 'User %s already has a host named %s!\n' "${username}" "${hostname}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create new IPs @@ -82,7 +82,7 @@ ipv4="${IPV4_NET%.*.*}.${usernumber}.${hostnumber}" ipv6="${IPV6_NET%:*:*}:${usernumber}:${hostnumber}" if ! printf 'IP addresses for %s created: %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to create IP addresses for %s!' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Create wg config @@ -91,13 +91,13 @@ pubkey="$(echo "${privkey}" | /usr/bin/wg pubkey)" address="${ipv4}/${IPV4_NET##*/},${ipv6}/${IPV6_NET##*/}" # Update nameserver -if /usr/lib/wgapi/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" +if /usr/lib/wagon/ns_update_add "${domain:?}" "${ipv4:?}" "${ipv6:?}" then printf 'Successfully added %s to DNS server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s %s %s to DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & # Create SSL cert -if /usr/lib/wgapi/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" +if /usr/lib/wagon/ssl_peer_add "${hostname:?}" "${username:?}" "IP:${ipv4},IP:${ipv6}" then printf 'Successfully signed SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to create certs for %s with IPS: %s %s!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi @@ -111,22 +111,22 @@ while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey se if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/${IPV4_NET#*/},${server_ipv6}/${IPV6_NET#*/}\nEndpoint=${server_endpoint}\n" # Add new user to local wireguard - if /usr/lib/wgapi/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then + if /usr/lib/wagon/wg_peer_add "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then printf 'Added %s to local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to add %s to local wireguard server!\n' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Remote server else server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/32,${server_ipv6}/128\nEndpoint=${server_endpoint}\n" # Send new user config to federated server - if /usr/lib/wgapi/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then + if /usr/lib/wagon/fed_peer_add "${server_url}" "${server_secret}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then printf 'Sent %s to remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to send %s to remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 fi fi -done &2 # Check token token_fail(){ printf 'Rejecting %s request to delete peer due to %s token\n' "${ip}" "${1}" >&2 - printf 'Invalid token\n' | /usr/lib/wgapi/http_res 403; exit + printf 'Invalid token\n' | /usr/lib/wagon/http_res 403; exit } -saved_token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +saved_token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" [ "${saved_token}" == "" ] && token_fail 'missing' <<<"${qs}" grep -qx "t=${saved_token}" || token_fail 'mismatched' printf '%s token was valid\n' "${ip}" >&2 @@ -24,33 +24,33 @@ printf '%s token was valid\n' "${ip}" >&2 # Get peer IP list if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out this user's user_peers="$(grep "${ip%[.:]*}" <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == "" ]; then printf "ERROR! %s accessed the dashboard but isn't on the network!\n" "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Get peer domains -if ! peer="$(/usr/lib/wgapi/ips_to_peers tsv <<<"${user_peers}" | grep "${pubkey}")"; then +if ! peer="$(/usr/lib/wagon/ips_to_peers tsv <<<"${user_peers}" | grep "${pubkey}")"; then printf 'ERROR! Peer %s not found for user %s!\n' "${pubkey}" "${ip}" >&2 & - printf 'Peer not found\n' | /usr/lib/wgapi/http_res 404; exit + printf 'Peer not found\n' | /usr/lib/wagon/http_res 404; exit fi domain="$(<<<"${peer}" cut -f1)" ipv4="$(<<<"${peer}" cut -f2)" ipv6="$(<<<"${peer}" cut -f3)" if ! printf 'Delete request was for %s %s %s\n' "${domain:?}" "${ipv4:?}" "${ipv6:?}" >&2; then printf 'ERROR! Failed to collect peer data: %s %s %s\n' "${domain}" "${ipv4}" "${ipv6}" >&2 & - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Make sure user isn't deleting their own peer if [ "${ip}" == "${ipv4}" ] || [ "${ip}" == "${ipv6}" ]; then printf 'User requested to delete peer from itself: %s.\n' "${ip}" >&2 - printf 'You cannot delete a peer from itself!' | /usr/lib/wgapi/http_res 400; exit + printf 'You cannot delete a peer from itself!' | /usr/lib/wagon/http_res 400; exit fi hostname="$(<<<"${domain}" cut -d'.' -f1)" @@ -65,34 +65,34 @@ for_server_do() { server_endpoint="${5}"; server_url="${6}"; server_secret="${7}" if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then # Local server - if /usr/lib/wgapi/wg_peer_del "${pubkey}"; then + if /usr/lib/wagon/wg_peer_del "${pubkey}"; then printf 'Deleted %s from local wireguard server.\n' "${domain}" >&2 else printf 'ERROR! Failed to delete %s from local wireguard server!\n' "${domain}" >&2 # TODO: clear existing progress - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi else # Federated server - if /usr/lib/wgapi/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then + if /usr/lib/wagon/fed_peer_del "${server_url}" "${server_secret}" "${pubkey}"; then printf 'Deleted %s from remote wireguard server %s.\n' "${domain}" "${server_hostname}" >&2 else printf 'ERROR! Failed to delete %s from remote wireguard server %s!\n' "${domain}" "${server_hostname}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi fi }; while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_url server_secret do for_server_do "${server_hostname}" "${server_ipv4}" "${server_ipv6}" "${server_pubkey}" "${server_endpoint}" "${server_url}" "${server_secret}" & -done &2 else printf 'ERROR! Failed to delete %s %s %s from DNS server!\n' "${domain}" "${ipv4}" "${ipv6}" >&2 fi & # Create SSL cert -if /usr/lib/wgapi/ssl_peer_del "${hostname:?}" "${username:?}" +if /usr/lib/wagon/ssl_peer_del "${hostname:?}" "${username:?}" then printf 'Successfully deleted SSL certs for %s\n' "${domain}" >&2 else printf 'ERROR! Failed to delete certs for %s!\n' "${domain}" >&2 fi @@ -101,4 +101,4 @@ fi # Do it before updating nameserver and certs because # if wireguard worked, there's no going back. The admin # can clean up missing records and certs after checking the logs -printf 'Deleted %s.%s.%s' "${hostname}" "${username}" "${TLD}" | /usr/lib/wgapi/http_res 202 \ No newline at end of file +printf 'Deleted %s.%s.%s' "${hostname}" "${username}" "${TLD}" | /usr/lib/wagon/http_res 202 \ No newline at end of file diff --git a/back/lib/dashboard/peer/list b/back/lib/dashboard/peer/list index 1f9bdd8..23e430f 100755 --- a/back/lib/dashboard/peer/list +++ b/back/lib/dashboard/peer/list @@ -3,36 +3,36 @@ # DESCRIPTION: List a user's peers # USAGE: list $remote_ip -source /etc/wgapi/config +source /etc/wagon/config ip="${1}" printf '%s requested peer listing...\n' "${ip}" >&2 # Create token if needed -token="$(grep "${ip}" /var/local/wgapi/tokens | cut -f2)" +token="$(grep "${ip}" /var/local/wagon/tokens | cut -f2)" if [ "${token}" == "" ]; then printf 'Creating token for %s...\n' "${ip}" >&2 token="$(>/var/local/wgapi/tokens + printf '%s\t%s\n' "${ip}" "${token}" >>/var/local/wagon/tokens fi # Get peer IP list if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Filter out this user's user_peers="$(grep "${ip%[.:]*}" <<<"${wg_output}" 2>/dev/null)" if [ "${user_peers}" == '' ]; then printf "ERROR! %s accessed the dashboard but isn't on the network!\n" "${ip}" >&2 - printf 'User not found!\n' | /usr/lib/wgapi/http_res 403; exit + printf 'User not found!\n' | /usr/lib/wagon/http_res 403; exit fi # Get domains for each one -if peers="[$(/usr/lib/wgapi/ips_to_peers json <<<"${user_peers}")]"; then - printf '{"token":"%s","peers":%s}' "${token}" "${peers}" | /usr/lib/wgapi/http_res 200 'application/json' +if peers="[$(/usr/lib/wagon/ips_to_peers json <<<"${user_peers}")]"; then + printf '{"token":"%s","peers":%s}' "${token}" "${peers}" | /usr/lib/wagon/http_res 200 'application/json' printf 'Sent peers to user %s\n' "${ip}" >&2 else printf 'ERROR: Failed to lookup domains for user: %s\n' "${ip}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi diff --git a/back/lib/dashboard/ssl b/back/lib/dashboard/ssl index edc7290..7d62c7d 100755 --- a/back/lib/dashboard/ssl +++ b/back/lib/dashboard/ssl @@ -4,7 +4,7 @@ # USAGE: ssl remote_ip querystring # QUERYSTRING: ?host=$hostname&ext=crt -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" # Parse querystring @@ -13,42 +13,42 @@ ext="$(<<<"${qs}" grep -oP 'ext=(.*)' | sed 's/^ext=//' | xargs)" if ! file="${hostname:?}/server.${ext:?}"; then printf 'ERROR! Hostname "%s" or extension "%s" missing!\n' "${hostname}" "${ext}" >&2 - printf 'Hostname or extension missing!\n' | /usr/lib/wgapi/http_res 400; exit + printf 'Hostname or extension missing!\n' | /usr/lib/wagon/http_res 400; exit else printf 'User %s requested SSL file %s\n' "${ip}" "${file}" >&2 fi # Make sure extension is 'crt' or 'key' if [ "${ext}" != 'crt' ] && [ "${ext}" != 'key' ]; then - printf 'Invalid extension: %s\n' "${ext}" | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 400; exit + printf 'Invalid extension: %s\n' "${ext}" | tee >(cat 1>&2) | /usr/lib/wagon/http_res 400; exit fi # Get username -if ! domain="$(/usr/lib/wgapi/ns_lookup_rdns "${ip}")"; then - printf 'ERROR! Failed to lookup domain from user IP %s\n' "${ip}" | tee >(cat 1>&2) | /usr/lib/wgapi/http_res 500 +if ! domain="$(/usr/lib/wagon/ns_lookup_rdns "${ip}")"; then + printf 'ERROR! Failed to lookup domain from user IP %s\n' "${ip}" | tee >(cat 1>&2) | /usr/lib/wagon/http_res 500 exit 7 fi; if ! username="$(<<<"${domain}" cut -d'.' -f2)"; then printf 'ERROR! Failed to parse username from domain "%s"\n' "${domain}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit else printf 'User %s is "%s"\n' "${ip}" "${username}" >&2 fi if ! path="${SSL_CONFIG_DIR:?}/${username:?}/${file}"; then printf 'ERROR! Username "%s" or SSL_CONFIG_DIR "%s" missing!\n' "${username}" "${SSL_CONFIG_DIR}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Check that the file exists if ! [ -f "${path}" ]; then printf 'ERROR! File missing: "%s"\n' "${path}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi # Try to return it to the user -if <"${path}" /usr/lib/wgapi/http_res 200; then +if <"${path}" /usr/lib/wagon/http_res 200; then printf 'Sent SSL file "%s" to %s\n' "${path}" "${username}" >&2 else printf 'ERROR! Failed to return file: "%s"\n' "${path}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi diff --git a/back/lib/fed/peer/add b/back/lib/fed/peer/add index 0a68c61..0d67a9b 100755 --- a/back/lib/fed/peer/add +++ b/back/lib/fed/peer/add @@ -4,7 +4,7 @@ # USAGE: add $remote_ip $querystring # QUERYSTRING: ?secret=$secret&pubkey=$pubkey&psk=$psk&ips=$allowedips -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" secret="$(<<<"${qs}" grep -oP 'secret=(.*)' | sed 's/^secret=//' | xargs)" pubkey="$(<<<"${qs}" grep -oP 'pubkey=(.*)' | sed 's/^pubkey=//' | xargs)" @@ -12,24 +12,24 @@ psk="$(<<<"${qs}" grep -oP 'psk=(.*)' | sed 's/^psk=//' | xargs)" allowedips="$(<<<"${qs}" grep -oP 'ips=(.*)' | sed 's/^ips=//' | xargs)" # Check that requesting ip is in the servers file -if ! sed '/^#/d' /etc/wgapi/servers | cut -f2,3 | grep -qw "${ip}"; then +if ! sed '/^#/d' /etc/wagon/servers | cut -f2,3 | grep -qw "${ip}"; then printf "ERROR! Federated server %s requested to create new peer but isn't in servers file!/n" "${ip}" >&2 - /usr/lib/wgapi/http_res 403; exit + /usr/lib/wagon/http_res 403; exit fi # Check server secret -local_secret="$(grep -w "^${LOCAL_SERVER}" /etc/wgapi/servers | cut -f7)" +local_secret="$(grep -w "^${LOCAL_SERVER}" /etc/wagon/servers | cut -f7)" if ! [ "${local_secret}" == "${secret}" ]; then printf "ERROR! Federated server %s provided a secret, %s, that doesn't match the one in our servers file, %s\n" "${ip}" "${secret}" "${local_secret}" >&2 - /usr/lib/wgapi/http_res 403; exit + /usr/lib/wagon/http_res 403; exit fi # Add peer to wireguard -if /usr/lib/wgapi/wg_peer_add "${pubkey}" "${psk}" "${allowedips}"; then +if /usr/lib/wagon/wg_peer_add "${pubkey}" "${psk}" "${allowedips}"; then printf 'Added %s to wireguard.\n' "${pubkey}" >&2 else printf 'ERROR! Failed to add %s to wireguard!\n' "${pubkey}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi -/usr/lib/wgapi/http_res 200 +/usr/lib/wagon/http_res 200 diff --git a/back/lib/fed/peer/del b/back/lib/fed/peer/del index 961ff40..f2e40c2 100755 --- a/back/lib/fed/peer/del +++ b/back/lib/fed/peer/del @@ -4,30 +4,30 @@ # USAGE: del $remote_ip $querystring # QUERYSTRING: ?secret=$secret&pubkey=$pubkey -source /etc/wgapi/config +source /etc/wagon/config ip="${1}"; qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')" secret="$(<<<"${qs}" grep -oP 'secret=(.*)' | sed 's/^secret=//' | xargs)" pubkey="$(<<<"${qs}" grep -oP 'pubkey=(.*)' | sed 's/^pubkey=//' | xargs)" # Check that requesting ip is in the servers file -if ! sed '/^#/d' /etc/wgapi/servers | cut -f2,3 | grep -qw "${ip}"; then +if ! sed '/^#/d' /etc/wagon/servers | cut -f2,3 | grep -qw "${ip}"; then printf "ERROR! Federated server %s requested to create new peer but isn't in servers file!/n" "${ip}" >&2 - /usr/lib/wgapi/http_res 403; exit + /usr/lib/wagon/http_res 403; exit fi # Check server secret -local_secret="$(grep -w "^${LOCAL_SERVER}" /etc/wgapi/servers | cut -f7)" +local_secret="$(grep -w "^${LOCAL_SERVER}" /etc/wagon/servers | cut -f7)" if ! [ "${local_secret}" == "${secret}" ]; then printf "ERROR! Federated server %s provided a secret, %s, that doesn't match the one in our servers file, %s\n" "${ip}" "${secret}" "${local_secret}" >&2 - /usr/lib/wgapi/http_res 403; exit + /usr/lib/wagon/http_res 403; exit fi # Delete peer from wireguard -if /usr/lib/wgapi/wg_peer_del "${pubkey}"; then +if /usr/lib/wagon/wg_peer_del "${pubkey}"; then printf 'Deleted %s from wireguard.\n' "${pubkey}" >&2 else printf 'ERROR! Failed to delete %s from wireguard!\n' "${pubkey}" >&2 - /usr/lib/wgapi/http_res 500; exit + /usr/lib/wagon/http_res 500; exit fi -/usr/lib/wgapi/http_res 200 \ No newline at end of file +/usr/lib/wagon/http_res 200 \ No newline at end of file diff --git a/back/lib/fed_peer_add b/back/lib/fed_peer_add index a0b4cc4..14fa77a 100755 --- a/back/lib/fed_peer_add +++ b/back/lib/fed_peer_add @@ -3,7 +3,7 @@ # DESCRIPTION: Sends details about a new peer to a federated server # USAGE: fed_peer_add url secret pubkey psk allowedips -source /etc/wgapi/config +source /etc/wagon/config url="${1}"; secret="${2}"; pubkey="${3}"; psk="${4}"; allowedips="${5}" if curl --silent -o /dev/null --fail --request POST --cacert "${SSL_CA_CERT}" "${url}?secret=${secret}&pubkey=${pubkey}&psk=${psk}&ips=${allowedips}"; then diff --git a/back/lib/fed_peer_del b/back/lib/fed_peer_del index dd75688..c53f782 100755 --- a/back/lib/fed_peer_del +++ b/back/lib/fed_peer_del @@ -3,7 +3,7 @@ # DESCRIPTION: Sends details to a federated server about a peer to be deleted # USAGE: fed_peer_del url secret pubkey -source /etc/wgapi/config +source /etc/wagon/config url="${1}"; secret="${2}"; pubkey="${3}" if curl --silent -o /dev/null --fail --request DELETE --cacert "${SSL_CA_CERT}" "${url}?secret=${secret}&pubkey=${pubkey}"; then diff --git a/back/lib/http_res b/back/lib/http_res index 8454344..877e6e1 100755 --- a/back/lib/http_res +++ b/back/lib/http_res @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/http/res +# FILE: wagon:back/lib/http/res # DESCRIPTION: Formats an http response from arguments # USAGE: [printf "message" |] res [200] [text/plain] diff --git a/back/lib/ips_to_peers b/back/lib/ips_to_peers index 84de325..940db2b 100755 --- a/back/lib/ips_to_peers +++ b/back/lib/ips_to_peers @@ -9,11 +9,11 @@ # 5: Invalid format # 6: Config file not found -source /etc/wgapi/config +source /etc/wagon/config format="${1}" # Perform AXFR lookup -res="$(/usr/lib/wgapi/ns_lookup_axfr)" || exit 4 +res="$(/usr/lib/wagon/ns_lookup_axfr)" || exit 4 # This should read from stdin # TODO: Run this loop in parallel diff --git a/back/lib/ns_lookup_axfr b/back/lib/ns_lookup_axfr index 9cd7765..7f50541 100755 --- a/back/lib/ns_lookup_axfr +++ b/back/lib/ns_lookup_axfr @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns_lookup_rxfr +# FILE: wagon:back/lib/ns_lookup_rxfr # DESCRIPTION: Get all records # USAGE: ns_lookup_rxfr # OUTPUT: The complete set of records for the TLD @@ -11,9 +11,9 @@ # 7: nslookup refused # 8: nslookup error -source /etc/wgapi/config +source /etc/wagon/config -res="$(/usr/lib/wgapi/ns_lookup_send "-query=AXFR" "${TLD}.")" +res="$(/usr/lib/wagon/ns_lookup_send "-query=AXFR" "${TLD}.")" case $? in 0) printf '%s' "${res}"; exit 0;; 4) printf 'Domain for %s not found!\n' "${1}" >&2; exit 4;; diff --git a/back/lib/ns_lookup_rdns b/back/lib/ns_lookup_rdns index 078f86d..a6f5828 100755 --- a/back/lib/ns_lookup_rdns +++ b/back/lib/ns_lookup_rdns @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns_lookup_rdns +# FILE: wagon:back/lib/ns_lookup_rdns # DESCRIPTION: Get a domain from an IP address # USAGE: rdns ip # OUTPUT: The domain for that IP @@ -9,9 +9,9 @@ # 5: nslookup not found # 6: Bad usage -source /etc/wgapi/config +source /etc/wagon/config -domain="$(/usr/lib/wgapi/ns_lookup_send "${1}")" +domain="$(/usr/lib/wagon/ns_lookup_send "${1}")" case $? in 0) printf '%s' "${domain%.}" | cut -d'=' -f2 | xargs -0; exit 0;; 4) printf 'Domain for %s not found!\n' "${1}" >&2; exit 3;; diff --git a/back/lib/ns_lookup_send b/back/lib/ns_lookup_send index c64f1bf..b94434b 100755 --- a/back/lib/ns_lookup_send +++ b/back/lib/ns_lookup_send @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns_lookup_send +# FILE: wagon:back/lib/ns_lookup_send # DESCRIPTION: Send nslookup command to DNS master server # USAGE: send [option] cmd # ERRORS: @@ -8,7 +8,7 @@ # 5: other nslookup error # 6: nslookup refused -source /etc/wgapi/config +source /etc/wagon/config # Ignore SC2068 and leave ${@} unquoted so it can expand if ! res="$(/usr/bin/nslookup ${@} "${DNS_MASTER}")" diff --git a/back/lib/ns_update_add b/back/lib/ns_update_add index 6c25446..a6486d6 100755 --- a/back/lib/ns_update_add +++ b/back/lib/ns_update_add @@ -1,14 +1,14 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/add +# FILE: wagon:back/lib/ns/update/add # DESCRIPTION: Add a new peer's domain to nameserver # USAGE: add domain ipv4 ipv6 -source /etc/wgapi/config +source /etc/wagon/config -/usr/lib/wgapi/ns_update_send "update add ${1}. ${DNS_TTL} A ${2} +/usr/lib/wagon/ns_update_send "update add ${1}. ${DNS_TTL} A ${2} update add ${1}. ${DNS_TTL} AAAA ${3} update add *.${1}. ${DNS_TTL} CNAME ${1}. send -update add $(/usr/lib/wgapi/ns_update_rev_ipv4 "${2}") ${DNS_TTL} PTR ${1}. +update add $(/usr/lib/wagon/ns_update_rev_ipv4 "${2}") ${DNS_TTL} PTR ${1}. send -update add $(/usr/lib/wgapi/ns_update_rev_ipv6 "${3}") ${DNS_TTL} PTR ${1}." || exit 1 +update add $(/usr/lib/wagon/ns_update_rev_ipv6 "${3}") ${DNS_TTL} PTR ${1}." || exit 1 diff --git a/back/lib/ns_update_del b/back/lib/ns_update_del index 0c639b8..92e2af7 100755 --- a/back/lib/ns_update_del +++ b/back/lib/ns_update_del @@ -1,14 +1,14 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/del +# FILE: wagon:back/lib/ns/update/del # DESCRIPTION: Use nsupdate to delete host RRs # USAGE: del domain ipv4 ipv6 -source /etc/wgapi/config +source /etc/wagon/config -/usr/lib/wgapi/ns_update_send "update delete ${1}. A +/usr/lib/wagon/ns_update_send "update delete ${1}. A update delete ${1}. AAAA update delete *.${1}. CNAME send -update delete $(/usr/lib/wgapi/ns_update_rev_ipv4 "${2}") PTR +update delete $(/usr/lib/wagon/ns_update_rev_ipv4 "${2}") PTR send -update delete $(/usr/lib/wgapi/ns_update_rev_ipv6 "${3}") PTR" || exit 1 +update delete $(/usr/lib/wagon/ns_update_rev_ipv6 "${3}") PTR" || exit 1 diff --git a/back/lib/ns_update_rev_ipv4 b/back/lib/ns_update_rev_ipv4 index 76874d9..f9c89f5 100755 --- a/back/lib/ns_update_rev_ipv4 +++ b/back/lib/ns_update_rev_ipv4 @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/rev_ipv4 +# FILE: wagon:back/lib/ns/update/rev_ipv4 # DESCRIPTION: Returns the rDNS reversed version of an IPv4 address # USAGE: rev_ipv4 10.2.0.1 # OUTPUT: 1.0.2.10.in-addr.arpa diff --git a/back/lib/ns_update_rev_ipv6 b/back/lib/ns_update_rev_ipv6 index 7c9f64d..b328726 100755 --- a/back/lib/ns_update_rev_ipv6 +++ b/back/lib/ns_update_rev_ipv6 @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/rev_ipv6 +# FILE: wagon:back/lib/ns/update/rev_ipv6 # DESCRIPTION: Returns the rDNS reversed version of an IPv6 address # USAGE: rev_ipv6 ... # OUTPUT: ...ip6.arpa diff --git a/back/lib/ns_update_send b/back/lib/ns_update_send index 495a50f..62bef71 100755 --- a/back/lib/ns_update_send +++ b/back/lib/ns_update_send @@ -1,9 +1,9 @@ #!/bin/bash -# FILE: wgapi:back/lib/ns/update/send +# FILE: wagon:back/lib/ns/update/send # DESCRIPTION: Send stuff to the nsupdate server # USAGE: send cmd -source /etc/wgapi/config +source /etc/wagon/config printf 'server %s\n%s\nsend\n' "${DNS_MASTER}" "${1}" \ | nsupdate -y "${DNS_KEY}" | tee >(cat 1>&2) diff --git a/back/lib/ssl_peer_add b/back/lib/ssl_peer_add index 2cdb2f9..e20b433 100755 --- a/back/lib/ssl_peer_add +++ b/back/lib/ssl_peer_add @@ -1,5 +1,5 @@ #!/bin/bash -# FILE: wgapi:back/lib/ssl/peer/add +# FILE: wagon:back/lib/ssl/peer/add # DESCRIPTION: Create SSL certs for a new host # USAGE: add hostname username ipstring # ERRORS: @@ -7,7 +7,7 @@ # 7: openssl failed # 8: failed to set permissions -source /etc/wgapi/config +source /etc/wagon/config hostname="${1}"; username="${2}"; ipstring="${3}" # Make a directory for the new files diff --git a/back/lib/ssl_peer_del b/back/lib/ssl_peer_del index ccd0547..d99f088 100755 --- a/back/lib/ssl_peer_del +++ b/back/lib/ssl_peer_del @@ -1,9 +1,9 @@ #!/bin/bash -# FILE: wgapi:back/lib/ssl/peer/del +# FILE: wagon:back/lib/ssl/peer/del # DESCRIPTION: Delete SSL cert for a removed device # USAGE: del hostname username -source /etc/wgapi/config +source /etc/wagon/config hostname="${1}"; username="${2}" if ! sudo rm -rf "${SSL_CONFIG_DIR:?}/${username:?}/${hostname:?}/" 2>/dev/null; then diff --git a/back/lib/wg_peer_add b/back/lib/wg_peer_add index d36f7ec..fb76cf8 100755 --- a/back/lib/wg_peer_add +++ b/back/lib/wg_peer_add @@ -1,9 +1,9 @@ #!/bin/bash -# FILE: wgapi:back/lib/wg/peer/add +# FILE: wagon:back/lib/wg/peer/add # DESCRIPTION: Add a new peer to a wireguard interface # USAGE: add pubkey psk allowedips -source /etc/wgapi/config +source /etc/wagon/config pubkey="${1}"; psk="${2}"; allowedips="${3}" if ! res="$(printf '%s\n' "${psk}" | sudo /usr/bin/wg set "${TLD}" peer "${pubkey}" preshared-key /dev/stdin allowed-ips "${allowedips}")"; then diff --git a/back/lib/wg_peer_del b/back/lib/wg_peer_del index 3f73481..72d22b6 100755 --- a/back/lib/wg_peer_del +++ b/back/lib/wg_peer_del @@ -1,9 +1,9 @@ #!/bin/bash -# FILE: wgapi:back/lib/wg/peer/del +# FILE: wagon:back/lib/wg/peer/del # DESCRIPTION: Delete a peer from a wireguard interface # USAGE: del pubkey -source /etc/wgapi/config +source /etc/wagon/config if ! res="$(sudo /usr/bin/wg set "${TLD}" peer "${1}" remove)"; then printf 'ERROR! Wireguard failed: %s\n' "${res}" >&2 diff --git a/back/lib/wg_user_list b/back/lib/wg_user_list index 59e92b0..b8afdc3 100755 --- a/back/lib/wg_user_list +++ b/back/lib/wg_user_list @@ -1,15 +1,15 @@ #!/bin/bash -# FILE: wgapi:back/lib/wg/user/list +# FILE: wagon:back/lib/wg/user/list # DESCRIPTION: List all devices from all users # USAGE: list json|tsv -source /etc/wgapi/config +source /etc/wagon/config /usr/bin/wg show "${TLD}" allowed-ips | \ while IFS=$' ' read -r pubkey ipv4 ipv6; do ipv4="${ipv4%%/*}" ipv6="${ipv6%%/*}" - domain="$(/usr/lib/wgapi/ns_lookup_rdns "${ipv4}")" || exit 4 + domain="$(/usr/lib/wagon/ns_lookup_rdns "${ipv4}")" || exit 4 username="$(<<<"${domain}" cut -d'.' -f2)" hostname="$(<<<"${domain}" cut -d'.' -f1)" case "${2}" in diff --git a/docker-compose.yml.sample b/docker-compose.yml.sample index 7aa4b56..b4dca55 100644 --- a/docker-compose.yml.sample +++ b/docker-compose.yml.sample @@ -1,7 +1,7 @@ version: '3' networks: - wgapi: - name: wgapi + wagon: + name: wagon ipam: config: - subnet: "172.19.0.0/16" @@ -13,22 +13,22 @@ services: dockerfile: dashboard.Dockerfile args: PORT: 4442 - container_name: wgapi-dashboard-backend + container_name: wagon-dashboard-backend cap_add: - NET_ADMIN network_mode: host volumes: - '/etc/ssl/private:/etc/ssl/private' - - './etc:/etc/wgapi:ro' - - '/var/log/wgapi.log:/var/log/apache2/error.log' + - './etc:/etc/wagon:ro' + - '/var/log/wagon.log:/var/log/apache2/error.log' dashboard-frontend: build: context: front dockerfile: dashboard.Dockerfile - container_name: wgapi-dashboard-frontend + container_name: wagon-dashboard-frontend networks: - wgapi: + wagon: ipv4_address: 172.19.0.2 admin-backend: @@ -40,19 +40,19 @@ services: cap_add: - NET_ADMIN network_mode: host - container_name: wgapi-admin-backend + container_name: wagon-admin-backend volumes: - - '/var/log/wgapi.log:/var/log/apache2/error.log' + - '/var/log/wagon.log:/var/log/apache2/error.log' - '/etc/ssl/private:/etc/ssl/private' - - './etc:/etc/wgapi:ro' + - './etc:/etc/wagon:ro' admin-frontend: build: context: front dockerfile: admin.Dockerfile - container_name: wgapi-admin-frontend + container_name: wagon-admin-frontend networks: - wgapi: + wagon: ipv4_address: 172.19.0.3 fed-backend: @@ -64,7 +64,7 @@ services: cap_add: - NET_ADMIN network_mode: host - container_name: wgapi-fed-backend + container_name: wagon-fed-backend volumes: - - '/var/log/wgapi.log:/var/log/apache2/error.log' - - './etc:/etc/wgapi:ro' + - '/var/log/wagon.log:/var/log/apache2/error.log' + - './etc:/etc/wagon:ro' diff --git a/etc/servers.sample b/etc/servers.sample index 56803da..7b55126 100644 --- a/etc/servers.sample +++ b/etc/servers.sample @@ -1,3 +1,3 @@ # host ipv4 ipv6 pubkey wg-endpoint admin-endpoint secret -myhost1 10.3.0.1 fd69:1337:0:420:f4:f3:0:1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= 123.123.123.123:51820 https://wgapi-admin.myhost2.tld XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -myhost2 10.3.0.2 fd69:1337:0:420:f4:f3:0:2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= 234.234.234.234:51820 https://wgapi-admin.myhost2.tld XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +myhost1 10.3.0.1 fd69:1337:0:420:f4:f3:0:1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= 123.123.123.123:51820 https://wagon-admin.myhost2.tld XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +myhost2 10.3.0.2 fd69:1337:0:420:f4:f3:0:2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= 234.234.234.234:51820 https://wagon-admin.myhost2.tld XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX From 23b9c2a75a777e9aab98ab438564c14e8596f764 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 13:48:58 -0600 Subject: [PATCH 22/40] Small README formatting fixes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9d2a417..f917a30 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # wagon -2022-2023 Keith Irwin ([ki9.gf4.pw](https://ki9.gf4.pw/)) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +2022-2023 Keith Irwin ([ki9.gf4.pw](https://ki9.gf4.pw/))\ +[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) `wagon` is a an api, user dashboard, and admin ui for managing devices and services on a dns-enabled wireguard network. It was built with small web communities in mind. From f992969e500bf66a45bde24b976dd993f31a6a2c Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 13:53:08 -0600 Subject: [PATCH 23/40] Better contact section --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index f917a30..47edf5f 100644 --- a/README.md +++ b/README.md @@ -106,8 +106,4 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem ## Contributing -If you think you can help with any of these bulletpoints, please reach out to me: - -[@ki9:gf4.pw](matrix:@ki9:gf4.pw) on matrix -[wagon@ki9.gf4.pw](mailto:wagon@ki9.gf4.pw) by email -[https://ki9.gf4.pw/contact]() +If you think you can help with any of these bulletpoints, come by [#wagon:gf4.pw](https://matrix.to/#/#wagon:gf4.pw) on matrix. From 1adf601711717c5d5aa690cacc1eda4d77b5f835 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 13:56:03 -0600 Subject: [PATCH 24/40] Finished thought --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 47edf5f..0a779ff 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ The wireguard dashboard and admin are in a working alpha state. I have it implem - The code probably contains hardcoded variables specific to gf4, that must be moved to configs/environment files - There is almost no documentation, and extensive tutorials are needed for the initial setup of wireguard, bind9, and the CA keys. - Future implementation of a mail relay, web proxy, and SIP server, and their respective tabs on the web dashboard - - Replacing + - Replacing some of the bash scripts with faster languages like c or rust. ## Contributing From 7fefa07ca01ee223ab6d8ab89cb5d4712d2369f6 Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 20:33:11 -0600 Subject: [PATCH 25/40] Improved text --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0a779ff..4a7599f 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,11 @@ IPv6 is also preconfigured for a `/96` subnet, with users getting their own `/11 - `B` is the username - `A` is hostname of the device -The TLD could be anything that isn't already a global TLD like `.com`. The recursive nameserver provides private wireguard IPs to on this private domain zone. It must be configured to answer `.mynet` queries only within its own network on `10.X.0.0/16`. This nameserver is then preconfigured in clients' wireguard configs' `DNS = ` setting. +The TLD could be anything that isn't already a global TLD like `.com`. The recursive nameserver takes these private domains as questions and provides private wireguard IPs as answers. It only responds to `.mynet` queries from its own network on `10.X.0.0/16`. This nameserver is then preconfigured in clients' wireguard configs' `DNS = ` setting. Optionally the community's TLD can be set as a search domain for the wireguard interface. **For example:** Your home pc could be `pc.myuser.mynet` and your phone `phone.myuser.mynet`. Either can ping up `phone.myfriend.mynet`. These would point to `10.11.1.1`, `10.11.1.2`, and `10.11.2.1` respectively - Servers (IPs with `Y=0`) have domains of the form `A.C`, as above. Wildcard subdomains are CNAMEd to their base address, that is, `*.phone.myuser.mynet` CNAMEs to `phone.myuser.mynet` and `*.smyerver.mynet` CNAMEs to `myserver.mynet`. Of course, this means no username can match a server hostname. + Servers (IPs with `Y=0`) have domains of the form `A.C`, as above. Wildcard subdomains are CNAMEd to their base address, that is, `*.phone.myuser.mynet` CNAMEs to `phone.myuser.mynet` and `*.myerver.mynet` CNAMEs to `myserver.mynet`. Of course, this means no username can match a server hostname. The nameserver is also preconfigured for rDNS so you can perform lookups on IP addresses: From fa217c375c35892a3630f36e54b90f6d46eaaace Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Sun, 2 Apr 2023 20:33:30 -0600 Subject: [PATCH 26/40] Added logo --- img/wagon-1000.png | Bin 0 -> 195413 bytes img/wagon.xcf | Bin 0 -> 355237 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/wagon-1000.png create mode 100644 img/wagon.xcf diff --git a/img/wagon-1000.png b/img/wagon-1000.png new file mode 100644 index 0000000000000000000000000000000000000000..dc517283c12fe6a630c7bd09400fac875f6d2d39 GIT binary patch literal 195413 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