From 3e913e5887b8b998649d1c356efb98ba1082c53d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 9 May 2018 21:11:50 +0100 Subject: [PATCH 001/214] Prevent mail processes from proliferating --- src/freedombone-base-email | 11 +++++++++++ src/freedombone-upgrade | 1 + 2 files changed, 12 insertions(+) diff --git a/src/freedombone-base-email b/src/freedombone-base-email index ab0e5262..45b33ec9 100755 --- a/src/freedombone-base-email +++ b/src/freedombone-base-email @@ -1663,6 +1663,16 @@ function refresh_gpg_keys { fi } +function prevent_mail_process_overrun { + { echo '#!/bin/bash'; + echo "exim_ctr=\$(pgrep \"exim4\" | wc -l)"; + echo "if [ \"\$exim_ctr\" -gt 5 ]; then"; + echo ' exim -bp | exiqgrep -i | xargs exim -Mrm'; + echo 'fi'; } > /usr/bin/exim_check + chmod +x /usr/bin/exim_check + cron_add_mins 5 '/usr/bin/exim_check' +} + function install_email { if [[ $SYSTEM_TYPE == "mesh"* ]]; then return @@ -1675,6 +1685,7 @@ function install_email { check_email_address_exists install_email_basic configure_email_onion + prevent_mail_process_overrun mark_completed "${FUNCNAME[0]}" } diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 2c851154..19326753 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -102,6 +102,7 @@ if [ -d "$PROJECT_DIR" ]; then email_disable_chunking rm /etc/exim4/exim4.conf.template.bak* email_update_onion_domain + prevent_mail_process_overrun #defrag_filesystem # reinstall tor from backports From 6e578a8bb7c9ec690b04aa204a667a1f79c3a1ad Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 9 May 2018 21:16:31 +0100 Subject: [PATCH 002/214] Comments --- src/freedombone-base-email | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/freedombone-base-email b/src/freedombone-base-email index 45b33ec9..a2b2b5aa 100755 --- a/src/freedombone-base-email +++ b/src/freedombone-base-email @@ -1664,6 +1664,8 @@ function refresh_gpg_keys { } function prevent_mail_process_overrun { + # This prevents any large buildup of exim processes, perhaps due to + # Tor unavailability, from disabling the server { echo '#!/bin/bash'; echo "exim_ctr=\$(pgrep \"exim4\" | wc -l)"; echo "if [ \"\$exim_ctr\" -gt 5 ]; then"; From cc65eb1634e675a48a6f38bdd957437593f8134e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 10:18:06 +0100 Subject: [PATCH 003/214] Re-enable bmx7 --- src/freedombone-image-customise | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 4e87358e..18fa721d 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -137,7 +137,7 @@ BMX6_REPO="https://github.com/bmx-routing/bmx6" BMX6_COMMIT='39dd1f2d99ac5a3fa28e92f8173c15039132e181' BMX7_REPO="https://github.com/bmx-routing/bmx7" -BMX7_COMMIT='0a82c7c10fef44b259b35e77ab33632aa132d219' +BMX7_COMMIT='66c853f529662873d1420d39461c75be6eb88b45' CONTINUOUS_INTEGRATION= @@ -941,7 +941,7 @@ initialise_mesh() { install_avahi install_batman install_bmx6 - #install_bmx7 + install_bmx7 install_olsr2 install_babel mesh_shutdown_script From 0949cad2d2a0ad0c2455b9baeaf951ff43d057e7 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 11:13:31 +0100 Subject: [PATCH 004/214] Continuous integration variable --- src/freedombone-image | 2 +- src/freedombone-image-makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-image b/src/freedombone-image index 2c468219..f3474f7d 100755 --- a/src/freedombone-image +++ b/src/freedombone-image @@ -74,7 +74,7 @@ IMAGE_NAME='full' USERNAME="$USER" PASSWORD= -CONTINUOUS_INTEGRATION= +CONTINUOUS_INTEGRATION="" # IP address of the router (gateway) ROUTER_IP_ADDRESS="192.168.1.254" diff --git a/src/freedombone-image-makefile b/src/freedombone-image-makefile index f034b842..24e34405 100755 --- a/src/freedombone-image-makefile +++ b/src/freedombone-image-makefile @@ -41,7 +41,7 @@ IMAGE = $(NAME).img ARCHIVE = $(IMAGE).xz SIGNATURE = $(ARCHIVE).sig OWNER = 1000 -ifeq ("$CONTINUOUS_INTEGRATION", "") +ifeq ($(CONTINUOUS_INTEGRATION), "") XZ = xz --no-warn --verbose --keep --threads=0 -3 $(IMAGE) SIGN = -gpg --output $(SIGNATURE) --detach-sig $(ARCHIVE) else From fac5859a3be383243ed89ab12d931d8927e9e8d1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 11:43:46 +0100 Subject: [PATCH 005/214] Skip bad blocks when writing images --- doc/EN/armbian.org | 2 +- doc/EN/homeserver.org | 2 +- doc/EN/installation.org | 2 +- doc/EN/mesh_images.org | 8 +-- doc/EN/release3.org | 2 +- doc/EN/release31.org | 2 +- doc/EN/socialinstance.org | 2 +- src/freedombone-image | 2 +- website/EN/armbian.html | 4 +- website/EN/homeserver.html | 10 +-- website/EN/installation.html | 124 ++++++++++++++++----------------- website/EN/mesh_images.html | 50 ++++++------- website/EN/mobile.html | 64 ++++++++--------- website/EN/release3.html | 22 +++--- website/EN/release31.html | 22 +++--- website/EN/socialinstance.html | 52 +++++++------- 16 files changed, 186 insertions(+), 184 deletions(-) diff --git a/doc/EN/armbian.org b/doc/EN/armbian.org index be475d80..d79e3403 100644 --- a/doc/EN/armbian.org +++ b/doc/EN/armbian.org @@ -23,7 +23,7 @@ If you have a single board ARM computer which isn't one of the supported ones th Download the Armbian image for your board. It must be version 9 (Stretch), otherwise it won't work. Extract the image from its archive, then copy it to a microSD card: #+begin_src bash -sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync,noerror #+end_src Where */dev/sdX* is the path for the microSD drive on your system. diff --git a/doc/EN/homeserver.org b/doc/EN/homeserver.org index 59381baa..989c3343 100644 --- a/doc/EN/homeserver.org +++ b/doc/EN/homeserver.org @@ -70,7 +70,7 @@ You can now copy the image to the USB thumb drive, replacing *sdX* with the iden #+begin_src bash dd if=/dev/zero of=/dev/sdX bs=32M count=8 -dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync +dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,noerror #+end_src And wait. Again it will take a while to copy over. When that's done plug it into the laptop or netbook which you want to use as a server, power on and set the BIOS to boot from the USB stick. diff --git a/doc/EN/installation.org b/doc/EN/installation.org index 5377a58f..71d26e27 100644 --- a/doc/EN/installation.org +++ b/doc/EN/installation.org @@ -129,7 +129,7 @@ unxz filename.img.xz Then copy it to a microSD card. Depending on your system you may need an adaptor to be able to do that. #+BEGIN_SRC bash -sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync,noerror #+END_SRC Where *sdX* is the microSD drive. You can check which drive is the microSD drive using: diff --git a/doc/EN/mesh_images.org b/doc/EN/mesh_images.org index 9408d8f0..70ff484d 100644 --- a/doc/EN/mesh_images.org +++ b/doc/EN/mesh_images.org @@ -42,7 +42,7 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz.si gpg --verify freedombone-meshclient-i386.img.xz.sig unxz freedombone-meshclient-i386.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync,noerror #+end_src To get a number of systems onto the mesh repeat the /dd/ command to create however many bootable USB drives you need. @@ -56,7 +56,7 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386. gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig unxz freedombone-meshclient-insecure-i386.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync,noerror #+end_src ** Router images @@ -75,7 +75,7 @@ gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig sha256sum freedombone-mesh_beaglebone-armhf.img.xz ad8f22c0d46c98a80aa47b5809402971cf5cf26ebf587c59a667307b2386c3d2 unxz freedombone-mesh_beaglebone-armhf.img.xz -sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync,noerror #+end_src If you have a few Beaglebone Blacks to use as routers then repeat the /dd/ command to create however many microSD cards you need. @@ -120,7 +120,7 @@ You can now copy the image to the USB thumb drive, replacing *sdX* with the iden #+begin_src bash sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,noerror #+end_src And wait. Again it will take a while to copy over. When that's done plug it into the laptop or netbook which you want to use on the mesh, power on and set the BIOS to boot from the USB stick. diff --git a/doc/EN/release3.org b/doc/EN/release3.org index f30afe58..fddeea7e 100644 --- a/doc/EN/release3.org +++ b/doc/EN/release3.org @@ -31,7 +31,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden #+BEGIN_SRC bash unxz downloadedimagefile.img.xz -dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync +dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,noerror #+END_SRC And wait. It will take a while to copy over. When that's done you might want to increase the partition size on the drive, using a tool such as [[http://gparted.org][Gparted]]. Whether you need to do that will depend upon how many apps you intend to install and how much data they will store. diff --git a/doc/EN/release31.org b/doc/EN/release31.org index f4398468..fa0b6f1d 100644 --- a/doc/EN/release31.org +++ b/doc/EN/release31.org @@ -39,7 +39,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden #+BEGIN_SRC bash unxz downloadedimagefile.img.xz -dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync +dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,noerror #+END_SRC And wait. It will take a while to copy over. When that's done you might want to increase the partition size on the drive, using a tool such as [[http://gparted.org][Gparted]]. Whether you need to do that will depend upon how many apps you intend to install and how much data they will store. diff --git a/doc/EN/socialinstance.org b/doc/EN/socialinstance.org index bcf8a250..1a7e214f 100644 --- a/doc/EN/socialinstance.org +++ b/doc/EN/socialinstance.org @@ -32,7 +32,7 @@ wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz.sig gpg --verify freedombone-pleroma-amd64.img.xz.sig unxz freedombone-pleroma-amd64.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync,noerror #+end_src Also note that if the laptop has a removable SSD drive it's possible to copy the image directly to that if you have enough equipment. diff --git a/src/freedombone-image b/src/freedombone-image index f3474f7d..5d8de9c2 100755 --- a/src/freedombone-image +++ b/src/freedombone-image @@ -719,7 +719,7 @@ if [[ $IMAGE_TYPE != "qemu"* ]]; then echo '' echo " unxz -k ${PROJECT_NAME}*.img.xz" echo ' sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8' - echo " sudo dd bs=32M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync" + echo " sudo dd bs=32M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync,noerror" echo '' fi diff --git a/website/EN/armbian.html b/website/EN/armbian.html index 933e6027..ca77c8c9 100644 --- a/website/EN/armbian.html +++ b/website/EN/armbian.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -260,7 +260,7 @@ Download the Armbian image for your board. It must be version 9 (Stretch), other

-
sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync
+
sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync,noerror
 
diff --git a/website/EN/homeserver.html b/website/EN/homeserver.html index ce335577..8a88c88c 100644 --- a/website/EN/homeserver.html +++ b/website/EN/homeserver.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -243,9 +243,9 @@ for the JavaScript code in this tag. -
-

Home Server

-
+
+

Home Server

+

The quickest way to get started is as follows. You will need to be running a Debian based system (version 8 or later), have an old but still working laptop or netbook which you can use as a server, and 8GB or larger USB thumb drive and an ethernet cable to connect the laptop to your internet router.

@@ -336,7 +336,7 @@ You can now copy the image to the USB thumb drive, replacing sdX with the
dd if=/dev/zero of=/dev/sdX bs=32M count=8
-dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync
+dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,noerror
 
diff --git a/website/EN/installation.html b/website/EN/installation.html index f393b83a..51b27e6a 100644 --- a/website/EN/installation.html +++ b/website/EN/installation.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,9 +242,9 @@ for the JavaScript code in this tag.

-
-

Installation

-
+ -
-

Building an image for a Single Board Computer or Virtual Machine

-
+
+

Building an image for a Single Board Computer or Virtual Machine

+

You don't have to trust images downloaded from random internet locations signed with untrusted keys. You can build one from scratch yourself, and this is the recommended procedure for maximum security. For guidance on how to build images see the manpage for the freedombone-image command.

@@ -372,9 +372,9 @@ If the image build fails with an error such as "Error reading from server. Re
-
-

Checklist

-
+
+

Checklist

+

Before installing Freedombone you will need a few things.

@@ -388,17 +388,17 @@ Before installing Freedombone you will need a few things.
-
-

Installation

-
+
+

Installation

+

There are three install options: Laptop/Desktop/Netbook, SBC and Virtual Machine.

-
-

On a Laptop, Netbook or Desktop machine

-
+
+

On a Laptop, Netbook or Desktop machine

+

If you have an existing system, such as an old laptop or netbook which you can leave running as a server, then install a new version of Debian Stretch onto it. During the Debian install you won't need the print server or the desktop environment, and unchecking those will reduce the attack surface. Once Debian enter the following commands:

@@ -417,9 +417,9 @@ freedombone menuconfig
-
-

On a single board computer (SBC)

-
+
+

On a single board computer (SBC)

+

Currently the following boards are supported:

@@ -466,7 +466,7 @@ Then copy it to a microSD card. Depending on your system you may need an adaptor

-
sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync
+
sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync,noerror
 
@@ -498,9 +498,9 @@ Using the password 'freedombone'. Take a note of the new login password and then
-
-

As a Virtual Machine

-
+
+

As a Virtual Machine

+

Qemu is currently supported, since it's s fully free software system. You can run a 64 bit Qemu image with:

@@ -517,42 +517,42 @@ The default login will be username 'fbone' and password 'freedombone'. Take a no
-
-

Social Key Management - the 'Unforgettable Key'

-
+
+

Social Key Management - the 'Unforgettable Key'

+

During the install procedure you will be asked if you wish to import GPG keys. If you don't already possess GPG keys then just select "Ok" and they will be generated during the install. If you do already have GPG keys then there are a few possibilities

-
-

You have the gnupg keyring on an encrypted USB drive

-
+
+

You have the gnupg keyring on an encrypted USB drive

+

If you previously made a master keydrive containing the full keyring (the .gnupg directory). This is the most straightforward case, but not as secure as splitting the key into fragments.

-
-

You have a number of key fragments on USB drives retrieved from friends

-
+
+

You have a number of key fragments on USB drives retrieved from friends

+

-If you previously made some USB drives containing key fragments then retrieve them from your friends and plug them in one after the other. After the last drive has been read then remove it and just select "Ok". The system will then try to reconstruct the key. For this to work you will need to have previously made three or more Keydrives. +If you previously made some USB drives containing key fragments then retrieve them from your friends and plug them in one after the other. After the last drive has been read then remove it and just select "Ok". The system will then try to reconstruct the key. For this to work you will need to have previously made three or more Keydrives.

-
-

You can specify some ssh login details for friends servers containing key fragments

-
+
+

You can specify some ssh login details for friends servers containing key fragments

+

Enter three or more sets of login details and the installer will try to retrieve key fragments and then assemble them into the full key. This only works if you previously were using remote backups and had social key management enabled.

-
-

Final Setup

-
+
+

Final Setup

+

Any manual post-installation setup instructions or passwords can be found in /home/username/README.

@@ -670,16 +670,16 @@ On your internet router, typically under firewall settings, open the following p
-
-

Keydrives

-
+
+

Keydrives

+

After installing for the first time it's a good idea to create some keydrives. These will store your gpg key so that if all else fails you will still be able to restore from backup. There are two ways to do this:

-
-

Master Keydrive

-
+
+

Master Keydrive

+

This is the traditional security model in which you carry your full keyring on an encrypted USB drive. To make a master keydrive first format a USB drive as a LUKS encrypted drive. In Ubuntu this can be done from the Disk Utility application. Then plug it into the Freedombone system, then from your local machine run:

@@ -694,9 +694,9 @@ Select Administrator controls then Backup and Restore then Back

-
-

Fragment keydrives

-
+
+

Fragment keydrives

+

This breaks your GPG key into a number of fragments and randomly selects one to add to the USB drive. First format a USB drive as a LUKS encrypted drive. In Ubuntu this can be done from the Disk Utility application. Plug it into the Freedombone system then from your local machine run the following commands:

@@ -716,9 +716,9 @@ Fragments are randomly assigned and so you will need at least three or four keyd
-
-

On Client Machines

-
+
+

On Client Machines

+

You can configure laptops or desktop machines which connect to the Freedombone server in the following way. This alters encryption settings to improve overall security.

@@ -736,9 +736,9 @@ freedombone-client
-
-

Administering the system

-
+
+

Administering the system

+

To administer the system after installation log in via ssh, become the root user and then launch the control panel.

diff --git a/website/EN/mesh_images.html b/website/EN/mesh_images.html index 5cb60dac..1d38c86e 100644 --- a/website/EN/mesh_images.html +++ b/website/EN/mesh_images.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,17 +242,17 @@ for the JavaScript code in this tag.

-
-

Mesh Network: Images

+
+

Mesh Network: Images

-
-

Pre-built Disk Images

-
+
+

Pre-built Disk Images

+
-
-

Writing many images quickly

-
+
+

Writing many images quickly

+

There may be situations where you need to write the same disk image to multiple drives at the same time in order to maximize rate of deployment. In the instructions given below the dd command is used for writing to the target drive, but to write to multiple drives you can use a tool such as GNOME MultiWriter.

@@ -280,9 +280,9 @@ The MultiWriter tool is also available within mesh client images, so that you ca

-
-

Client images

-
+
+

Client images

+

mesh_netbook.jpg @@ -300,7 +300,7 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz.si gpg --verify freedombone-meshclient-i386.img.xz.sig unxz freedombone-meshclient-i386.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync,noerror

@@ -319,22 +319,22 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386. gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig unxz freedombone-meshclient-insecure-i386.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync,noerror
-
-

Router images

-
+
+

Router images

+

Routers are intended to build network coverage for an area using small and low cost hardware. You can bolt them to walls or leave them on window ledges. They don't have any user interface and their only job is to haul network traffic across the mesh and to enable peers to find each other via running bootstrap nodes for Tox and IPFS. Copy the image to a microSD card and insert it into the router, plug in an Atheros wifi dongle and power on. That should be all you need to do.

-
-

Beaglebone Black

-
+
+

Beaglebone Black

+

mesh_router.jpg @@ -353,7 +353,7 @@ gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig sha256sum freedombone-mesh_beaglebone-armhf.img.xz ad8f22c0d46c98a80aa47b5809402971cf5cf26ebf587c59a667307b2386c3d2 unxz freedombone-mesh_beaglebone-armhf.img.xz -sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync,noerror

@@ -369,9 +369,9 @@ There is still a software freedom issue with the Beaglebone Black, but it doesn'
-
-

Building Disk Images

-
+
+

Building Disk Images

+

It's better not to trust images downloaded from random places on the interwebs. Chances are that unless you are in the web of trust of the above GPG signatures then they don't mean very much to you. If you actually want something trustworthy then build the images from scratch. It will take some time. Here's how to do it.

@@ -426,7 +426,7 @@ You can now copy the image to the USB thumb drive, replacing sdX with the
sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8
-sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync
+sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,noerror
 
diff --git a/website/EN/mobile.html b/website/EN/mobile.html index 6d2b7c30..4b13ecae 100644 --- a/website/EN/mobile.html +++ b/website/EN/mobile.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -246,9 +246,9 @@ for the JavaScript code in this tag. Mobile phones are insecure devices, but they're regarded as being so essential to modern life that telling people not to use them isn't a viable option. Here are some recommendations on setting up a mobile phone (aka "smartphone") to work with Freedombone.

-
-

Open

-
+
+

Open

+

Use a Linux based phone operating system. Typically this will mean Android, but could also mean LineageOS or Replicant. LineageOS is the most preferable, because you can usually get an up to date image with a recent kernel which will give you better security against exploits. If you're buying a phone then look for a model which is supported by LineageOS. Replicant is the most free (as in freedom) but only runs on a small number of phone models. If you have a phone which runs a full GNU/Linux system then that's fantastic, and you can probably use it in much the same way as a desktop system and the rest of the advice on this page won't apply. If you don't have a phone capable of running a Linux based operating system then consider selling, giving away or bartering your existing one.

@@ -263,27 +263,27 @@ In the end it comes down to the fact that if the source code for the device c
-
-

Remove

-
+
+

Remove

+

So maybe you're running Android and the phone came with some apps already installed. Almost certainly they'll be proprietary. Go to Settings/Apps and then uninstall or deactivate any apps which you really don't need. Mostly preinstalled apps are intended to send your data to companies who will then sell it to advertisers or governments under the business model of surveillance capital. It's not a good idea to get caught up in that, and to avoid becoming addicted to apps which are surveilling you without consent or installing spyware in the background without your knowledge.

-
-

Encrypt

-
+
+

Encrypt

+

Encrypt your phone. This can usually be done via Settings/Security and you may need to fully charge the phone first. Encryption means that if you lose your phone or it gets stolen then there is less chance that anyone who picks it up will get access to your data, photos and so on.

-
-

Apps

-
+
+

Apps

+

Installing F-droid and only adding any new apps via F-droid will ensure that you are always using free and open source software. Open source is not a panacea, since bugs can and do still occur, but it will help you to avoid the worst security and privacy pitfalls.

@@ -294,18 +294,18 @@ Avoid using the Open Whisper Systems Signal app if you can, no matter what "expe
-
-

Lock

-
+
+

Lock

+

Add a lock screen, preferably with a password which is not easy for other people to guess or for quicker access with a PIN number. Install an app called Locker, activate it and set the maximum number of password guesses to ten (or whatever you feel comfortable with). If bad people get hold of your phone then they may try to brute force your lock screen password or PIN (i.e. automatically trying millions of common word and number combinations) and the locker app will prevent them from succeeding by resetting the phone back to its factory default condition and wiping the data.

-
-

Onion

-
+
+

Onion

+

Both governments and corporations want to compile matadata dossiers about you. Who you communicated with, when and how often. They want this so that they can data mine, simulate, predict and then ultimately influence (sometimes also called "nudge") your actions and preferences in the directions they prefer. By routing your connections through a number of proxy servers (Tor routers) you can make it perhaps not theoretically impossible but at least very hard for them to have a complete and accurate list of who your friends are, your religion, politics, likely health issues, sexual orientation and what news sites or books you read.

@@ -316,26 +316,26 @@ In F-droid under the repositories menu you can enable the guardian pro
-
-

Email

-
+
+

Email

+

The easiest way to access email is by installing the Mailpile app. This keeps your GPG keys off of possibly insecure mobile devices but still enables encrypted email communications in an easy way. You can use K9 mail if you prefer, but that will require installing OpenKeychain and having your GPG keys on the device, which is a lot more risky.

-
-

Services

-
+
+

Services

+

For information on configuring various apps to work with Freedombone see the apps section. Also see advice on chat apps in the FAQ.

-
-

Battery

-
+
+

Battery

+

Even with free software apps it's not difficult to get into a situation where your battery doesn't last for long. To maximize battery life access RSS feeds via the onion-based mobile reader within a Tor-compatible browser and not from a locally installed RSS app.

@@ -354,9 +354,9 @@ It's also recommended to disable battery optimisations for Conversations and Orb
-
-

Blocking bad domains

-
+
+

Blocking bad domains

+

You can block known bad domains by editing the /system/etc/hosts file on your device. It is possible to use extensive ad-blocking hosts files used by other ad-blocking systems such as pi-hole, but merely blocking Facebook and Google Analytics will protect you against much of the corporate surveillance which goes on. Even if you don't have a Facebook account this may still be useful since they will still try to create a "ghost profile" of you, so the less data they have the better.

@@ -410,6 +410,8 @@ Now edit the hosts file which was pulled and append: 127.0.0.1 www.google-analytics.com 127.0.0.1 google-analytics.com 127.0.0.1 ssl.google-analytics.com +127.0.0.1 telemetry.mozilla.org +127.0.0.1 incoming.telemetry.mozilla.org
diff --git a/website/EN/release3.html b/website/EN/release3.html index 5ca64c88..9b5d94ab 100644 --- a/website/EN/release3.html +++ b/website/EN/release3.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,9 +242,9 @@ for the JavaScript code in this tag.

-
-

Building an internet run by the users, for the users

-
+
+

Building an internet run by the users, for the users

+

The internet may still be mostly in the clutches of a few giant megacorporations and dubious governments with sketchy agendas, but it doesn't have to remain that way. With the third version of the Freedombone system there is now more scope than before to take back your privacy, have ownership of personal data and run your own online communities without undesirable intermediaries.

@@ -265,9 +265,9 @@ Freedombone version 3 is based on Debian 9 (Stretch). It was released in July 20
-
-

Installation

-
+
+

Installation

+

The simplest way to install is from a pre-made disk image. Images can be downloaded here. You will need to have previously obtained a domain name and have a dynamic DNS account somewhere.

@@ -278,7 +278,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden
unxz downloadedimagefile.img.xz
-dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync
+dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,noerror
 
@@ -323,9 +323,9 @@ More detailed installation instructions are linked from t
-
-

Upgrading from a previous install

-
+
+

Upgrading from a previous install

+

To upgrade from the Debian Jessie version first create a master keydrive. Go to the Administrator control panel and select Backup and restore then Backup GPG key to USB (master keydrive). Insert a LUKS encrypted USB drive. When that is done Create a full backup by selecting Backup data to USB drive and using another LUKS encrypted USB drive.

diff --git a/website/EN/release31.html b/website/EN/release31.html index e431067e..2e5cc98b 100644 --- a/website/EN/release31.html +++ b/website/EN/release31.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,9 +242,9 @@ for the JavaScript code in this tag.

-
-

Version 3.1, 2018-04-15

-
+ -
-

Installation

-
+
+

Installation

+

The simplest way to install is from a pre-made disk image. Images can be downloaded here. You will need to have previously obtained a domain name and have a dynamic DNS account somewhere. Or if you don't need clearnet domains and will be using Tor compatible browsers then you can use the "onion only" images where apps will be accessible via an onion address.

@@ -294,7 +294,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden
unxz downloadedimagefile.img.xz
-dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync
+dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,noerror
 
@@ -339,9 +339,9 @@ More detailed installation instructions are linked from -

Upgrading from a previous install

-
+
+

Upgrading from a previous install

+

To upgrade from version 3 just go to the administrator control panel and select check for updates.

diff --git a/website/EN/socialinstance.html b/website/EN/socialinstance.html index 94a0772c..be858047 100644 --- a/website/EN/socialinstance.html +++ b/website/EN/socialinstance.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,9 +242,9 @@ for the JavaScript code in this tag.

-
-

Social Instance

-
+
+

Social Instance

+

A social instance image allows you to easily set up a fediverse server, which federates using the OStatus or ActivityPub protocol. You will need:

@@ -263,9 +263,9 @@ The installation process is the same as usual, with the only difference being th
-
-

Copy the image to the USB drive

-
+
+

Copy the image to the USB drive

+

Substitute sdX with the device name for your USB drive.

@@ -277,7 +277,7 @@ wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz.sig gpg --verify freedombone-pleroma-amd64.img.xz.sig unxz freedombone-pleroma-amd64.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync +sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync,noerror
@@ -287,9 +287,9 @@ Also note that if the laptop has a removable SSD drive it's possible to copy the
-
-

Connect the laptop to your internet router

-
+
+

Connect the laptop to your internet router

+

Plug the USB drive into the laptop and connect it to your internet router with the ethernet cable.

@@ -302,9 +302,9 @@ Plug the USB drive into the laptop and connect it to your internet router with t
-
-

Boot the laptop from the USB drive

-
+
+

Boot the laptop from the USB drive

+

You may need to alter the BIOS settings to get this to work reliably.

@@ -317,9 +317,9 @@ You may need to alter the BIOS settings to get this to work reliably.
-
-

Forward ports 80 (HTTP) and 443 (HTTPS) from your internet router to the laptop

-
+
+

Forward ports 80 (HTTP) and 443 (HTTPS) from your internet router to the laptop

+

Log into your internet router using a non-Tor browser (usually it's on an address like 192.168.1.1 or 192.168.1.254). Often port forwarding settings are together with firewall settings.

@@ -332,9 +332,9 @@ Log into your internet router using a non-Tor browser (usually it's on an addres
-
-

From another machine ssh into the laptop

-
+
+

From another machine ssh into the laptop

+
ssh fbone@freedombone.local -p 2222
 
@@ -346,18 +346,18 @@ Or alternatively you can log in directly on the laptop. The initial username is
-
-

Follow the setup procedure

-
+
+

Follow the setup procedure

+

Enter your user details, domain name and dynamic DNS settings.

-
-

When installation is complete

-
+
+

When installation is complete

+

Navigate to your domain and register a new user.

From 334f6aff94650a86a74d4f18d367e1a4dd1e05c2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 11:49:54 +0100 Subject: [PATCH 006/214] Extra sync --- doc/EN/armbian.org | 2 +- doc/EN/homeserver.org | 2 +- doc/EN/installation.org | 2 +- doc/EN/mesh_images.org | 8 +-- doc/EN/release3.org | 2 +- doc/EN/release31.org | 2 +- doc/EN/socialinstance.org | 2 +- src/freedombone-image | 2 +- website/EN/armbian.html | 4 +- website/EN/homeserver.html | 10 +-- website/EN/installation.html | 124 ++++++++++++++++----------------- website/EN/mesh_images.html | 50 ++++++------- website/EN/release31.html | 22 +++--- website/EN/socialinstance.html | 52 +++++++------- 14 files changed, 142 insertions(+), 142 deletions(-) diff --git a/doc/EN/armbian.org b/doc/EN/armbian.org index d79e3403..0b42666f 100644 --- a/doc/EN/armbian.org +++ b/doc/EN/armbian.org @@ -23,7 +23,7 @@ If you have a single board ARM computer which isn't one of the supported ones th Download the Armbian image for your board. It must be version 9 (Stretch), otherwise it won't work. Extract the image from its archive, then copy it to a microSD card: #+begin_src bash -sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync,sync,noerror #+end_src Where */dev/sdX* is the path for the microSD drive on your system. diff --git a/doc/EN/homeserver.org b/doc/EN/homeserver.org index 989c3343..30d0b855 100644 --- a/doc/EN/homeserver.org +++ b/doc/EN/homeserver.org @@ -70,7 +70,7 @@ You can now copy the image to the USB thumb drive, replacing *sdX* with the iden #+begin_src bash dd if=/dev/zero of=/dev/sdX bs=32M count=8 -dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,noerror +dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,sync,noerror #+end_src And wait. Again it will take a while to copy over. When that's done plug it into the laptop or netbook which you want to use as a server, power on and set the BIOS to boot from the USB stick. diff --git a/doc/EN/installation.org b/doc/EN/installation.org index 71d26e27..48d30133 100644 --- a/doc/EN/installation.org +++ b/doc/EN/installation.org @@ -129,7 +129,7 @@ unxz filename.img.xz Then copy it to a microSD card. Depending on your system you may need an adaptor to be able to do that. #+BEGIN_SRC bash -sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync,sync,noerror #+END_SRC Where *sdX* is the microSD drive. You can check which drive is the microSD drive using: diff --git a/doc/EN/mesh_images.org b/doc/EN/mesh_images.org index 70ff484d..dc654892 100644 --- a/doc/EN/mesh_images.org +++ b/doc/EN/mesh_images.org @@ -42,7 +42,7 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz.si gpg --verify freedombone-meshclient-i386.img.xz.sig unxz freedombone-meshclient-i386.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync,sync,noerror #+end_src To get a number of systems onto the mesh repeat the /dd/ command to create however many bootable USB drives you need. @@ -56,7 +56,7 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386. gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig unxz freedombone-meshclient-insecure-i386.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync,sync,noerror #+end_src ** Router images @@ -75,7 +75,7 @@ gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig sha256sum freedombone-mesh_beaglebone-armhf.img.xz ad8f22c0d46c98a80aa47b5809402971cf5cf26ebf587c59a667307b2386c3d2 unxz freedombone-mesh_beaglebone-armhf.img.xz -sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync,sync,noerror #+end_src If you have a few Beaglebone Blacks to use as routers then repeat the /dd/ command to create however many microSD cards you need. @@ -120,7 +120,7 @@ You can now copy the image to the USB thumb drive, replacing *sdX* with the iden #+begin_src bash sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,sync,noerror #+end_src And wait. Again it will take a while to copy over. When that's done plug it into the laptop or netbook which you want to use on the mesh, power on and set the BIOS to boot from the USB stick. diff --git a/doc/EN/release3.org b/doc/EN/release3.org index fddeea7e..c9bb8327 100644 --- a/doc/EN/release3.org +++ b/doc/EN/release3.org @@ -31,7 +31,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden #+BEGIN_SRC bash unxz downloadedimagefile.img.xz -dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,noerror +dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,sync,noerror #+END_SRC And wait. It will take a while to copy over. When that's done you might want to increase the partition size on the drive, using a tool such as [[http://gparted.org][Gparted]]. Whether you need to do that will depend upon how many apps you intend to install and how much data they will store. diff --git a/doc/EN/release31.org b/doc/EN/release31.org index fa0b6f1d..4217ff48 100644 --- a/doc/EN/release31.org +++ b/doc/EN/release31.org @@ -39,7 +39,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden #+BEGIN_SRC bash unxz downloadedimagefile.img.xz -dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,noerror +dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,sync,noerror #+END_SRC And wait. It will take a while to copy over. When that's done you might want to increase the partition size on the drive, using a tool such as [[http://gparted.org][Gparted]]. Whether you need to do that will depend upon how many apps you intend to install and how much data they will store. diff --git a/doc/EN/socialinstance.org b/doc/EN/socialinstance.org index 1a7e214f..b248b6cc 100644 --- a/doc/EN/socialinstance.org +++ b/doc/EN/socialinstance.org @@ -32,7 +32,7 @@ wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz.sig gpg --verify freedombone-pleroma-amd64.img.xz.sig unxz freedombone-pleroma-amd64.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync,sync,noerror #+end_src Also note that if the laptop has a removable SSD drive it's possible to copy the image directly to that if you have enough equipment. diff --git a/src/freedombone-image b/src/freedombone-image index 5d8de9c2..fb202a3e 100755 --- a/src/freedombone-image +++ b/src/freedombone-image @@ -719,7 +719,7 @@ if [[ $IMAGE_TYPE != "qemu"* ]]; then echo '' echo " unxz -k ${PROJECT_NAME}*.img.xz" echo ' sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8' - echo " sudo dd bs=32M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync,noerror" + echo " sudo dd bs=32M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync,sync,noerror" echo '' fi diff --git a/website/EN/armbian.html b/website/EN/armbian.html index ca77c8c9..1c2d00e8 100644 --- a/website/EN/armbian.html +++ b/website/EN/armbian.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -260,7 +260,7 @@ Download the Armbian image for your board. It must be version 9 (Stretch), other

-
sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync,noerror
+
sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync,sync,noerror
 
diff --git a/website/EN/homeserver.html b/website/EN/homeserver.html index 8a88c88c..fddecce6 100644 --- a/website/EN/homeserver.html +++ b/website/EN/homeserver.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -243,9 +243,9 @@ for the JavaScript code in this tag.
-
-

Home Server

-
+
+

Home Server

+

The quickest way to get started is as follows. You will need to be running a Debian based system (version 8 or later), have an old but still working laptop or netbook which you can use as a server, and 8GB or larger USB thumb drive and an ethernet cable to connect the laptop to your internet router.

@@ -336,7 +336,7 @@ You can now copy the image to the USB thumb drive, replacing sdX with the
dd if=/dev/zero of=/dev/sdX bs=32M count=8
-dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,noerror
+dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,sync,noerror
 
diff --git a/website/EN/installation.html b/website/EN/installation.html index 51b27e6a..f28d989d 100644 --- a/website/EN/installation.html +++ b/website/EN/installation.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,9 +242,9 @@ for the JavaScript code in this tag.

-
-

Installation

-
+ -
-

Building an image for a Single Board Computer or Virtual Machine

-
+
+

Building an image for a Single Board Computer or Virtual Machine

+

You don't have to trust images downloaded from random internet locations signed with untrusted keys. You can build one from scratch yourself, and this is the recommended procedure for maximum security. For guidance on how to build images see the manpage for the freedombone-image command.

@@ -372,9 +372,9 @@ If the image build fails with an error such as "Error reading from server. Re
-
-

Checklist

-
+
+

Checklist

+

Before installing Freedombone you will need a few things.

@@ -388,17 +388,17 @@ Before installing Freedombone you will need a few things.
-
-

Installation

-
+
+

Installation

+

There are three install options: Laptop/Desktop/Netbook, SBC and Virtual Machine.

-
-

On a Laptop, Netbook or Desktop machine

-
+
+

On a Laptop, Netbook or Desktop machine

+

If you have an existing system, such as an old laptop or netbook which you can leave running as a server, then install a new version of Debian Stretch onto it. During the Debian install you won't need the print server or the desktop environment, and unchecking those will reduce the attack surface. Once Debian enter the following commands:

@@ -417,9 +417,9 @@ freedombone menuconfig
-
-

On a single board computer (SBC)

-
+
+

On a single board computer (SBC)

+

Currently the following boards are supported:

@@ -466,7 +466,7 @@ Then copy it to a microSD card. Depending on your system you may need an adaptor

-
sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync,noerror
+
sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync,sync,noerror
 
@@ -498,9 +498,9 @@ Using the password 'freedombone'. Take a note of the new login password and then
-
-

As a Virtual Machine

-
+
+

As a Virtual Machine

+

Qemu is currently supported, since it's s fully free software system. You can run a 64 bit Qemu image with:

@@ -517,42 +517,42 @@ The default login will be username 'fbone' and password 'freedombone'. Take a no
-
-

Social Key Management - the 'Unforgettable Key'

-
+
+

Social Key Management - the 'Unforgettable Key'

+

During the install procedure you will be asked if you wish to import GPG keys. If you don't already possess GPG keys then just select "Ok" and they will be generated during the install. If you do already have GPG keys then there are a few possibilities

-
-

You have the gnupg keyring on an encrypted USB drive

-
+
+

You have the gnupg keyring on an encrypted USB drive

+

If you previously made a master keydrive containing the full keyring (the .gnupg directory). This is the most straightforward case, but not as secure as splitting the key into fragments.

-
-

You have a number of key fragments on USB drives retrieved from friends

-
+
+

You have a number of key fragments on USB drives retrieved from friends

+

-If you previously made some USB drives containing key fragments then retrieve them from your friends and plug them in one after the other. After the last drive has been read then remove it and just select "Ok". The system will then try to reconstruct the key. For this to work you will need to have previously made three or more Keydrives. +If you previously made some USB drives containing key fragments then retrieve them from your friends and plug them in one after the other. After the last drive has been read then remove it and just select "Ok". The system will then try to reconstruct the key. For this to work you will need to have previously made three or more Keydrives.

-
-

You can specify some ssh login details for friends servers containing key fragments

-
+
+

You can specify some ssh login details for friends servers containing key fragments

+

Enter three or more sets of login details and the installer will try to retrieve key fragments and then assemble them into the full key. This only works if you previously were using remote backups and had social key management enabled.

-
-

Final Setup

-
+
+

Final Setup

+

Any manual post-installation setup instructions or passwords can be found in /home/username/README.

@@ -670,16 +670,16 @@ On your internet router, typically under firewall settings, open the following p
-
-

Keydrives

-
+
+

Keydrives

+

After installing for the first time it's a good idea to create some keydrives. These will store your gpg key so that if all else fails you will still be able to restore from backup. There are two ways to do this:

-
-

Master Keydrive

-
+
+

Master Keydrive

+

This is the traditional security model in which you carry your full keyring on an encrypted USB drive. To make a master keydrive first format a USB drive as a LUKS encrypted drive. In Ubuntu this can be done from the Disk Utility application. Then plug it into the Freedombone system, then from your local machine run:

@@ -694,9 +694,9 @@ Select Administrator controls then Backup and Restore then Back

-
-

Fragment keydrives

-
+
+

Fragment keydrives

+

This breaks your GPG key into a number of fragments and randomly selects one to add to the USB drive. First format a USB drive as a LUKS encrypted drive. In Ubuntu this can be done from the Disk Utility application. Plug it into the Freedombone system then from your local machine run the following commands:

@@ -716,9 +716,9 @@ Fragments are randomly assigned and so you will need at least three or four keyd
-
-

On Client Machines

-
+
+

On Client Machines

+

You can configure laptops or desktop machines which connect to the Freedombone server in the following way. This alters encryption settings to improve overall security.

@@ -736,9 +736,9 @@ freedombone-client
-
-

Administering the system

-
+
+

Administering the system

+

To administer the system after installation log in via ssh, become the root user and then launch the control panel.

diff --git a/website/EN/mesh_images.html b/website/EN/mesh_images.html index 1d38c86e..0a1c7d96 100644 --- a/website/EN/mesh_images.html +++ b/website/EN/mesh_images.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,17 +242,17 @@ for the JavaScript code in this tag.

-
-

Mesh Network: Images

+
+

Mesh Network: Images

-
-

Pre-built Disk Images

-
+
+

Pre-built Disk Images

+
-
-

Writing many images quickly

-
+
+

Writing many images quickly

+

There may be situations where you need to write the same disk image to multiple drives at the same time in order to maximize rate of deployment. In the instructions given below the dd command is used for writing to the target drive, but to write to multiple drives you can use a tool such as GNOME MultiWriter.

@@ -280,9 +280,9 @@ The MultiWriter tool is also available within mesh client images, so that you ca

-
-

Client images

-
+
+

Client images

+

mesh_netbook.jpg @@ -300,7 +300,7 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz.si gpg --verify freedombone-meshclient-i386.img.xz.sig unxz freedombone-meshclient-i386.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync,sync,noerror

@@ -319,22 +319,22 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386. gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig unxz freedombone-meshclient-insecure-i386.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync,sync,noerror
-
-

Router images

-
+
+

Router images

+

Routers are intended to build network coverage for an area using small and low cost hardware. You can bolt them to walls or leave them on window ledges. They don't have any user interface and their only job is to haul network traffic across the mesh and to enable peers to find each other via running bootstrap nodes for Tox and IPFS. Copy the image to a microSD card and insert it into the router, plug in an Atheros wifi dongle and power on. That should be all you need to do.

-
-

Beaglebone Black

-
+
+

Beaglebone Black

+

mesh_router.jpg @@ -353,7 +353,7 @@ gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig sha256sum freedombone-mesh_beaglebone-armhf.img.xz ad8f22c0d46c98a80aa47b5809402971cf5cf26ebf587c59a667307b2386c3d2 unxz freedombone-mesh_beaglebone-armhf.img.xz -sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync,sync,noerror

@@ -369,9 +369,9 @@ There is still a software freedom issue with the Beaglebone Black, but it doesn'
-
-

Building Disk Images

-
+
+

Building Disk Images

+

It's better not to trust images downloaded from random places on the interwebs. Chances are that unless you are in the web of trust of the above GPG signatures then they don't mean very much to you. If you actually want something trustworthy then build the images from scratch. It will take some time. Here's how to do it.

@@ -426,7 +426,7 @@ You can now copy the image to the USB thumb drive, replacing sdX with the
sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8
-sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,noerror
+sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync,sync,noerror
 
diff --git a/website/EN/release31.html b/website/EN/release31.html index 2e5cc98b..e51f30b3 100644 --- a/website/EN/release31.html +++ b/website/EN/release31.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,9 +242,9 @@ for the JavaScript code in this tag.

-
-

Version 3.1, 2018-04-15

-
+
+

Version 3.1, 2018-04-15

+

Newer and shinier than before, Freedombone 3.1 rests upon the solid foundation of Debian stable and delivers major new self-hosted apps, improved mesh networking and a new logo. It supports version 3 onion addresses and the ability to use email with onion and I2P addresses. New apps are:

@@ -281,9 +281,9 @@ The future is decentralized.
-
-

Installation

-
+
+

Installation

+

The simplest way to install is from a pre-made disk image. Images can be downloaded here. You will need to have previously obtained a domain name and have a dynamic DNS account somewhere. Or if you don't need clearnet domains and will be using Tor compatible browsers then you can use the "onion only" images where apps will be accessible via an onion address.

@@ -294,7 +294,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden
unxz downloadedimagefile.img.xz
-dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,noerror
+dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync,sync,noerror
 
@@ -339,9 +339,9 @@ More detailed installation instructions are linked from -

Upgrading from a previous install

-
+
+

Upgrading from a previous install

+

To upgrade from version 3 just go to the administrator control panel and select check for updates.

diff --git a/website/EN/socialinstance.html b/website/EN/socialinstance.html index be858047..354ab09c 100644 --- a/website/EN/socialinstance.html +++ b/website/EN/socialinstance.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,9 +242,9 @@ for the JavaScript code in this tag.

-
-

Social Instance

-
+
+

Social Instance

+

A social instance image allows you to easily set up a fediverse server, which federates using the OStatus or ActivityPub protocol. You will need:

@@ -263,9 +263,9 @@ The installation process is the same as usual, with the only difference being th
-
-

Copy the image to the USB drive

-
+
+

Copy the image to the USB drive

+

Substitute sdX with the device name for your USB drive.

@@ -277,7 +277,7 @@ wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz.sig gpg --verify freedombone-pleroma-amd64.img.xz.sig unxz freedombone-pleroma-amd64.img.xz sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8 -sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync,noerror +sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync,sync,noerror
@@ -287,9 +287,9 @@ Also note that if the laptop has a removable SSD drive it's possible to copy the
-
-

Connect the laptop to your internet router

-
+
+

Connect the laptop to your internet router

+

Plug the USB drive into the laptop and connect it to your internet router with the ethernet cable.

@@ -302,9 +302,9 @@ Plug the USB drive into the laptop and connect it to your internet router with t
-
-

Boot the laptop from the USB drive

-
+
+

Boot the laptop from the USB drive

+

You may need to alter the BIOS settings to get this to work reliably.

@@ -317,9 +317,9 @@ You may need to alter the BIOS settings to get this to work reliably.
-
-

Forward ports 80 (HTTP) and 443 (HTTPS) from your internet router to the laptop

-
+
+

Forward ports 80 (HTTP) and 443 (HTTPS) from your internet router to the laptop

+

Log into your internet router using a non-Tor browser (usually it's on an address like 192.168.1.1 or 192.168.1.254). Often port forwarding settings are together with firewall settings.

@@ -332,9 +332,9 @@ Log into your internet router using a non-Tor browser (usually it's on an addres
-
-

From another machine ssh into the laptop

-
+
+

From another machine ssh into the laptop

+
ssh fbone@freedombone.local -p 2222
 
@@ -346,18 +346,18 @@ Or alternatively you can log in directly on the laptop. The initial username is
-
-

Follow the setup procedure

-
+
+

Follow the setup procedure

+

Enter your user details, domain name and dynamic DNS settings.

-
-

When installation is complete

-
+
+

When installation is complete

+

Navigate to your domain and register a new user.

From 2cf96caf18fd40dda222b376c920afef188f5ce4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 12:39:18 +0100 Subject: [PATCH 007/214] Comments --- src/freedombone-mesh-batman | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/freedombone-mesh-batman b/src/freedombone-mesh-batman index 1b5ad086..819775f0 100755 --- a/src/freedombone-mesh-batman +++ b/src/freedombone-mesh-batman @@ -212,6 +212,7 @@ function start { sed -i 's|use-ipv4=.*|use-ipv4=no|g' /etc/avahi/avahi-daemon.conf sed -i 's|use-ipv6=.*|use-ipv6=yes|g' /etc/avahi/avahi-daemon.conf + # set the wifi interface for layer 3 routing sed -i "s|ExecStart=.*|ExecStart=/usr/sbin/bmx6 dev=${IFACE}|g" /etc/systemd/system/bmx6.service sed -i "s|ExecStart=.*|ExecStart=/usr/sbin/bmx7 dev=${IFACE}|g" /etc/systemd/system/bmx7.service sed -i "s|ExecStart=.*|ExecStart=/usr/local/sbin/olsrd2_static ${IFACE}|g" /etc/systemd/system/olsr2.service @@ -238,6 +239,7 @@ function start { ifconfig "$EIFACE" up promisc echo $'End of internet bridge' + # set the wifi interfaces for layer 3 routing sed -i "s|ExecStart=.*|ExecStart=/usr/sbin/bmx6 dev=${IFACE} dev=${EIFACE}|g" /etc/systemd/system/bmx6.service sed -i "s|ExecStart=.*|ExecStart=/usr/sbin/bmx7 dev=${IFACE} dev=${EIFACE}|g" /etc/systemd/system/bmx7.service sed -i "s|ExecStart=.*|ExecStart=/usr/local/sbin/olsrd2_static ${IFACE} ${EIFACE}|g" /etc/systemd/system/olsr2.service From 8def8ec0e17e447bd79d37ff947c2dc114488e8e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 13:58:10 +0100 Subject: [PATCH 008/214] Add bmx7 kernel modules --- src/freedombone-app-batman | 6 ++++++ src/freedombone-mesh-install | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-batman b/src/freedombone-app-batman index e4c55a21..dccf4564 100755 --- a/src/freedombone-app-batman +++ b/src/freedombone-app-batman @@ -105,6 +105,12 @@ function mesh_install_batman { if ! grep -q "batman_adv" "$rootdir/etc/modules"; then echo 'batman_adv' >> "$rootdir/etc/modules" fi + if ! grep -q "tunnel6" "$rootdir/etc/modules"; then + echo 'tunnel6' >> "$rootdir/etc/modules" + fi + if ! grep -q "ip6_tunnel" "$rootdir/etc/modules"; then + echo 'ip6_tunnel' >> "$rootdir/etc/modules" + fi BATMAN_SCRIPT=$rootdir/var/lib/batman diff --git a/src/freedombone-mesh-install b/src/freedombone-mesh-install index 2518310d..e49e7b6f 100755 --- a/src/freedombone-mesh-install +++ b/src/freedombone-mesh-install @@ -139,8 +139,14 @@ function install_batman { $CHROOT_PREFIX apt-get -yq install python-dev libevent-dev ebtables python-pip git $CHROOT_PREFIX apt-get -yq install wireless-tools rfkill - if ! grep -q "batman_adv" $rootdir/etc/modules; then - echo 'batman_adv' >> $rootdir/etc/modules + if ! grep -q "batman_adv" "$rootdir/etc/modules"; then + echo 'batman_adv' >> "$rootdir/etc/modules" + fi + if ! grep -q "tunnel6" "$rootdir/etc/modules"; then + echo 'tunnel6' >> "$rootdir/etc/modules" + fi + if ! grep -q "ip6_tunnel" "$rootdir/etc/modules"; then + echo 'ip6_tunnel' >> "$rootdir/etc/modules" fi BATMAN_SCRIPT=$rootdir/var/lib/batman From 30aeea80bab1e67d1d54252eac2b43933685327b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 14:37:16 +0100 Subject: [PATCH 009/214] Add bmx7 to the routing selection --- src/freedombone-mesh-routing | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/freedombone-mesh-routing b/src/freedombone-mesh-routing index 81054e56..9d710876 100755 --- a/src/freedombone-mesh-routing +++ b/src/freedombone-mesh-routing @@ -48,6 +48,11 @@ echo '' echo $'Scanning for BMX6 protocol...' bmx6_peers=$(avahi-browse -at | grep routing | grep -c bmx6) +clear +echo '' +echo $'Scanning for BMX7 protocol...' +bmx7_peers=$(avahi-browse -at | grep routing | grep -c bmx7) + clear echo '' echo $'Scanning for OLSR2 protocol...' @@ -60,7 +65,7 @@ babel_peers=$(avahi-browse -at | grep routing | grep -c babel) clear -data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"OLSR2 ($olsr2_peers)" 3 $"Babel ($babel_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=150) +data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"BMX7 ($bmx7_peers)" 3 $"OLSR2 ($olsr2_peers)" 4 $"Babel ($babel_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=150) sel=$? case $sel in @@ -109,7 +114,18 @@ case $data in echo $'Starting BMX6...' sudo systemctl start bmx6 ;; - 2) sudo "$temp_script" 'olsr2' + 2) sudo "$temp_script" 'bmx7' + mesh_stop_daemon 'bmx6' + mesh_stop_daemon 'olsr2' + mesh_stop_daemon 'babel' + clear + echo '' + echo $'Enabling BMX7...' + sudo systemctl enable bmx7 + echo $'Starting BMX7...' + sudo systemctl start bmx7 + ;; + 3) sudo "$temp_script" 'olsr2' mesh_stop_daemon 'bmx6' mesh_stop_daemon 'bmx7' mesh_stop_daemon 'babel' @@ -120,7 +136,7 @@ case $data in echo $'Starting OLSR2...' sudo systemctl start olsr2 ;; - 3) sudo "$temp_script" 'babel' + 4) sudo "$temp_script" 'babel' mesh_stop_daemon 'bmx6' mesh_stop_daemon 'bmx7' mesh_stop_daemon 'olsr2' From 62022fb410f2873fcd185ea4687897ab26f5ada2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 14:54:14 +0100 Subject: [PATCH 010/214] Describe bmx7 as experimental --- src/freedombone-mesh-routing | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-mesh-routing b/src/freedombone-mesh-routing index 9d710876..a36ed4a7 100755 --- a/src/freedombone-mesh-routing +++ b/src/freedombone-mesh-routing @@ -65,7 +65,7 @@ babel_peers=$(avahi-browse -at | grep routing | grep -c babel) clear -data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"BMX7 ($bmx7_peers)" 3 $"OLSR2 ($olsr2_peers)" 4 $"Babel ($babel_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=150) +data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"BMX7 Experimental ($bmx7_peers)" 3 $"OLSR2 ($olsr2_peers)" 4 $"Babel ($babel_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=150) sel=$? case $sel in From fef7299faeb47a3298f6b894d6713372defd2c88 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 18:27:28 +0100 Subject: [PATCH 011/214] Increase height of dialog --- src/freedombone-mesh-routing | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-mesh-routing b/src/freedombone-mesh-routing index a36ed4a7..aa533549 100755 --- a/src/freedombone-mesh-routing +++ b/src/freedombone-mesh-routing @@ -65,7 +65,7 @@ babel_peers=$(avahi-browse -at | grep routing | grep -c babel) clear -data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"BMX7 Experimental ($bmx7_peers)" 3 $"OLSR2 ($olsr2_peers)" 4 $"Babel ($babel_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=150) +data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"BMX7 Experimental ($bmx7_peers)" 3 $"OLSR2 ($olsr2_peers)" 4 $"Babel ($babel_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=220) sel=$? case $sel in From e0e1dd7fb3917d3ec30a1f0494cc89df229b6c55 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 20:07:33 +0100 Subject: [PATCH 012/214] Continuous integration option --- src/freedombone-image-make | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-image-make b/src/freedombone-image-make index 8edee308..e5b2d416 100755 --- a/src/freedombone-image-make +++ b/src/freedombone-image-make @@ -259,6 +259,7 @@ sudo -H \ SOURCE="$SOURCE" \ CUSTOM_SETUP="$CUSTOM_SETUP" \ EXTERNAL_DRIVE="$EXTERNAL_DRIVE" \ + CONTINUOUS_INTEGRATION="$CONTINUOUS_INTEGRATION" \ $VMDEBOOTSTRAP \ --log "$(dirname "$IMAGE")/${PROJECT_NAME}.log" \ --log-level debug \ From 03e32c6de59288fdb5b7e71707dc7e3d2a4aafec Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 20:37:16 +0100 Subject: [PATCH 013/214] Comments --- src/freedombone-client | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/freedombone-client b/src/freedombone-client index 385e2f8f..04b41a5a 100755 --- a/src/freedombone-client +++ b/src/freedombone-client @@ -6,6 +6,14 @@ # # Freedom in the Cloud # +# This is an optional command for setting up a client machine +# to then be able to log into a server. It installs a few packages +# for things like IRC and twiddles crypto settings. +# +# It may not be necessary to run this on client machines, and +# is provided for some extra convenience on a Debian or Arch +# based system. +# # License # ======= # From e3237fffad3e896352527b8086f3a08dcae6ce6f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 20:50:12 +0100 Subject: [PATCH 014/214] Monkeysphere is deprecated --- src/freedombone-client | 33 ++++++--------------------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/src/freedombone-client b/src/freedombone-client index 04b41a5a..b735bc9c 100755 --- a/src/freedombone-client +++ b/src/freedombone-client @@ -42,7 +42,6 @@ CURR_GROUP=$USER if [ -f /usr/bin/pacman ]; then CURR_GROUP='users' fi -ENABLE_MONKEYSPHERE= # setup for a specific app SETUP_CLIENT_APP_NAME= @@ -185,20 +184,12 @@ function configure_ssh_client { { echo "# ${PROJECT_NAME} settings start"; echo 'Host *.onion'; echo ' ServerAliveInterval 60'; - echo ' ServerAliveCountMax 3'; } >> ~/.ssh/config - - if [[ "$ENABLE_MONKEYSPHERE" == $'yes' || "$ENABLE_MONKEYSPHERE" == $'y' ]]; then - echo " ProxyCommand sh -c 'monkeysphere ssh-proxycommand --no-connect %h %p ; $proxycmd'" >> ~/.ssh/config - else - echo " ProxyCommand $proxycmd" >> ~/.ssh/config - fi - { echo 'Host *'; + echo ' ServerAliveCountMax 3'; + echo " ProxyCommand $proxycmd"; + echo 'Host *'; echo ' ServerAliveInterval 60'; - echo ' ServerAliveCountMax 3'; } >> ~/.ssh/config - if [[ "$ENABLE_MONKEYSPHERE" == $'yes' || "$ENABLE_MONKEYSPHERE" == $'y' ]]; then - echo ' ProxyCommand monkeysphere ssh-proxycommand %h %p' >> ~/.ssh/config - fi - echo "# ${PROJECT_NAME} settings end" >> ~/.ssh/config + echo ' ServerAliveCountMax 3'; + echo "# ${PROJECT_NAME} settings end"; } >> ~/.ssh/config fi fi @@ -213,16 +204,9 @@ function configure_ssh_client { echo $'and set it to "no".' } -function configure_monkeysphere { - if [ -f /usr/bin/pacman ]; then - return - fi - sudo apt-get -yq install monkeysphere -} - function show_help { echo '' - echo $"${PROJECT_NAME}-client --monkeysphere [yes|no]" + echo $"${PROJECT_NAME}-client" echo '' exit 0 } @@ -330,10 +314,6 @@ do verify_ssh_server_key exit 0 ;; - --monkeysphere|--ms|--monkey) - shift - ENABLE_MONKEYSPHERE=${1} - ;; *) # unknown option ;; @@ -347,7 +327,6 @@ setup_client_app refresh_gpg_keys configure_ssh_client global_rate_limit -configure_monkeysphere remove_known_hosts_entries echo $'Configuration complete' exit 0 From d8de09c074a0af0d99e538ec023970e04ce3766e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 20:58:54 +0100 Subject: [PATCH 015/214] manpage got client command --- man/freedombone-client.1.gz | Bin 1210 -> 1237 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/man/freedombone-client.1.gz b/man/freedombone-client.1.gz index 7d679d36e353824cc54a554eb3e141aa3fd12df5..542d6df607a91d6a5c34907b83769fca0fbfa565 100644 GIT binary patch delta 1218 zcmV;z1U>t@3DpS)ABzY8OQiIX2PJ<>JX@S8QXr`~`uF`vNvW5n#SA~#C-UyT@4mZJ zvALwJW0tllt>Iav6`MeBDS!7f{UHp!`|0g3Ipz3%{Bn%$J-auau7&A@&a1W69M^yMK5#R} zTR*IBZr96oo)JD@#~qJ-IA6cNTi$M#H>*6`)SMM(uN|&z(+DG}b@ow78Zf| zEW2?7J|hCs)%~*vX%9wQAyX(V0{Z~ABvYh&%pXvSA&BoJ7;M9A$AN#kR^oiJPp0X@ z4&bE{+U}_Al$JC09)Mv<$K&HlNB-*&T7Np9!%}x;fjZAi;cHjTk8q?rm86%Z^}Y+n~O?Dck!gll#or%j>I_@ z_O;&m6h+{DO?&Qrg0N$Q<_ySNg*UN3cGlvzWRXNKB}`GQ2kYb*t08X(9@IAe@1wWm zEb72TH0ZZRMKZvO2mum={a`yS!M8%84RVX__QoDk{?9R#0d9YZ<9J#^PNhx_6D6V0 zA`hefVrI`k;>78E>_R(GDQ&i*l!nUoFGG6O8Z|ye6xZyn_;+gE!9I3 zqe%ZczgvEMSgwCAXmfc^>+?GpXpJYg_h(nj_w?uaLq60#LX5P%mQWhQDf5(!a?mQK zILC=}h(+ssmsAX0w;E^#HR#XCqOS)b3ydFlw@DWh#2BybO0B9Slpn+%$1I%V-;ZA^ znmTgORj8FGd@Ji*9KU4`SswBDz4FF_dDav0IGu|Ujh=s#$0TNRGEkmM=D8J7`~=y; zBlZZv49av}thE7470jYTtK)luH8*o>0 zC7??r7+eRw`BCX<0?d?|!NIIiQpPowdMXZA_!kZKxhHJd?mJrV&O_>+GXe$W4&fOkQP_8u(5lCH;N zSw~u{5L$mapTkmhWr6a|OW`Xg=SMiw8>#4}sS$ggLXK44uNN1P@51}8K}CQ{goIU~ z=$(%yK_3Q25s1~15){hi>J2q&ofV_2h6V<)57XK?2NwP}8 z6s2~sPK~h|@^;`sZ{znqdP~k?xm`qqZfSHR1FVP;pfuPIwyPESpixhQ+@ia^v4@oZ za|~^OTj4rROQ@!-liXwFwJGRflv&K|8AzNLosT_a2Wo{vu_Ax_BG{OaK^Rs&e==+kNWCXvwdp`{>0jq}%a0Gs)dg)X&uM*r2Lr8fa(jPvwR}&1 zoBn_sSa!=DD7T z$L(B{whK9V%uzNc1Ldh?o?8*cPmnD{u^TW|aU8HknwUrol!SoQ5qk_s9wS#8OKYkN)a<`f$aIKqSs05` zM@^hYP1=9=(?T4u4~dn-sOd(J`5qxh7LDzdJhgqcE2%ku300>2gRxU~pZc38UTEBqMvUz=pE zu^8Bot`_&3%bUAAJF_KS+W>tw^lNF$-;Z7thQk+cSy8&|6PKsYQC{50J_7{#&Cr4g F003o`OK$)G From e34bca9eacfb7c9f06495b79786b81d3bf236878 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 May 2018 21:01:00 +0100 Subject: [PATCH 016/214] Tidying --- man/freedombone-archive-mail.1.gz | Bin 529 -> 529 bytes man/freedombone.1.gz | Bin 4690 -> 4689 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/man/freedombone-archive-mail.1.gz b/man/freedombone-archive-mail.1.gz index 018bd00c7cb08e1fa4590386f9150ef6b48a03e4..8b75a3eaf76c6ca3cc6bacf3d596356bef56bed9 100644 GIT binary patch delta 16 XcmbQpGLeN{zMF&L#gZ=@*}0eiD!>IO delta 16 XcmbQpGLeN{zMF&L`ue_&>|9I$D2)WX diff --git a/man/freedombone.1.gz b/man/freedombone.1.gz index 611d60356841ec452217d383f9eb3069eccdf8f5..8ab8362d798482abe06115df8441f629b6b2cf0f 100644 GIT binary patch literal 4689 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 T{n+kuFe3S1uk}Y_d@uk2k-9pV literal 4690 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 Um40k@IT(@rH=}-kPh&6u03ljTLI3~& From 6d7cd198bbd9a90a6002779b8668fc0c8f81f794 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 11:00:06 +0100 Subject: [PATCH 017/214] Template support for mongodb --- src/freedombone-template | 81 ++++++++++++++++++++++++++++++---------- 1 file changed, 61 insertions(+), 20 deletions(-) diff --git a/src/freedombone-template b/src/freedombone-template index bf09f156..e39df783 100755 --- a/src/freedombone-template +++ b/src/freedombone-template @@ -55,22 +55,22 @@ function show_help { echo $'Creates a new app script which can then be filled in' echo '' echo '' - echo $' -h --help Show help' - echo $' -a --app [name] Name of the application' - echo $' -n --name [name] Your name' - echo $' -e --email [address] Your email address' - echo $' -r --repo [url] Git repo url for the app' - echo $' -c --commit [hash] Git commit' - echo $' --port [number] Port number for the app' - echo $' --portinternal [number] Internal port between a daemon and the web server' - echo $' --node [yes|no] Is this a nodejs app?' - echo $' --nodeapp [package] Specify a nodejs package to install' - echo $' -o --onion [yes|no] Is this app only available on an onion address?' - echo $' -p --php [yes|no] Is this a PHP app?' - echo $' -s --daemon [yes|no] Add a daemon' - echo $' -d --database [mariadb|postgresql] Type of database' - echo $' -w --web [yes|no] Whether there is a web user interface (default is yes)' - echo $' --dir [directory] Where to install to' + echo $' -h --help Show help' + echo $' -a --app [name] Name of the application' + echo $' -n --name [name] Your name' + echo $' -e --email [address] Your email address' + echo $' -r --repo [url] Git repo url for the app' + echo $' -c --commit [hash] Git commit' + echo $' --port [number] Port number for the app' + echo $' --portinternal [number] Internal port between a daemon and the web server' + echo $' --node [yes|no] Is this a nodejs app?' + echo $' --nodeapp [package] Specify a nodejs package to install' + echo $' -o --onion [yes|no] Is this app only available on an onion address?' + echo $' -p --php [yes|no] Is this a PHP app?' + echo $' -s --daemon [yes|no] Add a daemon' + echo $' -d --database [mariadb|postgresql|mongodb] Type of database' + echo $' -w --web [yes|no] Whether there is a web user interface (default is yes)' + echo $' --dir [directory] Where to install to' echo '' exit 0 } @@ -322,7 +322,7 @@ echo '' echo " \"\${PROJECT_NAME}-pass\" -u \"\$curr_username\" -a ${app_name} -p \"\$new_user_password\"" echo '}' -if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"* ]]; then +if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"* || "$database_type" == "mongo"* ]]; then echo '' echo "function ${app_name}_create_database {" echo " if [ -f \$IMAGE_PASSWORD_FILE ]; then" @@ -336,9 +336,13 @@ if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database echo ' return' echo ' fi' echo '' - if [[ "$database_type" != "postgres"* ]]; then + if [[ "$database_type" = "mysql" || "$database_type" = "mariadb" ]]; then echo " create_database ${app_name} \"\$${app_name_upper}_ADMIN_PASSWORD\" \$MY_USERNAME" - else + fi + if [[ "$database_type" = "mongo"* ]]; then + echo " create_database_mongodb ${app_name} \"\$${app_name_upper}_ADMIN_PASSWORD\" \$MY_USERNAME" + fi + if [[ "$database_type" == "postgres"* ]]; then echo ' systemctl restart postgresql' echo " run_system_query_postgresql \"CREATE USER peertube WITH PASSWORD '\$${app_name_upper}_ADMIN_PASSWORD';\"" echo " run_system_query_postgresql \"CREATE DATABASE ${app_name} OWNER ${app_name};\"" @@ -430,6 +434,11 @@ if [[ "$database_type" == "postgres"* ]]; then echo " backup_database_to_usb ${app_name}" echo '' fi +if [[ "$database_type" == "mongo"* ]]; then + echo ' USE_MONGODB=1' + echo " backup_database_to_usb ${app_name}" + echo '' +fi if [ $app_webui ]; then echo ' restart_site' fi @@ -481,6 +490,16 @@ if [[ "$database_type" == "postgres"* ]]; then echo ' fi' echo '' fi +if [[ "$database_type" == "mongo"* ]]; then + echo " ${app_name}_create_database" + echo '' + echo ' USE_MONGODB=1' + echo " restore_database ${app_name}" + echo " if [ -d \$temp_restore_dir ]; then" + echo " rm -rf \$temp_restore_dir" + echo ' fi' + echo '' +fi echo " restore_directory_from_usb \$temp_restore_dir ${app_name}" echo " if [ -d \$temp_restore_dir ]; then" echo " if [ -d \"\$temp_restore_dir\$${app_name}_dir\" ]; then" @@ -539,6 +558,11 @@ if [[ "$database_type" == "postgres"* ]]; then echo " backup_database_to_friend ${app_name}" echo '' fi +if [[ "$database_type" == "mongo"* ]]; then + echo ' USE_MONGODB=1' + echo " backup_database_to_friend ${app_name}" + echo '' +fi if [ $app_daemon ]; then echo '' echo " systemctl start ${app_name}" @@ -592,6 +616,16 @@ if [[ "$database_type" == "postgres"* ]]; then echo ' fi' echo '' fi +if [[ "$database_type" == "mongo"* ]]; then + echo " ${app_name}_create_database" + echo '' + echo ' USE_MONGODB=1' + echo " restore_database_from_friend ${app_name}" + echo " if [ -d \"\$temp_restore_dir\" ]; then" + echo " rm -rf \$temp_restore_dir" + echo ' fi' + echo '' +fi echo " restore_directory_from_friend \$temp_restore_dir ${app_name}" echo " if [ -d \$temp_restore_dir ]; then" echo " if [ -d \"\$temp_restore_dir\$${app_name}_dir\" ]; then" @@ -655,6 +689,9 @@ fi if [[ "$database_type" == "postgres"* ]]; then echo " drop_database_postgresql ${app_name}" fi +if [[ "$database_type" == "mongo"* ]]; then + echo " drop_database_mongodb ${app_name}" +fi echo " remove_onion_service ${app_name} \"\${${app_name_upper}_ONION_PORT}\"" echo " if grep -q \"${app_name}\" /etc/crontab; then" echo " sed -i \"/${app_name}/d\" /etc/crontab" @@ -683,6 +720,10 @@ if [[ "$database_type" == "postgres"* ]]; then echo ' install_postgresql' echo '' fi +if [[ "$database_type" == "mongo"* ]]; then + echo ' install_mongodb' + echo '' +fi if [[ "$app_node" == 'yes' ]]; then echo " install_nodejs ${app_name}" fi @@ -748,7 +789,7 @@ if [ $app_webui ]; then echo " chown -R www-data:www-data \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\"" fi -if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"* ]]; then +if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"* || "$database_type" == "mongo"* ]]; then echo '' echo " ${app_name}_create_database" fi From cbffa5b975bfa9f43e12f4636a3bca1d96949efa Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 11:03:50 +0100 Subject: [PATCH 018/214] Include mongodb in template manpage --- man/freedombone-template.1.gz | Bin 1373 -> 1377 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/man/freedombone-template.1.gz b/man/freedombone-template.1.gz index 8a2f18f56dded8c0f4887fa15aed3c2f89a338b5..7fb4025c645a7caac26fed350c0d7f4fc8a6e938 100644 GIT binary patch literal 1377 zcmV-n1)lmJiwFRAYV}$G1Kn6zZ`(!?e&??k=p`?aWT!1q1VvE!NNk|C1xZF**oCp= z4#};_U1oP_fkl3NXLor>jw~B!5EwOl@YuP&`R0%(t20P7B3EUsB#teXRlzL6A&d?W z;es{r?%?p}5sc{j<8TnJ4eB?B4#=7nqbQmz&tP;pyEq+1JN4a;;S);KbZtQ58cd=^ zWuZG@AXOSzRhg(&w*2$*YQ8*QKA~_tro(U}S&4ta7~uv>CJMULaHFwOP-}OWz)hmc zQdqhkS4vwFsmmC3cQ2$xEm^VoTq;fq8#G^}>h8U@iY50f!`A3nNulKC!78sdZ#lzq z>i~zFl4-$s{H0RHW*W`s;tQS06py`xAoqndmK6oi4JKCU#=Ti%yhn8h+R5qicyT^o zonKv!qE#*on8pxhP#c1nfk6u@ZNWFN&P9>~M|U41Afr1M=vr91fYjy5GRc|d;veLY z)-tg!W`}^8z$(XHSHdKa4k3jVE2*i51j7guQH8w-g>M+XMg>{aGh$cM|SF^y&Ya=320*2b`Te$mFzilkbVkAyn3e04Gc zazJ5b?nASnmf&D>PkpYH=gdG8rzgpo%FDc?{y2>=; zJz8_rgnSto-o7(FbVuZ-5{Yj_x|Xm;yf3;G#MH*?>aI}q{%c+B>kTMea15@ON5C~D zt0xAv4@%>fnnieMyclPeg=m6wP`vGgL%{Bc=m{@mU^&tAVS}N;k!@8^dh(Ty(B@A6 zm|e_&JEi6p9d|vo?QU&lIL?a%=4W%LikgOhv;164FWf*oIRZDJ$P~3ZpsyFq?6I%h zQQ7zs9>MLcm)!aF1)0q1o zrviRDI5_xkDVV)*dbPQ5yN)FE*#m{n;sSjhXgl&B_-Os50ynP~@g0+HKjI;*&~%;! zQih3Fy{m=}EtLn*Z}YxzQkHy&9^HR1cYilNo4<5~?d-ezWnGvQ?Xx)fmFnpF6RlGV z^dye!jP?Xe8yn=-R_6V5nh|z&JfX}@sS)Jc8mGdT8vB2T%&u2wSBp_}q++;GmbU&9 jeu-85>xRfgqWus}VjcaC@%!G)qZ84;cF6GV^$`F7HsGrf literal 1373 zcmV-j1)};NiwFSREy`K|1Kn6zZ`(!?e&??k=p`?a1sGrK$_M|J`<2#gv&cQXp_7ce>a z8BQ>Umj^FiO<+RbC*wi5vS^-JI2WoBr+}@qW2JTR)(1I;F#Ktwe=?!4%;dD1xVN=MYfE4*YMnFM#9N+gRVpVf^fzs%PET{qF+BGsTHTOZ!txGH3#Gh8a!e78 zz-dSt>vTndu_q*No6@nPA)?tpz{|zzEq%ku)x{AbOH@4Wk?QDM2try{IKVYPWnYt; z!&M*4Ovk-{Fo-cof9Qf$m_b^PF72(Q4z`bRwD2)jgpeEnk&_fE-a+ z*xS$~s1-15{M6@Kd(MnBVLeG9RE{^buy&(O+Uq#-j{}JPyU=(bCsWG%HTa)smC3v@ zIQpLtJ?s|Su4k!0I|6`pfOMpdJDf~WIqBNor9s=C;Cu>l^yTF1!ecX85YyJ^n4NY) zIrNS%(u#`BI`V_eA8F-`E@3GYmVx|TMN%w*?mlRW*N`c)O!#N+ew9&k=raM{nW5zA zTGxCf${CzxzO+)!B{~ zj;XmtM}1H2x?5Kn%z2r>@^lGx+0f8$*B{IIIS;b8hrk1hOi{Z7`ud7lJ@u74sajvc z6Zr7KOYZ%8aIilrv^(@^CeyU!;oHq#c=M>ZHOYKC4Dx+iwe*|ajiM6|$_1?if7@|r z?qb5Q$HL;11;uYT_fUCM+HWXxbjf^xV%$bp(Ko`*U#@zon74Xx+ z!NGq^!Qv~YSCNNN9)uIJ&EHc zr#->Z#s-CRwS7IG=Y(Ao&nRu4i_p3>CsAD+Sj<)^^eu;Jb f>z2q&p?ed}ViWz2@$13Ny%W*DjOj)%?GXR~Nw}$c From 5e9efd52bfa0443255a6d52f9dcf499fbd15941b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 12:56:18 +0100 Subject: [PATCH 019/214] Initial rocketchat app --- src/freedombone-app-rocketchat | 463 +++++++++++++++++++++++++++++++++ src/freedombone-template | 5 +- src/freedombone-utils-mongodb | 1 + 3 files changed, 468 insertions(+), 1 deletion(-) create mode 100755 src/freedombone-app-rocketchat diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat new file mode 100755 index 00000000..6884b49a --- /dev/null +++ b/src/freedombone-app-rocketchat @@ -0,0 +1,463 @@ +#!/bin/bash +# +# _____ _ _ +# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ +# | __| _| -_| -_| . | . | | . | . | | -_| +# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| +# +# Freedom in the Cloud +# +# License +# ======= +# +# Copyright (C) 2018 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +VARIANTS='full full-vim' + +IN_DEFAULT_INSTALL=0 +SHOW_ON_ABOUT=1 + +ROCKETCHAT_DOMAIN_NAME= +ROCKETCHAT_CODE= +ROCKETCHAT_ONION_PORT=9018 +ROCKETCHAT_REPO="https://github.com/RocketChat/Rocket.Chat" +ROCKETCHAT_COMMIT='08149ebebbe265bce8f06289ad9a2f6bb4b1464b' +ROCKETCHAT_PORT_INTERNAL=3004 + +rocketchat_variables=(ONION_ONLY + ROCKETCHAT_DOMAIN_NAME + ROCKETCHAT_CODE + DDNS_PROVIDER + MY_USERNAME) + +function logging_on_rocketchat { + echo -n '' +} + +function logging_off_rocketchat { + echo -n '' +} + +function remove_user_rocketchat { + remove_username="$1" + + "${PROJECT_NAME}-pass" -u "$remove_username" --rmapp rocketchat +} + +function add_user_rocketchat { + new_username="$1" + new_user_password="$2" + + "${PROJECT_NAME}-pass" -u "$new_username" -a rocketchat -p "$new_user_password" + echo '0' +} + +function install_interactive_rocketchat { + if [ ! "$ONION_ONLY" ]; then + ONION_ONLY='no' + fi + + if [[ "$ONION_ONLY" != "no" ]]; then + ROCKETCHAT_DOMAIN_NAME='rocketchat.local' + write_config_param "ROCKETCHAT_DOMAIN_NAME" "$ROCKETCHAT_DOMAIN_NAME" + else + interactive_site_details "rocketchat" "ROCKETCHAT_DOMAIN_NAME" "ROCKETCHAT_CODE" + fi + APP_INSTALLED=1 +} + +function change_password_rocketchat { + curr_username="$1" + new_user_password="$2" + + read_config_param 'ROCKETCHAT_DOMAIN_NAME' + + "${PROJECT_NAME}-pass" -u "$curr_username" -a rocketchat -p "$new_user_password" +} + +function rocketchat_create_database { + if [ -f $IMAGE_PASSWORD_FILE ]; then + ROCKETCHAT_ADMIN_PASSWORD="$(printf "%d" "$(cat "")")" + else + if [ ! $ROCKETCHAT_ADMIN_PASSWORD ]; then + ROCKETCHAT_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})" + fi + fi + if [ ! $ROCKETCHAT_ADMIN_PASSWORD ]; then + return + fi + + create_database_mongodb rocketchat "$ROCKETCHAT_ADMIN_PASSWORD" $MY_USERNAME +} + +function reconfigure_rocketchat { + # This is used if you need to switch identity. Dump old keys and generate new ones + echo -n '' +} + +function configure_interactive_rocketchat { + W=(1 $"Option 1" + 2 $"Option 2") + + while true + do + # shellcheck disable=SC2068 + selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"rocketchat" --menu $"Choose an operation, or ESC for main menu:" 14 70 3 "${W[@]}" 3>&2 2>&1 1>&3) + + if [ ! "$selection" ]; then + break + fi + case $selection in + 1) # call some function for option 1 + ;; + 2) # call some function for option 2 + ;; + esac + done +} + +function upgrade_rocketchat { + CURR_ROCKETCHAT_COMMIT=$(get_completion_param "rocketchat commit") + if [[ "$CURR_ROCKETCHAT_COMMIT" == "$ROCKETCHAT_COMMIT" ]]; then + return + fi + + if grep -q "rocketchat domain" "$COMPLETION_FILE"; then + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + fi + + # update to the next commit + set_repo_commit "/etc/rocketchat" "rocketchat commit" "$ROCKETCHAT_COMMIT" "$ROCKETCHAT_REPO" + chown -R rocketchat:rocketchat "/etc/rocketchat" + + systemctl restart rocketchat +} + +function backup_local_rocketchat { + ROCKETCHAT_DOMAIN_NAME='rocketchat' + if grep -q "rocketchat domain" "$COMPLETION_FILE"; then + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + fi + + source_directory=/etc/rocketchat + + suspend_site "${ROCKETCHAT_DOMAIN_NAME}" + + systemctl stop rocketchat + + dest_directory=rocketchat + backup_directory_to_usb "$source_directory" $dest_directory + + USE_MONGODB=1 + backup_database_to_usb rocketchat + + restart_site + systemctl start rocketchat +} + +function restore_local_rocketchat { + if ! grep -q "rocketchat domain" "$COMPLETION_FILE"; then + return + fi + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then + return + fi + suspend_site "${ROCKETCHAT_DOMAIN_NAME}" + systemctl stop rocketchat + + temp_restore_dir=/root/temprocketchat + rocketchat_dir=/etc/rocketchat + + rocketchat_create_database + + USE_MONGODB=1 + restore_database rocketchat + if [ -d $temp_restore_dir ]; then + rm -rf $temp_restore_dir + fi + + restore_directory_from_usb $temp_restore_dir rocketchat + if [ -d $temp_restore_dir ]; then + if [ -d "$temp_restore_dir$rocketchat_dir" ]; then + cp -rp "$temp_restore_dir$rocketchat_dir"/* "$rocketchat_dir"/ + else + if [ ! -d "$rocketchat_dir" ]; then + mkdir "$rocketchat_dir" + fi + cp -rp "$temp_restore_dir"/* "$rocketchat_dir"/ + fi + chown -R rocketchat:rocketchat "$rocketchat_dir" + rm -rf $temp_restore_dir + fi + systemctl start rocketchat + + restart_site +} + +function backup_remote_rocketchat { + ROCKETCHAT_DOMAIN_NAME='rocketchat' + if grep -q "rocketchat domain" "$COMPLETION_FILE"; then + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + fi + + source_directory=/etc/rocketchat + + suspend_site "${ROCKETCHAT_DOMAIN_NAME}" + systemctl stop rocketchat + + dest_directory=rocketchat + backup_directory_to_friend "$source_directory" $dest_directory + USE_MONGODB=1 + backup_database_to_friend rocketchat + + + systemctl start rocketchat + + restart_site +} + +function restore_remote_rocketchat { + if ! grep -q "rocketchat domain" "$COMPLETION_FILE"; then + return + fi + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then + return + fi + suspend_site "${ROCKETCHAT_DOMAIN_NAME}" + systemctl stop rocketchat + + temp_restore_dir=/root/temprocketchat + rocketchat_dir=/etc/rocketchat + + rocketchat_create_database + + USE_MONGODB=1 + restore_database_from_friend rocketchat + if [ -d "$temp_restore_dir" ]; then + rm -rf $temp_restore_dir + fi + + restore_directory_from_friend $temp_restore_dir rocketchat + if [ -d $temp_restore_dir ]; then + if [ -d "$temp_restore_dir$rocketchat_dir" ]; then + cp -rp "$temp_restore_dir$rocketchat_dir"/* "$rocketchat_dir"/ + else + if [ ! -d "$rocketchat_dir" ]; then + mkdir "$rocketchat_dir" + fi + cp -rp $temp_restore_dir/* "$rocketchat_dir"/ + fi + chown -R rocketchat:rocketchat "$rocketchat_dir" + rm -rf $temp_restore_dir + fi + systemctl start rocketchat + + restart_site +} + +function remove_rocketchat { + nginx_dissite "$ROCKETCHAT_DOMAIN_NAME" + remove_certs "$ROCKETCHAT_DOMAIN_NAME" + + if [ -f /etc/systemd/system/rocketchat.service ]; then + systemctl stop rocketchat + systemctl disable rocketchat + rm /etc/systemd/system/rocketchat.service + fi + userdel -r rocketchat + remove_nodejs rocketchat + + + if [ -d "/var/www/$ROCKETCHAT_DOMAIN_NAME" ]; then + rm -rf "/var/www/$ROCKETCHAT_DOMAIN_NAME" + fi + if [ -f "/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME" ]; then + rm "/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME" + fi + drop_database_mongodb rocketchat + remove_onion_service rocketchat "${ROCKETCHAT_ONION_PORT}" + if grep -q "rocketchat" /etc/crontab; then + sed -i "/rocketchat/d" /etc/crontab + fi + remove_app rocketchat + remove_completion_param install_rocketchat + sed -i '/rocketchat/d' "$COMPLETION_FILE" + + remove_ddns_domain "$ROCKETCHAT_DOMAIN_NAME" +} + +function install_rocketchat { + apt-get install -yq curl graphicsmagick + + install_mongodb + + install_nodejs rocketchat + if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then + echo $'No domain name was given' + exit 3568356 + fi + + if [ -d "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" ]; then + rm -rf "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" + fi + if [ -d /repos/rocketchat ]; then + mkdir "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" + cp -r -p /repos/rocketchat/. "/etc/rocketchat" + cd "/etc/rocketchat" || exit 36487365 + git pull + else + git_clone "$ROCKETCHAT_REPO" "/etc/rocketchat" + fi + + if [ ! -d "/etc/rocketchat" ]; then + echo $'Unable to clone rocketchat repo' + exit 87525 + fi + + cd "/etc/rocketchat" || exit 3463754637 + git checkout "$ROCKETCHAT_COMMIT" -b "$ROCKETCHAT_COMMIT" + set_completion_param "rocketchat commit" "$ROCKETCHAT_COMMIT" + + chmod g+w "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" + chown -R www-data:www-data "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" + + rocketchat_create_database + + add_ddns_domain "$ROCKETCHAT_DOMAIN_NAME" + + ROCKETCHAT_ONION_HOSTNAME=$(add_onion_service rocketchat 80 "${ROCKETCHAT_ONION_PORT}") + + rocketchat_nginx_site=/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME + if [[ "$ONION_ONLY" == "no" ]]; then + nginx_http_redirect "$ROCKETCHAT_DOMAIN_NAME" "index index.html" + { echo 'server {'; + echo ' listen 443 ssl;'; + echo ' #listen [::]:443 ssl;'; + echo " server_name $ROCKETCHAT_DOMAIN_NAME;"; + echo ''; } >> "$rocketchat_nginx_site" + nginx_compress "$ROCKETCHAT_DOMAIN_NAME" + echo '' >> "$rocketchat_nginx_site" + echo ' # Security' >> "$rocketchat_nginx_site" + nginx_ssl "$ROCKETCHAT_DOMAIN_NAME" + + nginx_security_options "$ROCKETCHAT_DOMAIN_NAME" + + { echo ' add_header Strict-Transport-Security max-age=15768000;'; + echo ''; + echo ' # Logs'; + echo ' access_log /dev/null;'; + echo ' error_log /dev/null;'; + echo ''; + echo ' # Root'; + echo " root /var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs;"; + echo ''; + echo ' index index.html;'; + echo ' # Location'; + echo ' location / {'; } >> "$rocketchat_nginx_site" + nginx_limits "$ROCKETCHAT_DOMAIN_NAME" '15m' + { echo " proxy_pass http://localhost:$ROCKETCHAT_PORT_INTERNAL;"; + echo ' proxy_http_version 1.1;'; + echo " proxy_set_header Upgrade \$http_upgrade;"; + echo " proxy_set_header Connection \"upgrade\";"; + echo " proxy_set_header Host \$http_host;"; + echo ''; + echo " proxy_set_header X-Real-IP \$remote_addr;"; + echo " proxy_set_header X-Forward-For \$proxy_add_x_forwarded_for;"; + echo ' proxy_set_header X-Forward-Proto http;'; + echo ' proxy_set_header X-Nginx-Proxy true;'; + echo ''; + echo ' proxy_redirect off;'; + echo ' }'; + echo '}'; } >> "$rocketchat_nginx_site" + else + echo -n '' > "$rocketchat_nginx_site" + fi + { echo 'server {'; + echo " listen 127.0.0.1:$ROCKETCHAT_ONION_PORT default_server;"; + echo " server_name $ROCKETCHAT_ONION_HOSTNAME;"; + echo ''; } >> "$rocketchat_nginx_site" + nginx_compress "$ROCKETCHAT_DOMAIN_NAME" + echo '' >> "$rocketchat_nginx_site" + nginx_security_options "$ROCKETCHAT_DOMAIN_NAME" + { echo ''; + echo ' # Logs'; + echo ' access_log /dev/null;'; + echo ' error_log /dev/null;'; + echo ''; + echo ' # Root'; + echo " root /var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs;"; + echo ''; + echo ' index index.html;'; + echo ' # Location'; + echo ' location / {'; } >> "$rocketchat_nginx_site" + nginx_limits "$ROCKETCHAT_DOMAIN_NAME" '15m' + { echo " proxy_pass http://localhost:$ROCKETCHAT_PORT_INTERNAL;"; + echo ' proxy_http_version 1.1;'; + echo " proxy_set_header Upgrade \$http_upgrade;"; + echo " proxy_set_header Connection \"upgrade\";"; + echo " proxy_set_header Host \$http_host;"; + echo ''; + echo " proxy_set_header X-Real-IP \$remote_addr;"; + echo " proxy_set_header X-Forward-For \$proxy_add_x_forwarded_for;"; + echo ' proxy_set_header X-Forward-Proto http;'; + echo ' proxy_set_header X-Nginx-Proxy true;'; + echo ''; + echo ' proxy_redirect off;'; + echo ' }'; + echo '}'; } >> "$rocketchat_nginx_site" + + adduser --system --home="/etc/rocketchat" --group rocketchat + + { echo '[Unit]'; + echo 'Description=rocketchat'; + echo 'After=syslog.target'; + echo 'After=network.target'; + echo ''; + echo '[Service]'; + echo 'Type=simple'; + echo 'User=rocketchat'; + echo 'Group=rocketchat'; + echo 'WorkingDirectory=/etc/rocketchat'; + echo 'ExecStart=/usr/local/bin/node main.js'; + echo 'Environment=USER=rocketchat'; + echo 'Restart=always'; + echo 'StandardError=syslog'; + echo 'Environment=NODE_ENV=production'; + echo "Environment=PORT=${ROCKETCHAT_PORT_INTERNAL}"; + echo "Environment=ROOT_URL=http://localhost:${ROCKETCHAT_PORT_INTERNAL}"; + echo "Environment=MONGO_URL=mongodb://mongo:${MONGODB_PORT}/rocketchat"; + echo ''; + echo '[Install]'; + echo 'WantedBy=multi-user.target'; } >> "/etc/systemd/system/rocketchat.service" + systemctl enable rocketchat + chown -R rocketchat:rocketchat "/etc/rocketchat" + systemctl start rocketchat + + create_site_certificate "$ROCKETCHAT_DOMAIN_NAME" 'yes' + + nginx_ensite "$ROCKETCHAT_DOMAIN_NAME" + + systemctl restart nginx + + "${PROJECT_NAME}-pass" -u "$MY_USERNAME" -a rocketchat -p "$ROCKETCHAT_ADMIN_PASSWORD" + set_completion_param "rocketchat domain" "$ROCKETCHAT_DOMAIN_NAME" + + APP_INSTALLED=1 +} + +# NOTE: deliberately there is no "exit 0" diff --git a/src/freedombone-template b/src/freedombone-template index e39df783..faffd9b9 100755 --- a/src/freedombone-template +++ b/src/freedombone-template @@ -398,6 +398,9 @@ else echo " set_repo_commit \"${app_dir}\" \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \"\$${app_name_upper}_REPO\"" echo " chown -R ${app_name}:${app_name} \"${app_dir}\"" fi +if [ $app_daemon ]; then + echo " systemctl restart ${app_name}" +fi echo '}' echo '' echo "function backup_local_${app_name} {" @@ -901,7 +904,7 @@ if [ $app_webui ]; then echo " { echo \" try_files \\\$uri \\\$uri/ index.php?\\\$args;\";" fi else - echo " echo \" proxy_pass http://localhost:\$${app_name_upper}_PORT_INTERNAL;\";" + echo " { echo \" proxy_pass http://localhost:\$${app_name_upper}_PORT_INTERNAL;\";" fi echo " echo ' }';" echo " echo '}'; } >> \"\$${app_name}_nginx_site\"" diff --git a/src/freedombone-utils-mongodb b/src/freedombone-utils-mongodb index 8f7c8484..1448b323 100755 --- a/src/freedombone-utils-mongodb +++ b/src/freedombone-utils-mongodb @@ -29,6 +29,7 @@ # Set this when calling backup and restore commands USE_MONGODB= MONGODB_APPS_FILE=$HOME/.mongodbapps +MONGODB_PORT=27017 function store_original_mongodb_password { if [ ! -f /root/.mongodboriginal ]; then From 5442dd106cdd832e8e18dc016846d9e571e49754 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 13:27:19 +0100 Subject: [PATCH 020/214] Stop exim daemon when removing excess processes --- src/freedombone-base-email | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/freedombone-base-email b/src/freedombone-base-email index a2b2b5aa..71b266ec 100755 --- a/src/freedombone-base-email +++ b/src/freedombone-base-email @@ -1669,7 +1669,9 @@ function prevent_mail_process_overrun { { echo '#!/bin/bash'; echo "exim_ctr=\$(pgrep \"exim4\" | wc -l)"; echo "if [ \"\$exim_ctr\" -gt 5 ]; then"; - echo ' exim -bp | exiqgrep -i | xargs exim -Mrm'; + echo ' systemctl stop exim4'; + echo ' exim -bp | exiqgrep -i | xargs exim -Mrm 2> /dev/null'; + echo ' systemctl start exim4'; echo 'fi'; } > /usr/bin/exim_check chmod +x /usr/bin/exim_check cron_add_mins 5 '/usr/bin/exim_check' From 71c20597424f92252e11aea32775887637600b28 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 13:43:54 +0100 Subject: [PATCH 021/214] Some apps will not install on arm --- src/freedombone-app-rocketchat | 1 + src/freedombone-utils-selector | 91 +++++++++++++++++++++------------- 2 files changed, 57 insertions(+), 35 deletions(-) diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat index 6884b49a..4846952c 100755 --- a/src/freedombone-app-rocketchat +++ b/src/freedombone-app-rocketchat @@ -29,6 +29,7 @@ VARIANTS='full full-vim' IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=1 +NOT_ON_ARM=1 ROCKETCHAT_DOMAIN_NAME= ROCKETCHAT_CODE= diff --git a/src/freedombone-utils-selector b/src/freedombone-utils-selector index 25ed118e..99aaab1b 100755 --- a/src/freedombone-utils-selector +++ b/src/freedombone-utils-selector @@ -286,6 +286,19 @@ function app_not_on_onion_only { echo "1" } +function app_not_on_arm { + app_name="$1" + + if grep -q "NOT_ON_ARM=1" "/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}"; then + archtype=$(uname -m) + if [[ "$archtype" == 'arm'* ]]; then + echo "0" + return + fi + fi + echo "1" +} + function enough_ram_for_app { app_name="$1" @@ -320,10 +333,12 @@ function detect_apps { app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') if [[ $(enough_ram_for_app "$app_name") == "0" ]]; then if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then - # shellcheck disable=SC2068 - if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then - APPS_AVAILABLE+=("${app_name}") - APPS_CHOSEN+=("0") + if [[ $(app_not_on_arm "$app_name") != "0" ]]; then + # shellcheck disable=SC2068 + if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then + APPS_AVAILABLE+=("${app_name}") + APPS_CHOSEN+=("0") + fi fi fi fi @@ -356,16 +371,18 @@ function detect_installable_apps { if [[ $(enough_ram_for_app "$app_name") == "0" ]]; then if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then - # shellcheck disable=SC2068 - if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then - variants_list=$(app_variants "$filename") - # check for empty string - if [ ${#variants_list} -gt 0 ]; then - APPS_AVAILABLE+=("${app_name}") - APPS_CHOSEN+=("0") - APPS_INSTALLED+=("$(app_is_installed "$app_name")") - if [[ $(app_is_installed "$app_name") == "1" ]]; then - APPS_INSTALLED_NAMES+=("$app_name") + if [[ $(app_not_on_arm "$app_name") != "0" ]]; then + # shellcheck disable=SC2068 + if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then + variants_list=$(app_variants "$filename") + # check for empty string + if [ ${#variants_list} -gt 0 ]; then + APPS_AVAILABLE+=("${app_name}") + APPS_CHOSEN+=("0") + APPS_INSTALLED+=("$(app_is_installed "$app_name")") + if [[ $(app_is_installed "$app_name") == "1" ]]; then + APPS_INSTALLED_NAMES+=("$app_name") + fi fi fi fi @@ -392,13 +409,15 @@ function detect_installed_apps { if [[ $(enough_ram_for_app "$app_name") == "0" ]]; then if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then - if [[ $(app_is_installed "$app_name") == "1" ]]; then - # shellcheck disable=SC2068 - if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then - variants_list=$(app_variants "$filename") - if [ ${#variants_list} -gt 0 ]; then - APPS_AVAILABLE+=("${app_name}") - APPS_INSTALLED_NAMES+=("$app_name") + if [[ $(app_not_on_arm "$app_name") != "0" ]]; then + if [[ $(app_is_installed "$app_name") == "1" ]]; then + # shellcheck disable=SC2068 + if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then + variants_list=$(app_variants "$filename") + if [ ${#variants_list} -gt 0 ]; then + APPS_AVAILABLE+=("${app_name}") + APPS_INSTALLED_NAMES+=("$app_name") + fi fi fi fi @@ -431,26 +450,28 @@ function choose_apps_for_variant { app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') if [[ $(enough_ram_for_app "$app_name") == "0" ]]; then if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then - # shellcheck disable=SC2068 - if item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then - if grep -q "VARIANTS=" "${filename}"; then - variants_list=$(app_variants "$filename") - if [[ "${variants_list}" == 'all'* || \ - "${variants_list}" == "$variant_name" || \ - "${variants_list}" == "$variant_name "* || \ - "${variants_list}" == *" $variant_name "* || \ - "${variants_list}" == *" $variant_name" ]]; then - if [[ $(app_is_removed "${a}") == "0" ]]; then - #echo $"${app_name} chosen" - APPS_CHOSEN+=("1") + if [[ $(app_not_on_arm "$app_name") != "0" ]]; then + # shellcheck disable=SC2068 + if item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then + if grep -q "VARIANTS=" "${filename}"; then + variants_list=$(app_variants "$filename") + if [[ "${variants_list}" == 'all'* || \ + "${variants_list}" == "$variant_name" || \ + "${variants_list}" == "$variant_name "* || \ + "${variants_list}" == *" $variant_name "* || \ + "${variants_list}" == *" $variant_name" ]]; then + if [[ $(app_is_removed "${a}") == "0" ]]; then + #echo $"${app_name} chosen" + APPS_CHOSEN+=("1") + else + APPS_CHOSEN+=("0") + fi else APPS_CHOSEN+=("0") fi else APPS_CHOSEN+=("0") fi - else - APPS_CHOSEN+=("0") fi fi fi From 68f89d655a566750370b2edca98389ddac4afa91 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 13:51:23 +0100 Subject: [PATCH 022/214] Set some app flags --- src/freedombone-app-jitsi | 1 + src/freedombone-app-peertube | 1 + 2 files changed, 2 insertions(+) diff --git a/src/freedombone-app-jitsi b/src/freedombone-app-jitsi index 5250ec5c..dde625c7 100755 --- a/src/freedombone-app-jitsi +++ b/src/freedombone-app-jitsi @@ -33,6 +33,7 @@ VARIANTS="" IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=0 NOT_ON_ONION=1 +NOT_ON_ARM=1 VIDEOBRIDGE_PORT=5347 JITSI_ONION_PORT=8102 diff --git a/src/freedombone-app-peertube b/src/freedombone-app-peertube index f98bb178..aed36c69 100755 --- a/src/freedombone-app-peertube +++ b/src/freedombone-app-peertube @@ -33,6 +33,7 @@ VARIANTS="full full-vim media" IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=1 +NOT_ON_ONION=1 PEERTUBE_DOMAIN_NAME= PEERTUBE_CODE= From 3ffb909119a4b79eace374d38c09f6d69f9a83a9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 14:34:44 +0100 Subject: [PATCH 023/214] Check that rocketchat installs --- src/freedombone-app-rocketchat | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat index 4846952c..eadbea97 100755 --- a/src/freedombone-app-rocketchat +++ b/src/freedombone-app-rocketchat @@ -339,6 +339,11 @@ function install_rocketchat { rocketchat_create_database + cd "/etc/rocketchat" || exit 46327437 + if ! npm install; then + exit 36483563 + fi + add_ddns_domain "$ROCKETCHAT_DOMAIN_NAME" ROCKETCHAT_ONION_HOSTNAME=$(add_onion_service rocketchat 80 "${ROCKETCHAT_ONION_PORT}") From 89be34759630ca20cd968c576a7b0acc7a23e358 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 15:08:37 +0100 Subject: [PATCH 024/214] Remove rocketchat and meteor Meteor is genuinely hard to install and I don't regard curl | bash as an adequate or safe install method --- src/freedombone-app-rocketchat | 469 -------------------------------- src/freedombone-image-customise | 2 - src/freedombone-utils-meteor | 216 --------------- 3 files changed, 687 deletions(-) delete mode 100755 src/freedombone-app-rocketchat delete mode 100755 src/freedombone-utils-meteor diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat deleted file mode 100755 index eadbea97..00000000 --- a/src/freedombone-app-rocketchat +++ /dev/null @@ -1,469 +0,0 @@ -#!/bin/bash -# -# _____ _ _ -# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ -# | __| _| -_| -_| . | . | | . | . | | -_| -# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| -# -# Freedom in the Cloud -# -# License -# ======= -# -# Copyright (C) 2018 Bob Mottram -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -VARIANTS='full full-vim' - -IN_DEFAULT_INSTALL=0 -SHOW_ON_ABOUT=1 -NOT_ON_ARM=1 - -ROCKETCHAT_DOMAIN_NAME= -ROCKETCHAT_CODE= -ROCKETCHAT_ONION_PORT=9018 -ROCKETCHAT_REPO="https://github.com/RocketChat/Rocket.Chat" -ROCKETCHAT_COMMIT='08149ebebbe265bce8f06289ad9a2f6bb4b1464b' -ROCKETCHAT_PORT_INTERNAL=3004 - -rocketchat_variables=(ONION_ONLY - ROCKETCHAT_DOMAIN_NAME - ROCKETCHAT_CODE - DDNS_PROVIDER - MY_USERNAME) - -function logging_on_rocketchat { - echo -n '' -} - -function logging_off_rocketchat { - echo -n '' -} - -function remove_user_rocketchat { - remove_username="$1" - - "${PROJECT_NAME}-pass" -u "$remove_username" --rmapp rocketchat -} - -function add_user_rocketchat { - new_username="$1" - new_user_password="$2" - - "${PROJECT_NAME}-pass" -u "$new_username" -a rocketchat -p "$new_user_password" - echo '0' -} - -function install_interactive_rocketchat { - if [ ! "$ONION_ONLY" ]; then - ONION_ONLY='no' - fi - - if [[ "$ONION_ONLY" != "no" ]]; then - ROCKETCHAT_DOMAIN_NAME='rocketchat.local' - write_config_param "ROCKETCHAT_DOMAIN_NAME" "$ROCKETCHAT_DOMAIN_NAME" - else - interactive_site_details "rocketchat" "ROCKETCHAT_DOMAIN_NAME" "ROCKETCHAT_CODE" - fi - APP_INSTALLED=1 -} - -function change_password_rocketchat { - curr_username="$1" - new_user_password="$2" - - read_config_param 'ROCKETCHAT_DOMAIN_NAME' - - "${PROJECT_NAME}-pass" -u "$curr_username" -a rocketchat -p "$new_user_password" -} - -function rocketchat_create_database { - if [ -f $IMAGE_PASSWORD_FILE ]; then - ROCKETCHAT_ADMIN_PASSWORD="$(printf "%d" "$(cat "")")" - else - if [ ! $ROCKETCHAT_ADMIN_PASSWORD ]; then - ROCKETCHAT_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})" - fi - fi - if [ ! $ROCKETCHAT_ADMIN_PASSWORD ]; then - return - fi - - create_database_mongodb rocketchat "$ROCKETCHAT_ADMIN_PASSWORD" $MY_USERNAME -} - -function reconfigure_rocketchat { - # This is used if you need to switch identity. Dump old keys and generate new ones - echo -n '' -} - -function configure_interactive_rocketchat { - W=(1 $"Option 1" - 2 $"Option 2") - - while true - do - # shellcheck disable=SC2068 - selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"rocketchat" --menu $"Choose an operation, or ESC for main menu:" 14 70 3 "${W[@]}" 3>&2 2>&1 1>&3) - - if [ ! "$selection" ]; then - break - fi - case $selection in - 1) # call some function for option 1 - ;; - 2) # call some function for option 2 - ;; - esac - done -} - -function upgrade_rocketchat { - CURR_ROCKETCHAT_COMMIT=$(get_completion_param "rocketchat commit") - if [[ "$CURR_ROCKETCHAT_COMMIT" == "$ROCKETCHAT_COMMIT" ]]; then - return - fi - - if grep -q "rocketchat domain" "$COMPLETION_FILE"; then - ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") - fi - - # update to the next commit - set_repo_commit "/etc/rocketchat" "rocketchat commit" "$ROCKETCHAT_COMMIT" "$ROCKETCHAT_REPO" - chown -R rocketchat:rocketchat "/etc/rocketchat" - - systemctl restart rocketchat -} - -function backup_local_rocketchat { - ROCKETCHAT_DOMAIN_NAME='rocketchat' - if grep -q "rocketchat domain" "$COMPLETION_FILE"; then - ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") - fi - - source_directory=/etc/rocketchat - - suspend_site "${ROCKETCHAT_DOMAIN_NAME}" - - systemctl stop rocketchat - - dest_directory=rocketchat - backup_directory_to_usb "$source_directory" $dest_directory - - USE_MONGODB=1 - backup_database_to_usb rocketchat - - restart_site - systemctl start rocketchat -} - -function restore_local_rocketchat { - if ! grep -q "rocketchat domain" "$COMPLETION_FILE"; then - return - fi - ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") - if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then - return - fi - suspend_site "${ROCKETCHAT_DOMAIN_NAME}" - systemctl stop rocketchat - - temp_restore_dir=/root/temprocketchat - rocketchat_dir=/etc/rocketchat - - rocketchat_create_database - - USE_MONGODB=1 - restore_database rocketchat - if [ -d $temp_restore_dir ]; then - rm -rf $temp_restore_dir - fi - - restore_directory_from_usb $temp_restore_dir rocketchat - if [ -d $temp_restore_dir ]; then - if [ -d "$temp_restore_dir$rocketchat_dir" ]; then - cp -rp "$temp_restore_dir$rocketchat_dir"/* "$rocketchat_dir"/ - else - if [ ! -d "$rocketchat_dir" ]; then - mkdir "$rocketchat_dir" - fi - cp -rp "$temp_restore_dir"/* "$rocketchat_dir"/ - fi - chown -R rocketchat:rocketchat "$rocketchat_dir" - rm -rf $temp_restore_dir - fi - systemctl start rocketchat - - restart_site -} - -function backup_remote_rocketchat { - ROCKETCHAT_DOMAIN_NAME='rocketchat' - if grep -q "rocketchat domain" "$COMPLETION_FILE"; then - ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") - fi - - source_directory=/etc/rocketchat - - suspend_site "${ROCKETCHAT_DOMAIN_NAME}" - systemctl stop rocketchat - - dest_directory=rocketchat - backup_directory_to_friend "$source_directory" $dest_directory - USE_MONGODB=1 - backup_database_to_friend rocketchat - - - systemctl start rocketchat - - restart_site -} - -function restore_remote_rocketchat { - if ! grep -q "rocketchat domain" "$COMPLETION_FILE"; then - return - fi - ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") - if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then - return - fi - suspend_site "${ROCKETCHAT_DOMAIN_NAME}" - systemctl stop rocketchat - - temp_restore_dir=/root/temprocketchat - rocketchat_dir=/etc/rocketchat - - rocketchat_create_database - - USE_MONGODB=1 - restore_database_from_friend rocketchat - if [ -d "$temp_restore_dir" ]; then - rm -rf $temp_restore_dir - fi - - restore_directory_from_friend $temp_restore_dir rocketchat - if [ -d $temp_restore_dir ]; then - if [ -d "$temp_restore_dir$rocketchat_dir" ]; then - cp -rp "$temp_restore_dir$rocketchat_dir"/* "$rocketchat_dir"/ - else - if [ ! -d "$rocketchat_dir" ]; then - mkdir "$rocketchat_dir" - fi - cp -rp $temp_restore_dir/* "$rocketchat_dir"/ - fi - chown -R rocketchat:rocketchat "$rocketchat_dir" - rm -rf $temp_restore_dir - fi - systemctl start rocketchat - - restart_site -} - -function remove_rocketchat { - nginx_dissite "$ROCKETCHAT_DOMAIN_NAME" - remove_certs "$ROCKETCHAT_DOMAIN_NAME" - - if [ -f /etc/systemd/system/rocketchat.service ]; then - systemctl stop rocketchat - systemctl disable rocketchat - rm /etc/systemd/system/rocketchat.service - fi - userdel -r rocketchat - remove_nodejs rocketchat - - - if [ -d "/var/www/$ROCKETCHAT_DOMAIN_NAME" ]; then - rm -rf "/var/www/$ROCKETCHAT_DOMAIN_NAME" - fi - if [ -f "/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME" ]; then - rm "/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME" - fi - drop_database_mongodb rocketchat - remove_onion_service rocketchat "${ROCKETCHAT_ONION_PORT}" - if grep -q "rocketchat" /etc/crontab; then - sed -i "/rocketchat/d" /etc/crontab - fi - remove_app rocketchat - remove_completion_param install_rocketchat - sed -i '/rocketchat/d' "$COMPLETION_FILE" - - remove_ddns_domain "$ROCKETCHAT_DOMAIN_NAME" -} - -function install_rocketchat { - apt-get install -yq curl graphicsmagick - - install_mongodb - - install_nodejs rocketchat - if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then - echo $'No domain name was given' - exit 3568356 - fi - - if [ -d "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" ]; then - rm -rf "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" - fi - if [ -d /repos/rocketchat ]; then - mkdir "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" - cp -r -p /repos/rocketchat/. "/etc/rocketchat" - cd "/etc/rocketchat" || exit 36487365 - git pull - else - git_clone "$ROCKETCHAT_REPO" "/etc/rocketchat" - fi - - if [ ! -d "/etc/rocketchat" ]; then - echo $'Unable to clone rocketchat repo' - exit 87525 - fi - - cd "/etc/rocketchat" || exit 3463754637 - git checkout "$ROCKETCHAT_COMMIT" -b "$ROCKETCHAT_COMMIT" - set_completion_param "rocketchat commit" "$ROCKETCHAT_COMMIT" - - chmod g+w "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" - chown -R www-data:www-data "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" - - rocketchat_create_database - - cd "/etc/rocketchat" || exit 46327437 - if ! npm install; then - exit 36483563 - fi - - add_ddns_domain "$ROCKETCHAT_DOMAIN_NAME" - - ROCKETCHAT_ONION_HOSTNAME=$(add_onion_service rocketchat 80 "${ROCKETCHAT_ONION_PORT}") - - rocketchat_nginx_site=/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME - if [[ "$ONION_ONLY" == "no" ]]; then - nginx_http_redirect "$ROCKETCHAT_DOMAIN_NAME" "index index.html" - { echo 'server {'; - echo ' listen 443 ssl;'; - echo ' #listen [::]:443 ssl;'; - echo " server_name $ROCKETCHAT_DOMAIN_NAME;"; - echo ''; } >> "$rocketchat_nginx_site" - nginx_compress "$ROCKETCHAT_DOMAIN_NAME" - echo '' >> "$rocketchat_nginx_site" - echo ' # Security' >> "$rocketchat_nginx_site" - nginx_ssl "$ROCKETCHAT_DOMAIN_NAME" - - nginx_security_options "$ROCKETCHAT_DOMAIN_NAME" - - { echo ' add_header Strict-Transport-Security max-age=15768000;'; - echo ''; - echo ' # Logs'; - echo ' access_log /dev/null;'; - echo ' error_log /dev/null;'; - echo ''; - echo ' # Root'; - echo " root /var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs;"; - echo ''; - echo ' index index.html;'; - echo ' # Location'; - echo ' location / {'; } >> "$rocketchat_nginx_site" - nginx_limits "$ROCKETCHAT_DOMAIN_NAME" '15m' - { echo " proxy_pass http://localhost:$ROCKETCHAT_PORT_INTERNAL;"; - echo ' proxy_http_version 1.1;'; - echo " proxy_set_header Upgrade \$http_upgrade;"; - echo " proxy_set_header Connection \"upgrade\";"; - echo " proxy_set_header Host \$http_host;"; - echo ''; - echo " proxy_set_header X-Real-IP \$remote_addr;"; - echo " proxy_set_header X-Forward-For \$proxy_add_x_forwarded_for;"; - echo ' proxy_set_header X-Forward-Proto http;'; - echo ' proxy_set_header X-Nginx-Proxy true;'; - echo ''; - echo ' proxy_redirect off;'; - echo ' }'; - echo '}'; } >> "$rocketchat_nginx_site" - else - echo -n '' > "$rocketchat_nginx_site" - fi - { echo 'server {'; - echo " listen 127.0.0.1:$ROCKETCHAT_ONION_PORT default_server;"; - echo " server_name $ROCKETCHAT_ONION_HOSTNAME;"; - echo ''; } >> "$rocketchat_nginx_site" - nginx_compress "$ROCKETCHAT_DOMAIN_NAME" - echo '' >> "$rocketchat_nginx_site" - nginx_security_options "$ROCKETCHAT_DOMAIN_NAME" - { echo ''; - echo ' # Logs'; - echo ' access_log /dev/null;'; - echo ' error_log /dev/null;'; - echo ''; - echo ' # Root'; - echo " root /var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs;"; - echo ''; - echo ' index index.html;'; - echo ' # Location'; - echo ' location / {'; } >> "$rocketchat_nginx_site" - nginx_limits "$ROCKETCHAT_DOMAIN_NAME" '15m' - { echo " proxy_pass http://localhost:$ROCKETCHAT_PORT_INTERNAL;"; - echo ' proxy_http_version 1.1;'; - echo " proxy_set_header Upgrade \$http_upgrade;"; - echo " proxy_set_header Connection \"upgrade\";"; - echo " proxy_set_header Host \$http_host;"; - echo ''; - echo " proxy_set_header X-Real-IP \$remote_addr;"; - echo " proxy_set_header X-Forward-For \$proxy_add_x_forwarded_for;"; - echo ' proxy_set_header X-Forward-Proto http;'; - echo ' proxy_set_header X-Nginx-Proxy true;'; - echo ''; - echo ' proxy_redirect off;'; - echo ' }'; - echo '}'; } >> "$rocketchat_nginx_site" - - adduser --system --home="/etc/rocketchat" --group rocketchat - - { echo '[Unit]'; - echo 'Description=rocketchat'; - echo 'After=syslog.target'; - echo 'After=network.target'; - echo ''; - echo '[Service]'; - echo 'Type=simple'; - echo 'User=rocketchat'; - echo 'Group=rocketchat'; - echo 'WorkingDirectory=/etc/rocketchat'; - echo 'ExecStart=/usr/local/bin/node main.js'; - echo 'Environment=USER=rocketchat'; - echo 'Restart=always'; - echo 'StandardError=syslog'; - echo 'Environment=NODE_ENV=production'; - echo "Environment=PORT=${ROCKETCHAT_PORT_INTERNAL}"; - echo "Environment=ROOT_URL=http://localhost:${ROCKETCHAT_PORT_INTERNAL}"; - echo "Environment=MONGO_URL=mongodb://mongo:${MONGODB_PORT}/rocketchat"; - echo ''; - echo '[Install]'; - echo 'WantedBy=multi-user.target'; } >> "/etc/systemd/system/rocketchat.service" - systemctl enable rocketchat - chown -R rocketchat:rocketchat "/etc/rocketchat" - systemctl start rocketchat - - create_site_certificate "$ROCKETCHAT_DOMAIN_NAME" 'yes' - - nginx_ensite "$ROCKETCHAT_DOMAIN_NAME" - - systemctl restart nginx - - "${PROJECT_NAME}-pass" -u "$MY_USERNAME" -a rocketchat -p "$ROCKETCHAT_ADMIN_PASSWORD" - set_completion_param "rocketchat domain" "$ROCKETCHAT_DOMAIN_NAME" - - APP_INSTALLED=1 -} - -# NOTE: deliberately there is no "exit 0" diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 18fa721d..75ec9e02 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1986,8 +1986,6 @@ image_preinstall_repos() { git clone "$BDSMAIL_REPO" "$rootdir/repos/bdsmail" #git clone "$WEKAN_REPO" "$rootdir/repos/wekan" #git clone "$FLOW_ROUTER_REPO" "$rootdir/repos/flowrouter" - #git clone "$METEOR_USERACCOUNTS_REPO" "$rootdir/repos/meteoruseraccounts" - #git clone "$METEOR_REPO" "$rootdir/repos/meteor" #git clone "$ZERONET_REPO" "$rootdir/repos/zeronet" #git clone "$QTOX_REPO" "$rootdir/repos/qtox" } diff --git a/src/freedombone-utils-meteor b/src/freedombone-utils-meteor deleted file mode 100755 index d98be547..00000000 --- a/src/freedombone-utils-meteor +++ /dev/null @@ -1,216 +0,0 @@ -#!/bin/bash -# _____ _ _ -# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ -# | __| _| -_| -_| . | . | | . | . | | -_| -# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| -# -# Freedom in the Cloud -# -# Functions for installing meteor -# See meteor.com -# -# License -# ======= -# -# Copyright (C) 2017-2018 Bob Mottram -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -METEOR_RELEASE='1.4.4.1' -METEOR_REPO="https://github.com/meteor/meteor" -METEOR_COMMIT='b52c6587d7542c0f27481a3bee8c65be06068ac1' -METEOR_USERACCOUNTS_REPO="git://github.com/meteor-useraccounts/core.git" -METEOR_USERACCOUNTS_COMMIT='2e8986813b51f321f908d2f6211f6f81f76cd627' - -function meteor_cleanUp { - rm -rf "$TARBALL_FILE" - rm -rf "$INSTALL_TMPDIR" -} - -function install_meteor_script { - meteor_dir="$1" - - if [ ! "$meteor_dir" ]; then - echo $'No meteor install directory specified' - exit 692025 - fi - - if [ ! -d "$meteor_dir" ]; then - echo $'Meteor install directory not found' - exit 845382 - fi - - if [[ "$(arch)" == "arm"* ]]; then - echo 'meteor does not support ARM' - exit 8362952 - fi - if [[ "$(arch)" == "i386" || "$(arch)" == "x86_32" ]]; then - PLATFORM="os.linux.x86_32" - else - PLATFORM="os.linux.x86_64" - fi - - RELEASE="$METEOR_RELEASE" - - DIR_PREFIX="/usr/local" - - TARBALL_URL="https://meteorinstall-4168.kxcdn.com/packages-bootstrap/${RELEASE}/meteor-bootstrap-${PLATFORM}.tar.gz" - INSTALL_TMPDIR="$meteor_dir/.meteor-install-tmp" - TARBALL_FILE="$meteor_dir/.meteor-tarball-tmp" - - # Remove temporary files now in case they exist. - meteor_cleanUp - - if [ -d "$INSTALL_TMPDIR" ]; then - rm -rf "$INSTALL_TMPDIR" - fi - mkdir "$INSTALL_TMPDIR" - - if [ ! -f "${TARBALL_FILE}" ]; then - echo "Downloading Meteor distribution" - # keep trying to curl the file until it works (resuming where possible) - MAX_ATTEMPTS=10 - RETRY_DELAY_SECS=5 - set +e - ATTEMPTS=0 - while [ $ATTEMPTS -lt $MAX_ATTEMPTS ] - do - ATTEMPTS=$((ATTEMPTS + 1)) - - if curl --progress-bar --fail --continue-at - \ - "$TARBALL_URL" --output "$TARBALL_FILE"; then - break - fi - - echo "Retrying download in $RETRY_DELAY_SECS seconds..." - sleep $RETRY_DELAY_SECS - done - fi - - if [ ! -f "${TARBALL_FILE}" ]; then - echo $'meteor tarball could not be downloaded' - exit 7272452 - fi - - tar -xzf "$TARBALL_FILE" -C "$INSTALL_TMPDIR" -o - - if [ ! -f "${INSTALL_TMPDIR}/.meteor/meteor" ]; then - echo $'tarball not extracted' - exit 693252 - fi - - # shellcheck disable=SC2086 - mv ${INSTALL_TMPDIR}/.meteor $meteor_dir - - meteor_cleanUp - - echo '' - echo "Meteor ${RELEASE} has been installed in $meteor_dir/.meteor" - - METEOR_SYMLINK_TARGET="$(readlink "$meteor_dir/.meteor/meteor")" - METEOR_TOOL_DIRECTORY="$(dirname "$METEOR_SYMLINK_TARGET")" - LAUNCHER="$meteor_dir/.meteor/$METEOR_TOOL_DIRECTORY/scripts/admin/launch-meteor" - - if cp "$LAUNCHER" "$DIR_PREFIX/bin/meteor" >/dev/null 2>&1; then - echo "Writing a launcher script to $DIR_PREFIX/bin/meteor for your convenience." - cat <<"EOF" - -To get started fast: - - $ meteor create ~/my_cool_app - $ cd ~/my_cool_app - $ meteor - -Or see the docs at: - - docs.meteor.com - -EOF - elif type sudo >/dev/null 2>&1; then - echo "Writing a launcher script to $DIR_PREFIX/bin/meteor for your convenience." - echo "This may prompt for your password." - - # New macs (10.9+) don't ship with /usr/local, however it is still in - # the default PATH. We still install there, we just need to create the - # directory first. - # XXX this means that we can run sudo too many times. we should never - # run it more than once if it fails the first time - if [ ! -d "$DIR_PREFIX/bin" ] ; then - sudo mkdir -m 755 "$DIR_PREFIX" || true - sudo mkdir -m 755 "$DIR_PREFIX/bin" || true - fi - - if sudo cp "$LAUNCHER" "$DIR_PREFIX/bin/meteor"; then - cat <<"EOF" - -To get started fast: - - $ meteor create ~/my_cool_app - $ cd ~/my_cool_app - $ meteor - -Or see the docs at: - - docs.meteor.com - -EOF - else - cat < Date: Fri, 11 May 2018 15:11:01 +0100 Subject: [PATCH 025/214] Fix static analysis warnings --- src/freedombone-utils-firewall | 52 +++++++++++++++++----------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/freedombone-utils-firewall b/src/freedombone-utils-firewall index a0a505ea..021df7ad 100755 --- a/src/freedombone-utils-firewall +++ b/src/freedombone-utils-firewall @@ -54,10 +54,10 @@ function block_firefox_telemetry { # Within firefox source code see submit_telemetry_data.py if ! grep -q 'telemetry.mozilla' /etc/hosts; then - echo '127.0.0.1 telemetry.mozilla.org' >> /etc/hosts - echo '127.0.0.1 incoming.telemetry.mozilla.org' >> /etc/hosts + echo '127.0.0.1 telemetry.mozilla.org' >> /etc/hosts + echo '127.0.0.1 incoming.telemetry.mozilla.org' >> /etc/hosts fi - + if grep -q "$FIREFOX_TELEMETRY_IP" /etc/firewall.conf; then return fi @@ -360,32 +360,32 @@ function mesh_firewall { FIREWALL_FILENAME="${rootdir}/etc/systemd/system/meshfirewall.service" MESH_FIREWALL_SCRIPT=${rootdir}/usr/bin/mesh-firewall - if ! grep -q 'telemetry.mozilla' ${rootdir}/etc/hosts; then - echo '127.0.0.1 telemetry.mozilla.org' >> ${rootdir}/etc/hosts - echo '127.0.0.1 incoming.telemetry.mozilla.org' >> ${rootdir}/etc/hosts + if ! grep -q 'telemetry.mozilla' "${rootdir}/etc/hosts"; then + echo '127.0.0.1 telemetry.mozilla.org' >> "${rootdir}/etc/hosts" + echo '127.0.0.1 incoming.telemetry.mozilla.org' >> "${rootdir}/etc/hosts" fi - if ! grep -q 'facebook' ${rootdir}/etc/hosts; then - { echo '127.0.0.1 www.facebook.com'; - echo '127.0.0.1 facebook.com'; - echo '127.0.0.1 static.ak.fbcdn.net'; - echo '127.0.0.1 www.static.ak.fbcdn.net'; - echo '127.0.0.1 login.facebook.com'; - echo '127.0.0.1 www.login.facebook.com'; - echo '127.0.0.1 fbcdn.net'; - echo '127.0.0.1 www.fbcdn.net'; - echo '127.0.0.1 fbcdn.com'; - echo '127.0.0.1 www.fbcdn.com'; - echo '127.0.0.1 static.ak.connect.facebook.com'; - echo '127.0.0.1 www.static.ak.connect.facebook.com'; } >> ${rootdir}/etc/hosts + if ! grep -q 'facebook' "${rootdir}/etc/hosts"; then + { echo '127.0.0.1 www.facebook.com'; + echo '127.0.0.1 facebook.com'; + echo '127.0.0.1 static.ak.fbcdn.net'; + echo '127.0.0.1 www.static.ak.fbcdn.net'; + echo '127.0.0.1 login.facebook.com'; + echo '127.0.0.1 www.login.facebook.com'; + echo '127.0.0.1 fbcdn.net'; + echo '127.0.0.1 www.fbcdn.net'; + echo '127.0.0.1 fbcdn.com'; + echo '127.0.0.1 www.fbcdn.com'; + echo '127.0.0.1 static.ak.connect.facebook.com'; + echo '127.0.0.1 www.static.ak.connect.facebook.com'; } >> "${rootdir}/etc/hosts" fi - - if ! grep -q 'google' ${rootdir}/etc/hosts; then - { echo '127.0.0.1 www.google-analytics.com'; - echo '127.0.0.1 google-analytics.com'; - echo '127.0.0.1 ssl.google-analytics.com'; } >> ${rootdir}/etc/hosts - fi - + + if ! grep -q 'google' "${rootdir}/etc/hosts"; then + { echo '127.0.0.1 www.google-analytics.com'; + echo '127.0.0.1 google-analytics.com'; + echo '127.0.0.1 ssl.google-analytics.com'; } >> "${rootdir}/etc/hosts" + fi + { echo '#!/bin/bash'; echo 'iptables -P INPUT ACCEPT'; echo 'ip6tables -P INPUT ACCEPT'; From 2afc36c10c6813f215ffc3244b10e062cdc8fa49 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 17:24:03 +0100 Subject: [PATCH 026/214] gpg public key --- doc/EN/support.org | 4 +- img/pubkey.png | Bin 0 -> 7161 bytes website/EN/support.html | 219 +++++++++++++++++++++++++++++----------- 3 files changed, 161 insertions(+), 62 deletions(-) create mode 100644 img/pubkey.png diff --git a/doc/EN/support.org b/doc/EN/support.org index 33edf7a6..abdf1ddc 100644 --- a/doc/EN/support.org +++ b/doc/EN/support.org @@ -17,7 +17,9 @@ This site can also be accessed via a Tor browser at *http://yjxlc3imv7obva4grjae *Email:* bob@freedombone.net -*PGP/GPG Fingerprint:* 9ABB82C00ABF39F82680487DCC2536191FA7C33F +*PGP/GPG Public key:* +#+attr_html: :width 100% :align center +[[file:images/pubkey.png]] *XMPP:* bob@freedombone.net with OMEMO or OpenPGP diff --git a/img/pubkey.png b/img/pubkey.png new file mode 100644 index 0000000000000000000000000000000000000000..5977be8b6171225d182f985f0ca35044a70df980 GIT binary patch literal 7161 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 literal 0 HcmV?d00001 diff --git a/website/EN/support.html b/website/EN/support.html index 0a32daf1..ea4d177e 100644 --- a/website/EN/support.html +++ b/website/EN/support.html @@ -3,26 +3,33 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - - - - - - + + + + + + - + @@ -97,7 +189,7 @@ @licstart The following is the entire license notice for the JavaScript code in this tag. -Copyright (C) 2012-2013 Free Software Foundation, Inc. +Copyright (C) 2012-2017 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modify it under the terms of the GNU @@ -144,20 +236,19 @@ for the JavaScript code in this tag.
-

logo.png

-
-

Support

+
+

Support

-
-

Contact details

-
+
+

Contact details

+

This site can also be accessed via a Tor browser at http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion

@@ -167,9 +258,14 @@ This site can also be accessed via a Tor browser at +

pubkey.png +

+
+

XMPP: bob@freedombone.net with OMEMO or OpenPGP

@@ -184,21 +280,22 @@ This site can also be accessed via a Tor browser at
-

Things which would be nice to have

-
-
-

Ideas

-
+
+

Things which would be nice to have

+
+
+
+

Ideas

+

Know of some fabulous web system which could run on Freedombone, but currently doesn't? Contact the above, and be prepared to make a compelling argument for why it should be included.

-
-

Money

-
+
+

Money

+
-
-

Testing and reporting bugs

-
+
+

Testing and reporting bugs

+

Testing of the install on different hardware. Also pentesting on test installations to find vulnerabilities.

-
-

Web design and artwork

-
+ -
-

Howto videos

-
+
+

Howto videos

+

If you're good at making videos then a howto for installing Freedombone onto various types of hardware, or testing the mesh system in realistic/exotic scenarios would be good. You could even host videos on PeerTube or Mediagoblin.

-
-

More education and promotion

-
+
+

More education and promotion

+

educate.png @@ -254,18 +351,18 @@ Raising awareness beyond the near zero current level, overcoming fear and parano

-
-

Translations

-
+
+

Translations

+

To add translations modify the json files within the locale subdirectory. Then make a pull request on the Github site.

-
-

Packaging

-
+
+

Packaging

+

Helping to package GNU Social and Hubzilla for Debian would be beneficial.

From b97d1e1d58f9951b7f14bc34cd569947b999d505 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 17:26:51 +0100 Subject: [PATCH 027/214] Less width --- doc/EN/support.org | 2 +- website/EN/support.html | 68 ++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/doc/EN/support.org b/doc/EN/support.org index abdf1ddc..d80e7d0f 100644 --- a/doc/EN/support.org +++ b/doc/EN/support.org @@ -18,7 +18,7 @@ This site can also be accessed via a Tor browser at *http://yjxlc3imv7obva4grjae *Email:* bob@freedombone.net *PGP/GPG Public key:* -#+attr_html: :width 100% :align center +#+attr_html: :width 80% :align center [[file:images/pubkey.png]] *XMPP:* bob@freedombone.net with OMEMO or OpenPGP diff --git a/website/EN/support.html b/website/EN/support.html index ea4d177e..09a92cc0 100644 --- a/website/EN/support.html +++ b/website/EN/support.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,13 +242,13 @@ for the JavaScript code in this tag.

-
-

Support

+
+

Support

-
-

Contact details

-
+
+

Contact details

+

This site can also be accessed via a Tor browser at http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion

@@ -262,7 +262,7 @@ This site can also be accessed via a Tor browser at -

pubkey.png +

pubkey.png

@@ -280,22 +280,22 @@ This site can also be accessed via a Tor browser at -

Things which would be nice to have

-
+
+

Things which would be nice to have

+
-
-

Ideas

-
+
+

Ideas

+

Know of some fabulous web system which could run on Freedombone, but currently doesn't? Contact the above, and be prepared to make a compelling argument for why it should be included.

-
-

Money

-
+
+

Money

+
-
-

Testing and reporting bugs

-
+
+

Testing and reporting bugs

+

Testing of the install on different hardware. Also pentesting on test installations to find vulnerabilities.

-
-

Web design and artwork

-
+ -
-

Howto videos

-
+
+

Howto videos

+

If you're good at making videos then a howto for installing Freedombone onto various types of hardware, or testing the mesh system in realistic/exotic scenarios would be good. You could even host videos on PeerTube or Mediagoblin.

-
-

More education and promotion

-
+
+

More education and promotion

+

educate.png @@ -351,18 +351,18 @@ Raising awareness beyond the near zero current level, overcoming fear and parano

-
-

Translations

-
+
+

Translations

+

To add translations modify the json files within the locale subdirectory. Then make a pull request on the Github site.

-
-

Packaging

-
+
+

Packaging

+

Helping to package GNU Social and Hubzilla for Debian would be beneficial.

From f6857e3b3aa8ed76334a9f5bc2ca229f760b6938 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 17:28:02 +0100 Subject: [PATCH 028/214] Less width --- doc/EN/support.org | 2 +- website/EN/support.html | 68 ++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/doc/EN/support.org b/doc/EN/support.org index d80e7d0f..0e457446 100644 --- a/doc/EN/support.org +++ b/doc/EN/support.org @@ -18,7 +18,7 @@ This site can also be accessed via a Tor browser at *http://yjxlc3imv7obva4grjae *Email:* bob@freedombone.net *PGP/GPG Public key:* -#+attr_html: :width 80% :align center +#+attr_html: :width 60% :align center [[file:images/pubkey.png]] *XMPP:* bob@freedombone.net with OMEMO or OpenPGP diff --git a/website/EN/support.html b/website/EN/support.html index 09a92cc0..c264011b 100644 --- a/website/EN/support.html +++ b/website/EN/support.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,13 +242,13 @@ for the JavaScript code in this tag.

-
-

Support

+
+

Support

-
-

Contact details

-
+
+

Contact details

+
@@ -280,22 +280,22 @@ This site can also be accessed via a Tor browser at -

Things which would be nice to have

-
+
+

Things which would be nice to have

+
-
-

Ideas

-
+
+

Ideas

+

Know of some fabulous web system which could run on Freedombone, but currently doesn't? Contact the above, and be prepared to make a compelling argument for why it should be included.

-
-

Money

-
+
+

Money

+
-
-

Testing and reporting bugs

-
+
+

Testing and reporting bugs

+

Testing of the install on different hardware. Also pentesting on test installations to find vulnerabilities.

-
-

Web design and artwork

-
+ -
-

Howto videos

-
+
+

Howto videos

+

If you're good at making videos then a howto for installing Freedombone onto various types of hardware, or testing the mesh system in realistic/exotic scenarios would be good. You could even host videos on PeerTube or Mediagoblin.

-
-

More education and promotion

-
+
+

More education and promotion

+

educate.png @@ -351,18 +351,18 @@ Raising awareness beyond the near zero current level, overcoming fear and parano

-
-

Translations

-
+
+

Translations

+

To add translations modify the json files within the locale subdirectory. Then make a pull request on the Github site.

-
-

Packaging

-
+
+

Packaging

+

Helping to package GNU Social and Hubzilla for Debian would be beneficial.

From 2921a32cd70219fd0e21e2ca8416406570a6708b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 21:56:43 +0100 Subject: [PATCH 029/214] Remove duckdns Only supports logins with Twitter, Google, Facebook, etc --- src/freedombone-config | 59 ++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/src/freedombone-config b/src/freedombone-config index f9b9aa9a..511c6e95 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -338,21 +338,20 @@ function dynamic_dns_setup { 15 zerigo.com 16 dhis.org 17 nsupdate.info - 18 duckdns.org - 19 loopia.com - 20 namecheap.com - 21 domains.google.com - 22 ovh.com - 23 dtdns.com - 24 giradns.com - 25 duiadns.net - 26 ddnss.de - 27 dynv6.com - 28 ipv4.dynv6.com - 29 default@spdyn.de - 30 strato.com - 31 freemyip.com - 32 cloudxns.net) + 18 loopia.com + 19 namecheap.com + 20 domains.google.com + 21 ovh.com + 22 dtdns.com + 23 giradns.com + 24 duiadns.net + 25 ddnss.de + 26 dynv6.com + 27 ipv4.dynv6.com + 28 default@spdyn.de + 29 strato.com + 30 freemyip.com + 31 cloudxns.net) # shellcheck disable=SC2068 selection=$(dialog --backtitle $"Freedombone Configuration" --title $"Dynamic DNS" --menu $"Choose Dynamic DNS provider, or ESC for none:" 24 60 32 "${W[@]}" 3>&2 2>&1 1>&3) @@ -383,22 +382,20 @@ function dynamic_dns_setup { 15) DDNS_PROVIDER="default@www.zerigo.com";; 16) DDNS_PROVIDER="default@www.dhis.org";; 17) DDNS_PROVIDER="default@nsupdate.info";; - 18) DDNS_PROVIDER="default@duckdns.org";; - 19) DDNS_PROVIDER="default@www.loopia.com";; - 20) DDNS_PROVIDER="default@www.namecheap.com";; - 21) DDNS_PROVIDER="default@domains.google.com";; - 22) DDNS_PROVIDER="default@www.ovh.com";; - 23) DDNS_PROVIDER="default@www.dtdns.com";; - 24) DDNS_PROVIDER="default@giradns.com";; - 25) DDNS_PROVIDER="default@www.duiadns.net";; - 26) DDNS_PROVIDER="default@ddnss.de";; - 27) DDNS_PROVIDER="default@dynv6.com";; - 28) DDNS_PROVIDER="default@ipv4.dynv6.com";; - 29) DDNS_PROVIDER="default@spdyn.de";; - 30) DDNS_PROVIDER="default@www.strato.com";; - 31) DDNS_PROVIDER="default@freemyip.com";; - 32) DDNS_PROVIDER="default@www.cloudxns.net";; - 33) DDNS_PROVIDER="none";; + 18) DDNS_PROVIDER="default@www.loopia.com";; + 19) DDNS_PROVIDER="default@www.namecheap.com";; + 20) DDNS_PROVIDER="default@domains.google.com";; + 21) DDNS_PROVIDER="default@www.ovh.com";; + 22) DDNS_PROVIDER="default@www.dtdns.com";; + 23) DDNS_PROVIDER="default@giradns.com";; + 24) DDNS_PROVIDER="default@www.duiadns.net";; + 25) DDNS_PROVIDER="default@ddnss.de";; + 26) DDNS_PROVIDER="default@dynv6.com";; + 27) DDNS_PROVIDER="default@ipv4.dynv6.com";; + 28) DDNS_PROVIDER="default@spdyn.de";; + 29) DDNS_PROVIDER="default@www.strato.com";; + 30) DDNS_PROVIDER="default@freemyip.com";; + 31) DDNS_PROVIDER="default@www.cloudxns.net";; esac save_configuration_values From 2ddec8b0f265abfb9d6c7b2bee3d93e2b6c516ed Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 22:04:28 +0100 Subject: [PATCH 030/214] tzo.com appears to no longer exist --- src/freedombone-config | 102 ++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/src/freedombone-config b/src/freedombone-config index 511c6e95..b98f0c2b 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -326,32 +326,31 @@ function dynamic_dns_setup { 3 zoneedit.com 4 no-ip.com 5 easydns.com - 6 tzo.com - 7 3322.org - 8 dnsomatic.com - 9 dns.he.net - 10 tunnelbroker.net - 11 dynsip.org - 12 sitelutions.com - 13 dnsexit.com - 14 changeip.com - 15 zerigo.com - 16 dhis.org - 17 nsupdate.info - 18 loopia.com - 19 namecheap.com - 20 domains.google.com - 21 ovh.com - 22 dtdns.com - 23 giradns.com - 24 duiadns.net - 25 ddnss.de - 26 dynv6.com - 27 ipv4.dynv6.com - 28 default@spdyn.de - 29 strato.com - 30 freemyip.com - 31 cloudxns.net) + 6 3322.org + 7 dnsomatic.com + 8 dns.he.net + 9 tunnelbroker.net + 10 dynsip.org + 11 sitelutions.com + 12 dnsexit.com + 13 changeip.com + 14 zerigo.com + 15 dhis.org + 16 nsupdate.info + 17 loopia.com + 18 namecheap.com + 19 domains.google.com + 20 ovh.com + 21 dtdns.com + 22 giradns.com + 23 duiadns.net + 24 ddnss.de + 25 dynv6.com + 26 ipv4.dynv6.com + 27 default@spdyn.de + 28 strato.com + 29 freemyip.com + 30 cloudxns.net) # shellcheck disable=SC2068 selection=$(dialog --backtitle $"Freedombone Configuration" --title $"Dynamic DNS" --menu $"Choose Dynamic DNS provider, or ESC for none:" 24 60 32 "${W[@]}" 3>&2 2>&1 1>&3) @@ -370,32 +369,31 @@ function dynamic_dns_setup { 3) DDNS_PROVIDER="default@www.zoneedit.com";; 4) DDNS_PROVIDER="default@www.no-ip.com";; 5) DDNS_PROVIDER="default@www.easydns.com";; - 6) DDNS_PROVIDER="default@www.tzo.com";; - 7) DDNS_PROVIDER="default@www.3322.org";; - 8) DDNS_PROVIDER="default@www.dnsomatic.com";; - 9) DDNS_PROVIDER="default@dns.he.net";; - 10) DDNS_PROVIDER="default@www.tunnelbroker.net";; - 11) DDNS_PROVIDER="default@www.dynsip.org";; - 12) DDNS_PROVIDER="default@www.sitelutions.com";; - 13) DDNS_PROVIDER="default@www.dnsexit.com";; - 14) DDNS_PROVIDER="default@www.changeip.com";; - 15) DDNS_PROVIDER="default@www.zerigo.com";; - 16) DDNS_PROVIDER="default@www.dhis.org";; - 17) DDNS_PROVIDER="default@nsupdate.info";; - 18) DDNS_PROVIDER="default@www.loopia.com";; - 19) DDNS_PROVIDER="default@www.namecheap.com";; - 20) DDNS_PROVIDER="default@domains.google.com";; - 21) DDNS_PROVIDER="default@www.ovh.com";; - 22) DDNS_PROVIDER="default@www.dtdns.com";; - 23) DDNS_PROVIDER="default@giradns.com";; - 24) DDNS_PROVIDER="default@www.duiadns.net";; - 25) DDNS_PROVIDER="default@ddnss.de";; - 26) DDNS_PROVIDER="default@dynv6.com";; - 27) DDNS_PROVIDER="default@ipv4.dynv6.com";; - 28) DDNS_PROVIDER="default@spdyn.de";; - 29) DDNS_PROVIDER="default@www.strato.com";; - 30) DDNS_PROVIDER="default@freemyip.com";; - 31) DDNS_PROVIDER="default@www.cloudxns.net";; + 6) DDNS_PROVIDER="default@www.3322.org";; + 7) DDNS_PROVIDER="default@www.dnsomatic.com";; + 8) DDNS_PROVIDER="default@dns.he.net";; + 9) DDNS_PROVIDER="default@www.tunnelbroker.net";; + 10) DDNS_PROVIDER="default@www.dynsip.org";; + 11) DDNS_PROVIDER="default@www.sitelutions.com";; + 12) DDNS_PROVIDER="default@www.dnsexit.com";; + 13) DDNS_PROVIDER="default@www.changeip.com";; + 14) DDNS_PROVIDER="default@www.zerigo.com";; + 15) DDNS_PROVIDER="default@www.dhis.org";; + 16) DDNS_PROVIDER="default@nsupdate.info";; + 17) DDNS_PROVIDER="default@www.loopia.com";; + 18) DDNS_PROVIDER="default@www.namecheap.com";; + 19) DDNS_PROVIDER="default@domains.google.com";; + 20) DDNS_PROVIDER="default@www.ovh.com";; + 21) DDNS_PROVIDER="default@www.dtdns.com";; + 22) DDNS_PROVIDER="default@giradns.com";; + 23) DDNS_PROVIDER="default@www.duiadns.net";; + 24) DDNS_PROVIDER="default@ddnss.de";; + 25) DDNS_PROVIDER="default@dynv6.com";; + 26) DDNS_PROVIDER="default@ipv4.dynv6.com";; + 27) DDNS_PROVIDER="default@spdyn.de";; + 28) DDNS_PROVIDER="default@www.strato.com";; + 29) DDNS_PROVIDER="default@freemyip.com";; + 30) DDNS_PROVIDER="default@www.cloudxns.net";; esac save_configuration_values From 4ef9846dd4f3dbaf24cf17059b17fb711bc8231a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 22:07:31 +0100 Subject: [PATCH 031/214] 3322.org appears to no longer exist --- src/freedombone-config | 98 +++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 50 deletions(-) diff --git a/src/freedombone-config b/src/freedombone-config index b98f0c2b..7fd4a614 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -326,31 +326,30 @@ function dynamic_dns_setup { 3 zoneedit.com 4 no-ip.com 5 easydns.com - 6 3322.org - 7 dnsomatic.com - 8 dns.he.net - 9 tunnelbroker.net - 10 dynsip.org - 11 sitelutions.com - 12 dnsexit.com - 13 changeip.com - 14 zerigo.com - 15 dhis.org - 16 nsupdate.info - 17 loopia.com - 18 namecheap.com - 19 domains.google.com - 20 ovh.com - 21 dtdns.com - 22 giradns.com - 23 duiadns.net - 24 ddnss.de - 25 dynv6.com - 26 ipv4.dynv6.com - 27 default@spdyn.de - 28 strato.com - 29 freemyip.com - 30 cloudxns.net) + 6 dnsomatic.com + 7 dns.he.net + 8 tunnelbroker.net + 9 dynsip.org + 10 sitelutions.com + 11 dnsexit.com + 12 changeip.com + 13 zerigo.com + 14 dhis.org + 15 nsupdate.info + 16 loopia.com + 17 namecheap.com + 18 domains.google.com + 19 ovh.com + 20 dtdns.com + 21 giradns.com + 22 duiadns.net + 23 ddnss.de + 24 dynv6.com + 25 ipv4.dynv6.com + 26 default@spdyn.de + 27 strato.com + 28 freemyip.com + 29 cloudxns.net) # shellcheck disable=SC2068 selection=$(dialog --backtitle $"Freedombone Configuration" --title $"Dynamic DNS" --menu $"Choose Dynamic DNS provider, or ESC for none:" 24 60 32 "${W[@]}" 3>&2 2>&1 1>&3) @@ -369,31 +368,30 @@ function dynamic_dns_setup { 3) DDNS_PROVIDER="default@www.zoneedit.com";; 4) DDNS_PROVIDER="default@www.no-ip.com";; 5) DDNS_PROVIDER="default@www.easydns.com";; - 6) DDNS_PROVIDER="default@www.3322.org";; - 7) DDNS_PROVIDER="default@www.dnsomatic.com";; - 8) DDNS_PROVIDER="default@dns.he.net";; - 9) DDNS_PROVIDER="default@www.tunnelbroker.net";; - 10) DDNS_PROVIDER="default@www.dynsip.org";; - 11) DDNS_PROVIDER="default@www.sitelutions.com";; - 12) DDNS_PROVIDER="default@www.dnsexit.com";; - 13) DDNS_PROVIDER="default@www.changeip.com";; - 14) DDNS_PROVIDER="default@www.zerigo.com";; - 15) DDNS_PROVIDER="default@www.dhis.org";; - 16) DDNS_PROVIDER="default@nsupdate.info";; - 17) DDNS_PROVIDER="default@www.loopia.com";; - 18) DDNS_PROVIDER="default@www.namecheap.com";; - 19) DDNS_PROVIDER="default@domains.google.com";; - 20) DDNS_PROVIDER="default@www.ovh.com";; - 21) DDNS_PROVIDER="default@www.dtdns.com";; - 22) DDNS_PROVIDER="default@giradns.com";; - 23) DDNS_PROVIDER="default@www.duiadns.net";; - 24) DDNS_PROVIDER="default@ddnss.de";; - 25) DDNS_PROVIDER="default@dynv6.com";; - 26) DDNS_PROVIDER="default@ipv4.dynv6.com";; - 27) DDNS_PROVIDER="default@spdyn.de";; - 28) DDNS_PROVIDER="default@www.strato.com";; - 29) DDNS_PROVIDER="default@freemyip.com";; - 30) DDNS_PROVIDER="default@www.cloudxns.net";; + 6) DDNS_PROVIDER="default@www.dnsomatic.com";; + 7) DDNS_PROVIDER="default@dns.he.net";; + 8) DDNS_PROVIDER="default@www.tunnelbroker.net";; + 9) DDNS_PROVIDER="default@www.dynsip.org";; + 10) DDNS_PROVIDER="default@www.sitelutions.com";; + 11) DDNS_PROVIDER="default@www.dnsexit.com";; + 12) DDNS_PROVIDER="default@www.changeip.com";; + 13) DDNS_PROVIDER="default@www.zerigo.com";; + 14) DDNS_PROVIDER="default@www.dhis.org";; + 15) DDNS_PROVIDER="default@nsupdate.info";; + 16) DDNS_PROVIDER="default@www.loopia.com";; + 17) DDNS_PROVIDER="default@www.namecheap.com";; + 18) DDNS_PROVIDER="default@domains.google.com";; + 19) DDNS_PROVIDER="default@www.ovh.com";; + 20) DDNS_PROVIDER="default@www.dtdns.com";; + 21) DDNS_PROVIDER="default@giradns.com";; + 22) DDNS_PROVIDER="default@www.duiadns.net";; + 23) DDNS_PROVIDER="default@ddnss.de";; + 24) DDNS_PROVIDER="default@dynv6.com";; + 25) DDNS_PROVIDER="default@ipv4.dynv6.com";; + 26) DDNS_PROVIDER="default@spdyn.de";; + 27) DDNS_PROVIDER="default@www.strato.com";; + 28) DDNS_PROVIDER="default@freemyip.com";; + 29) DDNS_PROVIDER="default@www.cloudxns.net";; esac save_configuration_values From faa121a94e02e5e8d91b358cb15853979a0dc83d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 May 2018 22:21:19 +0100 Subject: [PATCH 032/214] Tidy up the dynamic dns list, removing dead domains google is also removed, because google --- src/freedombone-config | 78 +++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 42 deletions(-) diff --git a/src/freedombone-config b/src/freedombone-config index 7fd4a614..9d1bf1da 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -329,27 +329,24 @@ function dynamic_dns_setup { 6 dnsomatic.com 7 dns.he.net 8 tunnelbroker.net - 9 dynsip.org - 10 sitelutions.com - 11 dnsexit.com - 12 changeip.com - 13 zerigo.com - 14 dhis.org - 15 nsupdate.info - 16 loopia.com - 17 namecheap.com - 18 domains.google.com - 19 ovh.com - 20 dtdns.com - 21 giradns.com - 22 duiadns.net - 23 ddnss.de - 24 dynv6.com - 25 ipv4.dynv6.com - 26 default@spdyn.de - 27 strato.com - 28 freemyip.com - 29 cloudxns.net) + 9 sitelutions.com + 10 dnsexit.com + 11 changeip.com + 12 zerigo.com + 13 dhis.org + 14 nsupdate.info + 15 loopia.com + 16 namecheap.com + 17 ovh.com + 18 dtdns.com + 19 giradns.com + 20 duiadns.net + 21 ddnss.de + 22 dynv6.com + 23 ipv4.dynv6.com + 24 spdyn.de + 25 freemyip.com + 26 cloudxns.net) # shellcheck disable=SC2068 selection=$(dialog --backtitle $"Freedombone Configuration" --title $"Dynamic DNS" --menu $"Choose Dynamic DNS provider, or ESC for none:" 24 60 32 "${W[@]}" 3>&2 2>&1 1>&3) @@ -371,27 +368,24 @@ function dynamic_dns_setup { 6) DDNS_PROVIDER="default@www.dnsomatic.com";; 7) DDNS_PROVIDER="default@dns.he.net";; 8) DDNS_PROVIDER="default@www.tunnelbroker.net";; - 9) DDNS_PROVIDER="default@www.dynsip.org";; - 10) DDNS_PROVIDER="default@www.sitelutions.com";; - 11) DDNS_PROVIDER="default@www.dnsexit.com";; - 12) DDNS_PROVIDER="default@www.changeip.com";; - 13) DDNS_PROVIDER="default@www.zerigo.com";; - 14) DDNS_PROVIDER="default@www.dhis.org";; - 15) DDNS_PROVIDER="default@nsupdate.info";; - 16) DDNS_PROVIDER="default@www.loopia.com";; - 17) DDNS_PROVIDER="default@www.namecheap.com";; - 18) DDNS_PROVIDER="default@domains.google.com";; - 19) DDNS_PROVIDER="default@www.ovh.com";; - 20) DDNS_PROVIDER="default@www.dtdns.com";; - 21) DDNS_PROVIDER="default@giradns.com";; - 22) DDNS_PROVIDER="default@www.duiadns.net";; - 23) DDNS_PROVIDER="default@ddnss.de";; - 24) DDNS_PROVIDER="default@dynv6.com";; - 25) DDNS_PROVIDER="default@ipv4.dynv6.com";; - 26) DDNS_PROVIDER="default@spdyn.de";; - 27) DDNS_PROVIDER="default@www.strato.com";; - 28) DDNS_PROVIDER="default@freemyip.com";; - 29) DDNS_PROVIDER="default@www.cloudxns.net";; + 9) DDNS_PROVIDER="default@www.sitelutions.com";; + 10) DDNS_PROVIDER="default@www.dnsexit.com";; + 11) DDNS_PROVIDER="default@www.changeip.com";; + 12) DDNS_PROVIDER="default@www.zerigo.com";; + 13) DDNS_PROVIDER="default@www.dhis.org";; + 14) DDNS_PROVIDER="default@nsupdate.info";; + 15) DDNS_PROVIDER="default@www.loopia.com";; + 16) DDNS_PROVIDER="default@www.namecheap.com";; + 17) DDNS_PROVIDER="default@www.ovh.com";; + 18) DDNS_PROVIDER="default@www.dtdns.com";; + 19) DDNS_PROVIDER="default@giradns.com";; + 20) DDNS_PROVIDER="default@www.duiadns.net";; + 21) DDNS_PROVIDER="default@ddnss.de";; + 22) DDNS_PROVIDER="default@dynv6.com";; + 23) DDNS_PROVIDER="default@ipv4.dynv6.com";; + 24) DDNS_PROVIDER="default@spdyn.de";; + 25) DDNS_PROVIDER="default@freemyip.com";; + 26) DDNS_PROVIDER="default@www.cloudxns.net";; esac save_configuration_values From 7f91644044f9ab0a33fa2d31d41e10a9ab3b0f6c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 10:38:35 +0100 Subject: [PATCH 033/214] quotes --- src/freedombone-config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-config b/src/freedombone-config index 9d1bf1da..c04ecd1b 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -184,7 +184,7 @@ function choose_social_instance_domain_name { while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Instance domain" \ --form $"\\nEnter your instance domain name and its FreeDNS code:" 11 55 3 \ @@ -247,7 +247,7 @@ function choose_default_domain_name { while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Your main domain name" \ --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 13 55 5 \ From 7dcfd40b727bf7ec5ece5dfb461b785229c9abdb Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 10:40:17 +0100 Subject: [PATCH 034/214] Change title to make freedns explicit --- src/freedombone-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-config b/src/freedombone-config index c04ecd1b..b9e69083 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -249,7 +249,7 @@ function choose_default_domain_name { data=$(mktemp 2>/dev/null) if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then dialog --backtitle $"Freedombone Configuration" \ - --title $"Your main domain name" \ + --title $"Your main domain name on FreeDNS" \ --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 13 55 5 \ $"Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 24 33 40 \ $"Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 24 33 255 \ From 4bdd922522cd3133795388cfd2220b0acaf9b010 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 10:48:14 +0100 Subject: [PATCH 035/214] Onion address for website --- src/freedombone-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-config b/src/freedombone-config index b9e69083..62297db6 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -38,7 +38,7 @@ export TEXTDOMAIN=${PROJECT_NAME}-config export TEXTDOMAINDIR="/usr/share/locale" # Web site -FREEDOMBONE_WEBSITE="https://freedombone.net or http://4fvfozz6g3zmvf76.onion" +FREEDOMBONE_WEBSITE="https://freedombone.net or http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion" # Minimum number of characters in a password MINIMUM_PASSWORD_LENGTH=$(grep 'MINIMUM_PASSWORD_LENGTH=' "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-passwords" | head -n 1 | awk -F '=' '{print $2}') From 97b25053bf560b654e0e28a2c05e3cfe85dd5fbb Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 11:11:57 +0100 Subject: [PATCH 036/214] Separate command to change dynamic dns settings --- src/freedombone-config | 155 +-------------------------- src/freedombone-controlpanel | 12 ++- src/freedombone-ddns | 199 +++++++++++++++++++++++++++++++++++ 3 files changed, 207 insertions(+), 159 deletions(-) create mode 100755 src/freedombone-ddns diff --git a/src/freedombone-config b/src/freedombone-config index 62297db6..12df95eb 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -320,159 +320,6 @@ function choose_default_domain_name { save_configuration_values } -function dynamic_dns_setup { - W=(1 freedns.afraid.org - 2 dyn.com - 3 zoneedit.com - 4 no-ip.com - 5 easydns.com - 6 dnsomatic.com - 7 dns.he.net - 8 tunnelbroker.net - 9 sitelutions.com - 10 dnsexit.com - 11 changeip.com - 12 zerigo.com - 13 dhis.org - 14 nsupdate.info - 15 loopia.com - 16 namecheap.com - 17 ovh.com - 18 dtdns.com - 19 giradns.com - 20 duiadns.net - 21 ddnss.de - 22 dynv6.com - 23 ipv4.dynv6.com - 24 spdyn.de - 25 freemyip.com - 26 cloudxns.net) - - # shellcheck disable=SC2068 - selection=$(dialog --backtitle $"Freedombone Configuration" --title $"Dynamic DNS" --menu $"Choose Dynamic DNS provider, or ESC for none:" 24 60 32 "${W[@]}" 3>&2 2>&1 1>&3) - - if [ ! "$selection" ]; then - if [ -f /etc/systemd/system/inadyn.service ]; then - systemctl stop inadyn - systemctl disable inadyn - fi - return - fi - - case $selection in - 1) DDNS_PROVIDER="default@freedns.afraid.org";; - 2) DDNS_PROVIDER="default@www.dyn.com";; - 3) DDNS_PROVIDER="default@www.zoneedit.com";; - 4) DDNS_PROVIDER="default@www.no-ip.com";; - 5) DDNS_PROVIDER="default@www.easydns.com";; - 6) DDNS_PROVIDER="default@www.dnsomatic.com";; - 7) DDNS_PROVIDER="default@dns.he.net";; - 8) DDNS_PROVIDER="default@www.tunnelbroker.net";; - 9) DDNS_PROVIDER="default@www.sitelutions.com";; - 10) DDNS_PROVIDER="default@www.dnsexit.com";; - 11) DDNS_PROVIDER="default@www.changeip.com";; - 12) DDNS_PROVIDER="default@www.zerigo.com";; - 13) DDNS_PROVIDER="default@www.dhis.org";; - 14) DDNS_PROVIDER="default@nsupdate.info";; - 15) DDNS_PROVIDER="default@www.loopia.com";; - 16) DDNS_PROVIDER="default@www.namecheap.com";; - 17) DDNS_PROVIDER="default@www.ovh.com";; - 18) DDNS_PROVIDER="default@www.dtdns.com";; - 19) DDNS_PROVIDER="default@giradns.com";; - 20) DDNS_PROVIDER="default@www.duiadns.net";; - 21) DDNS_PROVIDER="default@ddnss.de";; - 22) DDNS_PROVIDER="default@dynv6.com";; - 23) DDNS_PROVIDER="default@ipv4.dynv6.com";; - 24) DDNS_PROVIDER="default@spdyn.de";; - 25) DDNS_PROVIDER="default@freemyip.com";; - 26) DDNS_PROVIDER="default@www.cloudxns.net";; - esac - save_configuration_values - - valid_ddns_username= - valid_ddns_password= - if [[ "$DDNS_PROVIDER" == "none" ]]; then - if [ -f /etc/systemd/system/inadyn.service ]; then - systemctl stop inadyn - systemctl disable inadyn - fi - else - while [ ! $valid_ddns_username ] - do - data=$(mktemp 2>/dev/null) - dialog --backtitle $"Freedombone Configuration" \ - --inputbox $"Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> "$data" - sel=$? - case $sel in - 0) possible_username=$(cat "$data") - if [ "$possible_username" ]; then - if [ ${#possible_username} -gt 1 ]; then - valid_ddns_username=$(cat "$data") - # shellcheck disable=SC2034 - DDNS_USERNAME="$valid_ddns_username" - rm -f "$data" - break; - fi - fi - ;; - 1) rm -f "$data" - exit 1;; - 255) rm -f "$data" - exit 1;; - esac - rm -f "$data" - done - save_configuration_values - - while [ ! $valid_ddns_password ] - do - data=$(mktemp 2>/dev/null) - dialog --backtitle $"Freedombone Configuration" \ - --clear \ - --insecure \ - --passwordbox $"Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> "$data" - sel=$? - case $sel in - 0) possible_password=$(cat "$data") - if [ "$possible_password" ]; then - if [ ${#possible_password} -gt 1 ]; then - valid_ddns_password=$(cat "$data") - DDNS_PASSWORD=$valid_ddns_password - break; - fi - fi - ;; - 1) rm -f "$data" - exit 1;; - 255) rm -f "$data" - exit 1;; - esac - rm -f "$data" - if [ ${#DDNS_PASSWORD} -lt "$MINIMUM_PASSWORD_LENGTH" ]; then - dialog --title $"Password quality check" --msgbox $"The password given was too short. It must be at least $MINIMUM_PASSWORD_LENGTH characters. You may need to change your password on the dynamic DNS provider's web site." 10 40 - DDNS_PASSWORD="" - fi - done - save_configuration_values - fi -} - -function choose_dynamic_dns { - DDNS_PROVIDER="none" - - if [[ "$SYSTEM_TYPE" != "mesh"* && "$ONION_ONLY" == "no" ]]; then - dialog --title $"Dynamic DNS" \ - --backtitle $"Freedombone Configuration" \ - --yesno $"\\nConfigure a dynamic DNS service?\\n\\nIf it is already handled by your internet router then select 'no'." 10 50 - sel=$? - case $sel in - 0) dynamic_dns_setup;; - 255) exit 1;; - esac - fi - save_configuration_values -} - function choose_debian_repo { if [[ "$MINIMAL_INSTALL" == "no" ]]; then @@ -1100,7 +947,7 @@ function interactive_config { choose_rng choose_debian_repo "${PROJECT_NAME}-wifi" --networksinteractive "$WIFI_NETWORKS_FILE" - choose_dynamic_dns + "${PROJECT_NAME}-ddns" choose_default_domain_name choose_email_address interactive_key_recovery diff --git a/src/freedombone-controlpanel b/src/freedombone-controlpanel index 6513573c..c5693685 100755 --- a/src/freedombone-controlpanel +++ b/src/freedombone-controlpanel @@ -1981,11 +1981,12 @@ function menu_top_level { 13 $"Add Clacks" 14 $"Check for updates" 15 $"Performance Benchmarks" - 16 $"Power off the system" - 17 $"Restart the system") + 16 $"Change Dynamic DNS settings" + 17 $"Power off the system" + 18 $"Restart the system") # shellcheck disable=SC2068 - selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Administrator Control Panel" --menu $"Choose an operation, or ESC to exit:" 24 60 24 "${W[@]}" 3>&2 2>&1 1>&3) + selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Administrator Control Panel" --menu $"Choose an operation, or ESC to exit:" 25 60 25 "${W[@]}" 3>&2 2>&1 1>&3) if [ ! "$selection" ]; then break @@ -2012,8 +2013,9 @@ function menu_top_level { 13) add_clacks;; 14) check_for_updates;; 15) performance_benchmarks;; - 16) shut_down_system;; - 17) restart_system;; + 16) "${PROJECT_NAME}-ddns";; + 17) shut_down_system;; + 18) restart_system;; esac done } diff --git a/src/freedombone-ddns b/src/freedombone-ddns new file mode 100755 index 00000000..36269ad0 --- /dev/null +++ b/src/freedombone-ddns @@ -0,0 +1,199 @@ +#!/bin/bash +# _____ _ _ +# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ +# | __| _| -_| -_| . | . | | . | . | | -_| +# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| +# +# Freedom in the Cloud +# +# Change dynamic dns settings +# +# License +# ======= +# +# Copyright (C) 2018 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +PROJECT_NAME='freedombone' + +export TEXTDOMAIN=${PROJECT_NAME}-ddns +export TEXTDOMAINDIR="/usr/share/locale" + +source "$PROJECT_INSTALL_DIR/${PROJECT_NAME}-vars" +source "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-config" + +function dynamic_dns_setup { + DDNS_PROVIDER='none' + + W=(1 freedns.afraid.org + 2 dyn.com + 3 zoneedit.com + 4 no-ip.com + 5 easydns.com + 6 dnsomatic.com + 7 dns.he.net + 8 tunnelbroker.net + 9 sitelutions.com + 10 dnsexit.com + 11 changeip.com + 12 zerigo.com + 13 dhis.org + 14 nsupdate.info + 15 loopia.com + 16 namecheap.com + 17 ovh.com + 18 dtdns.com + 19 giradns.com + 20 duiadns.net + 21 ddnss.de + 22 dynv6.com + 23 ipv4.dynv6.com + 24 spdyn.de + 25 freemyip.com + 26 cloudxns.net) + + # shellcheck disable=SC2068 + selection=$(dialog --backtitle $"Freedombone Configuration" --title $"Dynamic DNS" --menu $"Choose Dynamic DNS provider, or ESC for none:" 24 60 32 "${W[@]}" 3>&2 2>&1 1>&3) + + if [ ! "$selection" ]; then + if [ -f /etc/systemd/system/inadyn.service ]; then + systemctl stop inadyn + systemctl disable inadyn + fi + return + fi + + case $selection in + 1) DDNS_PROVIDER="default@freedns.afraid.org";; + 2) DDNS_PROVIDER="default@www.dyn.com";; + 3) DDNS_PROVIDER="default@www.zoneedit.com";; + 4) DDNS_PROVIDER="default@www.no-ip.com";; + 5) DDNS_PROVIDER="default@www.easydns.com";; + 6) DDNS_PROVIDER="default@www.dnsomatic.com";; + 7) DDNS_PROVIDER="default@dns.he.net";; + 8) DDNS_PROVIDER="default@www.tunnelbroker.net";; + 9) DDNS_PROVIDER="default@www.sitelutions.com";; + 10) DDNS_PROVIDER="default@www.dnsexit.com";; + 11) DDNS_PROVIDER="default@www.changeip.com";; + 12) DDNS_PROVIDER="default@www.zerigo.com";; + 13) DDNS_PROVIDER="default@www.dhis.org";; + 14) DDNS_PROVIDER="default@nsupdate.info";; + 15) DDNS_PROVIDER="default@www.loopia.com";; + 16) DDNS_PROVIDER="default@www.namecheap.com";; + 17) DDNS_PROVIDER="default@www.ovh.com";; + 18) DDNS_PROVIDER="default@www.dtdns.com";; + 19) DDNS_PROVIDER="default@giradns.com";; + 20) DDNS_PROVIDER="default@www.duiadns.net";; + 21) DDNS_PROVIDER="default@ddnss.de";; + 22) DDNS_PROVIDER="default@dynv6.com";; + 23) DDNS_PROVIDER="default@ipv4.dynv6.com";; + 24) DDNS_PROVIDER="default@spdyn.de";; + 25) DDNS_PROVIDER="default@freemyip.com";; + 26) DDNS_PROVIDER="default@www.cloudxns.net";; + esac + save_configuration_values + + valid_ddns_username= + valid_ddns_password= + if [[ "$DDNS_PROVIDER" == "none" ]]; then + if [ -f /etc/systemd/system/inadyn.service ]; then + systemctl stop inadyn + systemctl disable inadyn + fi + else + while [ ! $valid_ddns_username ] + do + data=$(mktemp 2>/dev/null) + dialog --backtitle $"Freedombone Configuration" \ + --inputbox $"Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> "$data" + sel=$? + case $sel in + 0) possible_username=$(cat "$data") + if [ "$possible_username" ]; then + if [ ${#possible_username} -gt 1 ]; then + valid_ddns_username=$(cat "$data") + # shellcheck disable=SC2034 + DDNS_USERNAME="$valid_ddns_username" + rm -f "$data" + break; + fi + fi + ;; + 1) rm -f "$data" + exit 1;; + 255) rm -f "$data" + exit 1;; + esac + rm -f "$data" + done + save_configuration_values + + while [ ! $valid_ddns_password ] + do + data=$(mktemp 2>/dev/null) + dialog --backtitle $"Freedombone Configuration" \ + --clear \ + --insecure \ + --passwordbox $"Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> "$data" + sel=$? + case $sel in + 0) possible_password=$(cat "$data") + if [ "$possible_password" ]; then + if [ ${#possible_password} -gt 1 ]; then + valid_ddns_password=$(cat "$data") + DDNS_PASSWORD=$valid_ddns_password + break; + fi + fi + ;; + 1) rm -f "$data" + exit 1;; + 255) rm -f "$data" + exit 1;; + esac + rm -f "$data" + if [ ${#DDNS_PASSWORD} -lt "$MINIMUM_PASSWORD_LENGTH" ]; then + dialog --title $"Password quality check" --msgbox $"The password given was too short. It must be at least $MINIMUM_PASSWORD_LENGTH characters. You may need to change your password on the dynamic DNS provider's web site." 10 40 + DDNS_PASSWORD="" + fi + done + save_configuration_values + fi +} + +function choose_dynamic_dns { + DDNS_PROVIDER="none" + + if [[ "$SYSTEM_TYPE" != "mesh"* && "$ONION_ONLY" == "no" ]]; then + dialog --title $"Dynamic DNS" \ + --backtitle $"Freedombone Configuration" \ + --yesno $"\\nConfigure a dynamic DNS service?\\n\\nIf it is already handled by your internet router then select 'no'." 10 50 + sel=$? + case $sel in + 0) dynamic_dns_setup;; + 255) exit 1;; + esac + fi + save_configuration_values +} + +if [ ! "$CONFIGURATION_FILE" ]; then + CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg +fi + +read_configuration_values +choose_dynamic_dns + +exit 0 From 39a624a19adf871b60d86f473ca5766138811434 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 11:14:20 +0100 Subject: [PATCH 037/214] Don't need to save if nothing happens --- src/freedombone-ddns | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 36269ad0..e10f1b63 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -182,11 +182,11 @@ function choose_dynamic_dns { --yesno $"\\nConfigure a dynamic DNS service?\\n\\nIf it is already handled by your internet router then select 'no'." 10 50 sel=$? case $sel in - 0) dynamic_dns_setup;; + 0) dynamic_dns_setup + ;; 255) exit 1;; esac fi - save_configuration_values } if [ ! "$CONFIGURATION_FILE" ]; then From 44205567db53bc9e2bc83fa0a2d3184966198ff2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 11:15:15 +0100 Subject: [PATCH 038/214] Don't need vars --- src/freedombone-ddns | 1 - 1 file changed, 1 deletion(-) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index e10f1b63..0fdea222 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -31,7 +31,6 @@ PROJECT_NAME='freedombone' export TEXTDOMAIN=${PROJECT_NAME}-ddns export TEXTDOMAINDIR="/usr/share/locale" -source "$PROJECT_INSTALL_DIR/${PROJECT_NAME}-vars" source "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-config" function dynamic_dns_setup { From cb025018709177456477849c88943169f027f17d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 11:18:29 +0100 Subject: [PATCH 039/214] Read ddns variables after they are defined --- src/freedombone-config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/freedombone-config b/src/freedombone-config index 12df95eb..445aace3 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -947,7 +947,12 @@ function interactive_config { choose_rng choose_debian_repo "${PROJECT_NAME}-wifi" --networksinteractive "$WIFI_NETWORKS_FILE" + "${PROJECT_NAME}-ddns" + read_config_param DDNS_PROVIDER + read_config_param DDNS_USERNAME + read_config_param DDNS_PASSWORD + choose_default_domain_name choose_email_address interactive_key_recovery From 3401badee70264c9955985404b10e3b753de04e0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 11:20:28 +0100 Subject: [PATCH 040/214] Clear screen after setting ddns --- src/freedombone-ddns | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 0fdea222..48f1dd6a 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -194,5 +194,6 @@ fi read_configuration_values choose_dynamic_dns +clear exit 0 From 782d5567da22adcd1b4acbfa5c2188b422092652 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 11:22:03 +0100 Subject: [PATCH 041/214] Clear screen after setting ddns --- src/freedombone-ddns | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 48f1dd6a..61c1345d 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -131,8 +131,10 @@ function dynamic_dns_setup { fi ;; 1) rm -f "$data" + clear exit 1;; 255) rm -f "$data" + clear exit 1;; esac rm -f "$data" @@ -158,8 +160,10 @@ function dynamic_dns_setup { fi ;; 1) rm -f "$data" + clear exit 1;; 255) rm -f "$data" + clear exit 1;; esac rm -f "$data" @@ -183,7 +187,9 @@ function choose_dynamic_dns { case $sel in 0) dynamic_dns_setup ;; - 255) exit 1;; + 255) clear + exit 1 + ;; esac fi } From 998a98acb55aefa3e97321a016ac97b45382edf9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 11:58:07 +0100 Subject: [PATCH 042/214] Change inadyn username and password --- src/freedombone-ddns | 33 +++++++++++++++++++++++++++++++++ src/freedombone-utils-dns | 3 +++ 2 files changed, 36 insertions(+) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 61c1345d..3173bbbb 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -33,6 +33,38 @@ export TEXTDOMAINDIR="/usr/share/locale" source "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-config" +function update_inadyn_config { + if [ ! -f /etc/inadyn.conf ]; then + return + fi + + if [[ "$DDNS_PROVIDER" == *'freedns'* ]]; then + return + fi + + if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then + { echo ''; + echo "system $DDNS_PROVIDER"; + echo ' ssl'; + echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf + if [ "$DDNS_USERNAME" ]; then + echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + fi + if [ "$DDNS_PASSWORD" ]; then + echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + fi + else + if [ "$DDNS_USERNAME" ]; then + sed -i "s| username .*| username $DDNS_USERNAME|g" /etc/inadyn.conf + fi + if [ "$DDNS_PASSWORD" ]; then + sed -i "s| password .*| password $DDNS_PASSWORD|g" /etc/inadyn.conf + fi + fi + systemctl enable inadyn + systemctl restart inadyn +} + function dynamic_dns_setup { DDNS_PROVIDER='none' @@ -173,6 +205,7 @@ function dynamic_dns_setup { fi done save_configuration_values + update_inadyn_config fi } diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 16a9279f..f33a4292 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -137,6 +137,9 @@ function add_ddns_domain { if [[ $ONION_ONLY != "no" ]]; then return fi + if [ ! "$DDNS_PROVIDER" ]; then + return + fi if [[ "$DDNS_PROVIDER" == 'none' ]]; then return fi From a1962c89d340042b71518527575d23a66b89981a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 11:59:25 +0100 Subject: [PATCH 043/214] Move variable to start of file --- src/freedombone-ddns | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 3173bbbb..e0b450c8 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -33,6 +33,8 @@ export TEXTDOMAINDIR="/usr/share/locale" source "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-config" +DDNS_PROVIDER="none" + function update_inadyn_config { if [ ! -f /etc/inadyn.conf ]; then return @@ -210,8 +212,6 @@ function dynamic_dns_setup { } function choose_dynamic_dns { - DDNS_PROVIDER="none" - if [[ "$SYSTEM_TYPE" != "mesh"* && "$ONION_ONLY" == "no" ]]; then dialog --title $"Dynamic DNS" \ --backtitle $"Freedombone Configuration" \ From cefb7e1a09bf7860decf8a9f954f9a0a2ece61eb Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 12:00:40 +0100 Subject: [PATCH 044/214] Add other ddns variables --- src/freedombone-ddns | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index e0b450c8..8028bc13 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -34,6 +34,8 @@ export TEXTDOMAINDIR="/usr/share/locale" source "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-config" DDNS_PROVIDER="none" +DDNS_USERNAME= +DDNS_PASSWORD= function update_inadyn_config { if [ ! -f /etc/inadyn.conf ]; then From 12ba5d630eed88d00a0b9b21aeac6c7c19b744dc Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 12:04:02 +0100 Subject: [PATCH 045/214] Dynamic dns doesn't apply on onion only installs --- src/freedombone-ddns | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 8028bc13..3e69f8bd 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -234,6 +234,12 @@ if [ ! "$CONFIGURATION_FILE" ]; then fi read_configuration_values + +if [[ "$ONION_ONLY" != 'no' ]]; then + clear + exit 0 +fi + choose_dynamic_dns clear From a99c7200af62ed94a8bc40a83a501bb762589ade Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 12:05:05 +0100 Subject: [PATCH 046/214] Don't need to clear because nothing shown --- src/freedombone-ddns | 1 - 1 file changed, 1 deletion(-) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 3e69f8bd..11ac90aa 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -236,7 +236,6 @@ fi read_configuration_values if [[ "$ONION_ONLY" != 'no' ]]; then - clear exit 0 fi From 9af6ffe8952822984d1e03fceabe973b611eafc2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 12:10:08 +0100 Subject: [PATCH 047/214] Remove existing ddns provider when changing ddns settings --- src/freedombone-ddns | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 11ac90aa..454efa2c 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -47,6 +47,10 @@ function update_inadyn_config { fi if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then + # remove entry for any previous ddns + sed -i '/^system $/,$d' /etc/inadyn.conf + + # add the new provider { echo ''; echo "system $DDNS_PROVIDER"; echo ' ssl'; @@ -58,6 +62,7 @@ function update_inadyn_config { echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf fi else + # change username/password for an existing provider if [ "$DDNS_USERNAME" ]; then sed -i "s| username .*| username $DDNS_USERNAME|g" /etc/inadyn.conf fi @@ -65,6 +70,7 @@ function update_inadyn_config { sed -i "s| password .*| password $DDNS_PASSWORD|g" /etc/inadyn.conf fi fi + systemctl enable inadyn systemctl restart inadyn } From 76fc730b00fc7638708c6f0e9781e63cab9b500f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 12:12:48 +0100 Subject: [PATCH 048/214] sed syntax --- src/freedombone-ddns | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 454efa2c..8adfa0a3 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -48,7 +48,7 @@ function update_inadyn_config { if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then # remove entry for any previous ddns - sed -i '/^system $/,$d' /etc/inadyn.conf + sed -i '/system /,$d' /etc/inadyn.conf # add the new provider { echo ''; From 4c8756ad23f485f26e5128c89a5d643b3d304591 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 12:17:56 +0100 Subject: [PATCH 049/214] Re-append any aliases after changing dynamic dns provider --- src/freedombone-ddns | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 8adfa0a3..11f6a65e 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -47,6 +47,9 @@ function update_inadyn_config { fi if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then + # store any previous aliases + grep 'alias ' /etc/inadyn.conf > /tmp/inadyn_aliases + # remove entry for any previous ddns sed -i '/system /,$d' /etc/inadyn.conf @@ -61,6 +64,11 @@ function update_inadyn_config { if [ "$DDNS_PASSWORD" ]; then echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf fi + + if [ -f /tmp/inadyn_aliases ]; then + cat /tmp/inadyn_aliases >> /etc/inadyn.conf + rm /tmp/inadyn_aliases + fi else # change username/password for an existing provider if [ "$DDNS_USERNAME" ]; then From 5ddf572037e5c2f8c87dee37a900eb1aeea93a1d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 12:19:37 +0100 Subject: [PATCH 050/214] Include dns utils --- src/freedombone-ddns | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 11f6a65e..2bc33908 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -32,6 +32,7 @@ export TEXTDOMAIN=${PROJECT_NAME}-ddns export TEXTDOMAINDIR="/usr/share/locale" source "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-config" +source "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-dns" DDNS_PROVIDER="none" DDNS_USERNAME= From 112ff52ad329d026e05ae1eedc8be2605ce129ff Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 12:20:29 +0100 Subject: [PATCH 051/214] Move function into dns utils --- src/freedombone-ddns | 46 --------------------------------------- src/freedombone-utils-dns | 46 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 2bc33908..0cd6d9f6 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -38,52 +38,6 @@ DDNS_PROVIDER="none" DDNS_USERNAME= DDNS_PASSWORD= -function update_inadyn_config { - if [ ! -f /etc/inadyn.conf ]; then - return - fi - - if [[ "$DDNS_PROVIDER" == *'freedns'* ]]; then - return - fi - - if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then - # store any previous aliases - grep 'alias ' /etc/inadyn.conf > /tmp/inadyn_aliases - - # remove entry for any previous ddns - sed -i '/system /,$d' /etc/inadyn.conf - - # add the new provider - { echo ''; - echo "system $DDNS_PROVIDER"; - echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf - if [ "$DDNS_USERNAME" ]; then - echo " username $DDNS_USERNAME" >> /etc/inadyn.conf - fi - if [ "$DDNS_PASSWORD" ]; then - echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf - fi - - if [ -f /tmp/inadyn_aliases ]; then - cat /tmp/inadyn_aliases >> /etc/inadyn.conf - rm /tmp/inadyn_aliases - fi - else - # change username/password for an existing provider - if [ "$DDNS_USERNAME" ]; then - sed -i "s| username .*| username $DDNS_USERNAME|g" /etc/inadyn.conf - fi - if [ "$DDNS_PASSWORD" ]; then - sed -i "s| password .*| password $DDNS_PASSWORD|g" /etc/inadyn.conf - fi - fi - - systemctl enable inadyn - systemctl restart inadyn -} - function dynamic_dns_setup { DDNS_PROVIDER='none' diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index f33a4292..642f6446 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -94,6 +94,52 @@ EXTERNAL_IP_SERVICES=( \ 'http://ipinfo.io/' \ 'http://httpbin.org/ip') +function update_inadyn_config { + if [ ! -f /etc/inadyn.conf ]; then + return + fi + + if [[ "$DDNS_PROVIDER" == *'freedns'* ]]; then + return + fi + + if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then + # store any previous aliases + grep 'alias ' /etc/inadyn.conf > /tmp/inadyn_aliases + + # remove entry for any previous ddns + sed -i '/system /,$d' /etc/inadyn.conf + + # add the new provider + { echo ''; + echo "system $DDNS_PROVIDER"; + echo ' ssl'; + echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf + if [ "$DDNS_USERNAME" ]; then + echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + fi + if [ "$DDNS_PASSWORD" ]; then + echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + fi + + if [ -f /tmp/inadyn_aliases ]; then + cat /tmp/inadyn_aliases >> /etc/inadyn.conf + rm /tmp/inadyn_aliases + fi + else + # change username/password for an existing provider + if [ "$DDNS_USERNAME" ]; then + sed -i "s| username .*| username $DDNS_USERNAME|g" /etc/inadyn.conf + fi + if [ "$DDNS_PASSWORD" ]; then + sed -i "s| password .*| password $DDNS_PASSWORD|g" /etc/inadyn.conf + fi + fi + + systemctl enable inadyn + systemctl restart inadyn +} + function create_freedns_updater { if [[ $ONION_ONLY != "no" ]]; then return From bd7f8b4a91542a739a82614495c19c15e522a0f5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 13:24:44 +0100 Subject: [PATCH 052/214] Add inadyn username and password if they don't exist --- src/freedombone-utils-dns | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 642f6446..51bd882f 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -129,10 +129,18 @@ function update_inadyn_config { else # change username/password for an existing provider if [ "$DDNS_USERNAME" ]; then - sed -i "s| username .*| username $DDNS_USERNAME|g" /etc/inadyn.conf + if grep -q " username " /etc/inadyn.conf; then + sed -i "s| username .*| username $DDNS_USERNAME|g" /etc/inadyn.conf + else + echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + fi fi if [ "$DDNS_PASSWORD" ]; then - sed -i "s| password .*| password $DDNS_PASSWORD|g" /etc/inadyn.conf + if grep -q " password " /etc/inadyn.conf; then + sed -i "s| password .*| password $DDNS_PASSWORD|g" /etc/inadyn.conf + else + echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + fi fi fi From a3e6ce965ca1d7d887334a5c288777b2e6f9c9f5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 13:30:47 +0100 Subject: [PATCH 053/214] inadyn confile file variable --- src/freedombone-utils-dns | 55 ++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 51bd882f..547c35b7 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -41,6 +41,7 @@ DDNS_PASSWORD= INADYN_REPO="https://github.com/bashrc/inadyn" INADYN_COMMIT='fadbe17f520d337dfb8d69ee4bf1fcaa23fce0d6' +INADYN_CONFIG_FILE=/etc/inadyn.conf # web site used to obtain the external IP address of the system GET_IP_ADDRESS_URL="checkip.two-dns.de" @@ -95,7 +96,7 @@ EXTERNAL_IP_SERVICES=( \ 'http://httpbin.org/ip') function update_inadyn_config { - if [ ! -f /etc/inadyn.conf ]; then + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then return fi @@ -103,43 +104,43 @@ function update_inadyn_config { return fi - if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then + if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then # store any previous aliases - grep 'alias ' /etc/inadyn.conf > /tmp/inadyn_aliases + grep 'alias ' "${INADYN_CONFIG_FILE}" > /tmp/inadyn_aliases # remove entry for any previous ddns - sed -i '/system /,$d' /etc/inadyn.conf + sed -i '/system /,$d' "${INADYN_CONFIG_FILE}" # add the new provider { echo ''; echo "system $DDNS_PROVIDER"; echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf + echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" if [ "$DDNS_USERNAME" ]; then - echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" fi if [ "$DDNS_PASSWORD" ]; then - echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" fi if [ -f /tmp/inadyn_aliases ]; then - cat /tmp/inadyn_aliases >> /etc/inadyn.conf + cat /tmp/inadyn_aliases >> "${INADYN_CONFIG_FILE}" rm /tmp/inadyn_aliases fi else # change username/password for an existing provider if [ "$DDNS_USERNAME" ]; then - if grep -q " username " /etc/inadyn.conf; then - sed -i "s| username .*| username $DDNS_USERNAME|g" /etc/inadyn.conf + if grep -q " username " "${INADYN_CONFIG_FILE}"; then + sed -i "s| username .*| username $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" else - echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" fi fi if [ "$DDNS_PASSWORD" ]; then - if grep -q " password " /etc/inadyn.conf; then - sed -i "s| password .*| password $DDNS_PASSWORD|g" /etc/inadyn.conf + if grep -q " password " "${INADYN_CONFIG_FILE}"; then + sed -i "s| password .*| password $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" else - echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" fi fi fi @@ -197,27 +198,27 @@ function add_ddns_domain { if [[ "$DDNS_PROVIDER" == 'none' ]]; then return fi - if [ ! -f /etc/inadyn.conf ]; then - echo $'Unable to find inadyn configuration file /etc/inadyn.conf' + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then + echo $'Unable to find inadyn configuration file "${INADYN_CONFIG_FILE}"' exit 5745 fi - if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then + if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then { echo ''; echo "system $DDNS_PROVIDER"; echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf + echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" if [ $DDNS_USERNAME ]; then - echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" fi if [ $DDNS_PASSWORD ]; then - echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" fi fi - if ! grep -q "$CURRENT_DDNS_DOMAIN" /etc/inadyn.conf; then - echo " alias $CURRENT_DDNS_DOMAIN" >> /etc/inadyn.conf + if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then + echo " alias $CURRENT_DDNS_DOMAIN" >> "${INADYN_CONFIG_FILE}" fi - chmod 600 /etc/inadyn.conf + chmod 600 "${INADYN_CONFIG_FILE}" systemctl restart inadyn systemctl daemon-reload } @@ -234,13 +235,13 @@ function remove_ddns_domain { if [[ "$DDNS_PROVIDER" == 'none' ]]; then return fi - if [ ! -f /etc/inadyn.conf ]; then - echo $'Unable to find inadyn configuration file /etc/inadyn.conf' + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then + echo $'Unable to find inadyn configuration file "${INADYN_CONFIG_FILE}"' exit 5745 fi - if grep -q "$CURRENT_DDNS_DOMAIN" /etc/inadyn.conf; then + if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then systemctl stop inadyn - sed -i "/alias $CURRENT_DDNS_DOMAIN/d" /etc/inadyn.conf + sed -i "/alias $CURRENT_DDNS_DOMAIN/d" "${INADYN_CONFIG_FILE}" systemctl start inadyn systemctl daemon-reload fi From ff0ba8b8066c6339e2a06fcd1b4a63a301c6d3c4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 17:48:20 +0100 Subject: [PATCH 054/214] Move to upgraded version of inadyn --- src/freedombone-app-akaunting | 4 +- src/freedombone-app-gnusocial | 4 +- src/freedombone-app-kanboard | 4 +- src/freedombone-app-koel | 4 +- src/freedombone-app-movim | 4 +- src/freedombone-app-nextcloud | 4 +- src/freedombone-app-pelican | 4 +- src/freedombone-app-pleroma | 4 +- src/freedombone-app-postactiv | 4 +- src/freedombone-app-privatebin | 4 +- src/freedombone-app-riot | 4 +- src/freedombone-config | 4 +- src/freedombone-ddns | 52 ++++++------- src/freedombone-utils-dns | 119 ++++++++++++++++++------------ src/freedombone-utils-interactive | 8 +- src/freedombone-utils-web | 71 ++++++++++++++---- 16 files changed, 181 insertions(+), 117 deletions(-) diff --git a/src/freedombone-app-akaunting b/src/freedombone-app-akaunting index 8d00a591..9963023c 100755 --- a/src/freedombone-app-akaunting +++ b/src/freedombone-app-akaunting @@ -110,7 +110,7 @@ function install_interactive_akaunting { while [ ! $AKAUNTING_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Akaunting Configuration" \ --form $"\\nPlease enter your Akaunting details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \ @@ -142,7 +142,7 @@ function install_interactive_akaunting { AKAUNTING_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then AKAUNTING_CODE=$(sed -n 2p < "$data") validate_freedns_code "$AKAUNTING_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial index 640e5343..c6071544 100755 --- a/src/freedombone-app-gnusocial +++ b/src/freedombone-app-gnusocial @@ -112,7 +112,7 @@ function install_interactive_gnusocial { while [ ! $GNUSOCIAL_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"GNU Social Configuration" \ --form $"\\nPlease enter your GNU Social details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 4 \ @@ -156,7 +156,7 @@ function install_interactive_gnusocial { GNUSOCIAL_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then GNUSOCIAL_CODE=$(sed -n 4p < "$data") validate_freedns_code "$GNUSOCIAL_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-kanboard b/src/freedombone-app-kanboard index 64dbe3ac..3f726626 100755 --- a/src/freedombone-app-kanboard +++ b/src/freedombone-app-kanboard @@ -91,7 +91,7 @@ function install_interactive_kanboard { while [ ! $KANBOARD_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"KanBoard Configuration" \ --form $"\\nPlease enter your KanBoard details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt." 13 55 2 \ @@ -123,7 +123,7 @@ function install_interactive_kanboard { KANBOARD_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then KANBOARD_CODE=$(sed -n 2p < "$data") validate_freedns_code "$KANBOARD_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-koel b/src/freedombone-app-koel index fafd6ea4..4f9bd585 100755 --- a/src/freedombone-app-koel +++ b/src/freedombone-app-koel @@ -90,7 +90,7 @@ function install_interactive_koel { while [ ! $KOEL_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Koel Configuration" \ --form $"\\nPlease enter your Koel details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 3 \ @@ -122,7 +122,7 @@ function install_interactive_koel { KOEL_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then KOEL_CODE=$(sed -n 2p < "$data") validate_freedns_code "$KOEL_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-movim b/src/freedombone-app-movim index f4cd0bc7..5a3e1fe8 100755 --- a/src/freedombone-app-movim +++ b/src/freedombone-app-movim @@ -79,7 +79,7 @@ function install_interactive_movim { while [ ! $MOVIM_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Movim Configuration" \ --form $"\\nPlease enter your Movim details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 12 65 2 \ @@ -106,7 +106,7 @@ function install_interactive_movim { MOVIM_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then MOVIM_CODE=$(sed -n 2p < "$data") validate_freedns_code "$MOVIM_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-nextcloud b/src/freedombone-app-nextcloud index c8930a23..85845e06 100755 --- a/src/freedombone-app-nextcloud +++ b/src/freedombone-app-nextcloud @@ -90,7 +90,7 @@ function install_interactive_nextcloud { while [ ! $NEXTCLOUD_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"NextCloud Configuration" \ --form $"\\nPlease enter your NextCloud details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 13 65 3 \ @@ -119,7 +119,7 @@ function install_interactive_nextcloud { NEXTCLOUD_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then NEXTCLOUD_CODE=$(sed -n 2p < "$data") validate_freedns_code "$NEXTCLOUD_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-pelican b/src/freedombone-app-pelican index 262ce240..e655e495 100755 --- a/src/freedombone-app-pelican +++ b/src/freedombone-app-pelican @@ -380,7 +380,7 @@ function install_interactive_pelican { while [ ! $PELICAN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Pelican Blog Configuration" \ --form $"\\nPlease enter your blog details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \ @@ -412,7 +412,7 @@ function install_interactive_pelican { PELICAN_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then PELICAN_BLOG_CODE=$(sed -n 2p < "$data") validate_freedns_code "$PELICAN_BLOG_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index ce51922d..86b72a3b 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -335,7 +335,7 @@ function install_interactive_pleroma { while [ ! $PLEROMA_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Pleroma Configuration" \ --form $"\\nPlease enter your Pleroma details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 4 \ @@ -379,7 +379,7 @@ function install_interactive_pleroma { PLEROMA_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then PLEROMA_CODE=$(sed -n 4p < "$data") validate_freedns_code "$PLEROMA_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-postactiv b/src/freedombone-app-postactiv index 1af2c2af..d81c1f2b 100755 --- a/src/freedombone-app-postactiv +++ b/src/freedombone-app-postactiv @@ -118,7 +118,7 @@ function install_interactive_postactiv { while [ ! $POSTACTIV_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"PostActiv Configuration" \ --form $"\\nPlease enter your PostActiv details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 4 \ @@ -162,7 +162,7 @@ function install_interactive_postactiv { POSTACTIV_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then POSTACTIV_CODE=$(sed -n 4p < "$data") validate_freedns_code "$POSTACTIV_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-privatebin b/src/freedombone-app-privatebin index 7450b43c..651542d3 100755 --- a/src/freedombone-app-privatebin +++ b/src/freedombone-app-privatebin @@ -89,7 +89,7 @@ function install_interactive_privatebin { while [ ! $PRIVATEBIN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"PrivateBin Configuration" \ --form $"\\nPlease enter your PrivateBin details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \ @@ -121,7 +121,7 @@ function install_interactive_privatebin { PRIVATEBIN_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then PRIVATEBIN_CODE=$(sed -n 2p < "$data") validate_freedns_code "$PRIVATEBIN_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-riot b/src/freedombone-app-riot index 4337430d..015e1156 100755 --- a/src/freedombone-app-riot +++ b/src/freedombone-app-riot @@ -76,7 +76,7 @@ function install_interactive_riot { while [ ! $RIOT_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Riot Web user interface for Matrix" \ --form $"\\nPlease enter your details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 13 65 3 \ @@ -105,7 +105,7 @@ function install_interactive_riot { RIOT_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then RIOT_CODE=$(sed -n 2p < "$data") validate_freedns_code "$RIOT_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-config b/src/freedombone-config index 445aace3..e991bdd7 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -184,7 +184,7 @@ function choose_social_instance_domain_name { while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Instance domain" \ --form $"\\nEnter your instance domain name and its FreeDNS code:" 11 55 3 \ @@ -247,7 +247,7 @@ function choose_default_domain_name { while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Your main domain name on FreeDNS" \ --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 13 55 5 \ diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 0cd6d9f6..89bc26f0 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -80,32 +80,32 @@ function dynamic_dns_setup { fi case $selection in - 1) DDNS_PROVIDER="default@freedns.afraid.org";; - 2) DDNS_PROVIDER="default@www.dyn.com";; - 3) DDNS_PROVIDER="default@www.zoneedit.com";; - 4) DDNS_PROVIDER="default@www.no-ip.com";; - 5) DDNS_PROVIDER="default@www.easydns.com";; - 6) DDNS_PROVIDER="default@www.dnsomatic.com";; - 7) DDNS_PROVIDER="default@dns.he.net";; - 8) DDNS_PROVIDER="default@www.tunnelbroker.net";; - 9) DDNS_PROVIDER="default@www.sitelutions.com";; - 10) DDNS_PROVIDER="default@www.dnsexit.com";; - 11) DDNS_PROVIDER="default@www.changeip.com";; - 12) DDNS_PROVIDER="default@www.zerigo.com";; - 13) DDNS_PROVIDER="default@www.dhis.org";; - 14) DDNS_PROVIDER="default@nsupdate.info";; - 15) DDNS_PROVIDER="default@www.loopia.com";; - 16) DDNS_PROVIDER="default@www.namecheap.com";; - 17) DDNS_PROVIDER="default@www.ovh.com";; - 18) DDNS_PROVIDER="default@www.dtdns.com";; - 19) DDNS_PROVIDER="default@giradns.com";; - 20) DDNS_PROVIDER="default@www.duiadns.net";; - 21) DDNS_PROVIDER="default@ddnss.de";; - 22) DDNS_PROVIDER="default@dynv6.com";; - 23) DDNS_PROVIDER="default@ipv4.dynv6.com";; - 24) DDNS_PROVIDER="default@spdyn.de";; - 25) DDNS_PROVIDER="default@freemyip.com";; - 26) DDNS_PROVIDER="default@www.cloudxns.net";; + 1) DDNS_PROVIDER="freedns";; + 2) DDNS_PROVIDER="dyn";; + 3) DDNS_PROVIDER="zoneedit.com";; + 4) DDNS_PROVIDER="no-ip.com";; + 5) DDNS_PROVIDER="easydns.com";; + 6) DDNS_PROVIDER="dnsomatic.com";; + 7) DDNS_PROVIDER="dns.he.net";; + 8) DDNS_PROVIDER="tunnelbroker.net";; + 9) DDNS_PROVIDER="sitelutions.com";; + 10) DDNS_PROVIDER="dnsexit.com";; + 11) DDNS_PROVIDER="changeip.com";; + 12) DDNS_PROVIDER="zerigo.com";; + 13) DDNS_PROVIDER="dhis.org";; + 14) DDNS_PROVIDER="nsupdate.info";; + 15) DDNS_PROVIDER="loopia.com";; + 16) DDNS_PROVIDER="namecheap.com";; + 17) DDNS_PROVIDER="ovh.com";; + 18) DDNS_PROVIDER="dtdns.com";; + 19) DDNS_PROVIDER="giradns.com";; + 20) DDNS_PROVIDER="duiadns.net";; + 21) DDNS_PROVIDER="ddnss.de";; + 22) DDNS_PROVIDER="dynv6.com";; + 23) DDNS_PROVIDER="ipv4.dynv6.com";; + 24) DDNS_PROVIDER="spdyn.de";; + 25) DDNS_PROVIDER="freemyip.com";; + 26) DDNS_PROVIDER="cloudxns.net";; esac save_configuration_values diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 547c35b7..95565d78 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -35,12 +35,12 @@ NAMESERVER5='85.25.251.254' NAMESERVER6='2.141.58.13' # parameters used when adding a new domain -DDNS_PROVIDER="default@freedns.afraid.org" +DDNS_PROVIDER="freedns" DDNS_USERNAME= DDNS_PASSWORD= -INADYN_REPO="https://github.com/bashrc/inadyn" -INADYN_COMMIT='fadbe17f520d337dfb8d69ee4bf1fcaa23fce0d6' +INADYN_REPO="https://github.com/troglobit/inadyn" +INADYN_COMMIT='3fe26d2235ddda9047cf33e8ed1453bcc3bbbf19' INADYN_CONFIG_FILE=/etc/inadyn.conf # web site used to obtain the external IP address of the system @@ -105,43 +105,58 @@ function update_inadyn_config { fi if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then - # store any previous aliases - grep 'alias ' "${INADYN_CONFIG_FILE}" > /tmp/inadyn_aliases + if grep -q "{" "${INADYN_CONFIG_FILE}"; then + sed -i "s|provider .*|provider $DDNS_PROVIDER {|g" "${INADYN_CONFIG_FILE}" + sed -i "s|username .*|username = $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" + sed -i "s|password .*|password = $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" + sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}" + else + # Old inadyn config file format + # store any previous aliases + grep 'alias ' "${INADYN_CONFIG_FILE}" > /tmp/inadyn_aliases - # remove entry for any previous ddns - sed -i '/system /,$d' "${INADYN_CONFIG_FILE}" + # remove entry for any previous ddns + sed -i '/system /,$d' "${INADYN_CONFIG_FILE}" - # add the new provider - { echo ''; - echo "system $DDNS_PROVIDER"; - echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" - if [ "$DDNS_USERNAME" ]; then - echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" - fi - if [ "$DDNS_PASSWORD" ]; then - echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" - fi - - if [ -f /tmp/inadyn_aliases ]; then - cat /tmp/inadyn_aliases >> "${INADYN_CONFIG_FILE}" - rm /tmp/inadyn_aliases - fi - else - # change username/password for an existing provider - if [ "$DDNS_USERNAME" ]; then - if grep -q " username " "${INADYN_CONFIG_FILE}"; then - sed -i "s| username .*| username $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" - else + # add the new provider + { echo ''; + echo "system $DDNS_PROVIDER"; + echo ' ssl'; + echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" + if [ "$DDNS_USERNAME" ]; then echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" fi - fi - if [ "$DDNS_PASSWORD" ]; then - if grep -q " password " "${INADYN_CONFIG_FILE}"; then - sed -i "s| password .*| password $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" - else + if [ "$DDNS_PASSWORD" ]; then echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" fi + + if [ -f /tmp/inadyn_aliases ]; then + cat /tmp/inadyn_aliases >> "${INADYN_CONFIG_FILE}" + rm /tmp/inadyn_aliases + fi + fi + else + if grep -q "{" "${INADYN_CONFIG_FILE}"; then + sed -i "s|username .*|username = $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" + sed -i "s|password .*|password = $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" + sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}" + else + # Old inadyn config file format + # change username/password for an existing provider + if [ "$DDNS_USERNAME" ]; then + if grep -q " username " "${INADYN_CONFIG_FILE}"; then + sed -i "s| username .*| username $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" + else + echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" + fi + fi + if [ "$DDNS_PASSWORD" ]; then + if grep -q " password " "${INADYN_CONFIG_FILE}"; then + sed -i "s| password .*| password $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" + else + echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" + fi + fi fi fi @@ -203,24 +218,29 @@ function add_ddns_domain { exit 5745 fi if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then - { echo ''; - echo "system $DDNS_PROVIDER"; - echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" - if [ $DDNS_USERNAME ]; then - echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" - fi - if [ $DDNS_PASSWORD ]; then - echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" - fi + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; + echo "provider $DDNS_PROVIDER {"; + echo " ssl = true"; + echo " checkip-ssl = false"; + echo " checkip-server = $GET_IP_ADDRESS_URL"; + echo " username = $DDNS_USERNAME"; + echo " password = $DDNS_PASSWORD"; + echo " hostname = { $CURRENT_DDNS_DOMAIN }"; + echo '}'; } > "${INADYN_CONFIG_FILE}" + else + sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}" fi if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then - echo " alias $CURRENT_DDNS_DOMAIN" >> "${INADYN_CONFIG_FILE}" + DDNS_HOSTNAMES=$(grep 'hostname ' "${INADYN_CONFIG_FILE}"| awk -F '{' '{print $2}' | sed 's| }||g') + sed -i "s|hostname .*|hostname = {${DDNS_HOSTNAMES}, ${CURRENT_DDNS_DOMAIN} }|g" "${INADYN_CONFIG_FILE}" fi chmod 600 "${INADYN_CONFIG_FILE}" - systemctl restart inadyn + systemctl daemon-reload + systemctl restart inadyn } function remove_ddns_domain { @@ -241,9 +261,12 @@ function remove_ddns_domain { fi if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then systemctl stop inadyn - sed -i "/alias $CURRENT_DDNS_DOMAIN/d" "${INADYN_CONFIG_FILE}" - systemctl start inadyn + sed -i "s|, ${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" + if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then + sed -i "s|${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" + fi systemctl daemon-reload + systemctl start inadyn fi } diff --git a/src/freedombone-utils-interactive b/src/freedombone-utils-interactive index 1692c042..9e5a562f 100755 --- a/src/freedombone-utils-interactive +++ b/src/freedombone-utils-interactive @@ -126,7 +126,7 @@ function interactive_site_details { while [ ! $SITE_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == "freedns" ]]; then dialog --backtitle "$SITE_BACKTITLE" \ --title "$SITE_CONFIG_TITLE" \ --form "$SITE_FORM_TEXT" 14 55 3 \ @@ -155,7 +155,7 @@ function interactive_site_details { SITE_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then SITE_CODE=$(sed -n 2p < "$data") validate_freedns_code "$SITE_CODE" if [ ! "$VALID_CODE" ]; then @@ -193,7 +193,7 @@ function interactive_site_details_with_title { while [ ! $SITE_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title "$SITE_BACKTITLE" \ --form "$SITE_FORM_TEXT" 14 55 4 \ @@ -225,7 +225,7 @@ function interactive_site_details_with_title { SITE_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then SITE_CODE=$(sed -n 3p < "$data") validate_freedns_code "${SITE_CODE}" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 55799cf7..a36884e0 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -430,6 +430,46 @@ function install_web_server_access_control { fi } +function upgrade_inadyn_config { + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then + return + fi + + if grep -q "{" "${INADYN_CONFIG_FILE}"; then + return + fi + + read_config_param DDNS_PROVIDER + read_config_param DDNS_USERNAME + read_config_param DDNS_PASSWORD + + grep "alias " "${INADYN_CONFIG_FILE}" | sed 's| alias ||g' > ~/.inadyn_existing_sites + DDNS_HOSTNAMES= + while read -r host; do + if [ "$DDNS_HOSTNAMES" ]; then + DDNS_HOSTNAMES="$DDNS_HOSTNAMES, $host" + else + DDNS_HOSTNAMES="$host" + fi + done <~/.inadyn_existing_sites + + if [ ! "$DDNS_HOSTNAMES" ]; then + return + fi + + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; + echo "provider $DDNS_PROVIDER {"; + echo " ssl = true"; + echo " checkip-ssl = false"; + echo " checkip-server = $GET_IP_ADDRESS_URL"; + echo " username = $DDNS_USERNAME"; + echo " password = $DDNS_PASSWORD"; + echo " hostname = { $DDNS_HOSTNAMES }"; + echo '}'; } > "${INADYN_CONFIG_FILE}" +} + function install_dynamicdns { if [[ $SYSTEM_TYPE == "mesh"* ]]; then return @@ -458,6 +498,7 @@ function install_dynamicdns { # https version 1.99.8 apt-get -yq install build-essential curl libgnutls28-dev automake1.11 + apt-get -yq install gnutls-dev libconfuse-dev if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" @@ -477,47 +518,47 @@ function install_dynamicdns { git checkout "$INADYN_COMMIT" -b "$INADYN_COMMIT" set_completion_param "inadyn commit" "$INADYN_COMMIT" - #./autogen.sh - if ! ./configure; then + ./autogen.sh + + if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl; then exit 74890 fi - if ! USE_OPENSSL=1 make; then + if ! make -j5; then exit 74858 fi - if ! make install; then + if ! make install-strip; then exit 3785 fi - # create an unprivileged user - #chmod 600 /etc/shadow - #chmod 600 /etc/gshadow - #useradd -r -s /bin/false debian-inadyn - #chmod 0000 /etc/shadow - #chmod 0000 /etc/gshadow - # create a configuration file { echo 'background'; echo 'verbose 1'; echo 'period 300'; echo 'startup-delay 60'; echo 'cache-dir /run/inadyn'; - echo 'logfile /dev/null'; } > /etc/inadyn.conf - chmod 600 /etc/inadyn.conf + echo 'logfile /dev/null'; } > "${INADYN_CONFIG_FILE}" + chmod 600 "${INADYN_CONFIG_FILE}" { echo '[Unit]'; echo 'Description=inadyn (DynDNS updater)'; echo 'After=network.target'; echo ''; echo '[Service]'; - echo 'ExecStart=/usr/local/sbin/inadyn --config /etc/inadyn.conf'; + echo "ExecStart=/usr/sbin/inadyn --config ${INADYN_CONFIG_FILE}"; echo 'Restart=always'; echo 'Type=forking'; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service systemctl enable inadyn - systemctl start inadyn systemctl daemon-reload + systemctl start inadyn + + # Remove old version of inadyn + if [ -f /usr/local/sbin/inadyn ]; then + rm /usr/local/sbin/inadyn + upgrade_inadyn_config + fi mark_completed "${FUNCNAME[0]}" } From ead7f41f3e1851cf427195421239b757929d66b3 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 17:49:43 +0100 Subject: [PATCH 055/214] Upgrade inadyn --- src/freedombone-upgrade | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 19326753..cf027e92 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -95,6 +95,7 @@ if [ -d "$PROJECT_DIR" ]; then fi #rebuild_exim_with_socks + update_inadyn_config torrc_migrate nodejs_upgrade apt-get -yq -t stretch-backports install certbot From 295601f375ee57d9df14e5a8e4176d370e37dd26 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 17:53:21 +0100 Subject: [PATCH 056/214] Upgrade inadyn --- src/freedombone-upgrade | 2 +- src/freedombone-utils-web | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index cf027e92..33f73ab4 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -95,7 +95,7 @@ if [ -d "$PROJECT_DIR" ]; then fi #rebuild_exim_with_socks - update_inadyn_config + install_dynamicdns torrc_migrate nodejs_upgrade apt-get -yq -t stretch-backports install certbot diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index a36884e0..02eb6eea 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -435,6 +435,10 @@ function upgrade_inadyn_config { return fi + if [ ! -f /usr/sbin/inadyn ]; then + return + fi + if grep -q "{" "${INADYN_CONFIG_FILE}"; then return fi From f3e065390878a7aca61d7bc53c52fbf907f27264 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 17:59:59 +0100 Subject: [PATCH 057/214] Installation of inadyn within images --- src/freedombone-image-customise | 22 ++++++++++------------ src/freedombone-utils-web | 11 ++++------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 75ec9e02..062958d2 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1657,6 +1657,7 @@ image_install_inadyn() { mkdir -p "$rootdir/root/build" fi chroot "$rootdir" apt-get -yq install build-essential curl libgnutls28-dev automake1.11 libconfuse-dev + chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev if [ -d /repos/inadyn ]; then mkdir "$rootdir/root/build/inadyn" @@ -1677,24 +1678,21 @@ image_install_inadyn() { cd "$rootdir/root/build/inadyn" || exit 24682464628 { echo '#!/bin/bash'; echo 'cd ~/build/inadyn'; - echo '#./autogen.sh'; - echo './configure'; - echo 'USE_OPENSSL=1 make'; - echo 'make install'; } > "$rootdir/root/build/build_inadyn.sh" + echo './autogen.sh'; + echo './configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl'; + echo 'make -j5'; + echo 'make install-strip'; } > "$rootdir/root/build/build_inadyn.sh" chmod +x "$rootdir/root/build/build_inadyn.sh" chroot "$rootdir" /root/build/build_inadyn.sh - if [ ! -f "$rootdir/usr/local/sbin/inadyn" ]; then + if [ ! -f "$rootdir/usr/sbin/inadyn" ]; then echo 'Failed to build inadyn' exit 6209356 fi # create a configuration file - { echo 'background'; - echo 'verbose 1'; - echo 'period 300'; - echo 'startup-delay 60'; - echo 'cache-dir /run/inadyn'; - echo 'logfile /dev/null'; } > "$rootdir/etc/inadyn.conf" + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; } > "$rootdir/etc/inadyn.conf" chmod 600 "$rootdir/etc/inadyn.conf" { echo '[Unit]'; @@ -1702,7 +1700,7 @@ image_install_inadyn() { echo 'After=network.target'; echo ''; echo '[Service]'; - echo 'ExecStart=/usr/local/sbin/inadyn --config /etc/inadyn.conf'; + echo 'ExecStart=/usr/sbin/inadyn --config /etc/inadyn.conf'; echo 'Restart=always'; echo 'Type=forking'; echo ''; diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 02eb6eea..edfb9482 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -535,12 +535,9 @@ function install_dynamicdns { fi # create a configuration file - { echo 'background'; - echo 'verbose 1'; - echo 'period 300'; - echo 'startup-delay 60'; - echo 'cache-dir /run/inadyn'; - echo 'logfile /dev/null'; } > "${INADYN_CONFIG_FILE}" + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; } > "${INADYN_CONFIG_FILE}" chmod 600 "${INADYN_CONFIG_FILE}" { echo '[Unit]'; @@ -554,8 +551,8 @@ function install_dynamicdns { echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service - systemctl enable inadyn systemctl daemon-reload + systemctl enable inadyn systemctl start inadyn # Remove old version of inadyn From 06b428e855239b30338a8be98966e25b892b1c3f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:03:35 +0100 Subject: [PATCH 058/214] Only create inadyn config file if it doesn't exist --- src/freedombone-utils-web | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index edfb9482..49cc2534 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -535,9 +535,11 @@ function install_dynamicdns { fi # create a configuration file - { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; - echo ''; } > "${INADYN_CONFIG_FILE}" + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; } > "${INADYN_CONFIG_FILE}" + fi chmod 600 "${INADYN_CONFIG_FILE}" { echo '[Unit]'; From 758568200a673e33b787f11dac3185eae46ce4e5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:04:41 +0100 Subject: [PATCH 059/214] Don't add inadyn to completion file --- src/freedombone-utils-web | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 49cc2534..f2e31013 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -491,10 +491,6 @@ function install_dynamicdns { function_check set_repo_commit set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO" - if [[ $(is_completed "${FUNCNAME[0]}") == "1" ]]; then - return - fi - # Here we compile from source because the current package # doesn't support https, which could result in passwords # being leaked @@ -562,8 +558,6 @@ function install_dynamicdns { rm /usr/local/sbin/inadyn upgrade_inadyn_config fi - - mark_completed "${FUNCNAME[0]}" } function update_default_search_engine { From 6e80322597601c3ff1c0e77ddafcaffb7267c959 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:15:47 +0100 Subject: [PATCH 060/214] Remove old repo if it exists --- src/freedombone-utils-web | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index f2e31013..b8155c26 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -499,6 +499,13 @@ function install_dynamicdns { apt-get -yq install build-essential curl libgnutls28-dev automake1.11 apt-get -yq install gnutls-dev libconfuse-dev + + if [ -f /usr/local/sbin/inadyn ]; then + if [ -d "$INSTALL_DIR/inadyn" ]; then + rm -rf "$INSTALL_DIR/inadyn" + fi + fi + if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" From a30f751b06f1f1e86f93b75b5c3bcc816f8b1eb4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:23:35 +0100 Subject: [PATCH 061/214] Remove old repo sooner --- src/freedombone-utils-web | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index b8155c26..efaca439 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -487,6 +487,12 @@ function install_dynamicdns { return fi + if [ -f /usr/local/sbin/inadyn ]; then + if [ -d "$INSTALL_DIR/inadyn" ]; then + rm -rf "$INSTALL_DIR/inadyn" + fi + fi + # update to the next commit function_check set_repo_commit set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO" @@ -500,12 +506,6 @@ function install_dynamicdns { apt-get -yq install build-essential curl libgnutls28-dev automake1.11 apt-get -yq install gnutls-dev libconfuse-dev - if [ -f /usr/local/sbin/inadyn ]; then - if [ -d "$INSTALL_DIR/inadyn" ]; then - rm -rf "$INSTALL_DIR/inadyn" - fi - fi - if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" From 45e1e83e63bc414e9fb249c14c9fa5d7b3c95c69 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:25:30 +0100 Subject: [PATCH 062/214] Don't sync if upgrading inadyn repo --- src/freedombone-utils-web | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index efaca439..b5d8f8d8 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -491,12 +491,12 @@ function install_dynamicdns { if [ -d "$INSTALL_DIR/inadyn" ]; then rm -rf "$INSTALL_DIR/inadyn" fi + else + # update to the next commit + function_check set_repo_commit + set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO" fi - # update to the next commit - function_check set_repo_commit - set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO" - # Here we compile from source because the current package # doesn't support https, which could result in passwords # being leaked From 4ebdd8479ef6690bfae9254e983b09bcb86627c5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:27:44 +0100 Subject: [PATCH 063/214] Add debug --- src/freedombone-upgrade | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 33f73ab4..83976b3e 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -90,12 +90,15 @@ if [ -d "$PROJECT_DIR" ]; then chmod -R +r /usr/share/${PROJECT_NAME} fi + echo "test0" if ! ${PROJECT_NAME} -c "$CONFIGURATION_FILE"; then exit 453536 fi #rebuild_exim_with_socks + echo "test1" install_dynamicdns + echo "test2" torrc_migrate nodejs_upgrade apt-get -yq -t stretch-backports install certbot From 1de4feca4594337adc57f5e048c5351364c4a6b6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:29:50 +0100 Subject: [PATCH 064/214] Add debug --- src/freedombone-upgrade | 3 --- src/freedombone-utils-web | 9 +++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 83976b3e..33f73ab4 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -90,15 +90,12 @@ if [ -d "$PROJECT_DIR" ]; then chmod -R +r /usr/share/${PROJECT_NAME} fi - echo "test0" if ! ${PROJECT_NAME} -c "$CONFIGURATION_FILE"; then exit 453536 fi #rebuild_exim_with_socks - echo "test1" install_dynamicdns - echo "test2" torrc_migrate nodejs_upgrade apt-get -yq -t stretch-backports install certbot diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index b5d8f8d8..97bb43ab 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -475,18 +475,23 @@ function upgrade_inadyn_config { } function install_dynamicdns { + echo "************ 1" if [[ $SYSTEM_TYPE == "mesh"* ]]; then return fi + + echo "************ 2" if [[ $ONION_ONLY != "no" ]]; then return fi + echo "************ 3" CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then return fi + echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then if [ -d "$INSTALL_DIR/inadyn" ]; then rm -rf "$INSTALL_DIR/inadyn" @@ -506,6 +511,7 @@ function install_dynamicdns { apt-get -yq install build-essential curl libgnutls28-dev automake1.11 apt-get -yq install gnutls-dev libconfuse-dev + echo "************ 5" if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" @@ -516,17 +522,20 @@ function install_dynamicdns { git_clone "$INADYN_REPO" "$INSTALL_DIR/inadyn" fi fi + echo "************ 6" if [ ! -d "$INSTALL_DIR/inadyn" ]; then echo 'inadyn repo not cloned' echo -n | openssl s_client -showcerts -connect github.com:443 -CApath /etc/ssl/certs exit 6785 fi + echo "************ 7" cd "$INSTALL_DIR/inadyn" || exit 246824684 git checkout "$INADYN_COMMIT" -b "$INADYN_COMMIT" set_completion_param "inadyn commit" "$INADYN_COMMIT" ./autogen.sh + echo "************ 8" if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl; then exit 74890 fi From 285e7b453b9bfad1c3ba91f822bb36ae6fe7ae1a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:32:19 +0100 Subject: [PATCH 065/214] Add debug --- src/freedombone-utils-web | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 97bb43ab..1e52ce2c 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -485,8 +485,8 @@ function install_dynamicdns { return fi - echo "************ 3" CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") + echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then return fi From 27a83a928625f2d3c46709e7f0dab1d1c1852389 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:38:11 +0100 Subject: [PATCH 066/214] Remove the inadyn commit from the completion file --- src/freedombone-utils-web | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 1e52ce2c..55831eed 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -485,6 +485,10 @@ function install_dynamicdns { return fi + if grep -q "INADYN_COMMIT" "$COMPLETION_FILE"; then + sed -i '/INADYN_COMMIT/d' "$COMPLETION_FILE" + fi + CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then From e0ee4dc9f86934d156b7e4dd2597157a4035ade5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:41:07 +0100 Subject: [PATCH 067/214] Configuration file --- src/freedombone-utils-web | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 55831eed..123a87ec 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -485,8 +485,8 @@ function install_dynamicdns { return fi - if grep -q "INADYN_COMMIT" "$COMPLETION_FILE"; then - sed -i '/INADYN_COMMIT/d' "$COMPLETION_FILE" + if grep -q "INADYN_COMMIT" "$CONFIGURATION_FILE"; then + sed -i '/INADYN_COMMIT/d' "$CONFIGURATION_FILE" fi CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") From 0dbb5c0c6c34dae93964a03e1c57b97b0b757fe5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:48:01 +0100 Subject: [PATCH 068/214] Remove commit if the old inadyn binary is found --- src/freedombone-utils-web | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 123a87ec..6066839f 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -497,6 +497,9 @@ function install_dynamicdns { echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then + if grep -q "inadyn commit" "$COMPLETION_FILE"; then + sed -d '/inadyn commit/d' "$COMPLETION_FILE" + fi if [ -d "$INSTALL_DIR/inadyn" ]; then rm -rf "$INSTALL_DIR/inadyn" fi From 105c2a78e3b7f7c7034581f4a4f120efd95264fa Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:49:19 +0100 Subject: [PATCH 069/214] Remove commit if the old inadyn binary is found --- src/freedombone-utils-web | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 6066839f..1305def8 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -489,6 +489,12 @@ function install_dynamicdns { sed -i '/INADYN_COMMIT/d' "$CONFIGURATION_FILE" fi + if [ -f /usr/local/sbin/inadyn ]; then + if grep -q "inadyn commit" "$COMPLETION_FILE"; then + sed -d '/inadyn commit/d' "$COMPLETION_FILE" + fi + fi + CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then @@ -497,9 +503,6 @@ function install_dynamicdns { echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then - if grep -q "inadyn commit" "$COMPLETION_FILE"; then - sed -d '/inadyn commit/d' "$COMPLETION_FILE" - fi if [ -d "$INSTALL_DIR/inadyn" ]; then rm -rf "$INSTALL_DIR/inadyn" fi From 5e82c6dd5d3b5ca3a6a15ffd51bfb9e4de32fbf4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:51:32 +0100 Subject: [PATCH 070/214] Typo --- src/freedombone-utils-web | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 1305def8..d78bcd91 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -491,7 +491,7 @@ function install_dynamicdns { if [ -f /usr/local/sbin/inadyn ]; then if grep -q "inadyn commit" "$COMPLETION_FILE"; then - sed -d '/inadyn commit/d' "$COMPLETION_FILE" + sed -i '/inadyn commit/d' "$COMPLETION_FILE" fi fi From e6683e0f1c60a7cc62242eba17d5ef16ac8ce12c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:56:04 +0100 Subject: [PATCH 071/214] Debug --- src/freedombone-utils-web | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index d78bcd91..11442478 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -493,17 +493,19 @@ function install_dynamicdns { if grep -q "inadyn commit" "$COMPLETION_FILE"; then sed -i '/inadyn commit/d' "$COMPLETION_FILE" fi - fi - - CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") - echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" - if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then - return + else + CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") + echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" + if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then + return + fi fi echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then + echo "********* checking $INSTALL_DIR/inadyn" if [ -d "$INSTALL_DIR/inadyn" ]; then + echo "Removing $INSTALL_DIR/inadyn" rm -rf "$INSTALL_DIR/inadyn" fi else From 838e7328a2b97437aa3876521fe1f3285952a7b4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:01:53 +0100 Subject: [PATCH 072/214] Also remove the inadyn repo from the configuration file --- src/freedombone-utils-web | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 11442478..6bb246c7 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -485,6 +485,9 @@ function install_dynamicdns { return fi + if grep -q "INADYN_REPO" "$CONFIGURATION_FILE"; then + sed -i '/INADYN_REPO/d' "$CONFIGURATION_FILE" + fi if grep -q "INADYN_COMMIT" "$CONFIGURATION_FILE"; then sed -i '/INADYN_COMMIT/d' "$CONFIGURATION_FILE" fi From df312b118e29bf3338ac0ed4a3ef3d2ad488d0a0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:06:13 +0100 Subject: [PATCH 073/214] Also remove old inadyn repo during upgrade --- src/freedombone-utils-web | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 6bb246c7..f3e29853 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -511,6 +511,9 @@ function install_dynamicdns { echo "Removing $INSTALL_DIR/inadyn" rm -rf "$INSTALL_DIR/inadyn" fi + if [ -d /repos/inadyn ]; then + rm -rf /repos/inadyn + fi else # update to the next commit function_check set_repo_commit From 1416af54a598477679e600c986f53ddacf532bc7 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:10:46 +0100 Subject: [PATCH 074/214] Change freedns provider name on inadyn upgrade --- src/freedombone-utils-web | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index f3e29853..258f89cc 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -461,6 +461,11 @@ function upgrade_inadyn_config { return fi + if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + DDNS_PROVIDER='freedns' + write_config_param DDNS_PROVIDER "$DDNS_PROVIDER" + fi + { echo 'period = 300'; echo 'user-agent = Mozilla/5.0'; echo ''; From cb21669a632fb27266ec053a18619b8b6451124c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:16:10 +0100 Subject: [PATCH 075/214] Remove debug --- src/freedombone-utils-web | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 258f89cc..a6080184 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -480,12 +480,10 @@ function upgrade_inadyn_config { } function install_dynamicdns { - echo "************ 1" if [[ $SYSTEM_TYPE == "mesh"* ]]; then return fi - echo "************ 2" if [[ $ONION_ONLY != "no" ]]; then return fi @@ -503,17 +501,13 @@ function install_dynamicdns { fi else CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") - echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then return fi fi - echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then - echo "********* checking $INSTALL_DIR/inadyn" if [ -d "$INSTALL_DIR/inadyn" ]; then - echo "Removing $INSTALL_DIR/inadyn" rm -rf "$INSTALL_DIR/inadyn" fi if [ -d /repos/inadyn ]; then @@ -534,7 +528,6 @@ function install_dynamicdns { apt-get -yq install build-essential curl libgnutls28-dev automake1.11 apt-get -yq install gnutls-dev libconfuse-dev - echo "************ 5" if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" @@ -545,20 +538,17 @@ function install_dynamicdns { git_clone "$INADYN_REPO" "$INSTALL_DIR/inadyn" fi fi - echo "************ 6" if [ ! -d "$INSTALL_DIR/inadyn" ]; then echo 'inadyn repo not cloned' echo -n | openssl s_client -showcerts -connect github.com:443 -CApath /etc/ssl/certs exit 6785 fi - echo "************ 7" cd "$INSTALL_DIR/inadyn" || exit 246824684 git checkout "$INADYN_COMMIT" -b "$INADYN_COMMIT" set_completion_param "inadyn commit" "$INADYN_COMMIT" ./autogen.sh - echo "************ 8" if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl; then exit 74890 fi From 5a2401292975cb8294c3ebe442d67deac0a46184 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:28:30 +0100 Subject: [PATCH 076/214] Inadyn systemd daemon --- src/freedombone-image-customise | 16 ++++++++++------ src/freedombone-utils-web | 16 ++++++++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 062958d2..21024105 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1657,7 +1657,7 @@ image_install_inadyn() { mkdir -p "$rootdir/root/build" fi chroot "$rootdir" apt-get -yq install build-essential curl libgnutls28-dev automake1.11 libconfuse-dev - chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev + chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config if [ -d /repos/inadyn ]; then mkdir "$rootdir/root/build/inadyn" @@ -1696,13 +1696,17 @@ image_install_inadyn() { chmod 600 "$rootdir/etc/inadyn.conf" { echo '[Unit]'; - echo 'Description=inadyn (DynDNS updater)'; - echo 'After=network.target'; + echo 'Description=Internet Dynamic DNS Client'; + echo 'Documentation=man:inadyn'; + echo 'Documentation=man:inadyn.conf'; + echo 'Documentation=https://github.com/troglobit/inadyn'; + echo 'ConditionPathExists=/etc/inadyn.conf'; + echo 'After=network-online.target'; + echo 'Requires=network-online.target'; echo ''; echo '[Service]'; - echo 'ExecStart=/usr/sbin/inadyn --config /etc/inadyn.conf'; - echo 'Restart=always'; - echo 'Type=forking'; + echo 'Type=simple'; + echo "ExecStart=/usr/sbin/inadyn -n -s --config ${INADYN_CONFIG_FILE}"; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > "$rootdir/etc/systemd/system/inadyn.service" diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index a6080184..eed191c3 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -526,7 +526,7 @@ function install_dynamicdns { # https version 1.99.8 apt-get -yq install build-essential curl libgnutls28-dev automake1.11 - apt-get -yq install gnutls-dev libconfuse-dev + apt-get -yq install gnutls-dev libconfuse-dev pkg-config if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then @@ -568,13 +568,17 @@ function install_dynamicdns { chmod 600 "${INADYN_CONFIG_FILE}" { echo '[Unit]'; - echo 'Description=inadyn (DynDNS updater)'; - echo 'After=network.target'; + echo 'Description=Internet Dynamic DNS Client'; + echo 'Documentation=man:inadyn'; + echo 'Documentation=man:inadyn.conf'; + echo 'Documentation=https://github.com/troglobit/inadyn'; + echo 'ConditionPathExists=/etc/inadyn.conf'; + echo 'After=network-online.target'; + echo 'Requires=network-online.target'; echo ''; echo '[Service]'; - echo "ExecStart=/usr/sbin/inadyn --config ${INADYN_CONFIG_FILE}"; - echo 'Restart=always'; - echo 'Type=forking'; + echo 'Type=simple'; + echo "ExecStart=/usr/sbin/inadyn -n -s --config ${INADYN_CONFIG_FILE}"; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service From fe6f27c9d419e6bb1632e7b9af8f4e3169a48677 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 21:41:54 +0100 Subject: [PATCH 077/214] Fixing inadyn around using a wildcarded default domain name --- src/freedombone-image-customise | 5 +++-- src/freedombone-utils-dns | 26 +++++++++++--------------- src/freedombone-utils-web | 12 ++++++------ 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 21024105..58630e45 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1691,7 +1691,6 @@ image_install_inadyn() { # create a configuration file { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; echo ''; } > "$rootdir/etc/inadyn.conf" chmod 600 "$rootdir/etc/inadyn.conf" @@ -1706,7 +1705,9 @@ image_install_inadyn() { echo ''; echo '[Service]'; echo 'Type=simple'; - echo "ExecStart=/usr/sbin/inadyn -n -s --config ${INADYN_CONFIG_FILE}"; + echo "ExecStart=/usr/sbin/inadyn -C -n -s --loglevel=err --config ${INADYN_CONFIG_FILE}"; + echo 'Restart=on-failure'; + echo 'RestartSec=10'; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > "$rootdir/etc/systemd/system/inadyn.service" diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 95565d78..33260b86 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -218,19 +218,15 @@ function add_ddns_domain { exit 5745 fi if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then + read_config_param DEFAULT_DOMAIN_NAME { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; echo ''; echo "provider $DDNS_PROVIDER {"; echo " ssl = true"; - echo " checkip-ssl = false"; - echo " checkip-server = $GET_IP_ADDRESS_URL"; echo " username = $DDNS_USERNAME"; echo " password = $DDNS_PASSWORD"; - echo " hostname = { $CURRENT_DDNS_DOMAIN }"; + echo " hostname = $DEFAULT_DOMAIN_NAME"; echo '}'; } > "${INADYN_CONFIG_FILE}" - else - sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}" fi if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then @@ -259,15 +255,15 @@ function remove_ddns_domain { echo $'Unable to find inadyn configuration file "${INADYN_CONFIG_FILE}"' exit 5745 fi - if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then - systemctl stop inadyn - sed -i "s|, ${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" - if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then - sed -i "s|${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" - fi - systemctl daemon-reload - systemctl start inadyn - fi + #if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then + # systemctl stop inadyn + # sed -i "s|, ${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" + # if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then + # sed -i "s|${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" + # fi + # systemctl daemon-reload + # systemctl start inadyn + #fi } function configure_dns { diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index eed191c3..d4a45a87 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -446,6 +446,7 @@ function upgrade_inadyn_config { read_config_param DDNS_PROVIDER read_config_param DDNS_USERNAME read_config_param DDNS_PASSWORD + read_config_param DEFAULT_DOMAIN_NAME grep "alias " "${INADYN_CONFIG_FILE}" | sed 's| alias ||g' > ~/.inadyn_existing_sites DDNS_HOSTNAMES= @@ -467,15 +468,13 @@ function upgrade_inadyn_config { fi { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; echo ''; echo "provider $DDNS_PROVIDER {"; echo " ssl = true"; - echo " checkip-ssl = false"; - echo " checkip-server = $GET_IP_ADDRESS_URL"; echo " username = $DDNS_USERNAME"; echo " password = $DDNS_PASSWORD"; - echo " hostname = { $DDNS_HOSTNAMES }"; + echo ' wildcard = true'; + echo " hostname = $DEFAULT_DOMAIN_NAME"; echo '}'; } > "${INADYN_CONFIG_FILE}" } @@ -562,7 +561,6 @@ function install_dynamicdns { # create a configuration file if [ ! -f "${INADYN_CONFIG_FILE}" ]; then { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; echo ''; } > "${INADYN_CONFIG_FILE}" fi chmod 600 "${INADYN_CONFIG_FILE}" @@ -578,7 +576,9 @@ function install_dynamicdns { echo ''; echo '[Service]'; echo 'Type=simple'; - echo "ExecStart=/usr/sbin/inadyn -n -s --config ${INADYN_CONFIG_FILE}"; + echo "ExecStart=/usr/sbin/inadyn -C -n -s --loglevel=err --config ${INADYN_CONFIG_FILE}"; + echo 'Restart=on-failure'; + echo 'RestartSec=10'; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service From 551ff387366f8d9ba162bbd86f2809e4c4944b1f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 09:47:31 +0100 Subject: [PATCH 078/214] Increase uptime threshold for USB canary --- src/freedombone-usb-canary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-usb-canary b/src/freedombone-usb-canary index f57bfaaa..6fd7f382 100755 --- a/src/freedombone-usb-canary +++ b/src/freedombone-usb-canary @@ -29,7 +29,7 @@ PROJECT_NAME=freedombone UPTIME=$(awk -F '.' '{print $1}' < "/proc/uptime") -if [ "$UPTIME" -gt 120 ]; then +if [ "$UPTIME" -gt 240 ]; then ADMIN_USER=$(grep 'Admin user' /root/${PROJECT_NAME}-completed.txt | awk -F ':' '{print $2}') MY_EMAIL_ADDRESS=${ADMIN_USER}@$(cat /etc/hostname) echo "USB device connected on ${DEVPATH}" | mail -s "${PROJECT_NAME} USB canary" "${MY_EMAIL_ADDRESS}" From 924577a6f2436641d22a5d9e0ce3a74aadabada6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 09:53:00 +0100 Subject: [PATCH 079/214] Prevent usb canary from being activated during upgrades --- src/freedombone-upgrade | 11 +++++++++++ src/freedombone-usb-canary | 18 ++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 33f73ab4..94c408ca 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -61,6 +61,11 @@ if [ $DEVELOPMENT_BRANCH ]; then fi fi +# upgrading file prevents USB canary from activating +if [ ! -f /tmp/.upgrading ]; then + touch /tmp/.upgrading +fi + if [ -f /usr/bin/backupdatabases ]; then if grep -q "cat /root/dbpass" /usr/bin/backupdatabases; then # update to using the password manager @@ -91,6 +96,7 @@ if [ -d "$PROJECT_DIR" ]; then fi if ! ${PROJECT_NAME} -c "$CONFIGURATION_FILE"; then + rm /tmp/.upgrading exit 453536 fi @@ -118,4 +124,9 @@ fi # If logging was left on then turn it off ${PROJECT_NAME}-logging off +# upgrading file prevents USB canary from activating +if [ -f /tmp/.upgrading ]; then + rm /tmp/.upgrading +fi + # deliberately there is no 'exit 0' here diff --git a/src/freedombone-usb-canary b/src/freedombone-usb-canary index 6fd7f382..a165fd40 100755 --- a/src/freedombone-usb-canary +++ b/src/freedombone-usb-canary @@ -28,12 +28,14 @@ PROJECT_NAME=freedombone -UPTIME=$(awk -F '.' '{print $1}' < "/proc/uptime") -if [ "$UPTIME" -gt 240 ]; then - ADMIN_USER=$(grep 'Admin user' /root/${PROJECT_NAME}-completed.txt | awk -F ':' '{print $2}') - MY_EMAIL_ADDRESS=${ADMIN_USER}@$(cat /etc/hostname) - echo "USB device connected on ${DEVPATH}" | mail -s "${PROJECT_NAME} USB canary" "${MY_EMAIL_ADDRESS}" - echo "${ACTION}" > /tmp/usb-canary - echo "${MY_EMAIL_ADDRESS}" >> /tmp/usb-canary - date >> /tmp/usb-canary +if [ ! -f /tmp/.upgrading ]; then + UPTIME=$(awk -F '.' '{print $1}' < "/proc/uptime") + if [ "$UPTIME" -gt 240 ]; then + ADMIN_USER=$(grep 'Admin user' /root/${PROJECT_NAME}-completed.txt | awk -F ':' '{print $2}') + MY_EMAIL_ADDRESS=${ADMIN_USER}@$(cat /etc/hostname) + echo "USB device connected on ${DEVPATH}" | mail -s "${PROJECT_NAME} USB canary" "${MY_EMAIL_ADDRESS}" + echo "${ACTION}" > /tmp/usb-canary + echo "${MY_EMAIL_ADDRESS}" >> /tmp/usb-canary + date >> /tmp/usb-canary + fi fi From 1b349bbd5342e66c41bf3791f5da7f3d5d0506d3 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 10:14:13 +0100 Subject: [PATCH 080/214] Allow some uptime before reporting gnusocial/postactiv daemon restart --- src/freedombone-utils-gnusocialtools | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools index 1b7d72a3..73f831ce 100755 --- a/src/freedombone-utils-gnusocialtools +++ b/src/freedombone-utils-gnusocialtools @@ -464,10 +464,13 @@ function gnusocial_hourly_script { echo '/htdocs/scripts/queuedaemon.php" | grep "/var/www")'; echo "cd /var/www/${domain_name}/htdocs"; echo "if [[ \$daemon_lines != *\"/var/www/\"* ]]; then"; - echo " ADMIN_USER=\$(cat $COMPLETION_FILE | grep 'Admin user' | awk -F ':' '{print \$2}')"; - echo " MY_EMAIL_ADDRESS=\$ADMIN_USER@$HOSTNAME"; - echo -n " echo \"Restarting ${gnusocial_type} daemons\" | mail -s \"${gnusocial_type} "; + echo " UPTIME=\$(awk -F '.' '{print \$1}' < \"/proc/uptime\")"; + echo " if [ \"\$UPTIME\" -gt 500 ]; then"; + echo " ADMIN_USER=\$(cat $COMPLETION_FILE | grep 'Admin user' | awk -F ':' '{print \$2}')"; + echo " MY_EMAIL_ADDRESS=\$ADMIN_USER@$HOSTNAME"; + echo -n " echo \"Restarting ${gnusocial_type} daemons\" | mail -s \"${gnusocial_type} "; echo "daemons not found\" \$MY_EMAIL_ADDRESS"; + echo ' fi'; echo ' su -c "sh scripts/startdaemons.sh" -s /bin/sh www-data'; echo 'fi'; echo 'php scripts/delete_orphan_files.php > /dev/null'; From 5aabd2c130ec27130bda5a70084242500dde54cc Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 10:58:10 +0100 Subject: [PATCH 081/214] USB canary includes details of the device which was connected or disconnected --- src/freedombone-usb-canary | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/freedombone-usb-canary b/src/freedombone-usb-canary index a165fd40..88cdd9db 100755 --- a/src/freedombone-usb-canary +++ b/src/freedombone-usb-canary @@ -33,9 +33,19 @@ if [ ! -f /tmp/.upgrading ]; then if [ "$UPTIME" -gt 240 ]; then ADMIN_USER=$(grep 'Admin user' /root/${PROJECT_NAME}-completed.txt | awk -F ':' '{print $2}') MY_EMAIL_ADDRESS=${ADMIN_USER}@$(cat /etc/hostname) - echo "USB device connected on ${DEVPATH}" | mail -s "${PROJECT_NAME} USB canary" "${MY_EMAIL_ADDRESS}" + + # Which devices have changed? + devices_changed= + if [ -f /tmp/.usb_devices ]; then + lsusb -v > /tmp/.curr_usb_devices + devices_changed=$(diff /tmp/.curr_usb_devices /tmp/.usb_devices) + rm /tmp/.curr_usb_devices + fi + + echo -e "USB device connected on ${DEVPATH}\\n\\n${devices_changed}" | mail -s "${PROJECT_NAME} USB canary" "${MY_EMAIL_ADDRESS}" echo "${ACTION}" > /tmp/usb-canary echo "${MY_EMAIL_ADDRESS}" >> /tmp/usb-canary date >> /tmp/usb-canary fi fi +lsusb -v > /tmp/.usb_devices From 076ddb8bb4e700437fa816fc1add819ec3dd9eeb Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 11:59:24 +0100 Subject: [PATCH 082/214] Include xmpp channel --- doc/EN/index.org | 2 +- doc/EN/support.org | 2 +- website/EN/index.html | 4 +-- website/EN/support.html | 68 ++++++++++++++++++++--------------------- 4 files changed, 38 insertions(+), 38 deletions(-) diff --git a/doc/EN/index.org b/doc/EN/index.org index 7cff5d65..0254c70e 100644 --- a/doc/EN/index.org +++ b/doc/EN/index.org @@ -21,7 +21,7 @@ Check out the [[./apps.html][list of available apps]] and [[./faq.html][Frequent Disk images which can be cloned straight to USB or microSD drives are [[./downloads/v31][available here]]. -If you find bugs, or want to add a new app to this system see the [[./devguide.html][Developers Guide]] and [[./codeofconduct.html][Code of Conduct]]. There is a Matrix chat room available at *#fbone:matrix.freedombone.net*. +If you find bugs, or want to add a new app to this system see the [[./devguide.html][Developers Guide]] and [[./codeofconduct.html][Code of Conduct]]. There is a Matrix chat room available at *#fbone:matrix.freedombone.net* and an XMPP channel at *support@chat.freedombone.net*. If you like this project and want to support continued development then [[./support.html][here's what to do]]. diff --git a/doc/EN/support.org b/doc/EN/support.org index 0e457446..0aa8fa74 100644 --- a/doc/EN/support.org +++ b/doc/EN/support.org @@ -21,7 +21,7 @@ This site can also be accessed via a Tor browser at *http://yjxlc3imv7obva4grjae #+attr_html: :width 60% :align center [[file:images/pubkey.png]] -*XMPP:* bob@freedombone.net with OMEMO or OpenPGP +*XMPP channel:* support@chat.freedombone.net *Matrix:* #fbone:matrix.freedombone.net diff --git a/website/EN/index.html b/website/EN/index.html index 4bbb7287..6b562d8c 100644 --- a/website/EN/index.html +++ b/website/EN/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -265,7 +265,7 @@ Disk images which can be cloned straight to USB or microSD drives are
Developers Guide and Code of Conduct. There is a Matrix chat room available at #fbone:matrix.freedombone.net. +If you find bugs, or want to add a new app to this system see the Developers Guide and Code of Conduct. There is a Matrix chat room available at #fbone:matrix.freedombone.net and an XMPP channel at support@chat.freedombone.net.

diff --git a/website/EN/support.html b/website/EN/support.html index c264011b..1616da5f 100644 --- a/website/EN/support.html +++ b/website/EN/support.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,13 +242,13 @@ for the JavaScript code in this tag.

-
-

Support

+
+

Support

-
-

Contact details

-
+
+

Contact details

+

This site can also be accessed via a Tor browser at http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion

@@ -267,7 +267,7 @@ This site can also be accessed via a Tor browser at
-
-

Things which would be nice to have

-
+
+

Things which would be nice to have

+
-
-

Ideas

-
+
+

Ideas

+

Know of some fabulous web system which could run on Freedombone, but currently doesn't? Contact the above, and be prepared to make a compelling argument for why it should be included.

-
-

Money

-
+
+

Money

+

At the present time this project is not seeking any funding. There is no crowdfunding campaign and no slick marketing video. Those aren't ruled out as future possibilities, but for now they're just not needed.

@@ -306,35 +306,35 @@ If you find this project useful then you may wish to consider donating to
-
-

Testing and reporting bugs

-
+
+

Testing and reporting bugs

+

Testing of the install on different hardware. Also pentesting on test installations to find vulnerabilities.

-
-

Web design and artwork

-
+ -
-

Howto videos

-
+
+

Howto videos

+

If you're good at making videos then a howto for installing Freedombone onto various types of hardware, or testing the mesh system in realistic/exotic scenarios would be good. You could even host videos on PeerTube or Mediagoblin.

-
-

More education and promotion

-
+
+

More education and promotion

+

educate.png @@ -351,18 +351,18 @@ Raising awareness beyond the near zero current level, overcoming fear and parano

-
-

Translations

-
+
+

Translations

+

To add translations modify the json files within the locale subdirectory. Then make a pull request on the Github site.

-
-

Packaging

-
+
+

Packaging

+

Helping to package GNU Social and Hubzilla for Debian would be beneficial.

From 800ec2febc2fc3094b630abb82b2869376abaec2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 12:01:28 +0100 Subject: [PATCH 083/214] Include xmpp channel --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a88384e..85a890e9 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Check out the [list of available apps](https://freedombone.net/apps.html) and [F Disk images which can be cloned straight to USB or microSD drives are [available here](https://freedombone.net/downloads/v31). -If you find bugs, or want to add a new app to this system see the [Developers Guide](https://freedombone.net/devguide.html) and [Code of Conduct](https://freedombone.net/codeofconduct.html). There is a Matrix chat room available at *#fbone:matrix.freedombone.net*. +If you find bugs, or want to add a new app to this system see the [Developers Guide](https://freedombone.net/devguide.html) and [Code of Conduct](https://freedombone.net/codeofconduct.html). There is a Matrix chat room available at *#fbone:matrix.freedombone.net* and an XMPP channel at *support@chat.freedombone.net*. If you like this project and want to support continued development then [here's what to do](https://freedombone.net/support.html). From 1daf58fcd2f4538ae9a91dece8274fe6d412ab20 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 12:39:07 +0100 Subject: [PATCH 084/214] Report tor status as starting if uptime is small --- src/freedombone-tor-health | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/freedombone-tor-health b/src/freedombone-tor-health index e7dc427e..f96a83b5 100755 --- a/src/freedombone-tor-health +++ b/src/freedombone-tor-health @@ -48,14 +48,22 @@ done < /var/log/tor/notices.log mv /var/log/tor/notices_new.log /var/log/tor/notices.log chown -R debian-tor:adm /var/log/tor -if [ $ctr -gt 5 ]; then - echo $'Failed' - exit 0 -fi +UPTIME=$(awk -F '.' '{print $1}' < "/proc/uptime") +if [ "$UPTIME" -gt 500 ]; then + if [ $ctr -gt 5 ]; then + echo $'Failed' + exit 0 + fi -if [ $ctr -gt 0 ]; then - echo $'Poor' - exit 0 + if [ $ctr -gt 0 ]; then + echo $'Poor' + exit 0 + fi +else + if [ $ctr -gt 0 ]; then + echo $'Starting' + exit 0 + fi fi echo $'Good' From 935efed5046111dfd812cba8584424ec36d26f3b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 13:36:09 +0100 Subject: [PATCH 085/214] Link to repo within daemon --- src/freedombone-template | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-template b/src/freedombone-template index faffd9b9..1f023834 100755 --- a/src/freedombone-template +++ b/src/freedombone-template @@ -926,6 +926,7 @@ if [ $app_daemon ]; then echo " echo 'Description=${app_name}';" echo " echo 'After=syslog.target';" echo " echo 'After=network.target';" + echo " echo 'Documentation=${app_name_upper}_REPO"; echo " echo '';" echo " echo '[Service]';" echo " echo 'Type=simple';" From 15f0e0c28d56e348ba4a1e9c67ae07527fafcf49 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 16:18:37 +0100 Subject: [PATCH 086/214] Include openssl development library --- src/freedombone-image-customise | 2 +- src/freedombone-utils-web | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 58630e45..dc9e1a5a 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1657,7 +1657,7 @@ image_install_inadyn() { mkdir -p "$rootdir/root/build" fi chroot "$rootdir" apt-get -yq install build-essential curl libgnutls28-dev automake1.11 libconfuse-dev - chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config + chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config libssl-dev if [ -d /repos/inadyn ]; then mkdir "$rootdir/root/build/inadyn" diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index d4a45a87..66edd235 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -525,7 +525,7 @@ function install_dynamicdns { # https version 1.99.8 apt-get -yq install build-essential curl libgnutls28-dev automake1.11 - apt-get -yq install gnutls-dev libconfuse-dev pkg-config + apt-get -yq install gnutls-dev libconfuse-dev pkg-config libssl-dev if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then From ea971e56822abaf49eef01e24fa63d8a8a2dbdd4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 19:36:56 +0100 Subject: [PATCH 087/214] Change permission on privatebin data directory Avoids server error --- src/freedombone-app-privatebin | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-app-privatebin b/src/freedombone-app-privatebin index 651542d3..b7697554 100755 --- a/src/freedombone-app-privatebin +++ b/src/freedombone-app-privatebin @@ -55,6 +55,7 @@ function secure_privatebin { chown -R ${rootuser}:${htgroup} "${pbpath}/" chown -R www-data:www-data "${pbdata}" + chmod 755 "${pbdata}" } function logging_on_privatebin { From a14781337fa66025564a6ed5dd382771bf7e0091 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 19:42:03 +0100 Subject: [PATCH 088/214] Ensure correct permissions on data directory during upgrades --- src/freedombone-app-privatebin | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/freedombone-app-privatebin b/src/freedombone-app-privatebin index b7697554..c579266b 100755 --- a/src/freedombone-app-privatebin +++ b/src/freedombone-app-privatebin @@ -154,15 +154,16 @@ function reconfigure_privatebin { } function upgrade_privatebin { + if grep -q "privatebin domain" "$COMPLETION_FILE"; then + PRIVATEBIN_DOMAIN_NAME=$(get_completion_param "privatebin domain") + fi + chmod 755 "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/data" + CURR_PRIVATEBIN_COMMIT=$(get_completion_param "privatebin commit") if [[ "$CURR_PRIVATEBIN_COMMIT" == "$PRIVATEBIN_COMMIT" ]]; then return fi - if grep -q "privatebin domain" "$COMPLETION_FILE"; then - PRIVATEBIN_DOMAIN_NAME=$(get_completion_param "privatebin domain") - fi - # update to the next commit function_check set_repo_commit set_repo_commit "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs" "privatebin commit" "$PRIVATEBIN_COMMIT" "$PRIVATEBIN_REPO" From a9ff261133879d1bc758258209b3f048f2527edc Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 21:38:56 +0100 Subject: [PATCH 089/214] inadyn doesn't need openssl library --- src/freedombone-image-customise | 4 ++-- src/freedombone-utils-web | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index dc9e1a5a..1adaa05e 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1657,7 +1657,7 @@ image_install_inadyn() { mkdir -p "$rootdir/root/build" fi chroot "$rootdir" apt-get -yq install build-essential curl libgnutls28-dev automake1.11 libconfuse-dev - chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config libssl-dev + chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config if [ -d /repos/inadyn ]; then mkdir "$rootdir/root/build/inadyn" @@ -1679,7 +1679,7 @@ image_install_inadyn() { { echo '#!/bin/bash'; echo 'cd ~/build/inadyn'; echo './autogen.sh'; - echo './configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl'; + echo './configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var'; echo 'make -j5'; echo 'make install-strip'; } > "$rootdir/root/build/build_inadyn.sh" chmod +x "$rootdir/root/build/build_inadyn.sh" diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 66edd235..c4625832 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -525,7 +525,7 @@ function install_dynamicdns { # https version 1.99.8 apt-get -yq install build-essential curl libgnutls28-dev automake1.11 - apt-get -yq install gnutls-dev libconfuse-dev pkg-config libssl-dev + apt-get -yq install gnutls-dev libconfuse-dev pkg-config if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then @@ -548,7 +548,7 @@ function install_dynamicdns { ./autogen.sh - if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl; then + if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var; then exit 74890 fi if ! make -j5; then From 9d7e1c526302d896ca3171c0af8f7c35ac9687e1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 21:41:23 +0100 Subject: [PATCH 090/214] Tidying --- src/freedombone-utils-web | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index c4625832..76080651 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -449,18 +449,6 @@ function upgrade_inadyn_config { read_config_param DEFAULT_DOMAIN_NAME grep "alias " "${INADYN_CONFIG_FILE}" | sed 's| alias ||g' > ~/.inadyn_existing_sites - DDNS_HOSTNAMES= - while read -r host; do - if [ "$DDNS_HOSTNAMES" ]; then - DDNS_HOSTNAMES="$DDNS_HOSTNAMES, $host" - else - DDNS_HOSTNAMES="$host" - fi - done <~/.inadyn_existing_sites - - if [ ! "$DDNS_HOSTNAMES" ]; then - return - fi if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then DDNS_PROVIDER='freedns' From 32403cbd1c0dc1debd745353800bc64f039a3970 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 21:42:53 +0100 Subject: [PATCH 091/214] Tidying --- src/freedombone-utils-dns | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 33260b86..1c466a19 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -230,8 +230,7 @@ function add_ddns_domain { fi if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then - DDNS_HOSTNAMES=$(grep 'hostname ' "${INADYN_CONFIG_FILE}"| awk -F '{' '{print $2}' | sed 's| }||g') - sed -i "s|hostname .*|hostname = {${DDNS_HOSTNAMES}, ${CURRENT_DDNS_DOMAIN} }|g" "${INADYN_CONFIG_FILE}" + sed -i "s|hostname .*|hostname = $DEFAULT_DOMAIN_NAME" fi chmod 600 "${INADYN_CONFIG_FILE}" From e75e9333fe1fe655aeae5fcdd227cc0703a3e828 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 13 May 2018 21:44:41 +0100 Subject: [PATCH 092/214] Tidying --- src/freedombone-utils-dns | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 1c466a19..abe11317 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -229,9 +229,7 @@ function add_ddns_domain { echo '}'; } > "${INADYN_CONFIG_FILE}" fi - if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then - sed -i "s|hostname .*|hostname = $DEFAULT_DOMAIN_NAME" - fi + sed -i "s|hostname .*|hostname = $DEFAULT_DOMAIN_NAME" chmod 600 "${INADYN_CONFIG_FILE}" systemctl daemon-reload From e1574b49c11ef7df5a0602ace29f7538ed9b21e2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 14 May 2018 19:42:30 +0100 Subject: [PATCH 093/214] Option to install extra packages --- man/freedombone-template.1.gz | Bin 1377 -> 1428 bytes src/freedombone-template | 10 ++++++++++ 2 files changed, 10 insertions(+) diff --git a/man/freedombone-template.1.gz b/man/freedombone-template.1.gz index 7fb4025c645a7caac26fed350c0d7f4fc8a6e938..511a41b7c31736ee157dec496527c306110bab46 100644 GIT binary patch literal 1428 zcmV;F1#9{riwFRB*!fxj1Kn8LZrer>eb-kE^pclIveOhOf+DEwII)4+5hNRJ;RME# zJEXQIcbVO#RTla9&g_zuToBZ7VqSJ`XU<%t@#QIG7EziqF&al6%c>9_;Sh$0 z&*5A&@a*95mmv)4_x1W9TsgE)939ZLD29WtIb;} zu-rNz;kp!737LGXjPtog_o4VmXL2KxAfd>8rJWZ=0d#|@H@4w7D@^vP9<{zXxR#hG zp`m>M?5%s>!TRcCaXdepU7o$Y7!EF%%7JSfp$fGlSpg0`n5<2YgVj={OOVL-2?7eb zV<=Y2(*q^Nf(xJ5SisEY^Zy6!UxY9Xzc8AkN z3W5LmC2Gi2QP2@n`_`&%$c&|T7Fwu8Fe%X!1>ATLRuwtc8Ji^UW7~6FU5v6A>|Db%65WNDVbdSh;iL^t&L&x z{Jf2!70IkA?+JBih58i)dv(pVJhr#iwEUDO>CqKyivC-a|0%k&E5y{_HB*hZx9)hNL zEtw+Agn#DmR~a>jE)x)(=}VrjO~qHD7{gf>N=q6p!M>il$e3|d?ZllO7DCmtFuNDY z5nDrVX_F7@Vr1;KAd3@-Cm=s>bXrgpfyzK-d;CDpyfEPNloalMC z!O-Z)wyFm``9w!-b0>dJ&u71%P;(m`cRjW3Zf#{S=T!=`(-~AnP3u9k_)tvFdE~u1 z0v=%-vm-TiRUo^M{}4sHdByDz=;t%0{wP%Tuxvt!58>UrAi48rV?Yj5vvPu)ed1g( zl6d!s=tJAZUZL&HgBAlC)w}_;3jn;_EADJM*+hWC9+eIK&yfxWuLIr}w3qzt)|hU? z%^6LE!*7J=mxB`4tb3^JPa&^I6ZGk%hhn`7v7)bl>5Tf4(Q8a+{hs#211e#?RJLI4 zll{Ix^7_V2xC8NNSoCU59XPC133}?lac;Gav>RaP8?hDfU<*t9;j^Ef|EOu$#nMM; zy$1f?hZ2tSD&=+?Ux=46LaxFmov`L#a75KLrlHX*~?MFO@6`RhZKjw~B!5EwOl@YuP&`R0%(t20P7B3EUsB#teXRlzL6A&d?W z;es{r?%?p}5sc{j<8TnJ4eB?B4#=7nqbQmz&tP;pyEq+1JN4a;;S);KbZtQ58cd=^ zWuZG@AXOSzRhg(&w*2$*YQ8*QKA~_tro(U}S&4ta7~uv>CJMULaHFwOP-}OWz)hmc zQdqhkS4vwFsmmC3cQ2$xEm^VoTq;fq8#G^}>h8U@iY50f!`A3nNulKC!78sdZ#lzq z>i~zFl4-$s{H0RHW*W`s;tQS06py`xAoqndmK6oi4JKCU#=Ti%yhn8h+R5qicyT^o zonKv!qE#*on8pxhP#c1nfk6u@ZNWFN&P9>~M|U41Afr1M=vr91fYjy5GRc|d;veLY z)-tg!W`}^8z$(XHSHdKa4k3jVE2*i51j7guQH8w-g>M+XMg>{aGh$cM|SF^y&Ya=320*2b`Te$mFzilkbVkAyn3e04Gc zazJ5b?nASnmf&D>PkpYH=gdG8rzgpo%FDc?{y2>=; zJz8_rgnSto-o7(FbVuZ-5{Yj_x|Xm;yf3;G#MH*?>aI}q{%c+B>kTMea15@ON5C~D zt0xAv4@%>fnnieMyclPeg=m6wP`vGgL%{Bc=m{@mU^&tAVS}N;k!@8^dh(Ty(B@A6 zm|e_&JEi6p9d|vo?QU&lIL?a%=4W%LikgOhv;164FWf*oIRZDJ$P~3ZpsyFq?6I%h zQQ7zs9>MLcm)!aF1)0q1o zrviRDI5_xkDVV)*dbPQ5yN)FE*#m{n;sSjhXgl&B_-Os50ynP~@g0+HKjI;*&~%;! zQih3Fy{m=}EtLn*Z}YxzQkHy&9^HR1cYilNo4<5~?d-ezWnGvQ?Xx)fmFnpF6RlGV z^dye!jP?Xe8yn=-R_6V5nh|z&JfX}@sS)Jc8mGdT8vB2T%&u2wSBp_}q++;GmbU&9 jeu-85>xRfgqWus}VjcaC@%!G)qZ84;cF6GV^$`F7HsGrf diff --git a/src/freedombone-template b/src/freedombone-template index 1f023834..d3673196 100755 --- a/src/freedombone-template +++ b/src/freedombone-template @@ -47,6 +47,7 @@ your_name='' your_email='' SHOW_ON_ABOUT=1 database_type='' +debian_packages= function show_help { echo '' @@ -67,6 +68,7 @@ function show_help { echo $' --nodeapp [package] Specify a nodejs package to install' echo $' -o --onion [yes|no] Is this app only available on an onion address?' echo $' -p --php [yes|no] Is this a PHP app?' + echo $' --packages [list of deb package names] Debian packages to be installed' echo $' -s --daemon [yes|no] Add a daemon' echo $' -d --database [mariadb|postgresql|mongodb] Type of database' echo $' -w --web [yes|no] Whether there is a web user interface (default is yes)' @@ -152,6 +154,10 @@ do shift app_dir="$1" ;; + --packages|--package) + shift + debian_packages="$1" + ;; *) # unknown option ;; @@ -713,6 +719,10 @@ fi echo '}' echo '' echo "function install_${app_name} {" +if [ "$debian_packages" ]; then + echo " apt-get -qy install ${debian_packages}" + echo '' +fi if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then echo ' install_mariadb' echo '' From 40f6ed2c2615a4d712cf0e62aeb2dc7300345124 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 14 May 2018 19:45:13 +0100 Subject: [PATCH 094/214] Extra packages example --- doc/EN/devguide.org | 3 +- website/EN/devguide.html | 214 +++++++++++++++++++++++++++------------ 2 files changed, 151 insertions(+), 66 deletions(-) diff --git a/doc/EN/devguide.org b/doc/EN/devguide.org index b78e3f1d..3b95ffda 100644 --- a/doc/EN/devguide.org +++ b/doc/EN/devguide.org @@ -18,10 +18,11 @@ Suppose you have some internet application which you want to add to the system. There's a command which you can use to generate scripts for new apps. Some examples are as follows: -To create a script for a generic PHP plus MySql/MariaDB web app: +To create a script for a generic PHP plus MySql/MariaDB web app with a couple of extra packages: #+begin_src bash freedombone-template --app [name] -e [email] -r [repo url] \ + --packages "cowsay libssl-dev" \ -c [commit] --php yes -d mariadb > \ src/freedombone-app-myappname #+end_src diff --git a/website/EN/devguide.html b/website/EN/devguide.html index bcd440ff..37a8d262 100644 --- a/website/EN/devguide.html +++ b/website/EN/devguide.html @@ -3,26 +3,33 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - - - - - - + + + + + + - + @@ -97,7 +189,7 @@ @licstart The following is the entire license notice for the JavaScript code in this tag. -Copyright (C) 2012-2013 Free Software Foundation, Inc. +Copyright (C) 2012-2017 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modify it under the terms of the GNU @@ -144,28 +236,27 @@ for the JavaScript code in this tag.
-

logo.png

-
-

Developers Guide

+
+

Developers Guide

-
-

Introduction

-
+
+

Introduction

+

Freedombone consists of a set of bash scripts. There are a lot of them, but they're not very complicated. If you're familiar with the GNU/Linux commandline and can hack a bash script then you can probably add a new app or fix a bug in the system. There are no trendy development frameworks to learn or to get in your way. You might also want to consult the Code of Conduct, and there is a Matrix room at #fbone:matrix.freedombone.net

-
-

Adding extra apps

-
+
+

Adding extra apps

+

Suppose you have some internet application which you want to add to the system. To do this you need to create an app script which tells the system how to install/remove and also backup/restore. The script should be designed to work with the current stable version of Debian.

@@ -175,13 +266,13 @@ There's a command which you can use to generate scripts for new apps. Some examp

-To create a script for a generic PHP plus MySql/MariaDB web app: +To create a script for a generic PHP plus MySql/MariaDB web app with a couple of extra packages:

- -
freedombone-template --app [name] -e [email] -r [repo url] \
-                     -c [commit] --php yes -d mariadb > \
+
freedombone-template --app [name] -e [email] -r [repo url] \
+                     --packages "cowsay libssl-dev" \
+                     -c [commit] --php yes -d mariadb > \
                      src/freedombone-app-myappname
 
@@ -191,10 +282,9 @@ For a Nodejs app with MySql/MariaDB database:

- -
freedombone-template --app [name] -e [email] -r [repo url] \
-                     -c [commit] --node yes -d mariadb \
-                     --dir /etc/myappname --daemon yes > \
+
freedombone-template --app [name] -e [email] -r [repo url] \
+                     -c [commit] --node yes -d mariadb \
+                     --dir /etc/myappname --daemon yes > \
                      src/freedombone-app-myappname
 
@@ -204,10 +294,9 @@ For a Python app with Postgresql database:

- -
freedombone-template --app [name] -e [email] -r [repo url] \
-                     -c [commit] -d postgresql \
-                     --dir /etc/myappname --daemon yes > \
+
freedombone-template --app [name] -e [email] -r [repo url] \
+                     -c [commit] -d postgresql \
+                     --dir /etc/myappname --daemon yes > \
                      src/freedombone-app-myappname
 
@@ -217,10 +306,9 @@ For a Python app without any database, communicating between the daemon and the

- -
freedombone-template --app [name] -e [email] -r [repo url] \
-                     -c [commit] --dir /etc/myappname \
-                     --daemon yes --portinternal 1234 > \
+
freedombone-template --app [name] -e [email] -r [repo url] \
+                     -c [commit] --dir /etc/myappname \
+                     --daemon yes --portinternal 1234 > \
                      src/freedombone-app-myappname
 
@@ -230,10 +318,9 @@ For an app without any database which communicates directly on a particular port

- -
freedombone-template --app [name] -e [email] -r [repo url] \
-                     -c [commit] --dir /etc/myappname \
-                     --daemon yes --port 5000 > \
+
freedombone-template --app [name] -e [email] -r [repo url] \
+                     -c [commit] --dir /etc/myappname \
+                     --daemon yes --port 5000 > \
                      src/freedombone-app-myappname
 
@@ -243,10 +330,9 @@ A generic PHP plus MySql/MariaDB web app which is only available on an onion add

- -
freedombone-template --app [name] -e [email] -r [repo url] \
-                     -c [commit] --php yes -d mariadb \
-                     --onion yes > \
+
freedombone-template --app [name] -e [email] -r [repo url] \
+                     -c [commit] --php yes -d mariadb \
+                     --onion yes > \
                      src/freedombone-app-myappname
 
@@ -256,7 +342,6 @@ For more details see the manpage:

-
man freedombone-template
 
@@ -270,7 +355,6 @@ When your new script is ready for testing you can install it with:

-
make install
 
@@ -285,9 +369,9 @@ Submit your working app to -

Customising mesh images

-
+
+

Customising mesh images

+

If you want to make your own specially branded version of the mesh images, such as for a particular event, then to change the default desktop backgrounds edit the images within img/backgrounds and to change the available avatars and desktop icons edit the images within img/avatars. Re-create disk images using the instructions shown previously.

From 855816f05b6cbd66072c5d904640d75005c96aa0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 14 May 2018 19:52:04 +0100 Subject: [PATCH 095/214] Template option to install snap packages --- man/freedombone-template.1.gz | Bin 1428 -> 1437 bytes src/freedombone-template | 15 +++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/man/freedombone-template.1.gz b/man/freedombone-template.1.gz index 511a41b7c31736ee157dec496527c306110bab46..6413e39b1d730741c67dad3e8a2b49babf5f761a 100644 GIT binary patch delta 1390 zcmV-!1(Euc3!MvpABzY82io~s00Z4vZExE)5dQ98aqyRZsqLiefT0+QIceGiSW?4I zunp-DP~u7EB9SUd#nsRszdKTr?bLA!^aaHXCzdGQ+jGwy&mLc%LS_-ADHEe{F$HIN~E_U$JXe`Xl3-~ z#%ft@-b#Ug<<Eh>7gl2 zOxEVk!D^|}B}nA^1OWxzF-|Mx=>jrNvlm(lE7iY$C?TtL>KU?NbqtqF>~*E&G3iiR zc}2lDkhgS^WL)VSJiEiWB!$3#eu)|~RTQ+v)V{T<8!}_*nS~Zd5ll+-#1A(f#JHqE zr=NI8Ei#(~(5Gxh-i&g?F+2?>8dH;6O2r-81`2hH#K`nMwS?T(jnDW!BP;?roaCt$;727Mh>(a3zO&M`i;?Bn|*Dy3y`)OpjX{XWZ4c8TJ1%+uKiMMSQAp- z5TR@*IF*vg#Y>Fqwrgz+oBQW&46R6JO?gj$s6#6hw;&+bC`{dL>^0O;7&cxFxi*0_ zYnrg0bSZR>H4xA2kiTSo#R9*TCQV#=>!ag=9ROhIYVT=Yo8QUrOj$Iqs@bkgJ!I!0A`q>9#$OVs4n$Q<_6uLbx3}b zlWsraF|62h9tBdz6R&z!tvj?f0l@G@Arwv~((llt`=1Q>bK_To&ppC+_TBxm941Bk zC{AHoJGy#9liC~uiIX~~Il)fTFbGTUEB9hD$qBnU8B^va)CiW_8YjxR8v7q=rdOAz wZ|B3okxAg(c$(Hq_%$)fZyO?GjsE3eoY=u1n7ruC+}knu4_yMf4UZB40G5rcy#N3J delta 1381 zcmV-r1)BPu3zQ3gABzY8ci8z_00Z4v+iu%N5PjEI4D^zhNV3xuD1suW>^QN3+7Toh zZQ%sQk~^ffCU=?LrBxRB_|EK-l;p^AfLsvNaAIC|ZfDM1r19k`WEN4HGBFxQ9?Pl_ z9^nv%htJ_$H1O=;@RuPB>G$>eAY3`LPaGZ4wJ3&z!FX|h3d4)(`N?pwQ{TH0yg`kY zt{rGxflIBbJah*fWX6K1DmQ4AE&jTAJ6oJB9#A+M(P6mOqQv(wLb%3KsDdsnTwAOR z)Rym3xK2%3Do@v=%2-b#b(x^;?v?gvwJ0{9Ya>ZvgYKg?-F>iDiS$JR_oL=D#7Z17%rFC>q^Nf(xJ5SisEY^Zy6!U zxY9Xzc8AkN3W5LmC2Gi2QP2@n`_`&%$c&|T7Fwu8Fe%X!1>ATLAR5_`CMsN4%ub2RT_xrv-!#}I52x%F1G<0xc_26wn6 z6CXt}a-cm}m^>%fZ;akL>}#uCfV4dTz3N^f%XWy+(_Vy2*Du9}H6i5<5z2OgQz@BT z{D^VgcCC$J^ZdMxp%uxjDenn&XodO}1mqfjg{ixZ?Sz^J!^TfTu1(;~nkK9#T?(D! zO(mRL87n&-$Ki1Vv3nO=6y#(|2fup%Q=>DL*B00Q=Y6-k#is3UI?|2+U>%@5Y2#j~ zBxiUVTE{G zbSX%vch=QSVd(v*y4u$pP;hVpt`KAd3=+P14Do7L9_T!OwM`a zy*dIOVH>j}HFZ@WyN~}6MZ0;$?GWhaGp7D1RQ9lJLWvLI-Mb*U^Jil~4pXyof}4Hf zTrrY(_lW32+r?g??ahN00~*!50kjJMyxc49Y&zLQfWjV?4gJrN4hF9S-WRl&{O#75 zZo|zPO@za5gy)xo64rmLd#LPBA+JXh^y#FBV!aBnqOXAIjQWz%YfNYTp7z57Dq+1; zwqWg({k}l*`o>MT1Mz8C^lD8VIIL6&dg{P&ZnciI8(`=gu@&)P3rqarv!9;-sA<^6 z(nn~$2L9fM5{~mLB;(;Uv&=+?Ux=46LaxFmov`L#a75KLrlHX*~?MFO@6`RhZ zK Date: Mon, 14 May 2018 22:11:31 +0100 Subject: [PATCH 096/214] Specify internal port within template command --- man/freedombone-template.1.gz | Bin 1437 -> 1451 bytes src/freedombone-template | 126 ++++++++++++++++++++-------------- 2 files changed, 73 insertions(+), 53 deletions(-) diff --git a/man/freedombone-template.1.gz b/man/freedombone-template.1.gz index 6413e39b1d730741c67dad3e8a2b49babf5f761a..59219066d36b3ac5f535c10d4d8847c62d1a2765 100644 GIT binary patch literal 1451 zcmV;c1yuSUiwFRy`uSP_1Kn6{Z`(Ey{_bCK@Rxq6?Ii7hp%{ueY1#x>62nfg4e1b2 z;z{Nrkt#{W)6gHkJ5rMEG;xZx9f}!FB$2$g=U(OUst_JwABOuc z;Y>7eu($u?5Qg-9yFLh44(&5X2Xrlp;b1UcoWSsWdUiYM zRUWzn4l-jwRFxaF%oe|&U(6P#i$@raMsygiwJ7lq7$IC^DO5qX7OpK;25QSsDO{(f zES0DGQDv+rlDbULcF#(Cv|1FK>)J?S*r5BUP4^t6RU*9=IkrMaMk}K?4_3=+^HB;c zw+=|SE`?P>CLb%~d~VTwC_d7e+{h$QC{kZ(=S5KfJz(mMZFpye$xhazRyPON5)&mf zv+6q(o0~B~B(-fuP4Wza6rX<5y6QXx@;aSmW(YTNA z%jx_Lec|oZ`4J;ak$&7E)n><15Ync^9^bNMtE? z?r@7HE=4j@pgmZaJSWv}jNUrzYpY#=v^@Yl>z*RZ9w4FBo`mz=FU5v5A>|DPl9m;%94`JdD4T#9~tefDPSfv z7BTqSj3irPxCf)jUQ41#GU1>3`&mZCq4NX;W%`t-dsFe9D8_J_h18OUQ?Spc&N7ZT z%65vK2PA~7XJS?_21hIny`;@}SSKT6S68_evPWx%mXI%FgtvPxn9hORR4NUH$krNG zh_^-Of`n>nUELIh_CMv-Zf`)r#tFDu9D=mutUfTPe2^Qr*v#Xi3uIDw5v_^Tk@2CTH9y-y8z>y^Y?Hnz|~G)yKamM7uu5#hFT2sXiBUpl-Dt7F1 zts?Ej80t(cUEBzRxAzZTy!>9>@K97gkp^qv@4fl3onOHjkGr9LAz1r@bcioE)JE9{ zJUw`o)`hSUdcU-$&X>V68J%2F$Ne9>0)E)r+xs#XOh3Dk24C>lr3rm;N2ZH}TPo)Q z#8+CH#3{kQRa5;YopCqf(X3c>o&-|I4p|*k>k6$+05H5*gv7~2`XAKj{-+1NZv6W2 zxh?NsG(0wwtbG!vFx?$qy`#x)jv{@V(y(7`~zrnX5!Zp F007e;#4rE= literal 1437 zcmV;O1!DRiiwFP*+WA@l1Kn6{Z`(Ey{_bCK@Rxq6?WF5~p%{ueY1#x>Qo~NL4e1b2 z;z{Nrkt#{W)zBZmJ5rME)Nu;*1;q>}mMGrabI%>m9$%h9W)Y<+6QgnDv8)Q=5e{K^ z_#Dnf1J4c)e;LA%-mlji;mV*Tvh};%xDN!qJE}!?hMA{tY99Yb=E-=+eTq#mYc!`7VX) z)Rd+2bUmt!^(0c43EJ*nX^&QmVsl*^NeUZuAGPW3gSASew<5>Z=*Vbg^ybEDS#91* zf#uc)3D>2tO3376Wt`6~y7$FL+LIfZ1PMj%EA6}}3ZNTIy|E2HSz)qQ^{DmD!L`Ih z2@UN6u(ytPI4vrA%pdn2c9_39Ssc&LW|wDgFNTB5rE=gJN03A9NU;Ei9!%Ee&cSM_ z(j`db`vd_6-7!up<>>-4PO}$U3MKU?NbqtqF>~*E&G3iiRc}2lDkhgS^ zWL)VSJiEiWB!$3#eu)|~RTQ+v)V{T<8!}_*nS~Zd5ll+-#1A(f#JHqEr=NI8Ei#(~ z(5Gxh-i&g?F+2?>8dH;6O2r-81`2hH8}ZX)5=F$CMhe7zOzI0{+f$Q^FU z#HA=k4zwE!ljr36jnP}1eQmW1khUA3SKUiw*$xp}?M1k*{ZedL6H?v~p=>8Om6FND zON{HbYi$gh`{!*8tw?4~c~7WAD-^dNAlE2N-EHhO)KM5VUJbc6fir8Gu%2`&bdEQb zaBgL+>~tK5bXrgpfyzK-d;CDpy zfEPNloalMC!O-Z)wyFm``9w!-b0>dJ&u71%P;(m`cRjW3Zf#{S=T!=`(-~AnO|wI@ zcwbD;`8<4e1bn`2oE@pDs{+}5{6G}#&MR(*K(Egj2}Yr^hh-B=d=WmTk;J=4L?0SG_6lu}B{VhAInLujI~~Bwz2eTMlT8FD>`~d!e~xr8cpdP* zprPd-x5jiEZq8^T9DXA_zZ{e>gWW@Ae+qeanxIc7JrwIXi4}bXOlQ=Wj9z0p>xZ}> z9#9GEiL(W3pX~PqlE*i0!X1cD!=P7d>cC;7O3+gWj^|eENILIqs@bkgJ!I!0A`q>9#$OVs4n$Q<_6uLbx3}blWsra zF|62h9tBdz6R&z!tvj?f0l@G@Arwv~((llt`=1Q>bK_To&ppC+_TBxm941BkC{AHo zJGy#9liC~uiIX~~Il`odj}ia?P2 Date: Mon, 14 May 2018 22:31:44 +0100 Subject: [PATCH 097/214] Another attempt at rocketchat using snap --- src/freedombone-app-rocketchat | 357 +++++++++++++++++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100755 src/freedombone-app-rocketchat diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat new file mode 100755 index 00000000..b4877336 --- /dev/null +++ b/src/freedombone-app-rocketchat @@ -0,0 +1,357 @@ +#!/bin/bash +# +# _____ _ _ +# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ +# | __| _| -_| -_| . | . | | . | . | | -_| +# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| +# +# Freedom in the Cloud +# +# License +# ======= +# +# Copyright (C) 2018 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +VARIANTS='full full-vim' + +IN_DEFAULT_INSTALL=0 +SHOW_ON_ABOUT=1 + +ROCKETCHAT_DOMAIN_NAME= +ROCKETCHAT_CODE= +ROCKETCHAT_ONION_PORT=9722 +ROCKETCHAT_PORT_INTERNAL=1233 + +rocketchat_variables=(ONION_ONLY + ROCKETCHAT_DOMAIN_NAME + ROCKETCHAT_CODE + DDNS_PROVIDER + MY_USERNAME) + +function logging_on_rocketchat { + echo -n '' +} + +function logging_off_rocketchat { + echo -n '' +} + +function remove_user_rocketchat { + remove_username="$1" + + "${PROJECT_NAME}-pass" -u "$remove_username" --rmapp rocketchat +} + +function add_user_rocketchat { + new_username="$1" + new_user_password="$2" + + "${PROJECT_NAME}-pass" -u "$new_username" -a rocketchat -p "$new_user_password" + echo '0' +} + +function install_interactive_rocketchat { + if [ ! "$ONION_ONLY" ]; then + ONION_ONLY='no' + fi + + if [[ "$ONION_ONLY" != "no" ]]; then + ROCKETCHAT_DOMAIN_NAME='rocketchat.local' + write_config_param "ROCKETCHAT_DOMAIN_NAME" "$ROCKETCHAT_DOMAIN_NAME" + else + interactive_site_details "rocketchat" "ROCKETCHAT_DOMAIN_NAME" "ROCKETCHAT_CODE" + fi + APP_INSTALLED=1 +} + +function change_password_rocketchat { + curr_username="$1" + new_user_password="$2" + + read_config_param 'ROCKETCHAT_DOMAIN_NAME' + + "${PROJECT_NAME}-pass" -u "$curr_username" -a rocketchat -p "$new_user_password" +} + +function reconfigure_rocketchat { + # This is used if you need to switch identity. Dump old keys and generate new ones + echo -n '' +} + +function configure_interactive_rocketchat { + W=(1 $"Option 1" + 2 $"Option 2") + + while true + do + # shellcheck disable=SC2068 + selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"rocketchat" --menu $"Choose an operation, or ESC for main menu:" 14 70 3 "${W[@]}" 3>&2 2>&1 1>&3) + + if [ ! "$selection" ]; then + break + fi + case $selection in + 1) # call some function for option 1 + ;; + 2) # call some function for option 2 + ;; + esac + done +} + +function upgrade_rocketchat { + echo -n '' +} + +function backup_local_rocketchat { + ROCKETCHAT_DOMAIN_NAME='rocketchat' + if grep -q "rocketchat domain" "$COMPLETION_FILE"; then + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + fi + + source_directory=/var/snap/rocketchat-server + + suspend_site "${ROCKETCHAT_DOMAIN_NAME}" + + systemctl stop rocketchat + + dest_directory=rocketchat + backup_directory_to_usb "$source_directory" $dest_directory + + restart_site + systemctl start rocketchat +} + +function restore_local_rocketchat { + if ! grep -q "rocketchat domain" "$COMPLETION_FILE"; then + return + fi + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then + return + fi + suspend_site "${ROCKETCHAT_DOMAIN_NAME}" + systemctl stop rocketchat + + temp_restore_dir=/root/temprocketchat + rocketchat_dir=/var/snap/rocketchat-server + + restore_directory_from_usb $temp_restore_dir rocketchat + if [ -d $temp_restore_dir ]; then + if [ -d "$temp_restore_dir$rocketchat_dir" ]; then + cp -rp "$temp_restore_dir$rocketchat_dir"/* "$rocketchat_dir"/ + else + if [ ! -d "$rocketchat_dir" ]; then + mkdir "$rocketchat_dir" + fi + cp -rp "$temp_restore_dir"/* "$rocketchat_dir"/ + fi + rm -rf $temp_restore_dir + fi + systemctl start rocketchat + + restart_site +} + +function backup_remote_rocketchat { + ROCKETCHAT_DOMAIN_NAME='rocketchat' + if grep -q "rocketchat domain" "$COMPLETION_FILE"; then + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + fi + + source_directory=/var/snap/rocketchat-server + + suspend_site "${ROCKETCHAT_DOMAIN_NAME}" + systemctl stop rocketchat + + dest_directory=rocketchat + backup_directory_to_friend "$source_directory" $dest_directory + + systemctl start rocketchat + + restart_site +} + +function restore_remote_rocketchat { + if ! grep -q "rocketchat domain" "$COMPLETION_FILE"; then + return + fi + ROCKETCHAT_DOMAIN_NAME=$(get_completion_param "rocketchat domain") + if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then + return + fi + suspend_site "${ROCKETCHAT_DOMAIN_NAME}" + systemctl stop rocketchat + + temp_restore_dir=/root/temprocketchat + rocketchat_dir=/var/snap/rocketchat-server + + restore_directory_from_friend $temp_restore_dir rocketchat + if [ -d $temp_restore_dir ]; then + if [ -d "$temp_restore_dir$rocketchat_dir" ]; then + cp -rp "$temp_restore_dir$rocketchat_dir"/* "$rocketchat_dir"/ + else + if [ ! -d "$rocketchat_dir" ]; then + mkdir "$rocketchat_dir" + fi + cp -rp $temp_restore_dir/* "$rocketchat_dir"/ + fi + rm -rf $temp_restore_dir + fi + systemctl start rocketchat + + restart_site +} + +function remove_rocketchat { + nginx_dissite "$ROCKETCHAT_DOMAIN_NAME" + remove_certs "$ROCKETCHAT_DOMAIN_NAME" + + remove_nodejs rocketchat + + if [ -d "/var/www/$ROCKETCHAT_DOMAIN_NAME" ]; then + rm -rf "/var/www/$ROCKETCHAT_DOMAIN_NAME" + fi + if [ -f "/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME" ]; then + rm "/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME" + fi + remove_onion_service rocketchat "${ROCKETCHAT_ONION_PORT}" + if grep -q "rocketchat" /etc/crontab; then + sed -i "/rocketchat/d" /etc/crontab + fi + remove_app rocketchat + remove_completion_param install_rocketchat + sed -i '/rocketchat/d' "$COMPLETION_FILE" + + remove_ddns_domain "$ROCKETCHAT_DOMAIN_NAME" + + snap remove rocketchat-server +} + +function install_rocketchat { + apt-get -qy install snapd + snap install rocketchat-server + + install_nodejs rocketchat + if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then + echo $'No domain name was given' + exit 3568356 + fi + + if [ -d "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" ]; then + rm -rf "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" + fi + mkdir -p "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" + + chmod g+w "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" + chown -R www-data:www-data "/var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs" + + add_ddns_domain "$ROCKETCHAT_DOMAIN_NAME" + + ROCKETCHAT_ONION_HOSTNAME=$(add_onion_service rocketchat 80 "${ROCKETCHAT_ONION_PORT}") + + rocketchat_nginx_site=/etc/nginx/sites-available/$ROCKETCHAT_DOMAIN_NAME + if [[ "$ONION_ONLY" == "no" ]]; then + nginx_http_redirect "$ROCKETCHAT_DOMAIN_NAME" "index index.html" + { echo 'server {'; + echo ' listen 443 ssl;'; + echo ' #listen [::]:443 ssl;'; + echo " server_name $ROCKETCHAT_DOMAIN_NAME;"; + echo ''; } >> "$rocketchat_nginx_site" + nginx_compress "$ROCKETCHAT_DOMAIN_NAME" + echo '' >> "$rocketchat_nginx_site" + echo ' # Security' >> "$rocketchat_nginx_site" + nginx_ssl "$ROCKETCHAT_DOMAIN_NAME" + + nginx_security_options "$ROCKETCHAT_DOMAIN_NAME" + + { echo ' add_header Strict-Transport-Security max-age=15768000;'; + echo ''; + echo ' # Logs'; + echo ' access_log /dev/null;'; + echo ' error_log /dev/null;'; + echo ''; + echo ' # Root'; + echo " root /var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs;"; + echo ''; + echo ' index index.html;'; + echo ' # Location'; + echo ' location / {'; } >> "$rocketchat_nginx_site" + nginx_limits "$ROCKETCHAT_DOMAIN_NAME" '15m' + { echo " proxy_pass http://localhost:$ROCKETCHAT_PORT_INTERNAL;"; + echo ' proxy_http_version 1.1;'; + echo " proxy_set_header Upgrade \$http_upgrade;"; + echo " proxy_set_header Connection \"upgrade\";" + echo " proxy_set_header Host \$http_host;" + echo ''; + echo " proxy_set_header X-Real-IP \$remote_addr;"; + echo " proxy_set_header X-Forward-For \$proxy_add_x_forwarded_for;"; + echo ' proxy_set_header X-Forward-Proto http;'; + echo ' proxy_set_header X-Nginx-Proxy true;'; + echo ''; + echo ' proxy_redirect off;'; + echo ' }'; + echo '}'; } >> "$rocketchat_nginx_site" + else + echo -n '' > "$rocketchat_nginx_site" + fi + { echo 'server {'; + echo " listen 127.0.0.1:$ROCKETCHAT_ONION_PORT default_server;"; + echo " server_name $ROCKETCHAT_ONION_HOSTNAME;"; + echo ''; } >> "$rocketchat_nginx_site" + nginx_compress "$ROCKETCHAT_DOMAIN_NAME" + echo '' >> "$rocketchat_nginx_site" + nginx_security_options "$ROCKETCHAT_DOMAIN_NAME" + { echo ''; + echo ' # Logs'; + echo ' access_log /dev/null;'; + echo ' error_log /dev/null;'; + echo ''; + echo ' # Root'; + echo " root /var/www/$ROCKETCHAT_DOMAIN_NAME/htdocs;"; + echo ''; + echo ' index index.html;'; + echo ' # Location'; + echo ' location / {'; } >> "$rocketchat_nginx_site" + nginx_limits "$ROCKETCHAT_DOMAIN_NAME" '15m' + { echo " proxy_pass http://localhost:$ROCKETCHAT_PORT_INTERNAL;"; + echo ' proxy_http_version 1.1;'; + echo " proxy_set_header Upgrade \$http_upgrade;"; + echo " proxy_set_header Connection \"upgrade\";" + echo " proxy_set_header Host \$http_host;" + echo ''; + echo " proxy_set_header X-Real-IP \$remote_addr;"; + echo " proxy_set_header X-Forward-For \$proxy_add_x_forwarded_for;"; + echo ' proxy_set_header X-Forward-Proto http;'; + echo ' proxy_set_header X-Nginx-Proxy true;'; + echo ''; + echo ' proxy_redirect off;'; + echo ' }'; + echo '}'; } >> "$rocketchat_nginx_site" + + create_site_certificate "$ROCKETCHAT_DOMAIN_NAME" 'yes' + + nginx_ensite "$ROCKETCHAT_DOMAIN_NAME" + + systemctl restart nginx + + "${PROJECT_NAME}-pass" -u "$MY_USERNAME" -a rocketchat -p "$ROCKETCHAT_ADMIN_PASSWORD" + set_completion_param "rocketchat domain" "$ROCKETCHAT_DOMAIN_NAME" + + APP_INSTALLED=1 +} + +# NOTE: deliberately there is no "exit 0" From 179521763c721f584718fb0f5c0aeaf8ee056a66 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 14 May 2018 23:06:41 +0100 Subject: [PATCH 098/214] Change gogs port --- src/freedombone-app-gogs | 7 ++++--- src/freedombone-app-rocketchat | 2 +- src/freedombone-template | 16 ++++++---------- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/freedombone-app-gogs b/src/freedombone-app-gogs index 6e87b424..8a2e4c0a 100755 --- a/src/freedombone-app-gogs +++ b/src/freedombone-app-gogs @@ -39,6 +39,7 @@ GIT_CODE= GIT_ONION_PORT=8090 GIT_ADMIN_PASSWORD= GOGS_BIN= +GOGS_PORT=3145 gogs_variables=(ONION_ONLY GIT_ADMIN_PASSWORD @@ -596,7 +597,7 @@ function install_gogs { echo ' location / {'; } >> "/etc/nginx/sites-available/${GIT_DOMAIN_NAME}" function_check nginx_limits nginx_limits "${GIT_DOMAIN_NAME}" '10G' - { echo ' proxy_pass http://localhost:3000;'; + { echo " proxy_pass http://localhost:${GOGS_PORT};"; echo ' }'; echo ''; echo ' fastcgi_buffers 64 4K;'; @@ -628,7 +629,7 @@ function install_gogs { echo ' location / {'; } >> "/etc/nginx/sites-available/${GIT_DOMAIN_NAME}" function_check nginx_limits nginx_limits "${GIT_DOMAIN_NAME}" '10G' - { echo ' proxy_pass http://localhost:3000;'; + { echo " proxy_pass http://localhost:${GOGS_PORT};"; echo ' }'; echo ''; echo ' fastcgi_buffers 64 4K;'; @@ -713,7 +714,7 @@ function install_gogs { echo "DOMAIN = ${GIT_ONION_HOSTNAME}" >> ${GOGS_CONFIG_FILE} echo "ROOT_URL = http://$GIT_DOMAIN_NAME/" >> ${GOGS_CONFIG_FILE} fi - { echo 'HTTP_PORT = 3000'; + { echo "HTTP_PORT = ${GOGS_PORT}"; echo "SSH_PORT = $SSH_PORT"; echo 'SSH_DOMAIN = %(DOMAIN)s'; echo "CERT_FILE = /etc/ssl/certs/${GIT_DOMAIN_NAME}.pem"; diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat index b4877336..3aaad292 100755 --- a/src/freedombone-app-rocketchat +++ b/src/freedombone-app-rocketchat @@ -33,7 +33,7 @@ SHOW_ON_ABOUT=1 ROCKETCHAT_DOMAIN_NAME= ROCKETCHAT_CODE= ROCKETCHAT_ONION_PORT=9722 -ROCKETCHAT_PORT_INTERNAL=1233 +ROCKETCHAT_PORT_INTERNAL=3000 rocketchat_variables=(ONION_ONLY ROCKETCHAT_DOMAIN_NAME diff --git a/src/freedombone-template b/src/freedombone-template index c80e4c90..00946298 100755 --- a/src/freedombone-template +++ b/src/freedombone-template @@ -873,12 +873,10 @@ if [ $app_webui ]; then echo '' echo " { echo ' add_header Strict-Transport-Security max-age=15768000;';" echo " echo '';" - echo " echo ' # Logs';" - echo " echo ' access_log /dev/null;';" - echo " echo ' error_log /dev/null;';" + echo " echo ' access_log /dev/null;';" + echo " echo ' error_log /dev/null;';" echo " echo '';" - echo " echo ' # Root';" - echo " echo \" root /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs;\";" + echo " echo \" root /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs;\";" echo " echo '';" if [[ "$app_php" == 'yes' ]]; then echo " echo ' index index.php;';" @@ -920,12 +918,10 @@ if [ $app_webui ]; then echo " echo '' >> \"\$${app_name}_nginx_site\"" echo " nginx_security_options \"\$${app_name_upper}_DOMAIN_NAME\"" echo " { echo '';" - echo " echo ' # Logs';" - echo " echo ' access_log /dev/null;';" - echo " echo ' error_log /dev/null;';" + echo " echo ' access_log /dev/null;';" + echo " echo ' error_log /dev/null;';" echo " echo '';" - echo " echo ' # Root';" - echo " echo \" root /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs;\";" + echo " echo \" root /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs;\";" echo " echo '';" if [[ "$app_php" == 'yes' ]]; then echo " echo ' index index.php;';" From b1ef90bef94ca5e6a82eca071e54fca31de2b397 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 15 May 2018 10:09:47 +0100 Subject: [PATCH 099/214] Allow weekly and monthly pastes --- src/freedombone-app-privatebin | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/freedombone-app-privatebin b/src/freedombone-app-privatebin index c579266b..e081bf89 100755 --- a/src/freedombone-app-privatebin +++ b/src/freedombone-app-privatebin @@ -438,8 +438,6 @@ function install_privatebin { sed -i 's|; qrcode|qrcode|g' "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/cfg/conf.php" sed -i 's|default =.*|default = "1day"|g' "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/cfg/conf.php" sed -i 's|languagedefault =.*|languagedefault = "en"|g' "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/cfg/conf.php" - sed -i 's|1week =|; 1week =|g' "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/cfg/conf.php" - sed -i 's|1month =|; 1month =|g' "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/cfg/conf.php" sed -i 's|1year =|; 1year =|g' "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/cfg/conf.php" sed -i 's|never =|; never =|g' "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/cfg/conf.php" sed -i 's|limit = 10|limit = 30|g' "/var/www/$PRIVATEBIN_DOMAIN_NAME/htdocs/cfg/conf.php" From c5ce8cfcabb4f95efebc09c2d7e8b9b0c0e137c4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 15 May 2018 10:30:55 +0100 Subject: [PATCH 100/214] Bump nextcloud commit --- src/freedombone-app-nextcloud | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-nextcloud b/src/freedombone-app-nextcloud index 85845e06..66802c9d 100755 --- a/src/freedombone-app-nextcloud +++ b/src/freedombone-app-nextcloud @@ -38,7 +38,7 @@ NEXTCLOUD_CODE= NEXTCLOUD_ONION_PORT=8112 NEXTCLOUD_REPO="https://github.com/nextcloud/server" # Stable 13 branch -NEXTCLOUD_COMMIT='b16824db31cd00e26e72216bf995d52389b9c93c' +NEXTCLOUD_COMMIT='edd5712c6ead5b09fa4f996cfda66fc4e18ba597' NEXTCLOUD_ADMIN_PASSWORD= nextcloud_variables=(ONION_ONLY From 9a72c76e234cce6d35264b932cab1097645db8d6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 15 May 2018 10:50:54 +0100 Subject: [PATCH 101/214] Make nextcloud server side encryption optional --- src/freedombone-app-nextcloud | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/freedombone-app-nextcloud b/src/freedombone-app-nextcloud index 66802c9d..c17e2ef5 100755 --- a/src/freedombone-app-nextcloud +++ b/src/freedombone-app-nextcloud @@ -40,6 +40,7 @@ NEXTCLOUD_REPO="https://github.com/nextcloud/server" # Stable 13 branch NEXTCLOUD_COMMIT='edd5712c6ead5b09fa4f996cfda66fc4e18ba597' NEXTCLOUD_ADMIN_PASSWORD= +NEXTCLOUD_SERVER_SIDE_ENCRYPTION=1 nextcloud_variables=(ONION_ONLY NEXTCLOUD_DOMAIN_NAME @@ -83,6 +84,16 @@ function install_interactive_nextcloud { ONION_ONLY='no' fi + dialog --title $"Enable NextCloud server side encryption" \ + --backtitle $"Freedombone Configuration" \ + --yesno $"\\nDo you want to enable server side encryption. On ARM or older x86 systems, especially without HRNG, this may make performance excessively slow?" 10 60 + sel=$? + case $sel in + 1) NEXTCLOUD_SERVER_SIDE_ENCRYPTION= + ;; + 255) return;; + esac + if [[ $ONION_ONLY != "no" ]]; then NEXTCLOUD_DOMAIN_NAME='nextcloud.local' else @@ -668,12 +679,14 @@ function install_nextcloud_main { sudo -u www-data ./occ check sudo -u www-data ./occ status sudo -u www-data ./occ app:list - sudo -u www-data ./occ app:enable encryption - if ! sudo -u www-data ./occ encryption:enable; then - echo $'Encryption not enabled' - exit 73527 + if [ $NEXTCLOUD_SERVER_SIDE_ENCRYPTION ]; then + sudo -u www-data ./occ app:enable encryption + if ! sudo -u www-data ./occ encryption:enable; then + echo $'Encryption not enabled' + exit 73527 + fi + sudo -u www-data ./occ encryption:status fi - sudo -u www-data ./occ encryption:status sudo -u www-data ./occ config:system:set appstoreenabled --value=false chmod g+w "/var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/config/config.php" chown -R www-data:www-data "/var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs" From e6e24f3a3b0931c03ba1e66c332e94e90bf171c4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 15 May 2018 12:06:07 +0100 Subject: [PATCH 102/214] Bump mailpile commit --- src/freedombone-app-mailpile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-mailpile b/src/freedombone-app-mailpile index f066e921..d4c7c386 100755 --- a/src/freedombone-app-mailpile +++ b/src/freedombone-app-mailpile @@ -35,7 +35,7 @@ MAILPILE_DOMAIN_NAME= MAILPILE_CODE= MAILPILE_ONION_PORT=8103 MAILPILE_REPO="https://github.com/mailpile/Mailpile" -MAILPILE_COMMIT='f82074d2ab5ccd65d14a6b3c6cd65aeb132831d7' +MAILPILE_COMMIT='3f6ab53de90f85bca8c52e5511e78cd7aca5ef1f' MAILPILE_PORT=33411 mailpile_variables=(MAILPILE_REPO From 0243866ac91fd00b154e74604c9dc75138bc0f4f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 15 May 2018 12:23:11 +0100 Subject: [PATCH 103/214] Extra mailpile debian packages --- src/freedombone-app-mailpile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-app-mailpile b/src/freedombone-app-mailpile index d4c7c386..8b9a5da8 100755 --- a/src/freedombone-app-mailpile +++ b/src/freedombone-app-mailpile @@ -171,6 +171,7 @@ function install_mailpile { fi apt-get -yq install python-pip python-lxml python-dev libjpeg-dev + apt-get -yq install openssl python-pgpdump python-cryptography libssl-dev if [ ! -d /var/www/$MAILPILE_DOMAIN_NAME ]; then mkdir /var/www/$MAILPILE_DOMAIN_NAME From a4b1a7903d6c520c37f1dfea267383f067d1021c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 15 May 2018 12:25:48 +0100 Subject: [PATCH 104/214] Restart the mailpile daemon after upgrades --- src/freedombone-app-mailpile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-app-mailpile b/src/freedombone-app-mailpile index 8b9a5da8..a82bea25 100755 --- a/src/freedombone-app-mailpile +++ b/src/freedombone-app-mailpile @@ -105,6 +105,7 @@ function upgrade_mailpile { pip install -r requirements.txt chown -R mailpile:mailpile "/var/www/$MAILPILE_DOMAIN_NAME/mail" + systemctl restart mailpile } function backup_local_mailpile { From e1a877eb67ee0233ecd6eae75d703bd7d6e94470 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 15 May 2018 22:57:16 +0100 Subject: [PATCH 105/214] Change gogs port number --- src/freedombone-app-gogs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-gogs b/src/freedombone-app-gogs index 8a2e4c0a..5e0ca0a9 100755 --- a/src/freedombone-app-gogs +++ b/src/freedombone-app-gogs @@ -150,6 +150,18 @@ function upgrade_gogs { return fi + GOGS_CONFIG_PATH=/home/${GOGS_USERNAME}/custom/conf + GOGS_CONFIG_FILE=$GOGS_CONFIG_PATH/app.ini + + # Change port number if necessary + if ! grep -q "HTTP_PORT = ${GOGS_PORT}" "${GOGS_CONFIG_FILE}"; then + sed -i "s|HTTP_PORT =.*|HTTP_PORT = ${GOGS_PORT}|g" "${GOGS_CONFIG_FILE}" + read_config_param GIT_DOMAIN_NAME + sed -i "s|proxy_pass .*|proxy_pass http://localhost:${GOGS_PORT};|g" "/etc/nginx/sites-available/${GIT_DOMAIN_NAME}" + systemctl restart gogs + systemctl restart nginx + fi + CURR_GOGS_VERSION=$(get_completion_param "gogs version") echo "gogs current version: ${CURR_GOGS_VERSION}" echo "gogs app version: ${GOGS_VERSION}" @@ -157,8 +169,6 @@ function upgrade_gogs { return fi - GOGS_CONFIG_PATH=/home/${GOGS_USERNAME}/custom/conf - GOGS_CONFIG_FILE=$GOGS_CONFIG_PATH/app.ini cp "$GOGS_CONFIG_FILE $INSTALL_DIR/gogs_config.ini" if [ -d "$INSTALL_DIR/gogs-repositories" ]; then From e4847ae1506f137fc037f633d6f7a2c6d5377b78 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 09:55:28 +0100 Subject: [PATCH 106/214] Update prosody version to 0.10.1 release --- image_build/prosody-0.10-1nightly468.tar.gz | Bin 334465 -> 0 bytes image_build/prosody-0.10-1nightly478.tar.gz | Bin 0 -> 334569 bytes src/freedombone-app-xmpp | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 image_build/prosody-0.10-1nightly468.tar.gz create mode 100644 image_build/prosody-0.10-1nightly478.tar.gz diff --git a/image_build/prosody-0.10-1nightly468.tar.gz b/image_build/prosody-0.10-1nightly468.tar.gz deleted file mode 100644 index 9b96be66ac67c995a2a466e8c58375085dc9e967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334465 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≦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

X;+hJ(&vZ)ey(1ZeII;uwYo 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 YSLBoq5eU$hM6H33U{^?yiRZE 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%0D?*^BwTBEsJ3JRm!XckO2MAZ+|>q>h) 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 (hSZoncNcW|J9;Hd;9VOm#X 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 CHYq3o diff --git a/image_build/prosody-0.10-1nightly478.tar.gz b/image_build/prosody-0.10-1nightly478.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..66277a189c3193c2b9c3c3724f941a8831d94c59 GIT binary patch literal 334569 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
gGAC2#OTga&MK=WY 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
-^vC@4 z6fzC{B&mIXoN{CQ#Qy#XWm1S+$c=VVd}Kv-AbiaRUmK={H(ZxHXIW5JrmwJAC%5;^^gWR>To>+#yrTWcPQx980f zplrk8O1VAvHCyZRZeeA-uwOhe;1#B&+~sJ10W^rJzJxod6Q=N>QI%P8ln*|3U8$3 zd_YEqAh9T$L;ITT_wbU0zRD|9vh-NJ2FH^AZF!H`C5A-jeVK$o#p$sZTb+v@x&|m0 z^Z3V^A&~opc`B?lJjR=WP0uYICvrZk7E@(I3}x||iVfrq8D9z~ zi$5$Mt1Vxp4!%kZz=7aFz!~xfgMOM8vRtWwWQksCCrIc}YP>&j81fu#doga4=(}Jb zHW+cqNsOsPIg!n=m_i!Tnq7`ejp*L0&EB%8?<82gN#w!`-{M2(iR7NaL?yN|Ap`=Z zSqS@QdDs((8Mhk?5H!xES+B2L-!hwrAaj^$R$(me4HVT28i>mwnsacg=3r$ zN`|4!QTt*Wz)KRb*0Geq7P2W5wVgV2`^%9VI-6R=Vpy5dZdCpbGhn5oStsUekWO!- zANqv`3|l65Z15@l@@pLhj}MG9b36}_u6I(Zy8}gcXgDK9B#hi@qj5779o>+nrH*=h zzPUm7+%)Km&15SNES2**Sf~Betao_^XFu-s9fR3BoRcUXdoYe( zKWo~Kh)h?%M7r^2|8)cJ9GQ`{Z~C!~8|115XSX%;mI-tH;FOBg@`@Y=)#>nx)iQ4m zBXEv)n@*|;8K3wo#8>Xf#i{#tXhI!v6fD6MaX_Mz&c{@iI?UMzM+(a(9jvJE6kGwJ z2>OP@mtQQ*Z5f#bt=KUXJ4tlLH-8oy>KH6cM3g{L1qR*cE_37i}>LQ1*te{jd(j`P}q1YdvIKEDX1$iTBB_JBv zs2o9jgmN+*FGdi;2yS&jL%}DP`BIam{#9N>$z&T|ZEwEu;5S>Gu?{0r+<@};c2YQX zcf_>0Rdj2ZACs)+9@B5OCDxK_Amsr7BAM_Gt??ufl~6w`7BZfLik$bJrXyn3-6Gd` z@=PGj+>m)ujEn2O$-EE(gp7&<6N|yn*U#gf5|$5admFi{+zY{Ly-*9?7G`CSE2^-q)DTfX`f-2=*@4qf90NU%Lax#y zzv2l**9={Y=RMt97s*+(X~WLtSCGUyD9-BB*IjLi%;y@XChvmjR%}e{{j%PC{ZXMF z(z|?pV}iTZ{$Chz<+Avd?*I1oKf2d%-2dJA{r>NreEvP}|JJbov1SLe`2esxaj9_K z!^0?3Z7rxxF`upOu4*u`R?f*^AAhq0x8DZ|rXk088|D0Z#a$MJUQc6pHi6j%lv{OU zBR4Z^UD&L3U$fN00yXi=Y@~2*nAq5etTo=pu%*{M+p*V0XK(ms@OL zc=OTDMKu&tUhB|gp1~R6PAZEs_%4M|*_zH1HKZ)J7M6f&c4Rv-OtKeFc6M9$!Cwz* zcIL^Byy@=VcL7>1%gJJ1#7grUuk?l4A5?b#t}ctuySw<1JtOjKEa+U9IBqS+ZK62V zoTAdDlvqqK*bQvFtr0Y`We&8h5q7XuqmIP4T& ztJ&QIJ!Teg+ufmg#EO_!c;cp*04LfOpbU7Mr(46c7uku;l-azlj2;8__mU_i5d8)* z4x{}t(0-O|uO3eH5}PF%gKClV4QZ#8Tm7gYJzxbwmqo%(`gt+u)<6efzr_dF_3yq> z6zwqD_EZ<`lG$44KP2;@xI2@4JeZClgy#*IffeWfosT~12mJq?`}gkte*V9U&%g8e zui{iR%t`zh7JR!`Tn*~H9yhrL^H7cf&bCsW+w&qDm|xO{=V~UA7x|x{kSTea@?kY9&Oj`Ht!I7X#7IaS@j_on>qBR#;!;n1JhsefjA8}Q8K}_on@_g4 z>TMuC+<=QFHZ-CfgeEou36L)yJ6QeN-nx>y8(9b2wqY4m<;*^B#sO$?S$+r*A*Fa` z^~E~nt~8l>4$Vy!#wZJZJ>zO}rq#-q`t4F`e=Tta>cpSqAB zh6J%f#4jc9P2D_=&~ zD|(DvTL-x|bOyF0=~7}%9Gj;ohQ27S4b@Li?0It;4-GKnkq_tE~>_N{Ou3tF((u+i=)L-wA=50Gn_! zXX-Cg4_z=(e(0?uJ+nMPH#z`R;=BHP97O~G(3mhcC$S8VG6A|( z7v#xr55IG?Zw0=5HoPz(V+3dLsfP-F^3($$KRn2%aEGkW!3?!W0n>ZQl|gj#Z#jo- zMv$`<7XwWsMre5p1yhC&W+IuD zm^cY^lf!W}DY#+i7Qbb7oc4(trF&*31<%YM`-}`T&60qBh)_05;yO^j8!0>(7w7r# zTGyc`wni9d%|lYd01q0g(8L3prUNd=T@%X-Zv4=TbBaLlF;UhXf*Yv*$YE|%+3D7; zgSFc#K2$YEY)6*dJc9+2?Hp|Izh(D->Q-p95qxFsuq>6flV zWgIvt&Ul6v8nyVNl3}t=&Wo=Nu*P7z;)a7JYnneqLl4BfBiD*>i_Y-Jb%OYJt6m6m zk5oI$`ax~!Ejt4AdT^v0TGG>TYJR6DZ_w4pM_x;jz8Wj-<~b|CgQ5t!=cg{aA{9O@ z&Z?Pm+eHf`({5k#5~=LOgdxX2o@7k=?2X2c-L6}Qut~}u@uQgPVJ_6bRl##X;FyEd zSbjEFt|e`wTYqqVd;ZYW$ov8Mcr-3AOEN4a;3qp~gFWzGdZ0fpKUD8N?4PiqZ_ETv zZS&0_>xSnyzzvIkgHRYv2gQ)s@)%;P9Kxqm4n%xDI821xvqH+JIUtZS+y|1cE7L(@ zx8@;}m<$h6+h$L1UOM;WA6vsaf8sCPS)<<5={Qn{qcy2@2SJa`+uWH>CoCgX+c|+Q zDNX&%+dmwab=)?e) z2CjqXCF~~y^?-$GOy04FZAUqqkKpWJbH8wwBixhNJib5+ZXkz|Fz1?W!g@PrWicM5 zIvw|KeV*fHgoNuT?v!;>Tu$fL4tje6hn7=Wo$v!Dv5Ne!IAfZJS$Mz{I{mtrLrQwv z3E7GzT-@rFxAVFI6Q{RlLo39RJ=_$c2=Kf8=KsCVTKd1sqOJ|1{7Uhk?%v(s3+=!5 z@AZGz|GkUPzvun0&EYa0>zssQ1>!vyt>I}tD`JJc=WE55cHttRZlfHAi-0$}A*j|z#h!=4l#Xsa5#ovCoXB~-1!k(>o7X0Fp*)3 zt}bcpk{48iqp}|6vyly+K6kEc!;8GtyljQb5vRJ@SxoGWB1aq5y<8Oe2*NL>iZ#I* z$Ab%<=1Nd&%ZQ3$(}PHjmh z_$X7TG$k@MF3?1KUHjGuaVghK9s#MRP7ysfn{MNtvpC?A7Xi(|RqnQ3O&7GRdf_Zc zlpoMGFV1dtb_Tug(w*sc#E%JDrTIj?e5^evZz|=pgu#^~xy#WHE%P zvT$Y1JH&3F5`g_s2we&RBMh`gtroCQ-5S8+4;Qe+3v+_E%IXw3_DKc1yh&lb%{@G9 zwR-V_J|M6KrR3^3AmMV{bo_yI8)W@ZIc@Fq8>YkpSZHe{V38WWF<@I}6cArX_Z&pN z$+GSL*v=%b8}5?Gbel8vY^yKpbKWuO|3Lw0z5D-tvN+&O@HZ6$R@r~{Ke`j}|NHmu z|IYuvlg~02E?8{{UQ?c34@$Jyn>X+JU)|gLbD9OEgj@aUyDz^?bo!8p-DD6sYro#X zYvLW~y*vX8m!jQ;!G;4MbqUn5ehl`V^In$kP)@0CCOQHH{5+_u;frG4arzw^xRilk zh91%QZN}1K=3A0o<+DjjNmkTk#0m#v_;1ymD8dVk@A5jZV%kq@V3@LUGC+H>9=WY^ zU@#au*egv7G~A~SRXET{MO0at2}f#m6tApX##YFhO}M{DUqAik;q&D3YS++)x)|r;N}&#?bCUX9JVJjq|8bGm=0D&|QIX9zfARh}Njua{A3=%41C5HKMN5Ja z+HI(>v*gP~{;U|L(4*)ZAy5IbrZeE+uWdvolmH-1I%Wi3%ppR=E(oq1@2@(OVL{bT z9Ok%z$4wD6`V46fP?%<5dR~m@2MI%x5C_=fQ8Arg^b(cfgnKvdU}uVC(%u)A?-&s# zpHpke*64tc7Ju&adtQXYj!mX)*<-t{fSAxkop*!`*{$I%=B;MEv@_|7c=qp$ZNn6v zS4j>s5uz6nG0NnKnU*2Kme4&A7%vK{E555{mDxq6o*D+|tTYv>Ns$qY>_u>bJrp6Q zY_pL4@Q)fggp(V5}1c37z-Z0In!1Q2W*-^fwnva&qb?x zUKpTa!Yef>VnMUTY@BAUfD06C#IYKK5i>a82tF&%59-Bfr{C*4HvTk+!v~`hj-aIl;VUX^m>&hh&Ou%NqlosvF;#URu7>HVzyGJ8smuHo7Q989URBfh z-Mv5Gx2>D0fnj4g)Nv_Pt8{-%jiLc0H4W~{aAcYX22Czeg=K#k#!$C!Fua;wTl2|f zITCgV|3V@zw_=yz>Uo(@lUVQ!H|1R@mv&LvZg5F#jHNR152`KD1H$-$0RT_c zU7n2j6Ff2nUs1Vy3VE4uYwf<`S91&`N9EDQ0-p}++CDYk@!5}c*v60f%bdJYvA}e4 zj_k-KsGO#djm$heH#4yh%@1m7TBxG%%Z&WTY2z7ifiKll^W#GvIPmXl!xLc7pmWMU ze1fm#9v_Xt+ct|UjvWBr>=yGO_CviOtA+bE?V7JMNl4~u`k|2VIjGNMcvvP#6`@|J zJQ1D^xlE0f!_MB<%Gn?*znXWI?j7vQkK70(mBbH|&epRJyT^b3VRG_;VFw}S+pGBj zgnFBGy4@^Gx5O=5BSJNt7xNtoOU(fg=f@IH@OpZv&HUsyajLJq2q=8BRn1Pzk>Nan z>z~yCe{fX+G&tVf`o~F%+e5DO4ARcw#J~%nE6#4hfL_tk4~Ajc`C;!)|A+qmM?a(= z9DMxXlm9(Qy@ctr@u(P9qvp*Y9z&UZud>kA`J|j1ibaTnsSmAmh@`tEP#OrC?4}UO z7;h8LlLR=wI5_7;>m2`m_vFKF$|9gEc;trPu}{Us)jl8#;1*DIL$e++-4j)U?du3K z1g4&h1csdI^2={QL=`jZ&#hLha(RAbcWAMi~ASFXMhrm_xwdR@2esAmDvQoXAG(RK@q|@I-q^ zS3=hc&PuEqJhsLCDPz;53dBU+uv_dEBSuW@+0?#PA86mmPkQez;A9h8RxGkBc_&~2 z&>5im$gdY*|J^-jc)k%dEIi$Yx;BY-&V$eFAe4mzS8%J8WeJX!VqtU-&H;H1()BFc zsG0zFlTDaClWsMnZX;wTFmlt4C)WUrDB@Ta)@McS`71r0Xb)k za#w}eNdqu<)t#cZdIQkO6c7tUR!N@lCIL`1%E%Ly763xZ3^1f-i2>D_Ywv8ox0Pe$ zlC9HZ>u<@{7YAEU54N5qpFe%R-NVslREth4*2Vfm$->6H-)a!%)CGp5vz>13?Z4XD z;{T=F-2)D{f*p>Em#|=a+$Vo_YHs4h|0481RfsXDm#$cTHbqI zOJ+Bq$S%>Eei_~{G>)SrY#DC#&^pu`5$vo0x<}3K8wbsu2u3lpgai~_zU&^8y^JNG zN4%Dlf#P4+egIa?X*`(^*!2!;>SuVgaM$<}{!xdMEFpzZvP6%<;d@lX6n49k4k04$ zyJ=_~!F1qfBVrHo)4CcjY|_jgJhR>K!{oIyr7-U>9jO4vatg>OAfJHkAHNU(n&a-s z)Nqlvn|q^T)I3tsts|jo$@=zICOH zogZOSO#>TVi}2X8?ek)j1|cJxj5^bCT5Z)Gtcp^llKF+Y_dKHRzI(A(ZEkAlHRP7= z?%mNv3H57@`p~t)PB7#5@L9wI6n763O+;iItG0yS#O9_`PV>p-Nlit`X87g|80SBx zIxR#nb%~-bAV9HZEub|>h>!}T{tu$+5w-d)jgO1TIUaZP}=1h$Cld5ybhoJO( z0G2JZv(6Y-)b$beFa)^=IE}A~XSfs_afh95xlDshgkB(5vwS+3 z89u(~;J-B|OvfKRi5jLNQDYhFm4Pg}gzw@k%+#_YR#fL0|C|U>>A09*5j!cW!ecev zIA)O5K%wzJ%AzFxV_nt{Z5*ecKYpI4?(1e z;-0UCB;L9(6dDB=U^jucJiR7k!wT+SSwCjQsoz?i{xA1gdH;jKX}hraKli@Se{V87O(w{Dav z=LM=R>J)r#YcHU8761re5NgA*F8P{6S$ti4PbIFIBqj zFl4POBXu#}E?2^X_F$L81!vXleAm!{d1WTF%MnIv3pRNmdgh1?t!=wuO$_EOJK%g! z?ZCS2faSTe=1Zbkpq&jbT9Eh9UOn+sL-(S=in%=fU@Lc01>+Qs;n9hIqk@_JeCHK- zpl8-B*tvkhG%+90zqHiTbD-+_$r=sds4*N|YV+SoqAC@3X^ob!4Xy4m z%go6r+1d!DX$GJ)V$(-L>tM-rPPz{WhgJ~^@qFuJ?r+t?kP*nccags|!h;)#IpvC1#Sk=IXyGr2N@oi83e!-@(|zsVnUDh;U-nZBzzGlOakqGP(| z3Y+P|)Cfg~V0JMt!4_V?S#j@mo1W#=52kJm_B{t1qWuj&Op|sHl+qQsa|(y#nMVYz zbCNsTzHP;|ZQDW%5zl>;K!7}eOO>F8-Sd0t9xkc5BN261HSt@E`K_Nd^*^lpDNla| z{m;F-{X3!l=l(~(`~SU@Ppf8U@1IDs(@PeMNKjwa@AQJlP}bRL-$L)9OtuSBd&r}~ zQ_+G1glWL11EgG$^e@&g2HeqdEN6)!ji(kyr;|Fq>E}dJBiW%_u>+dVh{3bIJpAQ# z*K;`+=R9D`=-$pgKXPUG0v{v&TSq}xhaVpCTPp2hOIWd zl+K?c5eaM!%fZS`+L3F5fNY*HxOJmoV55GaJ0@$eVX~kc6BgFKQT+|^a=C8t09;_ngTG6)?yqbKOsMgTlLhMp_1N! zXawK%y9;)_zPH!wB6+89m?)cHLi-4-j^%_?=f<6$Ni<*5D!O#9(JGc(yH$Vnmo)3k z72K{}yw>&^zG)!Tx>ZmIk(7mlNMs3XUy+T9vwSh0iyDE|IZSe#LPut-qsqBtr^c8^VNFg=M(Xy zmU(Uclu}@vjSWxn;?yvBVDUg2mSb*3oovYyh^`h;>IO2ns&?7O`8AmTqn$q^7*w_I zG3a;QjrKwAyKk?To^3MT9~x^c=}y}AwNVXX=OvUp++;PDY6jbdH!&g>3o67<22cNq zWwc-Ovwr@+;q`3sYxw`}-Mzmb=KnVG$M5-H-pS|R(*L(5+lZgM&legYWAX1+>+paD+>I+5^{={#n1?iWqs+Gcbnc!-vb=jf(8p zkC}Fz2oyDBeP}P&qb+gR6r4xXmo=K0>P8ts{lNf9!_fY)A%%hW6Uey+V4ZLPoZgUg zFWoN3s26emOG-X~!}o(OVO|3Vs3mD1+fsIV9eu+E>O{qt#EGrd$Li#pZ?m_SM3xu? zH9}AQc#$n9QZql-`l%+@%^2yY?ZjH()$Mtu`DP|JTjhAxN2e3?@*=Y8a~Z^JFWf{H zE38-G7C>%V<#T5@Ps{kuKDWsKeUaA}hG$z}5?B%cr@z;~7v}%|J^s%-`uytrf1{u& z^Pk1pS@N`;8xDOu{%v!FU*;I51zZ5lSIeRs67I{7aV+?x3v*~V@JVtC2r-9ypdA351mdA01G4T0HdgYpKs=y-%LMDu zr0Ty=(jf|E4*?&taWUz{ilQr;4ZN|Wy+)Sf_MF$>h)UJg0U2vzupB(ZFg?49D87mT zi;vn*tF&Y=&Px>Vh0ZXwAaKcsv5Y{o&O`I_2{x=?8enf=8;uQAr>az)kM*mTb%9bi zyS;$ti%bpkBbgP3hGD7gI5;bjB7I{0D_Zp|J@hS3IeIE?zR>_vf3a{)`OubvC z?Im;!PbBLY%R1Pym_OUVYBnBH%RYU(+ljW(lI{B|oeZnMfrc2Zn=6>C-y=pLBxJ5Qg$TAI(xm6nKK`(ly ziQ+n@T508|NphqfG@$a0it3$>dY`{6+KQ`pE=Yc; zhYmt`7#304J2woVbxe)v41?o)tzkqBc(Ek-Ml<%trekFQonl&Qm0F;YKNe2u`dBHx zPi$&XskLUFT0q#(%9(-ExOiDe)ZpqYvGlnHa}=8$ZxhqpH_H z271M-DO?KVbIf5hhnVC+IASkk_|LDwBzQ2OsFg|jk|N(jC(jD7D(6v|@j!ipH@)OV zQB3P3H@owdK~|Rqi4(mWcC0d;4=<`&4ed}KcizSMY4x(8p}5^@W`S`~&&XgWKRYwD zqE0TVEAwn_xX~-PXdaKzjt9Ie0V&M@EQF9r+oYVcFM7$3m_{#)O9*XHlu)S$&?gU1y0n-t zCX{X}AH4)u0i>xY`e(`WuRr}7+p32pW{HIqmd;$s%%*@q+af~tlKXdoT>fZ|GV}6$ zVGzb!$<=8TEO`9P4EOK)i5d38ZPFT{ny;V$e;w%C1IVO?uRQ=Gq=QqYx61BLg?^s9 z)|3EcpE)1%7ZP2PcWodOyBbb!j6lMxRET$C1WP+_1dr+`WF5 z5y5Hn?$SLV_(lSnpOa&>O+3Nxq==)a(ixCXurHJ<3A#BD*pkxQwH6nZ9D}y@Z|F7GE@E+MsB_i9Y-j*gq*S+tb%?3 zp6=wwQt3hTR*J^By&G-6{LRwR+t4T4ITZKHF^^WCynD zTZ@U}#|23wdACiAe7MSUhFr_^z?{=@9c+|8FXng&PJ!hOo4LRYoRjmSj{6NY4rNIvZ5n$x z8j*oDM0%jWv}SyeGSi;bb`ZpmGq(u5AY{-62E4i~hc>#($S|P>L^IG{ip|mNY;@&vwmT&BHTAZTcGqdsKCu&juLCnL>wfP zGDil14+6dYf==J#e@~9 zHCe7wJQb9Sd$z)M&CQTHH+lNqv*!umj%N&P4#^t%cx{L=uXK}1=X5dWwyMck(v8~J zAnS}Fr4kA?vtn43FIB^Y%`)EOEXz)aVXdTv8Uz**ibl|PKF2c_GPq;V5*ZQPA)FSb zugu-1O-2Jfp(AfqF*7f6IHt$Ha0U?j7Pdq+F*8}rW(M=j)KKbUNRyyfjv>1!P7HKE z*bu8PrkrgQ&dm|d#}8#Rh=wvktLba>!!JiWm-!gb1R@NzhvC`qI;TgC**m60aP$i*(RbYq&Q1~VaB{fwLYRW87*=PjjEW|>%w2zRh-;r zI8Pz6;A;%dC$?n+xsS2b?t`QtHK1AfLae3CU;#%!ddWeSFbMrItbi$v7$bEyZ@S>8 z`Dll+o0mHjsL49d_lQSXXo`vAsVdYQZ$?5 z1JuLCL?L3cQS6bLi#DM~={7vfcI>iL2eusz{KzJExf(B_W}$!D_X>8 zpGbBC>D}t%mBPM7WVAsZJcx(QGgPQ0*@*##4l?*D<$oL9r?)f&gZp2B24F$TTF{{a zn~bbGG=-)RfFu`&^Y;&cfOHO~i~52@qVgxTAP`Tom*7e21fv}&4C0SzvJt$2@}WIR z^2=nL|Koad^9@i+;Zsz4X~@Gk4T%yIK^V4GpofTuepO#`im4q#3AbJ$;lghA#1a;g zZqSa14lOO=bsyeLaD0xO!r0W+_+>GAPxr)*v>glqwL@l8@tCBLnhYf(a!~L*6a?%_ zkw9fb<0>w4?7wwruVNAdi@Z2LzfOkZ60RB>@Ilf@5DM_{?Wzw37)nP%0nI7n5tYFk z0vw03_9M@Z4pV*jRn4@c2bEOXy+=4f)~ixn6>Jmsh0V=qkXOqtPWQQmPO|VHIvjIH zHUyA2ZeZ%tgM{SIlpj*+!-()6xmb{6hWT9LIhS)?EgTmgrjbJ@(c{oMZjN?F{xL4D zD~lAN{^=NR5J{OmDsbxV9X!gi?f=-$=%UfxAUp;X5O>5H1wTVPCqw3gMzd-AC=If^5h%PlFf%j_#~AL7%F$rvY?;^1aT*5E?U%+NuFLg)gUSXq;+ z;Mztlrt}eUvbIx0Fck60-8fWn6HalaD$XrY%rLUZM+f~K%_g)lN=qhXPB?!;lAuft z+{IOP{I`p+Y;eOqI9DN;1uY}M3yh$fAi;B!q6ImUtmvB=6t<^PZC4BXF>+{To9Q9w(6Y%`ia_jOlz< zEv7KLIw|JEC~&bQ!#|x@aC7o&st^<6A9)9daSYYfhOMCKrJ|Ja0Et8lbd`Xd%Oz2l z$u27yx98P%a#`dPlx@vfmlqs21Ze2V~F4`n%296F9+K^O4uC%VA1 zMS~b$8iRsis|Xpf*SDi#W<_`M;joy_S<1mM*cbqtSBI3~|M}!o3Z<=XC5q9CJBb7A zyiP?hY9WheslPCc73fY;Vy3K|?^!p`vKqj8;1^1z-rw8n!9M}xDk9wOX^yEp)IRJ< zJ0Y`c>j2qkuj5x@VkiChB(SwBsl`3D*J=du_xmY-YVE?5^;`GLHm1H4pNXKB19}8( zJMsD4tS)dsE9y2YhwI#^-IQs(YHgjasJ6yDo3$IOw;p^N3%Pc+bs+j%+q3@ux!Gqe z`){@a7}P(F-+uh}yLa#0xvT8I??e2*{{6k*?Z4l}r!7_HD*N1En$PN@QOdkYGkj%(W3VGRe^_fnnep+ z9f08#Et3|rJkD$Z8x8~Ru7)|96re{d{d7i;RW;R)XkFwwd1@0dN;hxmOG6LA$p|~d zx;fWA75fcd47!_6nM*O|@Nq{jA>rvS(Z~qYamN(!RDeBhqNfsOj6D-PvqbqNM#DFZ zO!*QO$mz5H{?d&34n}I`^2NlEjUr~eIl~}iMTZQuEZYlkggYN=KnCnCNuX%eMM5Z9 z3slwEFzo6H8L);t?p)b~*=F6{Bg;?pCa9VMJ}#*~kK9Db#D^8+{-CQD*c}-?a&4ft zk&1Z&ONx7`C-3C;NPGM#LsZWZ@Vf~qbw&yHf}lKr_;+ln6iR)CTL%LrS&9b8_2{rr z2m!kkPCBLmAb1QLo;I~!oAv_O6~)^Ezbu7+Bp7&o>czGVS8T%^Unm4@u*A4DqrzVr zuNL4yP{|T7Rb_S9J|`NppLBCyyeO_si)3j#05dxk?Chn1@U^n$LX`huE3hcC z&t9UNv_n{Uzkkxha(7N-L%l$$_oX&rc!7DIEa`mGv;TD&5jlebnRCF6CnW*!k31&JujaE{?6=W66qXnLZix!T5(!vC1aRT? z2qW|e))5ZD5C`}yvm|`L6b@3?8_;yZ)2}P2gFq+vbsQL5f!?E$haCmh&UVhnrZnO` zlW-49?RBv&9zw7=Ee*}a)Lc6}o}14OuWusV#ltIlUJ^UWe-+oe1a~qafB4OlL`>lM z5iDv~Xt3UBj2-$>HW-wX5r&V@j}JGaJJmOl-rP_`ANW11hXlSl zO&86b@Q8>ytwclFem9W}ud^cO+maDS;YhY>Woo}AL1}p*wDLCn7}o1SDx++KMe!(F zNao;K9Ads@Hd8r-TLWw!)U0N>0V&6HyAj68DGj!}YtT@PQdybZ%R_4c9ttu~>3reCw+HPv!{Px9W|l}J3_WIcac6qu}7FC`ya ziDk0ZTgvEBOuyhXgkyQ*%O_8tJWu*|v6%rtACns&QLVfiPD+zxyX{krI0QW5gZKyt zxwAfVXZt5zb=ugg2OhbcQ*S<`G=1|CA-vpS$)@P)xM|-jn)oFvX`e&NIz&oK{e-bm z(O>uh&708O?+ji*lLO4UtO6J%a{OZpuR~(zjVG*ZenPGKO}0yeRc+%{Z?{7ZgN@PP zLfhET8}gxTjHuT+(_G82M2P;cPbu7>ERTyzZ&_Tss<&iwTZIG?j@F|g#QF-R|Kee` zvZA!SXDchMSk3jA%_XDi*`6$GKJs|#HfdrB8H?e>4XN6O?r;@tQ?{Y2Ww|AtAI60U zA>ZpPO(+Vy(ekiRpd}q8#Wb#d-;iEQRAS<46j!q8J<5jpv?e3^c{R_+R-<9C!Y}AJ z81K0w#NOkBdRnkkuiyh}jSj8U@TH%E@rNs7)OlG}eIYpqUF~Yib|A5C4AH z2g<05n77#K@%#9P-lsnxZvBuZ4~~*gQsv-)HIGyCJ3U$2I+tPGij2wY*6;K$kDq`4 z`0-Z>ZKO|904;c*UQjr0n(HSD*OtxTW14|B9yiT>3zusU;>FM&1vT-UoV0?)6fliK zn}@A{g+i*Y?ptl>Tj?`w0_G8|!>;^EcO(*Li(V!d+5LM#XB4b!?Zdm4f} zJV+jW{qW1j&mKL7L{S^~k7Z4z6h3St*p_4iVFX|jVMcoDej-_QKZ&}+Z*0NIv>V-C zve&f~6W2t5_93t~{*(R2lRJ$kcimzl*!aC|%(ijIcF9X*zkZn9b^3d1>Xa6(6}ImE_|te0)f+{*i;xQmg~SH?v;{twUw`}Q<8PC{{LSGP`c8zr5f#6DlzM?7?rSs()j3``|SNC|`B%VktO!k$t|*=NL3hA8^E2`K_K5!lXgTwa!Qm*@d#{IeJ36xkYxeN4qRH=NQ63`}|!F#{LC z^$)7U&CSLzWM=UL63ZOAzBFpv?*|m(pwkXnYHU`#G^`x58|c6DsiBzU!Sm33>3PG# z0tu0{Pg3XF)1v;Cp)?oqHk$9qp4LV;YuMa~tiI$fo4(xT2lq~V+Z_pLHlmD zRd2c3BAbK}W%VYpyMptkT+RiMUDU=RF0q; z1#g$0NK{rE293?n%<}Z`vMnQJW^4x+Ca87$d+k-~eODGLm?6w&$n5mTD#&f9I zOCD9@#pR@D`Xikz*tGL2_$sgAI~H+PP8=uuIfp=^zlPXtz$lKAMxtZ@BQ0nSYi(07HtGB zK8&n(IgK$JME zLEF#`wyxfeZ96#T*1MRV&+<`t%#iPc*>}_F_@f1f=1`pfU0e)X)KOZcoT#v^lR zZzD=>Be(WL`rP0pJcQ61+o{!uP+tc|X2r}koo@2LC9K@oa8tJd+AuAk2BW(1j|E8n z4i^M7*Nfd^Z6JP`XIUmU)f?eVAAb4#@wdtIhkyCL5$nw4nw#k zovqr4XH%CcLzG?V#e6;1@1Ay|S896?AhzAWE}zh~&3c*U+kJ^5v8NdYo)C zoVK>MO(~S8sm!xSUp#*LP*m;kqGLw&#lvqOJ~C)Gc=q@?HDg4a|=FNECOuuq&5c}$`zH+5>f#=9~>M1y{tcREc)8?fNz3>%@PB7&(bHxtsWDT%xv13 z5mdw92Dt{ON z?+<8G^{dYQd*S`HEi<7$F~BK#R6&Lv9SNeD%5g#ee?t<=1~X zOqaH|f0OpM>crw?VsMh;s1q(eh99tC+qOrg%698icbp-T>`)qy1Y*J;z_j!TmiQt` zjzT}faB*xx&dJnY?}cxH&(zZ$ZXYKbPCw$x~=Ztq}2dQ z%lAGrFL-Wecr`tyn4JjKD1OfD+6cgr15~f9H-I`sfs$ zNurJvD4K0mDKEfz+w_|@;tz4zRr4o2=+Gah(E@?kDp&bD@>pR+nDkLK!F)Fq6Asts zAo)whQMe6A1VR|^=0YvCD0@!}v8@n}%oed7M^?)pONhqy?fmPUS}P6{yudVvo*Us6EdmVDL6ps*XA?k{GgV4X?? z!=)pxQuZKv1VSR7^u-mIPn9N=G=(fm4(M4&#&Kj6gF-n&lx=ZlXV)3C^xiylt z^4%9kkpkM%xJuwL4=GC_T;|!EogvbzM1{w|G=ucmr5Tj%=>XFRs9|5Z;@n{(!7$uy zX)o#Xg^4W#k-QknD(?FCjxd5H4+QBlQXgxtMyCc+k`j)FY^6o>rcSh1FH%D5?BFHf z14g!WS3(IVx3m)|>K~G3bM9TFPhE_l>60i#1Q=h-dec{TVLUbB$Gnq%&)Mr}_W{fV z!C?Al6{LXBx{&(d2WFf&_Arm#!T^RKJUsUS`{X#yGViQ2OxQ`H9&-Cx)=|d_+hG`N zb0zUP8Dw-D)1jg9kH?c52-39#fiuS!#`T6=1&e9TcekAO&rUF5>pKX+UrrXL!h1=o zSwx4FnITu9_ZC(yk5Br&3)`}Ik3u+#PUNe37(U*#1o3?f1zfg3Fz(o}$2Y^_qK6I*#`F@`Rs zxp?q27WJXQPcvDTF*uxpY;lGq7yXVoY<`PzN%*_eRqfjJB3z_C@bCxRwHS0e$v4Fe z$a`Z^EyD``|E*&y{VROdivNXHSoQ6aKmTD>{I9+H{k!`?{I7ohPXG7#U+?0hQuaVb zQ!qG0iU}HAOejBcIc>=f$PkmunxpVToYVr3-5oJym&k$OQ_4};yDsWYIi7<9N61<5 za~t4mele@&^Kmm;n7nW$%S)X>S&G3^TV`04V>COOUu5vz4u|l1Fg!a?BH2+pDZPhK zq~JX3)j=tH!6~uY6RS2#r^FTo!L?4W=S4l37PCQ3sdSH$J9`j>G$^*1p{TcS8^H8> zhET>D1e5w8OqHmJ4YL`5)?bHro{2hI4dfg1%4q|D)aIH&3!xR-#c5Q54*`H zo#Vgno_yHdt^deE*Q+VoEK*g(JU7*2`1hb*oOb%Xe)j;d1;*cgv7 z7(L7qQ~kn-Z6J)Fz*GepEsh?7ugzE!T&dlHQ4TohgmCGk%z3fj0^)V33~rO0|=Nhl^D z)o6!4y~oTLU{+{`7cPK}*G9wX`CF!8GRI?7d^FjG$ryK;q5; zM!KK}n3Zy$_hEBC|FuWc;3rV-Z)P*T_Q;AgIfVGmZg%*UOIYsE5ijBq>G!d%c0#6@ z8b7H8Ha?f8e?{M~nw;4|ktk=C68*bgza;oV!0}IMq6hGBPmG!yP~m zm}?8Y^>RpqX3nh{$we+%rPJ9Nay=(oc2lT?L}(tMpqi7J)f-8cj3Y-Xz0(*OzVpiT zWv2PcF?|}rym+cJ^F6E>;{`=tM zL#14H-SvQI+_7%+q?ag~X`d3=z{ z8X_V(eHVy8nm}YbN?;!SLb?|CsP+cf;mUI_T=dz)@?F$o*tL}1I?`K=|K-#^Pf zYsvrf@$H5GKdh4f`*)1IAISfEclYo9F8{xa5AnKa4D;kEW>~AH*E2war1Pko?CG&U`P-APJ_mAFi2mQ4Ewf>ffMp3d0-a$7vYD4xIfE`m?kBw` zsE#SUS#SYT%;s|ak@;n9pz-|52=#_wyUMZ4lZ?vQVCY_7I-0mW0L}S2;1Xa%F}t3& zsS-MAysW*a^2$cab*<{6zCow)vZ-wgvr!MAlpzl7O;9o20N5_Dd4(I5IR_V}BTzWC zx1|cfI5xqRDyWMZs+L)Dw|uC_EXBgs%FF4vG<<5jMUdy_ZM_*J$DFzqb&4EHEBI9y zQyVRRf?>*MbAs+RB)}<)`Pl*K<_}DXgGr4!adu3RZHIbPXTX`)Tn?R}&DV_@B|6~D z3(SqlA<|QMi+-1?>29O?6eMO$ysN77!_~Fry4tJF4_j-)#yB(Ewo!5QsBcjdZaLyB zh@yoW3?(w+f}^y1u$Xo@`4r=9TO;*aji`X*D3a@Y&O`Omyu)Y5Dkk}fB|&vP9t`KN z24>(r`-Av*?{_&l)HTk|RSomQt3kh^Mk@nKO?~yw16)D4f zG8k3Bj43@zL=To(4!|Yu&}E4KS)tqfZZaxn<7=Ly=nF?xQM1)9dZH)Ko1}%$7Qj0}MOB)E zb(vCOX;pu~h5G#Q$`SCXxoiwlBpAiWum?loa8ud8w;hD3zj72*hK)Dc5QGdrBo#Vc zV~~jqyh*Mu%Hc&~aKlnT!zwSBQEniKy44FuA51FH!ILfHDOeTJebcDIPJwfuRJL!G zWVfyRHXO8}2_eno$FjM0ANUFMh`roh!Nnga?$es!#}bPsenL^UvU3!G9$VFQMzO4+Iun&R-D#{-ijsK+*ujzy^%eKzD!S zVZ#;e6_g$8kl1xiJA!^hl6yFx7nf5+DhiTl`XzY{22c{2va3!ZLCn*wTG6w}NY(}< zOD-Ca!*TWhv-fA~Z5+wsICyS}@B6(&b;&veYybqnO(IR(vP9WBN88bIy8BPD;Q~-3 zs|BK9RDp}t>f4!{d4rkvnEQE>d4qX`i7mHU0FaU>TL!u<0#%ujk&%&+k&%%R2^;@)4<;9 zy0!sLxk3!^iWWL+9))ycjwV(byyaU+d|-v|cq;3qGVY=lR&&-Co zw@JqwIl8+YsC$;-p`65p?!c7#klq(-7R(u$#lDE>vuOC7u|t~CNiZ^1JQA+cPMiX& zKmE+?8~rSF{&O0qgAX_Wn&bc3-fnGW&wn z^7-WFKe>WX=D)(DBkxI+g6JI%KkpflV{WA75ua4Gr5IViE5}E9H&1ao^K~iTt@uyM zWILzcKPl>utdAAh=a_bLjw_3tGP!8W_nl+(wDJFOJNdfWY}DY-SG1zH{hGXbGdl3z zq=(;7s6;&Np>U*t?AXJoGNY8WcH3JBFXWWuz2^me=q$oY)pLD3)S6tP>Zt_0##%uS znrNBlrI``|W?#ga(6K}a)eyVUq)kZ|Uwwz01>fG5qGoJ6+$7qEO^gWF9 zRofvulqNJg;Alta(V%KI?YwmLf+x>jJ@Bx+?1m?jk}ZRiHm8tE)c&AFdm;I+M)aC% zz-;-yzFFY^zp=ixl>ayJ`I687VRD(1q%Qn2Zu25GwE$I8n_O$j%@zL6&G;=ctV`Dx z@f;DQdJ})?s^TVXc}yE00F383CgZdce(ESM`)U!-0xkjKp_`0{QNAE9GfjGBm+b|U z{4EPAif{A<1lX3L8)mMgdg1Rbawv%)yZSnbDdarg)uwHbb_Io<=c+KCEGc(l6{9&x z!-;rks7jf(P})}?X9 zRzD8fhZNGH<)$l)_HL;XO;~J`db{3eqY2k}dJv(fJLc?DZoQeh^-iW*zJ`qm;o&;Y z&h03z`kCHlJIi9Csyt6zNQwL9Cn!uTvy+1BkBEg=wqaAw_sSUr_Oa;QVst5DkL|B}*8W;UUP1KW@b zWKg;g$5TAQ*t-ZMns|!c=%TI1O5CY45IlJSKLN);7hN7Wjs+b3 z+Z9g-2&UQefAE{iaYEhGMYEf^q?<^j5B$>9@=8v-)wT29Bn}4sAR&`48(9q0mqKjmK_N9WyO3n&dG?Mk{e!(E&6fjis*W<1 zOFKljbHW6T`FN}n^i$~?LTSS8BI(06LLXH1;`D?9Ko`G8rP~ODTt7dgdz{9>-9AXV zO|^><9?6kkHZ+<=jeYNkym@f5Qn>$lXAW*$47Dur-h1|8hi+QEr-{Om;wIrZr1+y4 zg>+)c;kYN>Oj@eHlg&$JzH*#Vlyp?df3HIb%pG@bCE%G&ql~t2R3c;ydlbo`vU2^g zPh%_NB(+yC^5sKMHLQ_$k_CQ@8B8=q3YY^Vdp0jPohuwx#5}b+nHjE<4o~o6kPX4^ zbQx&LZJQ$s?rbwden85@VH494;$<8m1i>6weiQciq0$3Ffau_gdy6SK$gSoVpZC~% zfWrG4uL!T6J$U8?1KI~8?on@=hTnUyDM%GU4Tj%q^o>d%CTVs8l(dyu7DUclYr_?$ zgb>8I&Xf^EO^6_QYqJ0qxDty?onj`>F8O;_JVlAybjEIUIjQ8mw@ee3NLv*n$y$7L zG>k^!nw|`+Vxn10#`@EdIcir(u*;A{;nc zr!x~W1$8*Y(iQ0nOOm?&l|^RHO+f9Oa_85Dib96%QG;+8T+)i89DjZEIzShL9raEY z1xXE$!LYqOy~Wd8x@ygPFJ7m`gYoY@Z-IePUl$x5`X@(S($!_Er7(#y7nE@RnQcmZ z)YV+3n_@Aq@(|FR24tdfL|%ot!&lkNY7bha0jiz*lqOJ%)qM6lKQU}hr82RcrwB{0 zE(eH>%H}wA_^+!Ce%2DDD{2l@i$0x?D+{5b!LGX9Nbk)JMm;ap9)N3$hJins=)xgc z!=t%4xnjz??4RdYr z15bh5$q%;^Tw)~D=yW70Dl9fZR8{ClERek$C);Td{ymH{Yq-!}1(I$+uRt+La`FIC zAu|l#Vy7>)!kvt^>{N9P*=9;Ly5gW-<&F(-`aF#(ud=0}E3;A;Di|vXEL((2Oz?DaFUdF-p3)MsyeL;S5ZzeM)9Wu9Y-L(2+%u#ru0J+}?r{EXxM8 zYq2zPixsl`u|9k15w4h%JEpw!nd}vwl1tQSV*tzRoubjrX-?K?e{Ri3y8TfUpG7qvJ0XO+eU}q%N}DK| zjE?eYa=_TLv4u@vc_Qec$oTIT%tvcamYFYP+|g4ijrTNEHU!zz=zUG?MzqO^MB)&Q zd>9G;47RP-G-D}Cp~WVXa`Aoz>W~Hg{3wH zDjXN*C9fT3nuzm$e;5Xn;U(o=4hPCX;KjrH?B*ZgO_A_4!Av2OcsxPB;t%3Zt1BOs zKMPpkgE;gPuw)rNK_9R348y@O1<*s!^l@4-;g?F8&*%g5m~XND&H`{&+_QUHAVJ_S zAe79CuM~9}2h!G6W(-_qF}$I=Wt0SGVZr)*l}%8t<719Ur=x+! zV%n6uI4mx+28;LG)(*NfyFqFB!&0D7J--?a`WVD+I3(|<-#s1v7%HlcX_wJVSz|@5 zNnc%}cxx40sq&^QG%$x};UIglNgw@UW$o%pKa^2lhd0dXq=Yfq{9L6j&6WeYh=P`? z>$DW0n;dPN-Gq6}7n${OH%FnT%geS(F0MPMlCw>p$oJufQ00zR%?@I%~zh%xNX4)w~0Cf&3AP?zz_Th}JW`=xf5^HTBpHja-Y6bl{PU~;Jg z$Rsoy+R`&f+dD=dLt1wvbM8{{2sdbQouR~8#=Q?(&Fb6EtVNik*gC}{U#-!Ql2#0& zq#sO-x`pp3!gE^cd9au(Z0@G{r_o#rE`%3PLlGSdPD3pH(WYVfRJ(!MrFv5N{F964 zmg6%{I-%_%>sFJfvN|4yw!_l`gswIoZrDB1^eGo9`qflQ=ZDM(H5rQM!oo}?tHOdz zg{BtHnWV$GSv-_w8*?VTH-qAf2=oGzW{IuCj(C>uShkO7kimj3epx4O zX^GM8=I}92oc0z{js|X?EM-A09DY;W+L(@d(a64@pNRpXokk=_DPIHB59ud~lHH23 z652Yer9hW0P?f9;jUh(asf()T+>lXkiy3hm3g#IxDV+ z%Z0QrYoIS?gF{#k3h$^I-APh>&L5IkQVZCMr*6$H{Nyr(}4*dUQKPI+3}{z!!+Q zB9lih3ZXx$dVxQ79cjzeaw83GR&{rpP0#Ild6oRXvh;Hui+;Rq9*o~2IvN)2OP@3Ht+m2tnNGwQ<1!zGxlN*%j=yTt2U4CYL z7P|i}Zr|4p0Wv54M+bgn?|*kTm+?Pth)?Ao+C7~tv9 zm0J;3`12T+n=a<+4XeJC!o7bm>7PVr6kSkhB9woFV|Z2l)8tr{&M7O|s~5cKogY0- z@5yEc)R=Ey!$X~{Jq@2_{Az02N+K^aH*EAGDSL!04R?YuF4b~|1p1rVrN>E=?<3Sb z$|!5CEi);l9l@_0PVpKyNmUg|ew6DT-Tg&);-`$;bt-H5X^Wv-U&8Df8jvd~U`ka; zc`m&4@xgaKu$`K^_JQ_=zwJM7v^uTzocYVLLsV9B-GyeuG}Il=ZVYAoKDY2&eimE* zlOP#lyt_{l|E06Nnalsu-q>m_*Z-UNe39{A%JRGqyv`9Nr-hktFjZUC*M*6qrUn3=i7i@2-o2+Ye*gL7dyk%? zLizaFPw>SgB_2cxZtMpOVIqYK5P9eM4<7xr|MFGi$%9R_CGXA;r6i$O1I)BBGffQ^ z(RpgPR*&K)&8&q*R`cQRdsB?MqR-yaDP4tUr{*rG(^|u$BA%V&MHPRS$&3T&y*HQ0 zpa>h1BnOR&MGx>u>w@N->#@?ZQs`7MpTh#O`BY)IYvQfA&B0&{hvDcrWSfzBA(tK; zAF+@RAxyLcX_XAMdw$J0Eo0GwLM$m*c7)WSoVQj<{$2_1j-$>nyjpeBnm z7|R(R*K#-6|$yjKtnaElUJNHMH;Dn7XbYEqc6z zZpx!>e;AJ>_IGZ?vjZy|leg;Vqj3GO2vyLk-lOQ7+a}(?d>Sc)3TY%HD5HV8!CM}> zSh@NX<==XF@8x5@-4hOAjYL0gZLL11`*U=J?mH0_Kh9|Tupgs*_pr(NjjX+9=;!o# zp>fw|)>cxhe4GAj3Ps{*3NjpM!@sPT)5N_%ud)>s%%b9HNXRQU(>`UDExQyigyE+L zZ8_Q2p-KS{DIwBj5R!D!aWNYW_ae-_*ROsS>0t#aJ-Geb8`vf^;Ga8hTJ1Lc*Ma{w z;K6$P5bJsDJfSwzHUbN>CvRo#rNkZ`bn2SmiBd!9R?=W5bapOISP|9B_(VvqsZ&z- zDpJxMOW_#ITPJh(l1QfW8X?MVtH5@azHR;PH)o$%SUG6B>iy=MN=XH3lB9@w5yOkorhxrv8u~8=T#Fmu-%MvbkdOv3%&0Lw4#^4hVXrWZf z1?E$snRWaQOY%=ynQ7>UC`&0P7XrYorvRnj7;&&F=hv8S0iQKV8Y8OIj&*g)G-C>q z2=Y5Ig8^E;yJz(W>}cQS|Ew- zO8K3E_$4J&E))<#LE_@SYjQe#1Xi1y&Y?I*&{Im$Iiz5NWF&PdB`w#zj8#`9X+cvCJjLl| z-sY#As!f49p%-eLtcY=i68;hA7QqoLoCzhlN>)mDk-iuN3U-lo(*w^&@x6}BR0n)+`o(XAxpb*ZIATmh6X3fUOr7qJ{6ghGH=lajrpo! zlDw8SIZO4Mz&^~Nvy%6Dx_zbFD_pW2USYY8TSpn&KWbOcna_r^~N_OZHKfI{wXSG6+ z`{4^Hn_LTyNQ!W{5(HG&qDY_=&C6@-z->ouVhh)1d?tX z19QxkN_pRErbqR9v-xVnoVU|Ho2GabG@cBgHJaW!4dVw;)RwRxM%SPhPiDA1l@fKP z-E<*ZQOjy37TpKQY%ehJ<8%~({#nJ)lr<~U?(m2XGLS|GK9p;4IsXu4{x}RLM-ebF zEC>2Z7^?3l><L3p*lim)Bmr?WBeR!NJH+F1;k~zYSHW9!Ee@j@({W z)6kTqdWJ_h|0q3_Q!WBX51N@tYRBTS*E+Ywsy)%`mUM8h1Un!Od?hA)j27^Y8*xPj zjvk@KU^rTWWdtcUYH4GSW6jFQ7b~_z#-k#`GCSrC1=v(JFJ8#aWhobkW%# zDOeT;x1G*Ogh6we+MUUCt!FW{ZXtYZG|DD@A$A3TpA`Yk*Iu#ECX1`37fC`tT|ql~ zI85W1GSMWd@6hLSPFo|Y&cTJSBWx-+>W-*XC*)75xs*+L8d2gj5<$TXiEewIXc}^! zMZPYoSLGT%Hkv<;kRB$tvMi}&iO#Ib0*C#hVAJTrDZ4@V>GPTAXIpHN(a+j!!xBOK zZwwo>5&%fNisq4Vh-a^|cK{dAzM$zWX?au9p0N*E_!OFw_Hw4AVza!Ssg5Z|R(G|w zW^F;rpzKUEcLFC)1_aARO_Fz(%y(lxreZEj*~aobL$G2V{W?=ONABI3eewA^*EfvI zX=xnLBuq0NMm?3YkV;b`H8Lo#SnjTbuXU)SUir05LH!jObB1yhg%*KGCOt3(u=yEA~?(?hDb&ZmIz^>i-`J^yhZyzv5@X{J+r|^zswk z|7>mN^Z%~5HkbE5ZsIfl{>R+~?|TD_!lJrI;{F~Xk4dOF5icHSjmCz^TF zdsu)Qbq}3ClAX0RmGm|`T^q#xHAc;ul)e#XgAlJ!Ca{#L#{IbhX`%T~cLc9F`Tt}7 z{qK#f?acgdZEi2`f8WUGi@g7}@D;E57sT~9RfQM)85Ov|E=d=;J=@vw_Ia=M3W^lp z0oONn2}+Tr9G+`4*@tWz%JvAy)*fM&$}HDf5KZO(w3k8O)|b=YV!glmrq$YMwPcg6 z<8L1G?G)s?gA|7qez9P~IB-WnastFK(5Go%K{tu($_`-))k=(PwdSC| zBYm?eK1*qwS5b39>u$^81g{D`!<=|{Bvs57?Dw}5{aVTwqJjR-*yGn}IJva=BhwF? zL98LHnbZ=k)(}d%6DK#0P!R zcyx`xP10#k%@OoOIv&QoU|1DNMk4#(V4&(Xl5yCNj-o!EK8=nOikST6Opq`9v)KNB z+DoRrwd=M)d;IOq()kactp2~z0sVjTV|KLc^CzGGR~di)(;P;+S9JrTo8%&!Rh}=`M9&kyISS7+kp!5@ z@SI03z*sk5fLYVH9}k5S{oR6^T{77u3jw&rWsBj&=Ogm^SO5$a^>s(OPtXnFz5cDT z0?5+3TD*+AN<4L6;@8pA%7-UfXBB_`te4OM!(mfqgj;_^!DbMNJi$3TAM1ZsO1J zq{aXloOzPmthlc`hA14mFP{#Ik6D#V)7vXzDJ{;srzJrEEeA3lcAPvi4D^R?eMqD~ zj+Y&=5149)eZLT#XTrVUVB%0p`HE zd={G#&d6vJJkX*&Uu`Tr4lbSoPOgXCRB+ywP6?+}!PH=0OEY}twp_+j(nH{8A9Gr))@Vf4v1}AC6Mi!wyOSE(k!n z=_vW)?|7Xaz)mSb+E5a-kQ2XXJ$3OeTCQ3P3MeVf7#54$>l5vRc~63(W_gbvm+~IJ zwt3H)?RAtTczblRd-LnB%@$V3*HW=(27LxwFTSM6_ zvky6cgSv=JV}v>sdVXDTu&_<6n%^y9Dh7K)S2~J~#=(IeOUaZ3bEmF;-5U)`y+kd2hb}!?#Z?P6gWKWZEZj^kz;bRxO~qbQN*8EaeFU&kb1iW` zpJ%VGM-{G-EWs>+Rp%$nVTh+(pKzB-JN*w|Zg9d97L1E5)JB=J$`maUA36hMJci#h7Cn@73MeXvfFxv`lR_X~>1&WmPI=Gph68!`Rf>9)G3{3e%=+kQw*i@$k~rRyX?c1`K*rZopuN z;~QQ;tw13>1gF7e=>Yh;bN*F@k9GVq&ooOG{J8f|!xu!4Hu82w2$Tj1yDWz?;Gh{4TVlBl#d$O{F|5R1qoBW3Q@L@)`KNj2mez;aqBRuaaN^w;1+`!SM zTF7PXr}Y(M1)#)(^Gdm_@s8Mh;Va?Gg@(um7SiQnSY!GjmhxE`&hlNoiYy+4N5OQM z*9_%(o~J*-T$i@|1t+#G@f7~aRi?K*=|1^_JYfIapR4$PnXezy|Es;x+05Smfgj8J ze>d{6eU5T&T^Tp4`Ceiwy?d@4Wl_X8+Mmos)vn z+ItCu_L5g0UqcNq#&Hs=9uYxj;F>LMvN7q@Qv~1SEQ)%DUj(pbv<#0}4tb_p)A;7) zUGuc#l2yLYhbenGlZa^D+Qda$#m}&G0AIS}*YnhOE9<*L^QS~D?@FXtI{Nh^M555- z&V`i_Chg0ig%HfV7fnwJTtP`SUUjyTI!8Y>F}>6fA7t-5HJg6dZ#Eer3fwPfW@2Nh zD_2=HkSiK3uoxd#zf2+w2-?+&ORI0A(V%Y5IubV65^(YX%vg%W7zm`|%rnZmYgv$$ zVyOa_-iOIWeNkhFJx#_zKV(C6ZjPdjkD4zqPunw@$`shCB}FKsDL<<3RDMz?9-H>y z3xfeA$7S7@RbQ6QWiC8aSD-;L%Fe?P@*HH zF~`@CbD9yhv8D*6=_lc5z{=(>15j-j#pgKdbc{&zBBR18btyu%h_I^J&~oUy^dufwVXgFB zu^7W-N|DM3T+IrV#y(|I$MP#va8&?21foirSb_!XU}jR>0v?xFZV*8$l3S=!E(b?P z(NLl^n}~d}Z5H!NKNtr+D3wMUIY7;>`EN=nh60PEW#$cQgxSDYb9!I_fhP^?ryV)1 zP+s6fZ_v0l@S;3(ik&bd6C75h-PW;{ThroHUf3snLs&p#IMqoj#do$V(napa&f z+iBg%;%aT@Cc}#;A*WzjW-YHorDoBxfw!)YQF)ce{IIFj86X*oa@!u>QCL!}|I$xE26g_-!iuq-aj%M!TWVz_-(pu!yl@zPxZmu94 zt0*c?dXUfn(ADltWGSfrQ#(hPw@#07@>>>xW|S~ORaL%jm#(=ZV0v1taN`Ors~cLL z%?c;qkhbReuFC$<3`b|tBp#g-L+GNW*rH2m*1{~{li)0@npoKHyj&Z&gcnwwU{ocb zD>>-1!k`+(N6k4c4`J(3l`KsPAU>lo#rb>+Hh5XDfL>MfWwVz_Pr~xzqNu(bb&4&+B%?4TyPGl4=wBYIDdgTn>44M zW7xg1%xdCS-3TkuT}k|w$yru)&SRnx(x(ff0g|*!i4^*2lG*2~+$)?*PVH~aQ~r(b zcJU%jNitMy2sL^lkRlA4tGRK@anstesYaSj{|CRR+K{cUz&KFl4|UoR^@h}t!`vnU z4QdSZ>A!)IN+hi1FBD=ZNao218v=C$)B~TRs{Cm#~fVO!G z#Tl6cqBRrMdO(pzJTY{xSZ|uy+e4TYz~5DX^Q15hu))=aCDw4rAMi(U5e?5ADg3MxCNk*HU1y+9J zZrw9DS(de2CBuEi)0cSMOkd(Gi-VYf=1qj%TqhYW-*f4!`Dgdan!yWpiEDh0{s7uC z&@R@_!{!-|zpX##O+<1Z>nxh2(_m=CvMY#rAtB2Pe`OO2i~T)k6+pSD3zM(B2wgWn z1Dc(*(0fPhE`p1^W)TS^!Kg)(C`jIG_WrlWCa}u=}FbMO6k}@5&*_B{MxVz ztYnT+n|stiWB_9EqK}|0O@q^NNtXI*2}hzXv0_P0>j>~YiA%N2FiG@6ISqX zHBcvnas-a2?li6ACVo{*C3Vysec`JeP`~;>uYcT5zP^3XY}`JCFJBp-=oP1(e2r?e zQB!r)3TUdBvfo%BU6@wsV_4+4FpQSK%PJ}vPF`8byik+QtTAqZgIn(JZ`y|r62$wD zaEY)5s+nEIZUj$3!{$C@6b1uWGz3}Y%=1ID659`96uBcR?t$nuu!7+)@x&UXlS>jU zvZUJsR6Y2|-r?7^z3;2duWLfhLgW<`sK0tUS=GSs2fB?rjW8UoK+`X???)ZFswyZ% zZomA-cl9GZdZolPO6Bcj22C@nnXpWroJv|!&w#X+RZp>llyH9PL2!#19>QNa4l2+_ z3Nu>&#FHK+N;pu-Z!oJ2B?l-Jh0~D|hPIdy$+Cc?A)vT-WZp(u!PYIwP=MNUKzNv@ zd9l_B;>_C34l-J}m#ULX1JK9+EM)(|r4<;Yi^n(Duma7o|Fk>X>lyn`XT80Q|9K-H zn8PrjlrnV3i;hRAlXlu2Wxg0pqBE_5+K;-Y>|E6CVtD=w_%21AXm$K-Cmx5Rs_19w z<(PG2_(Hlc{zbQ#x8da(W^K2h1(W^>K*(m2XEhAX6vF9gmsuh1)ZT&;bK9^}cR;CBiM+1yBr0<+l!Hb0@G;G?AiuBj8~DlIN1nk?5B}K`hNS z!#)hw8-_9r_@=9iZqa=vDISc`HMx3SOphX`vhmQUq550*S|#-)U{E27vdn>WI*ZWt z!WR+btC6ZLZyA)QyZ_?lqi0WXjVfw`S1VgpSIKl= zkKT^r^O2`YR&OUY+?@2HQ82kwsBq1?r=keWeRrQi#7M*fd!HHnqU@D;WHKF% zP%^0|4Q$D5nNMuV9V_9D7va&A&Qx)!Gq@IAd=SYU4Nz^^b$?3wuKc|hF>^^V@qTqH zDU!QSclyIPk)UmHBIdKIl%c2cy`BZP$9pW31KVER6kg|(C|wM#Y!B2%SRTwc-;fge zYy-EfioI2BM-0K}@9H0?64e>jQQd96QZ@O8BY&NL`WWPQ`IhG1XK_4#^ zT*@hs+k|t5zhd{!(w4Xe{I^?Rui~?aA?Oky3FR7Y-D@_RHQiWM-f~f1^{P%$k-fZM zapPJ*{bT5kavy{B;y9vXU!pSFBUMj<7`Xv3w|52si2G6WTcKPBB~QIZu2#z|%7!6m zShdpSPqmg9&3}06Wn*(>`hcqcX<%+{ReL|mYN2}0 z43+7Le%)oo4tr8~Vx~oABI+Ut%R!g|SMyE^jSbR)y4XKah#pNRByr`H2Q|l2(L?f7 zG|Qy9R3?0=5v|&*ofQ&)jg+L)Y6aG zc}u+XDtTn{muEFX@pv4vJE*N{$tL6_5L#>*DxgG#LPcavBK$*)CskjWH!}O~Ld(gE zupfdJF|chSW{JWB-Tqs#NC@*4Y0|S`;qo=Q~j1AWLKnmtSlo0Uud~Usv{r@yLy>{}?|F}l}&-V7#_SQ20=S_ST z9)I|6JPD7Ii__s%Gl0%H|L<()@>%fwXM4f(pY7cFPp)9Q%?1BEI`!@i z&q7eDKGQJ~RR7!l^G0jEy}si;k+?+n*yRBFiyAIo@FoC4BsyKnN5d-&hR0DnVBX-F z6YMm0E>6ej$#}ZcF^5n3j(wV{Y@fmKJh)U>73uwq8i#72Bp*AN`H?&ab?OzP^%`1Ofu!MT@Y{?rWjMhJLCm_W}?2?c+!iHf~NK+weYmL z!HvQTqC(AI>|(5A@fp@YnEJ;q2!NdYzw-Kj_4MEK*8h$5^{oE~s03Tf_5UV5%k}@t z>wl2}wB6~bBQ1UTl=gut5?gm1LpLsGx&Ub5$|y(`bm;)`#f}!mK>wY)M6`J0`iQZ# z^+H%Rdr?YG(U234&`of5BOpb(c4;fpYy|~ov2nS*Mxv+7!{@AVUF{13;&8=MgtXQ} zHy+fgwzDJm2md8EqW+~zazT2zCu@%&ho>MYg?o_Ty>T z9EF^zoi#WB%kZeEDwHoR+8h)gh39zB^u6QtlHko!4sD?f4tV=1Ik3VX9X3@d9T!-J zQ+dCZv!7EE%_YkFRtI@fT7|$M6Aecja$7+^r7o*_1@>lanqG>RYgxf%Fghj`Qz*H0P+fDLG&NUad2NZbK*+)l#OL4mx{sWQCnru*^w&59TL#=bI2T?L zrgD7f%oxO05y2b`A=h{?Um6rh35xZH5lW-;0B;qa#Y410k;FqQwvINND!xnzii7z( zYo|~wA>OOAKJ21#WHwN0MHd8J;#*xO0wPjq%muX302^LPkTwiEL)Lb3_23><6w1W| zrv_TIA^VPEG5NEkwyBF%E`eVB3ibtIMAm&Z6vIn8!KV8DY+|yQc<-KjQWIui6&31o zIq)NlQ}%L@bvv?aD~y>5m}DlPHM$E=!Lm`m!r<8`&t$la(tAuNDO!ruDGC|ksGk%l zy30@DXL0?X|6a!ne763--hl-^tN*uJ+e`ibCO%93|GM@+W8TA0k%`YPHwcHpWu_cG z%ant*&V$LoDJRc%TA8v*+KmPom`TLtwBK>=1mDfBv1n$GNphMi0?+h&Esnixt_5FN z4tzW+)-5hlJ~8E4*-zuHHf)sC0@CID!G_7OV6g&l!Ng7>JgJ?+v#tTq|D48xDL*NRnCLx_^D zZSB=RRpZK=N$gbkRlkZ(@nY#Yyo!@1{?hT9x~CD|*MJ#&(uA*e4FG>SuA8sjaWF~p zg9D@pv5c?36~uFr5(Hs4W0pS+E;w>v-NUc?C$!XQ6?rU;rg)(nH@X*kC;jU*oLqJ% zVS?HoY^*k0H8b%h(HQe?Tl2u)nt?*(4`83DVd?Y?Y(<}y^P_(fr0AJRVe75fzaMc! zC=cdu3Ej$Q$&jBCLkLeUro*AHB7Lj3c(+hgOO+uc|EAc*{ay+KH73^{#7g5THwi@x zhdor_QMzt*fwf28G&qL~#viJ)kv4pxk@@h*@n$QjyrI0Pb}T6GN@!@*lGn@zv^eU061zn$_0qwfeQ*@}D^d2n2WHokT&F3Ewx z?%he=zgt1Yev}l^G$~xLsp%r0j@RTF9*r8O;VDLQKa$`Dxn23=t$H?0df$35B2Pn*#FtK$X&Q zOz5sNdi&u;HYrut;c|#k^L6vlk3ci}nH_7{=ATO*l7zz}lRO0X1(-8L4);{AK0-nv zG7aoWRUPJz_n+B}JtRdyVip8aQkq8oh)3b9J7T%*IR+nFd#Gxd87DuL^U~d4o054) zzpJGHlS8ZtS;%vYM!$}CWk{u65Njno$UQ9OOxVeaOX?ongYrU(Q zHQo__n*-Rg9GBKPr>4e2IVa8B;Z;;L92|K$VPeQ0~qDi;5=Nz4gW=(Ih?-q|X@Xs(_$yDDE~#Ue#)KD21g9 z%iyF^<6#5C1&G_KA$|q|y}()@W$64zBUY<5Vt%bwK5*`c*|gBkCBvif7#W9QJr2f6qawh#B{uSFgpnp4K%KM7$9eb zHt0$}#BN?M2WFXqI6q~(!Z3}+gu(aVblS$`m|G>+FFK>51cvzx?vlyT(avKE3#D0* z3?bs3MkD^$NifDucQoR8!9h~PA@1DtG8RoR)aQ_M3dnvco>Dg7mh}X;=_zYl&`A}^ z68-)-cjh^AUNmANlarQ$!hdC;DU2%q{*K2<$FVdGsH>5^Nf^8}vP{rD$GB;pljhPT zqLs&;NmAw)DH;WGB6S15QCclJIb;Z8Bc>}VSs==$EERO_c(gv}OVe{wkxntJrjcbx zxSGi-WwtZg+{fuNoy4F_fI$fS7*TQulay4>ZgZ(gl}^Iv-E@7JiJ8ySX>cI!V5!1i zkwhv2Hu4NVkQ!=^DolkX4`{^cK$jY{Z%Ntnkl(s)o|OW)#CQPhmcXxj?Yh@!i))~} z|6v58LyI&P#{&@jQ|HdC@ zMWY3I)|xf?t0ZSNgUZX_D4d{%^p1E{jb#xj)U;*E^}cjlkukNL1W7jl%yPEyCpORsseNg`_9$AmjD*3nYs!~4c|FNzJG}ZT2>K!s}EMWl4JZ6 z7<4hV+TB2=c=q6#cb}Xu&^_dPk`>Ryhys>1%i4(b|fDWeeAt>mM9O9#rhGUF$qU9}4tf({dSl6Iqk)(<2Qpf;J= zn?QcjpiCFmsiI~F`&fsQN{bNK)h~BWgE2Win+tgGvnK90@YUG(O>3+t!#i8_?>PsX z+E+(3(aSEA1-@|9?+K-u%AKKAHQ3&z8#DkbV7meV8`L4$1w20E&@(10fewnuz??hv zTH*x9BDk|dX8Z74CJxaFlI$SL^RCJ(PBsY;cAeydtQdR^9-vTXMY`j|SjFsZ%C&gY zMpw*MIYTQ8E6mp9yA=v_KYWydn$;We2x4LY?6SdwJBPYBUeI1m<5dsOUsK9LHNYS+ zl>MCi;Q#`RR|G&{OGd}Ez!joe!U*d_jX~_4W2W_D~R_GX7a2sXc|q*GGiM zq$f2-_8t_6*~$o_hZ~-~r7G@*Zbmj3+M-~$)Xh*q?G+zJLtKuK2H)!G^BuGj;4wfD zol2k&@uXAfRjqkjEEG(aRZD*jB}6JBulbWtK$9hXR10bB2|Q6^VPK2Nn<)#t=jt@TX90&?8rNT z9TUdBI);9w$Q;Rug!nL#EDD6C9EfVS3j$*WeR&!aWG@Ye6ggm;7}!i@RzwT#oWzYW zowma$HcA^}{js?EeC&QMMeXUcR~o&A36J1Q32!K$zkNds3T{tSgy~(2=;~m62ahQ) ztC}5hl}Z+;T)Elnl+~aPQSPo!R?wErlAv8a-NnH8XDU0~tsGKKKKtLZqBJZ@cA^V! zX9;;&02dzx#<-Z4vT*2`av$CCS$LsE24zNKpE0p&VQHgAw$!Ow$yB~q(5>PQuw(W; zmKVthNN?-d&9VhaBxAdM3Tu_?XI=Z9RBM8x43Tv^}A$!l;Nf7CU4vveV{x+ zx_t(f4~zn6s_|b#WrnCd4=J>M0JKs-7;ok(fLynVuCm3>cWDYQ#t|mvrW(jh?Q`SR zq`;9e^{m9}LpgdWh}lX2bi@1F+iKB2e0$5q^WXZqwiC^05a4XTv$X(FK(D{iGFHt~ z*z-l8cdGO~13Ci7fVuny+SsmpsCuur;XA!TDC=9B&CW(=lb=~xe@0x|K?wG`=NMl{ z=Y6?7_@;I{`MP>AI6u8S{Jv&~y;MPtXT)3MSU=>KS4ehGd;)L(>epRNY)iFmh^VY& zM_OB}M>XhU)h5)zDdk;hd$fKOZs&{9+VgHxRzfsJhoB1#k^=m4{%Dd6c@|Yls1T;) zb5`anMu5v*#mZ?Vaf#w1k7G{rx{WcCVl9CPl}nVwRQ`E9o(^eyC3j(ZWJm!rlA1B1 zggUYbz`YI$emyF-MgLKXW;`6;808wb9XUM<2V|2O4l%nhfKQ`-VCASuSoc6)q@9A? z1|({FI{2zUs;qF3YBvTD;vq4g&g02jkQ$@`qq-}rp7yLlOBAAFlZxbQFi9zG6BeMw z3fMxdXi3%brd1cd3q83UQ?c4_-Gi|i;1w7Mpfm5l3R!>?4!g`qm#?{ zZB2YrQONkkZMw9CFSWK z1$YUFkY;7&1Dq(;6=9`ev26&p?WiY#3{lHAo);x^)szB7ukN)LP)kZHS||azW?+-S zWIh%d3<@i_HG)13R|7`3A2-BHHs=l{Y9G7n!HlrAKnZMe6b8VIh~~SqV6vyrcFacO zxAMhA-&_aS&2DX!)?;db#@0gJrN#HqGXRX9=bj&{ zL~-h75W;|=xg|eq-?a7iR6IxCVJF}(b%k~ydsbKQ2f2GH&u;$v-gMw?Xy2qcfS>xJ z1OuK@7KUBrhN4?jh^v}}I(7_;nTsS0agTduJ#N_#MW-XEp_2#A9YFG9GsDL|fOAJn zrxsN_NPd$Tt``3daZlFP8^;XA>z<*w?SQGABKN!oX`&}nwASgb=1dX&<76w$ZY3ts z1v^A%{cMWRQ$OfUgM6N)sQNPNaDCuHpto^vLor$RdIX{w$Zw_)~KR9>a>UTu`buXr~TB+T9YQf6js6#K^C zzE$T8Dh7o(8i}7$et7I4W-=-DoH$fNRmHic{b;58JXe}*{-^yr{lvDvQ!bgA=ilxb zZ)tUG&v+Bcih}$XM^w-^gA>6>Al~HL`I2clBHwXp#y+D_6Q11yn<6MRGIfK#dz4d@ zBi^0J*5=lo$|99`s!$lg3+3yJ^s>BKICMxd4*Stj)Hjv^oKBaR=H|Fi?8;uU)W`FR zGT*ZSA+0^eOKooJSmQ(m-X;tyt~|-}bt5lEN*KJLVBy3nBZFdU5PwSGF+0!TW;v#} zmzW$!z}MZ1PNPlzmlJW$n?u%9(nAPO&K7r3F3jj#Wz=i zbkR)$fN+mZZ?o|c`&>d8DPdiJPi5uV(a|s(g$A4uvIuI-WsADWouslX38`uoSvU|X&>}D z0JO?T7))u7egXtO0|un93f3012}qUM8B;c*jN`V_vS)Rq1lL~-efIsK7{#7>hWt*8u5+%}Iept=)GF)Yt1 z>|LvJo<%o_Y0tpV@fMuC@zj&|q|Msfx{et|W ze~_@%zd$w6-*JV~KWMq+U$tGI_puI#()sOkXy$klzWkrZ`V7}W(EQjrPNu!8{|k=p z8(&A!DTMmu@(KVgL=m?7{bc{aqt{R9X>Hf_j!n|jR82x#3QfW>Igjfm#4QKQySMhq zHxeK3gco6dnuhiiXP)a)84J9ysO1icn@>}?XvV2nJdZ|E%D4Om>i%QiO*@511g7|f3R3;FkO*2T3C>>8Z?_tm05K@jqW{u zwf{m^7)6~Y&mKH__;;b4S0Zv(Rth3G6>$9(Xf%gP#bnUh3NweJ3wTrJy@AHqq?(Na7-~T7#W^tz676RA3cMrn~N6Ig)vMI z3Ch8DJ%HLrAv&Ep6I6MA=VmE-&cZZ`(s13^msIQwf#Z9;Hj_*XlYND_i|jDU-g{%R59B;#ngMnd-JO5B<;zmIB{ju z&utCqxz4Eh>kyi=bY9pRV$4DpF%+QL4W{S+7|Ts08g*0BnS`T|`3Hti&e2$UR#s@! zM0+ONY66Hj+pYXIYu8|@_uAT**A)#S6mSODm1hacqbdBYvUmVO^x%uhp3YbDVJGJ9 z%*sOet8f~$sA)feR4jP%n0YOgyVo3f2S$M(h|8t*B;)3)EF9KGS%XzxvQ&@Nd3W!@ zc4J;n(KOc#NBwwUA%>W-vD3D_u!&WCI@AGgep7Dmbm_7Gdc;nV0|gYQz`+j-)2G=H zNm6O9RzNKqH^wQ`cTGj(`yl=(DgsUZEY)bArYPA2+_LP>@7e2Mew;L5brYg^h}d%N z4lE7JAasYN?0VE7hACTx|5QfwMR!rW)hXFpOT31GUZv@VU&;%f6C!KQuE%VHl}4ds zniZSDc)g@N<*scA5Yxs#4U1|NE+qf+djG}Wy@&T6J>Gvnx6f$pf!BCw-%ukdYw_^W-=6Ht4w5nsN)aB^?={i@z7SE_lsMF4i)DS*j$L1_ zp`v-VKwUwZER{Vq8)ep|szxx2;oI;MBoDh5bTRbZtYP(E?mynY|H}KC_rS*N!@FR% z{p@}3-Fx~#3_$7!TY>hz_h)g09stGrHO2gL5EPt&pug1aC>*m%>9IUM=N!U}x4=o2 z&7|aYBDFn}jFO??J`&0{+3Qd(o~WK!D-;&M1+7j+oh6h7z?q%#=q+uK^zwjM9=t_` z`wTi{-EKLn6|COu4HndUCO_(#y4$1zWgP?vt+#7$>oN{f#tcntrFxIJ3f)lkjfTZD z%wY=*f{$vQafX!XX~kP6_ILp7@oN90Fo$ZQm_Zx_G?!qUA5?!yAfsy+A)Sd=B;iyq zK!#9ZwF^R`8;@N>dxpW}SK|idYL1eEE#l$18TN`XSfs{5Hmf!6Dx(dpAH{vu%8~K5 z%dJmB|3^<>?!S2DJ$m};S%FPfOtQ)%O9t6G8}sX8nyGpJd++h<{g+<#`?~%gnnQ^) z1``|Y%(|uV7W53-+G3)KuiST)UYE;j#zALQ@$66<`r5;3XlyDf!`W;yTjdqbH&1C? zf?ZrHSEqHE6tFMKi}bT5y37UpQM21sUgP%T-AbXP&^h@eaK3YBuMZ>9S*|Hy3J!vG zh<&xiD_H+tkCaKMuQu)0iJwrxU2hS98bx+ysAku`oWfWuMbJeKmFy2}MrndYYrX=> zi%0Ql2@hrT@xS8HNvzSSdm_<)=VN4U(kkf1OB2ESL<9KYINZeO@`dO^^^LaxN_%_o z=;flK>!5EK_&_@hXnGdtV@mCiY(7Oy0uuvzgJ)meT1F7<@66^(Qf zZ{65A>o@T^2Z)yoxdm$PX)v~QUR=*VsoKlGa2X&P%C#7OsSW>bv|(07W~s!6WfEo? zEkZx3QoI1`d@^16iu&#hb@vKdSVr0XUFf=3Rlh{jRe@kf@u(q=oB%wzl7gn$PG+|L zZK-DZnWdNMXO2=vy<2S6zsAy>m#QliSzj-p^83YtjpLkgDUBOKh>q;$;wPYSf=12o@U zo5b)dSeBhS>K^Kf@Gq35AD3g#zGA5ihuI7&3*VE={p zq#4Z{hKab9kIe7um)X>TC!hvryhCYIP=UiRp$CNFwD)|9a|ezV4{7we0;|!IEAk_Qq1k&faM`wN^YA7bU#! zHJi{c4IfuJl*1ex{4YR#BD}Fr;5N@{_Ow zNmZqmgbr$7%+Gx@Y5BQ{&qDYA&hbj?Bs_+tdP3eZ$(3#a&WZohX>V<1?*FZCZf-5_ z|J}rA!T2w&1>?W8a`9h2M_`wVb#=?VlZ8*JwQTzB{9Q7Yb=%~~wz!|?1IOYl$=O_3 z+%HHNUG;;(Da~v&#?z~<{rH)){;zMY z+w1=(-v8fjZ7kRSoA`W@>wigLH?`Y&-~$@G?J6B~SKU6Loo9e&)<1>P3@$`_%1O%S5Ig)iNfT=j!4%9(E46 zQ72w<)6ednbz79)E8A3Q19Sjz7DPh|EL;vXDT4ZGI*?6pR)qhv5qe%Li6-%$@sfz$ zK-L8>I?7Z*Ue>pMzc0f_{JF8h0zFqjB&Zg^S)&BIN=LiOAR;&GR0ZaoNcEuWM%~63 zgf!RoDD|G{=$?rlix7?R18u><@HCgy7s+;HvIb2_t-6e-D#uJPJP$4t+aX%rgd_9C zdt)b36V;BhU7y>7oMFh}3_7FM@GnwUkCOwdi9@APC3V)OLWw(Ui-W#IWhA!(j->3J zPogxR(Q9zpRfVnb=e{6BF@VYu0p=u<++-F?8RMIiozGGeXMmPolwI>S0hj^R_}r}a z-K3M~5X^#xqnJa%NB1LY+qZ|JP@fYvH+PZlu# z_1?syu?h?JZt^vc^JdevQh0CHj;^vWXrC7aN?czAD^*S}mnJxbZ5a@wiE4w46DkV> z8H{u@g+R5t4IX`Er6`2T_@foNs-%73T8myCYmTEkA zyu|C;A|m&((omS3a)WW)UA-z0`hsiZ^dXD0OUhVO6CQS}9!ZbNarJH24wyTm< zOHn*sRVb}7M`n&$cR80K-lcMSXr;WC1mMK!PJ@)h(h6v*z+l1e`4?&$;ovVN*RY?) zqXtj2)!WG`D2fr^=tSzOd|5V9I^UPozBxnG++TF}{v{7s5mdVPJ%j-w`mkbBW;V)}A$GA*DENfELe ziC&G8+HImg4sSc^e4kUNpEfD7#09V!$c<~XvIhXfxOynYd`A^&D=J080e4TPw9J(w z41eMwH?;vstn&&XA0Wk zJF$`*P0#OlKJM$WFA5KIYtVV#&C~aFp8Pq6LC+uy_-;lsutFq@lp28G6R9RN)xwS5 z70Wc(HKKUewX4K{j`%_vJ!1mB7Rt|+9Jf>hNR`aY#4L0qT}+}OYXeKD)?Ebu7~9z8 z=bE2|_Wz?W?Mi0F@Z#!5fO+RX_%0Lwd9$;*-2dOiM{kQ#iBMBDhx4bwMYlISItnM< zVOZ=Rpt7K9?obty=r@!Q07SEO!Ep+0ovn9f7p_khx}s|(>Wm~~V@0E%6sgKz zy|ps9jX}?bEh1kHAk|I3<7D*Nr%kEBJMlcAf^45A+une53Dbf=_iq0x!4L%q?;iy#)!!U3$p>6xn)2edz+3NTK{X@ZDrks&q3RnLxm<&D<&y zL7`K0?7_13(F4WR#fv$Xx2fZ`3aH{`Cr0=HtD`%veoE5_{x)?aC_Z~wvFKmG-ewH) z<7#Y909SGo=jX?qtfet&a-Qn96Ne*~wDTEGR~of74yuTHM5PcE%1`yMs=hdJ7uBf9 zH3)a8bYMkYipXz<693lJl_b$Z%ZC%_RNJ*}S_u0Vj?Q;knXZE8{Y1N44DnChq3G1r znvo#Rfb&q>Y+S@+lz`Hp&o0W993+~gfB{;4IIXX6mz<~C5W_U+pSTn>t?U*Y$$;X5 zj&+q4wF}ma<8!>Pqv#l&?T(@g#e2!cN3p4^Zdv1@5NNR#s0nc#`Xjzn|X0j zdbPWN&#FEjk|Z46WZFymlc*OCavCou5wVYp@|CWdQ==e>2mIHkr0(65Aj#)a097yX zn{FYKo?;Sq$8;#8jwRH2SoW1pyb;hfM1At4$~({5Ui_LodlC$?2}>AOUJXyjsYC}~ z6@Zj_g%u<5z@S`TG_GA3oWlb=22r^g1sluatm`(Q0%OOM1grRR;s}qizG%U*Fqi zeN3An*Wip}kJxBc3>*BZHMn=|kz=*T@2y9wl+`$w(GR4A?Ky$EF)XB`G)gb4{ut;r z?V+*;t4)!oy!J(>ggGWmuU|9U2Lvf8r>nE*OPC@L`{UV2*SOWlGKo z$;Bq)-y+%2!*N5X)xddH=;-5|Ue`UQ6CYCI1zyRxr?zQQiht6zUir>7_&e5gq2F=w07p6W*j?L(w_i$}vMx~KDF(le#k0W~K; z!%Wl|B@%6eKc3<3amP~%!LBU-tM6;-iohy$XcaU^>H?IR%cxxAy*VOSMf?(kfz;Z= zfB5YR&4K<2tkP91!&T&XL9PN&$U>F@xP;=$dNjp3V{=*85;q6fBS{jeNNi4VOlh?T z(@(T)R+kcFi%Azebtz$a(~`A!uUK)wE4sehq=PR=85fd%so>?Yd#Bj*y*Bj&g?f`X z81w^7Sw`VZ)GVR2m(kIs*|b^<3%3fzaosXoSFRxqS}A3%<9S<-%f`}OVyk-2m=k6v zBWZyclR4YPzyUnRtZoQAJ#zhDg#|0%SobetR4XU}B$s|bQJ&OuO^K|9oOx5|bwPeCt zb5?yVbXF;fErcs3Ds`mE(d{I&elg?Jz5aAEv1K;j)V8>h^hY;XiVRy9FB1c@mU9qS zL;-4z9~Ekg0b%Cx{wd30b^z(=NSo%Yh~XRtxi}G&@}pv2+m+VbMh%|YKW#)jxb=iBFi{kWT3o&j>?*N zvM}Rzn@`yFbau94BFS^+-pu63!PDcf>B(ywp@`<)QkA*DF)I_bNz3C5EwHR*Miq9r z-dd!9$Ts*Ya#HCox_#bU(MYRjB;MTjW;<9bFsN&7Mhh$@#&VsL%B8(?6($qvGzX}F zaBAIc3o(i&Rn`}1on-So$>fx}-c1tD~n?P{M=_I`92W=>;sW%9LBy_fT8gX6}zE%NHqTV!B34;VDQjwGvk|^0$ z^&>ow%;-zmIf*;EJ)ey4;!L*Z!-VpUTC=i4fs1Bt!>Rr)@;p-YN|FXGv?`e`$$}Fo z+bee-Nkb%hku4}Fk+iCJ)0wOn;=`$T{)G;yD#Vv9uJaR9A{x5I6w@3Td5cMSjV@-F z)}GS<#$cptQA|BTc*ZO@#qDieNti>ruG4PSvUm5RUul(Io2xzVXe&@|InNjuuChvx zgG_2W7yx*#aD7fh7>-J@={US>Dd;h!4lY!wc6{EJdr9323g7sLV=an~8L! zmjc13?S%zmLz^lz8JMDjI80Ehq^tD5H;P=luV#m&I8mF5@JGJW*(HQb9$mZNb#Ilg zB><{~a|1(SQqsWH%p&7T(ML#Ty4-}kNfneJE*0>AX*47;>%-9SU# zYq^>s7g0!nC%JDW%b>wyF%o6dz-7$$8MV2=(ZN}JR=cf_qZ*eiwm!F*+160g1^V-f zoCx)K@uhEOrJxOJc?jO z%4^{GTfUXATk1N#BUK)1It?J3uYOHt4@(osoGytGO3oPM6yHjOWWZY6S}A6DP98AV zskdwk4<@;_eWaS%%as*RQ~w{;=GV2`-!PhA>7>R;BvqM4LY?r*L*?#~Gr!9pZ7@5N zoi$Y_f=$N*MJ){NEki=A?PMkRr`CP4_q4^e2nnTvvEbdcXoSwpw7?6SnIj2O+iamJ z$t}|pvU?T3ruc%kAxmpnnyb;~m9xIkLq4ii)NxD?woi^l94Tm<6^RB?(i~{cvLWS7 z9QlTjXi1nlGlx%`W5dn^dL)90?j*}uBV}0DRVyn+hR{NkXD$W-#|3K8JZQ*my^^JX z)=j+t&@b`{fxn_yiQ5e>h<)hGaXh))Ga4HoiNYorRzIa^S+#}5u`*1QMb=Vfy3pVj z=ppKUSM8$lK_h_+53L1Ywr_(Dt?jrnsDtXd*EO@ua$I0ZWK$NK>^f%{Sn2c^er#?eskH7I22IVuM6(Gj1{p&0oq zZa{GR!P%?PZI{Zk3ty($Cr9FYJ2UhxSI?4e@DN5i2L`v`+pmo zo%O8$cW0xs^#8tz&lm0gJu|wna+?_ri~NaJ_&SvUp=KCYC~tvm9#n8>BE65*45?>C6-bfIrK9=nCRUnAEr>_Fq2Yq>8sLZxH9Az^dIOk9WgQ3Tw)IG!< zg3Jk%xZUTyI4U{`6CN*k=*@>LhMQR2p3ypzsI(_8DGSM`Qb(WzR?&8x-z(SHoVOJk z;8{)E=?^0bkD@gyD^|LF7@|(^VBI4qumS~dFEKO)hjZG0z02MKDSDDrBA8;|6u?5{?i99KSmpK^#9iS zb|(INdvmM3jQ@TkpUOj+-K2n8N;IbI09D%?gkxaoa0KEisiUQsv_w&;Px-zX=!}(f zjNeR}Y{W;kr*%^0#W19F>gaTB5ck&@YEr2@I-;=9m<<)z-`?IVo&WI3&j0Ps`hR$vAEosHHbE7Gl zEfO|YK6~__a&bBy-y00jmfUWxH@BeJCj4)^d8fIlU~SyJvzf2?^2Pr?#gn{(n%jsI zEIo*hiiXpR(!}G>p10AuyQSZ}4KK-XL~p{203-f2`|&9z7OxDV1P@22QF4N}v-y%| z{$T}L>xLI8%m6YDF)*AL%JJf2vvoI9VvqKKNpw5{{T})nByYW-$H7KJ@4?gWD=_0u z$8>K$#x4~g13knbs_}?vVSSvwROpysa+xi)=l%2}TeqS#`*P2F1!z3NgTN82j`8F; z7|FF8tK^>dcU*X%(c6UHIz@xw>rs?GWy1aK$@AylgK!*7QVI+aA^;j906MN2wppn>c>1#0(qv!!W3xsKvt@!^ z0!VonO2F)5sNH+7c3!`Fc&Cp4>=eUjyD&t`>^{1;`SR6^M^As+=_14i4{@^?MrSb? z%rOoOB1n5tf?&uX(55llLNOxi3Pw2<=EB$j7;}110^@V9SIf`G{mjw-Xc1PqS7=*yj|#GC5rYpuG?P5phKT zIz>urUc#EHm4mzncj%~Qq>tq^tv&nPwN$w(wxHMwgRLs=dHXD?ZIuEr1l8%#(L1w> z>z?PZL00q4zFt&;Ual6u`_CNt|0H-D;zsI&+L)XFb7MPW|Jh#OUdsO)`7|HwKfL$) z@v9xrTIwe$ZlExP^Bye4cW`s?bA0Zl@eX`@7)>x})Gw4T0}ZrFJ@~~tKZ*J$oVgHo zGJz-7Bag#ik}F3OAiTl@o^TMU1RT+juLB)LWQL}lGRFFhh6x#n&w~-(`#}RU+KTJ4 zg$f3Ag{OZKj9|0I37hB=KFGOvL~+TWk|Z7M$0+et;~C_kv%ipUCt)sD=Sg&iKj2-R zu;>RPs2+{_!|8w?6MZ-UHdSUk$WH~{aF!4%sGAiqUKrtelOtg=AuNtD@+USOIAZ*k zhucN;8c-YN^dv|%OjvMFnMMJu*m%D_2Y-_O0#Mu*=)^j|4~1=9^ZASY`;VTze!1h_ z#^Hs3(RhM=i8Tt0V&yg>@0MFpgO4_w28Lm2z+>;LD&FFv)Sh4cqvpLqKbYhs=xlCz zjcIyx$7=|)d{sR{M$;u5XhZqxhlxt(I!mAUKN*|4=YdQS#RAKi&K4>ueuC zdGE?GDC!ql2sE=Gij#EikfWkeIPi@D<^Wya+Vor+6J86jfNuM$L}HAtOsW!e=b>7{ zAB_Ecn*F1cPNjSUpg$W)7>xo9OZe$0OVY^_A>jy=F{nag3_ZeFp{q$<9=}0bME$F; z>&L5}bwuHPCsY9VIVz}rgYbhsYGh4cT_k^S5PT3F9YtZ|=WsYY4bTsK0{U%=IZ6j7 zjoZy}c)DXKJ2;{DrirhAzlw0F{?|M?=FHh2-p1VX|IO_A|JFu(8UOi4KFQ@M4K8*( zO#V^PV_s>h{ORO*UZI;Vq##z#&(FJbnqDER@YfZ!H-#Gdd;jRz`7N#k6`tkI=_tCW ze2vL9`X}&r0Fw*;pkpZfnS}p@e=!hl{3&dhegV-)Z>SKBe;?#N5X@{lC`vKZ=Cq`Tq@kW{$tS?5D%#X)t*^ zh|fpYX=AqhZ?`~)$mV~BUrYIa6Q4$-QQ)p}s71FiC-Kn3V^19txd4%-_bByF zgG;X$R;CGOqt$hB-_Lm?2SIo$w<$QfKPNYAI!)sZFS;q(LuD6J4FWuh-Ih#2*X&a; zL^MLcS}S)-$KeG1;40|#ApK36e7PpQ9AgCi;U&e?Ogx>u(56wqy`98yis)l^j)3BH z?GNp>1J9SzzDJ2sr|iu)vVokVkw)1%;tJUy2tqGB!b4!wvV&%&a{t+rC-J zLiDuoxczXln!wH>NpP2l%z$49y4m|gQywB!3XMo;FS=mcdMQqX1htt(q!0<*^;w7v z!l6Te2O*}%OcrXnZnkVf514t(|K$UVLwj!sLT7q>V)NEXU^s?T^3v=fipXq~xfS6( zvdSdH(&V&ZjA3}q3+-=Y#lu4hihW4u7*hGvASPFtDO@U64$>5u0>G)+pPozz%Rt>a zgZ{nJQ&B-wLO>&*o9IwK8jz)vG5}YSaoA_3jYi%tYhl_~tL<7wiTvG@dWkyIoHCeslL2ow(4=}wG=dA9KU$g*_C zWx^vX3Rp-H7}z6E*vFVT6*d)bN#st)>_B{mj0E!}4TS|ZD8pr#fJP3mbpmX5~b znf)YLIU5B6zW^F^-3QvUdReJpbOlBA7yNxDKKs8;BjAUS6TQL^j9igT$WSXR0$Ijc z!$VC_!x&?RiGU7H!x_zTcmfI~#{03Ukb?t~pcRAKg>4nt<`ZV7bea(S=My>?rgc+- zn+ORoZ3gG&729`luVE>$&o5oEU@z$y9GWfiW!_TtVqY=zNw@6x36E|PvH+8*-SqCO z*^0}EpiB$wFE$p?02B``uIdrk_mQ5Q&=62fxq!u>9p72WsqpV z^L(1dcng5F3DploTAvzNSpVdnBovGh)XCP6RXjS0 zuy`0%18Frni{Hu`>!J&jV^xKqTad=|zaIz_XF49hr3PZS@-<4e~g5OLsQF!ACnJ5gPkx+DWE#TeIOw1*snRH>9t zGLRNAo|B!!(sJtDrnX#H!_iqZiAT6<)+_eK5O!xo3p4U!L@Ym0tzu6J26yfyG?F-= zU^$#b@l;6QkyZ^fRLd`gA7pcn47lAijUqQo*fG-BXZ&6YBP624@}vTea3p=(n{rMQDhpOF+yvTKD1RQKt5#J42DY zR&$`##IS{wQ(l@`=Qu8j4Je+xC9O=(aPdl!1)>VFfcJqaQ7daBLItJZa*^q%s8FTy zj5dgRQvwXtXjlROH5=wC*sJjBuN602P9Tql!9cAdBD9(W4pl0K@ql7`3?{Iii=L&n zcU%&8u2M2eK#v2d2~WHf^E_zn!)l-C1XUkCdb}@P05~(1NrH|(;3)O=0`2MnbWU$; z8L%`B#7kckqyZj&oMKvfS?4J%+oK0ejakb-htbYL!K4_xMBpBv7ltEi{y`6)J$?M> z>3&5G(vwWo2icU%mX-4zfX2GxeTxoMiR(f2-O>zfJ~QoqAI1A;{`pV4)yew*v|7vj z?>F*+g>}c8>P;ASJV1p%ctWkLzLk|ROxw8cH4?9ZCa{s$i0NqaAIr(~hyE;X|G$>$ zpFVT!|LxZHM%MqkgXcfX`TyxZ%{RVx&)Gw%{R->hJnh@f_T6Tu*{(qGO7qpvo^R~> zKE~nqd^`qt(`em=|2ps!|6ggITvnPdfA+}e-+cbu-gvy3WAn#)+U(za^t{p>9aY{O z9o#>(puAB^&>QdIP2-K2{-M-irFj$)4Eq=$gThs<{}pZh_pW38&$Rxr4gf0GIshP~ znw1Ye0HBRbWsw5_91ML1(0uvQ%Ub`DKA+Iw|3+KlI9X$kEd1IXu@KjyksKA?fR3N0K<^=gST$_}f4>&Y% z?iQE>gUY-EgE#hxLFs8hhBXL(rC8b>$ebS(4Ph}b7&M0SMh+FS;4)_ly!Jss`citf zP${(R<0PYcY6u7h@(_K~9izw5QAJt#ixB6DWz*m)Cl8+GNc+-TUfIou^Y*7C8{Hna4R0xzb@srRXqZ@q-Y%pK>OG)9M4yLlD}% z*ROtl2GD1DfbQDpBwp9U+F8@ z=V*DM4aINQ^ZYc=mS@9cQbpeHY1K2~p{ z!Ke-OetP;^eyOS^m}9*AmKoP%ID$mFUH^9A-mrgEsyy;|o8X*+vC>9Hc0>J!`tBw4Cz_9MdF;$ahv*{hj z@c;nz-`0WRu-0=%hhdm{pk2Kkfqo<_VGlQ_u*!H9cyJu1sY*rbDDSw~llhLDpq26w z?+OMunjZ2jLePz0gg~lp+=#Viqc5~)L2q&_F#q-J)w!N&_mEtCBb)WAtfA=BxmF%4s?CaS@<67>7w7(M9zE|Zfp+DZi=r3&bq=_H_qX@8!- z*nheIs#5tYwa35M48)eE;icKz?0BmKnmw2@@-*nj$pxj(u7aA^YToh4284;cCN*#M zXcC6KWUwmyL|r9TdWP95b(CV{8;fVAeH=lIo_ty7a}phm0k;=4V%!@9SgE|EO~?1% zPNSxy9}h67#TYGX65awC1GXGM|3Cs{fIK)3>um4#XoQB*+YrE42GdZTOgK!%`9!19 zplE6}z5P*w_+#@GY7#>>8^KeTO)V?iDf|dv$0njnw!wOOR+wAR3rWQRM2@U`|D0lc zh~%xe+mPiz$8RRe-m`mW?~`BzX}>4)REc>ZDat^_Axfu~1tY?KEAlB}86}ExK|h_6 zwS=q&$hjhi*pOZ!*%ps^(;raq5S0x!8KcIJ(+9naC!|$d!ifn+$8^ZiQRdzIy z^tv9?HJW(w`N$hYlMpk6)2bHXX-G<9<7gQ5(S7VClZ2);W^D&l6%ivfQ5)y5SH=w} z;E(yKGpv_P2Qqinz1a$gYp8wB;Z_71T5#5;$%I3`t)aY8n>`Hpp`)8biRmcG72&^V z6s1uxbmr|;XBo%DtVbv{S-k_v@@v1F=HV|Ymy5?Gv`vl&SZgi7W^+sVopH%;24 zc|M6!Ikw4F9^_*|<(3xH9f4K@+Duk#)bVU+@z|9^#1`rGHq>!y=8a*Zng(K#G3WO+0; zIo~+tTQv5Y{ARbZ0xMQHNxSeq7)tdjzpVNlV8)$6@6JwpXQxfc&!3-d`L#MG8+(^4 zwC)!2RDq-LPRn`qzSe{-%LKt>YvUta8DS>{I^ZN81Bvl8vk&_%N;NzS-J_${<{tvl ztI@Sxg03#mnU8cki*$l9DgzEm?sH!1OleE|M6Xx$g#x7+^bxd&__W)sd*>=YCul43Y~Y0m!x;Uk z&|xp_pRfl7YM{uhjmE)&m#JfKK41qo2^;8qB~k2A@5`V;R(iuzL?=**Z8}9<@toiu z1<~;LMy&NL$JjkWLLDB?MY*%n-&$Ya+1hB$LE9-f*bLWqw(oAP@3hy$-cF|z-kHbv z<(-)i+3KQZhhfkQhn6Uq3#DMTpchn(o8pf>S*ZOM{O=<$!aQ=9&7*mg)SWjRlM}0j zGKP|Y_x;SQ`gByMJfK>07=-A^7;u(8_^y?QcrpklyH`*pr~(E)1}N3V*Rl59JI&2D zsN0}&cT|ZD7zZTo;^UiNPD~41cblEfjV5MjxMMX?%P=5y;GliTt1folq~lQ zr=#KIdsqtS6H{>(kt_i1?JH2}3cZ_6rp3v9eJZsuLq~J{lW-Zs-uMU%b^>!1Z)}3< z5u%ZD5gxO8HVewNNtf4-uR}R!)tW;ct3{=?o}xW=@}Ufs15>O4kvyKE8)md3XyE(= zH*uN0LP1SOudq}lW3?|=nrMTFW{A%=k_&F6t}@i66CtC3%^vSO!xSiRGS-Xf{C~Ky z`3R&B&f;j`86qh9g;yJa*1_g1?893(HX#I5VUkx zGIvj%rKkhx<54V+VA=lULzM^(=XXM`o0!tqS1V=>O(8hkTzqaD?uUF9w*OD3(cn79 z|Noeu{|SC&?f;w0_|G@fTs(uynrQIu$&)b2sQ6s?z9WGC4zUort}0+N995%Bts{wmb0nJ&1(c4Zns! z{jdC8%ebI!T2$2+5M6kh(Z#G%P`%ai1~G_CkwH94kk%hrGK?a^upV#92|Um;lbdKlAU1B@A=N8`7(et)`z-+3%E({j4p5w1 zJflX9s=$L6At+zr8R}nnr#bcLEpET%M?i7h_IF9my5i#h9}DFF&e?xD+pT5(mmB%8B27k}6eRH} zCVPJ89UN4C+JEJ(c|X5;^?VKQsQnDmW5*WK70|=$SWp!~9l(3`-18Tbp4}z=FET0o9RV* zjW*`Y|E3>z@0$e=jV3)bj2Qyt{qx&cG`D|NDRa zKmQ+@;tw~xI}g1d>HiKUj{^`^un&yz3McckSAG3WyY&!0H3bB{nh40PUtKvOo5dRarG@NO5|ABWeTUBa5xPx^;=J%q( zfMXuKczEAi-|F1W1IdlC0s`YX4+!%L0J&QRWE+79MyEi;#B1+(0mt0Tg4xg0Lcr`3 zF$COrSPVrEM$yL_U(FeritX!G?37ldz_B64)huKHnz%V0xaDm%u$f#frqgzo(5jX- zHQO!#q#fNJewd;8gMx9(!s-;l+J2aYwO=4Fvar^RU^$Y5VYSLektN5>PFmuFfx!Uf zxGD#%xR^6R zGBjO0XFB67YIZ^1xKdSzF*dJSRkaNg>Kaw4?OWdV+^P@vONQss={Qaj ziX@pImxpD8I=j|B{r_R6dahQITW0PRGJ#(6{WU+c*3tyZ)tXi1p_+F09xhzP5&>4N znN{vPQ~ch;`Bm;O(ig2kWtZr7$pliBb95_KFN%vJ%?dTwlHzwz+5RzGqqO*aR6=#} zA9J)Sly+HuMrjAKZr|vb(^1rq2Vq@g{_9r{8+R66UkTR3d9XhB4(ZGOENuV#XA+N^ z$;oxvAPsJ_H2zC_eLENbV|{ZO|M5mXxBjx$i$-g`AUUa2!VAht`uO#|?(=)Ee%|w& z&9(2*UF+b8-!!s zvt?5$)7-;*j~?%}Dit(89^rWj7Ft7b_BEB?B}-%;DL%jX=UyHwPw@R`a}c7Ct447X zV~SP%uLHkU`}f``8Up6u`d=OSMfghxF!x6&A%hW&h|2$Z`RwVA2UYQ)hLCSpR-hw; zcob%Pf$PC1>c!rIy-+(-L|ZyC(BaSMkgL2ifbIcs7C!gsq1{r@`aTiaRt@A}62(*O5HK3}H)U-ze`isX*&3>cxa zn}i9+VT32|cfDSKOzl47WETAWy?w8PW`M-jl$lU1c*g!y8Q)|TvXI3nKlXK;iKGLa zN);l6Z5nsUR|{m@Bs`7NP~5#J+Om2>wdDndM#X0g%lF<}z@w1^+kxRgw^}WM9ig*= zCXshw*FU63m_`O9Ir~0%@9}>M75bN2aPXPcBt3)Q+^ym^Gvv!Ph&d9R2Jr!=KEMX> zyL2gw!z5IJs*z0m9ftrJ>7UU+)&4=(S+h#14)i+-4n}3guw#?xcVM-Jy~q=1*Qw<2 z??GwH29(`x7nH;HSx_>J_N=feQ9#o7G*4D=j?*n&c#Ja>R|(ANlJ%LPxc#XR;2*_wu_r~&wJcOL% zYf~mq+`8xUOFBuRR+UtVIKnS9i2+mDcPI;3i6kHyK$=w_JzsY`Q0G;p9n{9tOOS4$ zn^$WL-syhEzlr{wHI;Cnzq|6#7Q{{gWSx~2*f$*EAQy^LctMRjT`LmCMbv|iYnRx9 zI^wZFiMJFXjPt46q|3PbIBgwfxhH zYkK*mvwE4to;~rK&1S8HQ21)s`%>o1r;__-wy+oaCzvnGsq(v-DhOo8Z25xLmk*gQ zjmD$@VbgS_WcEbAe*B3O{W@>XK)>J@8#bcBa`r4|&+l>el*|`8F~V76dhl_lOu0FU za@x&Q+z7eCxuxFd{mg1V81=*9sxA>>b{`;1gYtM%QHox%w+ckx!PrYXbPqY%fyX-| z{4*XmxC;q_xw%Q|n3|XK^Ha>v42k~`Q&UgMkFsH!F)6civB>0Aw#bb!0+ya!1OlcP z&ZQlEwbSwor_$1fu(Tl*Plm~KgsfdHJnjH!Pxuk1e4|4p@4p^ButU=)7*ax}904u_ zsqDr%koe+yAjw#lgExw8NR;SNkw6k(s*A>Da9z`h-2lvH93gy1r*i~dgw2(KbICIB z{B|`V(wJsgnROr+XyE`f`gKuoMbL~OWKblp0-o;Na{_LD17tmr7Rd|Y7wABOFy_sq zw*}zyh`Vt?^2=TB$@0MavmSWYozvRi<@vWDqzQ=&$U-OJD=Y8IH4A8OI!uw{k+H6FhXo<9;*@li+eBr;@4CdQkp#&tcb#1D9)s47R;OuchYlGIM4*kr^rQ$SzYgW z!tpTr5JhdCx}$;SCtWjvGSxwlG9;j-5CCwx#2faM&(>xFzZ>W_#o^}kDKWv z=!ZQR3sA%CT@82dI$D@5$Y<$b&JwVY24>gz5dBMH*BbRp4FWO&s$zplJRZxUSiGxY z@)Uqlgu`{Q2--qy4^S=ZUUpe7mQvQr%mw~s7HHJ*siaYcX!oUY{kUN(7xDj0g5=t< zU-2_9{?m3R8~>@bvAK-@aU-8E)Blr~1CDM)YbnL?=HI*W7X6wr_&7-3ZZtxu0|D#*2w=JCpi4z6!Nkr z!f!reR6(IgzuT=y9491+L~nwUAW)hrd=vFpu&nk^NRmMt@YVa)YhB!F)s!>-it2cE zth<9X*q${^LaW;SIn|&hq40D zTPj-j@O$3g;tmD6l!mCue8^h3!Ea zg-NxajJ52UvZq8+f&AH65nZ@>Z z5U6h9``@RqO^sL~{>bb9`g$vS|F5&%TE_psk4tO_cMnWS0^aJ6e`<_+MY~?fH(bp&(#na;xix8!RvaA!? z{WlIGl&Z=JZQXMiMr9v!1N;*iL18N5vYOR$U0*ZA2-lBsw2}AWl^0%&0SFqJol!?2 z0o6KLcNG!<*1{&TK)r@N{xR%#+jaG=qrZ`M{=P2%>BCKIw#}p6;Xm1edO9l#`9G6S z0b|Uk?W$euX}W_mQ$3-exRn)n3NodNL2+SHa6|1{8E|?_!cr<2xbmQ8fdJ9_K$65I z(=mno0Cu7*!m3@eQ>Y5Lhn=E_>!sM?uvvY_Dm8;3{;C&|wMIF0e+LTGAN;eJ{&#fe zQ`-OA+j;wcYZ?FdMn39{t3M7>G#sm-K7K{Lab5ryI0-K)j*BtFhLWG5z{;ZD7*7yn zD<~%+Wpsh2*kC~>y3at252iy=YfzlgDH$%RaTC8LRX-oD+IO-!;L$328$fAEx9RWP zPQI=l{NvW)H#NT|X&G)O->~skem9%s`=HLV`!&l*uZ;cGH0H49)qdTh@a4EdTkZ(7 zG-VpE-hTN_ZO2zOdMWd7pf<)D;*)OcAx5+D_1aBmhL{%U?I=DUNjXx2$w+Ot^N)jn z>>PgMTh?~LisSI?(O5KjFzNU?cbH1=>e+HY7*C)Ul~#RL{i##u)hfIc-oJy-!u$Vd zeC;J*Zv6MHT>j@a{8`HX8~7Me&Z2_;t$W=kTBc*};_j0sr)M{sE}lnr{dTL_X*Jhd z&5f3ywRthXXk6!V^gqt)Tx=sNDG#!=%raL}qf>4*EUB^HDK{c!s&uZ}kB-xkE7e%M zBb}@Eq@?eQRA?>I4OM($y6Qe}Y7;3e!Qln^S4U?~PLYT+^eqIgp@s=Hitreg#}9zD z-uZaIS_af_;UvCFWs5$bBqgxMMn~uyh`0-q-wr8 zqL5{vD-Sb`^J8naWFFM=9<5TJ8s;W(OpwS%dnAMgU3?*5X%O~or177;D#q=@FxTof z6fBI|8$UvE9wn$XM&mpPY|3djSDlby0NOW#I-qpD6}yubb!?jhwEsm~y5(wxt|QF+>j z)E`^~U`%QIM=1xJ%^rSd2>@jZ+=vNw4`Bz3!0uVFgBa!_X^lZO+n@=T1&e zA(Ub{+4!b)AZ9MlkYTU;_N+>2)#)-v-3$6Di25!)lJE4UmR$_&67=22T=V*JNWonW zw*~p-)89-zKHoD4DyLe|S$9q_R5|OUh40fK8dhrsendO{csim4@GW}V-=Tcu@d%F< z+u5AyR`Ismn5t2RjQ!q1Mw&~{V>-ojYRJQDLOhv-e6a4qRFAI*^(da=y+Tw})Dze! z!;{UtUz8!$W~K>M=ejt=InC`;HJJf_tXQL9{6As~IPf(&)GmBagIE)31#qjUrmP?tUTkn*rk^Q?RfEQM1P6tgKib44^1;Gzvv<#kg7mXgNuU+SlVr zUFO<%fdtSz;0PVD%V4tg)~+}%z6I4D9W44g?2o5i7NJn&eS`UQverAOf+!wDhqe66 zGubNW*9AtXNU=#~V)~tLIt3ep9Ct0iUJLNoLJT&O!%FcjVzaq?wg96oz-e-`a$3f_Wh1n_ttH{My_IPb}Qwe@aW1aEjZRp3mPi2H`1rBZa5GeuIxNnuvulV zBdYZ~I|_aQ867y;)@PI#^I`#ZW-Msd24elY<}dZLCssZF)fanQ(K|c?*}#(#2b@@x zbj|Cr#JaFV`{S_$o<8C;@&FBt=PKrldKrxH{&D{#?7yW$;`5Ur_0Gf9Nyu<1e^f4N z1DlHjxxz3EpvxPB3Zg^`NhB1$<1=G*i5q20+);pvTCuSQdD!*=!P^ z#TgRYd_m`p*dlr9NC`AhR^U>!Q49BzS#EVDV zDjqd+6aZvL3hU7eaij#(y4Me;2{8-u1?Gtj6dO1_v*xC8#xluSr5Qcqb-b#SM8_i{ zG=+!bb>6aH24eSJx6GTx?=ABtcJMw;A-o@X6pc6#V@g*RWk$(qO>XU6=fyM7cIx8y zz4AqVJ$ulBf=3@9ZCGne$^Gn&9c#SGu13DfPF~bW<|KnS#{Hpg9UM^UapiKm(G=Z%rpg@vAM`leV#(I zIb(AX&e(KElM8t;myyIGi@a*TXCmi0VS(mB8O7s|P?k^Z9PD}}*in%ZFh_LIqgj^V z^nLF<#w&&_l^s}I&gE=%X0}<(*^2QuEzVwgi7fP)^7V5|2IRJ;ZZNaN`nw} z8oVf+y!pDx-~LYp3Q+7_^ceDPf32W1Bx&Qe+v4XY#h>!Cu>aSu({TDp{J&c38?Eg8 zZ*Ofa{l9MHlZ%v6b1VnHDx*NFz%Kb~Gl_n~{dOzAH~2N{GNoQe3A`ImlM^v$+EuN0 zWXUXh$0ke$i>3p#vuz+AVt30|IlrX_txVcDr!OxfRQ()Zq=^ z!)St$oRFQ_2)ToVud}_mjQ?^YpRD@Vsu!n271^UJ`LFP|6$p;=59%Or^3+N~ z1G-f_rrT(oH^(}K3Wh_>aG?{$FgjgMP{Kb(6hlV8N`qtbj^7NzqX5$`s9K1RTML_~ zlo{4hmta`SA1vuK7rIQr>61$MA)Pa(KlpSrFHMZLoQ)L468+^w7dop_9?`mIr6{=u z!daw@l^;`!n8^248BpDxgC^6nKa7))OwU>9&7h~?^`7n4m}8>~%t?l64kM_I)Aq?d zhvmb9yy~#c8)NQtagWm-MyF9~9bm3#Mm>0o5%&C2Oz!OW0L?^{Z-MCWr3J&WnQn;i=qoBD=@(1e7Xq zrpj+qD74i4L)mt4@U4(h28?ne$&WoFex9yXgZ+RaO1>4tKNfQ>ogl{b5YvMbLWS0dHOrao6Cr#>fnHQQV zn*sdWOu$7A08z^u=qv)blL6Q(28e)?aRAd$uO7@Te|o)NeHPaL{}~Og8vtz1{ol^k zdd~j4-d>*n+{ow4jQ_2r@jv5eRK(jF-bTiSZdGo=O zGW9u5E!MYctK_XEwb|HcwO-IRr9WH*gdmV>eh~mV?~pQpO0*S94~wSoXgG@i*RO6` zX9`@q_4(D=HOV;CjfWAa%=mA~Ha8lLrzs~_R#Bz9qj(TnKNHCdtRJWxsAexb;VKhV zbYdk|WgK)n`L!<7uE6rSo~<1l7^owY&st$d#2n@tua5y#bk0w1K&p}2SEkqf>^`5*!9^^s0`^+FbwyG=fR~8zGROF!N`1ES>g`Fnr>}I$se3T z3zW3!TUK&b88>bd%F8PLlU*z51?SbJ1hgn<%`X(VDoghyJcU({MQ>hcF&qs-)&5yT zw64u1%4?f06@sBS>RQh9!hQ@&@Jyh(GcIJOkNU@qHY^g&Xvk?~agomuKD73AYF(?+ zwa~jxC8FuID}F#t#mLvM{Xt`Cn0BGHKbz65Dt~isi}G5}E7eVv{{p9g9AZ(V$vl2J z5HTpPlZFDM+{JB3Xe*lsjiD6G)el251J;@AHoBCK_zLJc5I+FFkKW;8fKHzUDraC; zS;(&f-WqWW+3Svc0m#B3DutVgCJ8HY75^zwee+6h&X`3YP=(8B$NuY)&ccFEQ~*e= z{$Z_*J=6~`0*nLOgdY2u1srse=Hjn2t9^O71QsmsDusW@6}C$MFs}v&%CQ^xL5i0a zEh@Vh$ULg~GKB!LT`N_UkkP96&q5p|1zipz5E%}_XD$a3M_-+ToS(CJDfeh0&bmUa zET3JmYIeZ0RjG7UZB@ z4GfEegdbJ^iNdnXS%6=|zsOdDkebG4H4`$P+OpAUj;2H0<>4Q{mMMS<_WXD6^Us65 z_Io|^tf%kV^-g{LeZjjnf;wm)<~3(Ql>eBlSEu9jvKve$0p`<|GXB9~UZZE<3sanY zp|fd4<#5+3<_3`#4IFbix}c2gSbY2!p8qFldff~_bMyapa`}HYJInhYH}d(y&;O>A zp~yA;Eo<;GMcDoRJe~{(?asQd9rE>)I%brGhK3$yd<#I|oA5=EFzE;5aFCzHS>PVQ zGN5mFTKohayd+13gl_dL{xQgj(7xcCmh-tKI{zgPl)tPkK{Qx1wfI>n26 z!6@}!zj#djahi7J9yBdtO@GUhF-Iy>r+}_kB%?#TJZMeD+5%)OC7uI!5h~W^lkwv< z{otxiyCaAbM7YO%&5of}=pDN0VuqhRb+bst4)NPQ=Cajq`Tmf8+wr~k-g~)_wAcPm zc)dqSQyv0vQ8EfhQ{J?fX&~Rc2c`bA6o+pR1H$7Q_ytrgMkh}$rIqNf?$tOPL93Y4 zUHg=jlUt{tPvp-|Q_GEtZo}<*`S&W?dAks7rx2`hqN0m*Ij|iAwqqT=&hB0jCFl0Z zD@LHSUxhv35niwxOW&?5d=|d{pPXE~4cg;vZkF!kB4OyV>hUMB>=y!_wmolf@t*G6mU z|9K;yiXscfye1AF|67IswkSMp|E-;i}wkYHyV4~JC~ zGs;8M*S*GfUT2}A9W2^jsAwCDw#tiI0hXTZ??115@ifH{hkfjPn*0TNMdWTHyuuIE z!~v$baX}BNFVq;2_EGwA|DDZT{GZk~JX)^*H}Lr~?Z2XC&_lXlhbQn&{=F-2$M7sA-2ncohl8*;J*Gn( z_^TeOBYeECE?;+58=y@j>E$r2^EW9rfpshb#6%wnC#U^*2*@XX(^QyOh}#jo;x6bg zX?ocubh#C}Y@1-=aCBDn|N7|ZgGVpuJe(_a_n-bR-;7odp3tRy^&aLmp`xzp1LL95t#Fc}pU!)uLXTh3MpCzE(mQe#qN@asNlMx!XLqRpv>&hKJh z#B1fKeEjtU`H-Rl52I12B1B;ZThK@`a_~8-KfyGOkrDBp_9gP}5DAAoyhha|i8^*$ zE5|G5?&vT)3x{=eceRdcO-)@#r+0Kwo0!wbi_qp75t8%#GFX-2m+I1WZ0wM^z%F6z zM@Nd=k&h4xs=BK$N5j?Hu9W0Pq%lym{JMLcDP8R`?`PdkF~?Ezw+^l z#}0f&2Sn6O!~vFia_;GY7b6^|xC6JFTO; zTkWG(xZOTl5AOChI~&2#R;%4q*7|m^<<~1K2L})DJ$k(J>Do9vyhcwt(n=U? z^;_+YL4Uh5*gCq??+@DH;BF`AhwZ@zG(5O72=Cn8+`djvuH448da|`4%>>)M{@vbI zcoYVmes8ed-W~+d;+^&0QNOa62$WkNY_|cKcD`y$oS(8?arMhe!o^5^Zb9|SJwWswY{|e+{ov^$Nkuw zN^cSdZ~ep1jn49O!=FXxe|zgw&i__!{%WIJiU~D(loQ z7ok_6zB`^z z$jsO00Bf0#1vd_Zvzw-(8|ILE^|I+?d|vko|vf#P@MS+Wv?B;d00Sr}!+a|9`*%;QaZYxBoBge>d}ar}h8vVm#rDr2dZA z_P+5tOD*8b|17Nkf6D!T!TjHDE$9DDd=7lf^}M13F|I_T6+YizS#JIR1fPZ1|BX*M z{|o&8m-GKdKJWaebR|9U`oRd@dwQXF5?+7`(7I@EEH!{H{j=!&zxyfo|GD`8t*!Pl z{^N~&-ue3%=_H^)7J)kKUrzf!&1Yf#{{sZT-1*=x&GhC=b(ZCIeoeV@Ct_9dmf}|I2lpoRSZ*suiyD{6M)kGw!PC3 zw+#NyfzL^As3^sP(K=_;W0Ml zwL9w@n_Js=?zZaY^&||2@UC(9&h}Pwb7Q^Jw%?-jBJj1U7&h7+>+L=QZEC3d->h#~ zZ{ek<-?cmYTU*x4-@-|Zu&qZJy&vFNPm(daPx_v3JtdcFeEP<>A8Y3ediBPB)sIK% zBpxR8ruXLP&FIbKO=_3W71zA~^xmx5uY%$D1l2k}==BHT(eX+2&$q+VQ9S;2lBCnK z^UL4t()S)e|M?!4zW3w(2m23y`uWj+{rBT1PoF*ipBFD*z5d_7{{8>5OAn&sD8jxScE}U&APKXAWUTJ4- z?fm?_iF2_TPmb4IE}%ejG|Fq<+SlHN#f^A>#DwQIdu zdjnGmIOE>K{WsGe@BIk>-uv3%ppt z+2OqnFVSAY*Q74xLX=M}3m3GSn_m6yo#qzM_wL>1#s<>4-9ji;+LIVkw}uj1GngyGmfEckqGjF+E}`B`}We@gpbf&G6O z|LbNx@BAlGLf8G+0eI>D`{(*BI{!al`CnlE7wG@X`F|sy19kq#UcbxL{ZIB;bpC&U z`_Fae|K|2G|M!i24t!_hznuSnvd_Zj|DSaJ=g$8&x0m@JZ{%~}zaG)rKj0W&%b;F= zuFt~pe?H~?pVspJ@8|j)w8C#1?d7unXZdIJ0zK8w!(4@m!Yz4%{C``?Xx4#?x*|F+TaPQ?+3m-pqy|4;E*SpWZ& z@xOEV-3%JKh#A*PG3E$94~{#p3^|5MukS_Sbxm-qi}}+}_T$l6IKfO&&EYhd-^QHzzp>fQ-v8Nbcb4b>H}V;S)(>Ob z90%!%x99oI=Gyl-s=M&bez#kx4C6j*6M}IBrioj;5nNa-2Zf8OF!eniq}+ zxi`mQD%@Ee1*c)HvJxG6_|4mcPQe==a~qB-D=U*QolZvB%5G&P944W8Ms2Pjc>K?_ zfm5MNUQt#0x9)L;1e#%N=`qv|k_699b4YbZ)VDgu%!0g5GFbqZoK;;cUm2Y{lMD+A>99C5&x&=aDd>VK?3Ov*> z^RR6yrHC31__t@8miKvV>4o45y;9w}Wy8hBZ@HlB63o{dhNEL(`#gPCj^c?I?X~MJ zs6h;`R4ewIgXqxEN;LxybxTnio))!(jHbA-bWrSW+C$=YCQ5YsUKKrgfSqg93UPC8 zY+ypp9T`MBu||e|^JH$0!gB{!(E!2o{P5VY9jZxdKGZ6p)jTShww$>TrUG#`eTYWZ zM2D9kqEIT?Pbq-3_s&yOV2?vei>ValCqR{T&dxQ}@>2&!@L(#%@DbSIx+SEcWUJ{U6bKcm38h47W{umTMNqyts>n zqi;sp<^&srVhQt%Y5KVpxodvr=>J5?X&Mbd+XzO#1&b;Cna^zfzfHz|SO4#{HkbPU zjeHsn?>V!8_vlFle%+79mlI?IuX?}cby}@EjSh^F_asO`Lpb;T8Vv`t%KbI?HAuXl zr%4h-BPfVvU*Wx9;551%3}2r-dbReqcH0|9{cx0ogQoW!CS?-BZ>17|+y z@2u`HbE9IDHu-ziKMkP^$GpVhD?jjQraM(S@WN?=9~&LJ8zog$G#Cw}S`)V>pqJQH zmC6E*aUtJ<(gl@8L29PKF)B*Wt?CN2cLL-e#h}3*1AUWp29#j{lRFp;=0H-#Ko^_5 zh5cO~;IX~86X>-$P;~`_=kB)#7Ci?aVZ`!7HgHC)Su}!+4&h+I5p;;tgvo@Pz6T}r z!Pil5ia9SV5U}SCh7O2kfaj%jc% zPKP6W?w?-LS5%E?ya3ULnr3dN6}b^a!CN8*!KxdmW#x!y+?357Z41++T~NENkSKX; zBY~TXY>`_Ds0^*5$1QbY{^6RI)S{(@4^;eE{~VWXCNzqxFx|&+q~^vOilp zfmyvRX0r7^O1E7JA_BZBf3*xbg_)_|<(fHFpq2Q~fsKBxM!#xcXugCeIXIDm6aAV8 zK`X?lFDe9l(cs2P1HiXApkrsHha!29d78$wlaHs+GCVk%#HY0ThQIPC8pwVTg)17dav}yBd=k738J}#k6EepkqKRe7 zkxovelPsi*-bVv`8x4xyk(X-gQkP8Qe7Rc_B}?m=s7X3=5>JN%4~;(2 zs6U(zLXUbr2}gM09aYO1blGU6l?2Ofc7@RZ&bjJv)X6A^zhEW)(g#PugC5s0d0#Re zI;O!t{1_(7G5kbh=*rA+GKnW$rkC~o_boqdq<`mwtVgf?N0WnpAR@ani4dPPk=piD z_-OW@IrcvwWITbtAJhg~`L?$=XWakG`2V%HH#Ro@!`u8weVqCEliU9m9RKiioL*kH zjrs8(^7$Xy%lqFq@*&eK*;vnm#KUyUBV1vF;Si6olC&ZQ<}DRh#2rg4+?=3un-jD~UziZ0&GllzZ>A`RarP;x1F8H;pK!?If>^lU2%~>$~ z2{(*CL07dSDKpNlJE$l+}b zI=%{Ht|WouMLLXn-BEbn#c{>6Ou@nNjivC}=pf6T$k~gX-C@#JJiOr%4t6}dCjs`v`}dynum=y7d7chK1=uq0 zD5w-%>kX|^d)$t8JL#WHM{nzB=0ana5q%b7R3DoVDL_>+Q%g%WT&5n<>__2-(4;G< zT;ZJ3V4+E}PO;3=W)^gjTt@M;JtKWD0SK-7bk z73G+oTCO})5K)jQ=NTkD%Jn08vFgjoJ@bb2dKitu?nxZOfY4XeL-FncNO=0)k3qfx zPjydY=#AAB=?-CUdW`qAYSdieC0j7 z_vrEdgTHvM0pT6*z#=$M;m~_1B;;3$I)`kx6gaRPJeEjuB&z}So#SNMtNJ^)lds>P zAb>@~CmFq>=~g|GX~naV4NqNU?Xu;flVK#n|K;oZ_xJZ7>^~rW%Fb4UB}=|0?;E7< z{b&EX|6>1vcYCmQdq5+K#{)SGS^n4v)-3;YQ(P>~W(3_H<4&c=oG1GHu>x|8BdMK~AU*3Zz6GY+Cj!sYln z6~aDviBR;KrTG}hbj!IO3mF%jruHPt1J$m}^ z8I$Sd+h{z-+X5Czkfq_LQXqO^KbQjXA~JN5hN&5YS4r-nTG6zsvM7G-9DeplmSAP6 zHGj!rQPj%D3@YFOa5)id=+{+~jz$b+j*7H0Pe}sCF;XN8j-M6Jk#b#Wp0;FBB&#jC z%F^}JrM!MotS_z1)|h7LOlGc|;rsxlX{OF(7;s^|Npr4}6B%#1>4>x_82HoV*qB0& zcx{z#zkK~8A^-FljN!A_PahEFt5AcC7O*=+7xDfiqN{~9B)-^-ob|Sl@s4E4QY?j5 zl9_s|Lgx9smoN7hz(i}qRf}_L`F2_h>iw#HX68lOmyOc|?^d>omDw4S8wb+fK_%T2 zTph70eMPe!Y9H^7+8U?9kiY@031B$jpL|oRwJWOyKEtIViktMB8{^f&0z#%&^XnV0 ztrs$}$eFb~JPSuDGjz>sG`z>y1PTyKdgxvp;I~6F%f#c9NG+&)y(wE?aI`POl;Nn3Sslzl7SL8-8VzCNr{OuH ze1ftVm>7TH;s;%TUwP`k1bvigEkdrKBNj=reCPgV9x~W#Ayuz1y~Xm3yCO%x5mWsX z^4Oa-jkIYTeOU|sar>`d<4PclhdnQNP|SR=3h2ovCUlq=@i-h+edX7o3(#&}sq26J z#@eKDQG5`5Bdsg$sC(SD;SxNlo{|`K5`!KgZ{kfX| z-}ZmB+MAo0|9k2G_vt^g#~*~;Bmku?`5+&lIsSj!o1IN}{5!4n_A>tajeNdL|DQ(V z;J|yNnAbZzG)_UXztFA%DQr6NToCmSR8E`xQ$?dn!XY3H%X)ahrd9J(6`76@Azfd7 z0&e^b)nJ%C{gbf&cE^j3M~HE|y)Lz#x~is87@N(eaWC>l8ilHV3v>&7OaFTBSrc&qdpH8xd2jACwx1(LUG z#9VrFP^KwOg>&>&m+tqZWOOwX_`$)n~2dOI;peUGX3~ ztl2iqx~E%HgTqXT*bOf|RM)(>;UzlWdI9r*u!Y8|i|@Oriq)~GaT=*252~lxV{jN| ztY2Oe+`|W;IKsn1dSbB^Re~&jfN@t)HdbV*PXsH%4bdXz z+euG6Q)TL+Ci7xMMnBEid8BA~Z8oJLJc1Wor&h$N%2@~=j1Cp9T)`mx6X@9^d)n3I zn@!*8DEf68Qb4f8!Jl6g%u0zkLo+hh9qdeY4i@#!?p&^Sb0?xUlR_0JXjwS)6ML`h z&JHpY@x*P8icEN#f*`bCa8(*^j>QunF|lmI>PQPD*=;KJV_2pOhPJ8^bk404TbUu zs;`8Z0DeG$zk+ArlrcD-e_W$W2~^8=3D@qfN70=|WdlLDD(v#uSR}>}B@3gI2GOvX z!g`q@E)qK=l6=-GS1`e@y3VQPqe|`G9@V~SA2I-}t&rirHrwH>^uCi91a_p#i8`Pz zsmDnf^B~jkYy4MO0s!N$?}Uv!i-!bdn*thr#=p`21}fLM8y16=i30-IXlN13+KHM6 zd2I!a@i6><$=>o$o1iPgz*qT?JHYxJklvLXw#m{8f_!a?o(7{n#W2B)A1^MmyT3JH{=n=r*kD+EU`lKqD`p~A7lN~ zYI#~Hsx1}n)dcw&d!!WfBc~&zrv3__+4i60*Wm}>{+eh1>1=me8yWlGc59jc=Vm_I%wfEh z>Yg1GEaNifzEmaY9u>OR?_Gn1>1(2_%4j)FXEN zuJZ{!$X)qMXM){y67<6!n_*@ZZ0dr#B@Bh%4~*@Ie`?!N7n7Fcg=6@Z%%9JpA-`wP_9A-9YahLPyU)xusznOd?dAJeGlcRRzjG z<>?4Oz75HW_jnp0WC_gCL(Tqz9l>O~r)oAUP_FrafuipWqeW7>JDm(|i|+o@|Meuedqo{l4yUIhxvleFQx^M>eF)p*$)$M+JR&1cgNz09CRSfFeQ}0HVh%0E%FR03MCf5ZKM!Ui9@7 zzo`66KE*V})dMb_EqV_A@oRtCjDpSGP8NYkao64vTP{;>_ z^+~HZD*dVSS905d ztRF73L$~WxuT$6ha;lsIj83|WNs3AKh!DNfASkxYT|84Q?EtRoOxp?b_|98JtoHoX zCR*c;nz~cs`?l(@dNNF1qN+7cZUq^u&>Q;$f(@m0elS_ z_1>>iPZa)5u?luc9gk&oR&O7d}@#H$p?kwsZ(riDAmxS>3Ie%n0}fMu`J_ z!dsxWl!s{~o+Jlv-n{V-$%FCD?KX`D0P&o8z$1j>T=#Y+67xEnodU274Z?mrfHBgt zi@oxyiE?+P)?J7373Y@2kW7?;H={AUOZ3J!Vx z06L=qlmSI!fHM$}zV;B&9ZGjl_5V>lxP5;6o5OEvJ8NszgMX|YeqCGpzS{h{W~c8^ z@IY|WO=Iu%i^m?Hg!#rVA44s%#}T@5oW~Q`+MmSe9E*NEx>ztxPZ%Y9iQh=`Q+X`cJDL!>8j??a#eJnz zBrit;Pk+VHH+-QUYq)a;ChNbLSSJ=;m~Yh`SAEjv zQ7GN#=5a#-8t=jF@(pfXR&>MZwJ8>@(p{gvf>%@VxU|A*XNk9+u zj5TG15#>FMP-VrMgYjF3c7mOmc31`;WUab{zLbL3J1~FZetdcg`w()bV~gt`#*8fd z9H&@}NAB3+%gTxwyFF@Ao{T3Uph|AXmOpQ-ul!)49Z*HO;RvQ8El0V|7;~l6b8pOK zfWh*wn2I3*l&srmF*uvw++|a^)dEe+_%j&JNi+yKvYn^{Toy{W%9DUVda&9K+dGTv z9TuSrG*2#H{?B7=nTFEX!C!~6V!a{v!e4R{0ZL@mHfcG$2>VmeW}pQ74U}AkBO+!< zn7tvP7e=e9;}~xZyTb+)=a{>K&A8Oi?2)9jbyJlN;N_u(2)=a;_B@6w_`>c5vEzRGrrLX=Nf@*yo?0SJzcV5HcwUxgbW zWmGrAiZvmp3XAI~o(IL}>U?Q_byZkbfA1A+uSvY}u%4fU6I6JzJQvYvlqZ@8b_CwO zujJW$^!=NZoRK}zXl(H<0vo=Xc9cfJ8}W$Od3O-)L&gycO&FTkA;cSvd?6u)^gh_cYb#Dd{7iyc)lpDu#oj_ zwK2=41`_j`64t2d!;s@9O$~oi#hsayI}m3YBr2U(#^=JvR9rbJyMvxP4+DtNUi3{{ z-LO%>qeEe`B2lcUH60HESE$V=SGjPyviw<;^0S1=%wZ`r7D&VN=Y8GC2jMQJQd4`j z$#0ixyQ-MB)@F(k?R2R@h#@fM0^^_M#fpT*`6L*t>ug0nJ4jeZimX^NMs8DBFSSEM zuAXvu&$1JNgN;7Yw-z~6QJhzyxcXMBF<*Ne#@g2JV~RhysXYg3Qy z%6d?&%KU7RruA4^wfWhs+Hz%YK_1KZvzW{BU781Q9;fNi&am7GY+HsQEV>vv+8iCC zabJ2)om65HC`jE#a(L&PIP1e0#4Yoh}scmedDBzWn@dM=lqhqwW|t;^B~HcdZn&rr8-5%}je@+L|rWfcUFc_igvf^AZ#?Uht8U; z^a|}O@_lE_CoxJnb*c71S!871Bi0z)m-Mkg6FvA*)04Mk!~u*amrc3wW^d)iYcSKo z3oMRSlk5OxIh6Gn2D<=d=8Zq0$>R>xL&SX@7S1QO6Mn0yTG*h$0n@4wi;_iEpJ^z_00-@G@z z-)vGb6=vX#?>&2JKj#x_dQtUlLq2aN`MgE#zo?w53aU8&7M6_A+fAzR#ImXZMeJ3? zepTD`Kg8luJ*d|XYjl|4S39lR?Y1$0AXd~%ajz}`@((5&+5VV(ub)2ppV#{iAY1zr zIF`EU^T_z5SLVzw$k~>qC3_-NcyyGC)>$;VukQW$c%Mg+$Ipze8N|$qr??_GK~kVZ zSNtOApptwe$CFZW+Oy7$;OGdaiI>Y$ei z$`86OZJML$kR2-Ai^Vo93M29K_2b8Sos+ubNpu=aF7f7t?o+<@^B0ev+_2_wvqwIkZI^%pU{M;b&jOf*XFU9k$PmuF ziqP;rOls_Y1+c5WcmL;mFYeucwg19aqg+t51 zcZrhW_W86>_B)FVFZUns-+u**ik=i*z^9A&fE0ZA;@J~;XI-i6(#c}*#&2e-yoBO^ z{dxbzei^LCkNz9x7xv`#s`u>01DJk4{@r_W?{AOypL!4WU*3ljPaeJU+GZ#W1rT%6 zP2+PM6zGe*+szSsB~RkaldL!}bKjo#(f|k~lnB0=?3uwgh`74tYYY@?*pI{v4#FU> zkwbAMQp%3SiU-y!R5dcab^D`y6&5~Oo6U6wS>8T&4Pi?0W)r+KhZQ&e{OqqFlwZDl z1nTPl-h(9@G@h5jItUpcg_AD!us@7o6&=Ly~y(*@O1?#g|9iqg%Ebb7k0Qszcur*SU8dd%wC= zsT(JS93XgRzQ3=V5vaL034o5;Q4!Cs)c0L_uEt4y<)_L6QGMm7N+_zY@Kk&~;h}tk zXD^j+^-J-mUb(Ltzpq+;B@Mh1=#K=AM}mVxN)(m$?_KmRKr(51?N;9Zp{`4Oai7`u zKjdvc{h(_gbMpUeY_!|i_#c=CXnFtR20mYA{11J%02AGK*42c9{5QLLA>?&4@$#ug zzzR-IvxeX9Nzrcl#df{QlnWpo|+)GjUXjDTyBlgs{UAoQq`jK}M z4#(jn$tn=ZNqpYb*~^n-bxg;h3E_d#$mLwWNC_brQ-Uz%TpSp9Qv-p`g-Wmj-N1xF zEwsu~6kf?&L0UW1$;21s=!XExI?l*8ejKLc<81C!Bx!otWqUmZgX4{ckB>3dveyXv zC$ZQ0Zfy{rt)Y?3cQ-P8*@?^~8j_f=VA|TxbevLEO)*+EikqN53@}81M4f{|S!9x6 z6#CY=bU76NYerJM0=3zY3*(<1+$FZ1_KXR{sikfab1!F*b;#a;7G;L48I>Sc)XI=` zrx~rFrd(ZU?25OYN5iH6q?M*VQ8Py9?&dbOL@_`C>dxhg^k8rFy)^XD*7wph&$-of6%b19X0gNRd_ z)99dc$E6n>gYxseckuVM(c$5q6)wjhml}7g@s2Kbi@ts5wQ9PSz6PK|0K5z*Xhs5^E1kr{Ec(GIBqO^yqWj&}FRikPd2WmMVdNbk31mQ{oWmSpz(nUkrCH!3-ZJXj1qY+|uO)R2o zTE4>gyqf?UvnPls7KCeZfd5)9hECby=0d2#2n``6xJi3~neOE_*`SlVApMaS4m; zRXS36GkLpF!4Rdf&~RF+SCF!+^f37W^9 z8+C3RC(#AD8D*M42g?)|{G=*nX7COd$cRDgfjat8A=;&5P;2syJyJ7EP<-`GJ9Dz5*(VYS4?!0x|#PDVYE6(LG1V< zD7(!HPIWJdK(Y1CL)36rq2+PN7BGP(m8(&Ttl9%EywpCOB*pC0Hl~C=ZgTt`rOyRx zVO^|B&9@P3+K4VKx*F3eQAE>VlDfp?9jHa=IR}s&1x@X>Ct;bY6%3KsmkojITa^&D zYxODEOg5EW+c6uM0uF#?(_d>g@&CPOEWm)#l_ zV8|D8?>5H@^5Es8pI+_1cw%i1$_W9oJPrn5GAVw3{k)hG=0MNh%;L&q{oIwe=fPye z$8be&r*_S$yb)`Iu{-cHccaJ8#1tdn6ja{T?pa%0>W8)cC(E$)Th-(prmD)n;GHOA z@LayZGfT%3ZC`%vR@f+@@1!Gi(bVWh#!w*eXz5|2!%Z1tn~e~+R6-A=eCr-(A^nWU z)H6yDxF{`ndg7@DP7k- zglbx6a|LnYocMB?sB*LO1k4EqM^2d}-lB;<&yt)1oJ*kiq)ndY1J#v8q+1}YoIR!e znmPSE(=w4NtD{eP?5i)cBDtX(ihGefvV3OrSXBKtc(XAo4p`L-lBoYua16a_Y{l-4 zYht~?4FoCK_G6W1Ua14XL$IceLUxj(*n-3{PlKm*)VI@1g3lQ-#yDiV3)uPVAX239!Ct z=Ss5+wLxH4cU@lPyV+<9+Pczv_u`kKqk2&?*jdq`M?2VHx2Iq3$YeZ*$5<3)V`eroVN*W-AqgqVmc214 z*{EuEh>h6R@${rs42U0>c`yt@0|VxdB@OUb&On$yp@g@{cS?RX(V<3Lz>hL%!VxHt z>j$(0`j{@%Hj>Q>aFn^pJ1NNBT6XnyF;IS)4R{RI%;iOTPtf0n?7ZT8GM!Aiqogho|D>4sj2I&Dl8G`-od#OBoD>WdZx*AB z$uoN`maGc!l!Uqk0C8#pc}A2WH(ygv%ZgJJwB{5Cw5cuWinet6~CmWjnId6KaL_vUqFBg{Sf(A=Npij(coAy?7t_%iC2CAmNB^3`ut zY}$1RrL=l$m22?oO1(TVxe@V=ig$>+oHU>9#yQt4-suH{!2-CcOBftpGK-&syd(~@ zLsn4G1kc6XEJZ+X>KT-Bx&x1?L;N0eE-Ax9r1Sa6PwA|k(5Nac5=Pu=smK08BXngd zbUqgq4xGMY$}Z|X)+(Y($uTby5fJT$Xc*Md%2Fq}lDNUz`|-C$-J}F}P!WMC9Uygd zF6~gO4uvyOmCl$xIt`!EB+wQ$LQ9mvRIA27L$b|TF%mNEIw>q!_uwcDJ!7Lwm5pvv z?agni=d{%=YpcX6Gzm}Rv#@|2yKIJ-!FPmHTL*}62Z6^+fWV051w~aeJDH#C9ulIt zStAUhlP!KSP9bjC%h*<}P#Kv~Do8hcW}6_DikUBltYK-@|9|%Wb-isPSr|sYztUA; z!J{QICMi)TCsLFw#g-Gj%csw>CzC}hd>|5%5Rn8!kUAu<^X#kH7q+it*Rc-(c#s`? zW@W_8SU{t@y1Kf$ySlo%>VtVQGdx*BoV|tFEi>#k6O3{a8EHqO&IK)~7$vwyBm>G_ z!(!iwMujtgjPm~zxQ%P^<5VwYITkE$wdY;diO77wnmUEavGvF>0S{k#@VC76ZMz7X z3O(nH1|svZgR;xbpPFJHL7cqF9L82GcDY_I|6Ssc8#~PCrW+6GBK}k_k05)K^z^%3 zF&zjL85=*^BnKIGQ*8#7*7bm3+9i?~P?}-sON%m|P{hhiUUZ`=ewxhWgE5`cV8StP zskH2*%faxBT{F`*UB^SLG$7`(y#ity;A%&7vg4@cfj{l|6~SA68?OONUHn|hfI7-R zFtI|V(cV|*=8MpE-}a}H<~1>kqnB~LM+dY;=#ccQNVUc*U zC=`&|79aRK&Gh>+iP@w!gRw8fHDl5XB^&_vebGOK_Z=@+;ZVE&3+YGx>c83gAD9#- zAEo-C-yHqV=EkE!{LiiC_Pze+bNm+6|7l83m^iZbZ;N2Zg0&Jr25x+Y^bTI#F*ueE2M9Yc)B4 z;}wXPn5T4&E3Ttk?GCjQBPnxe`vVkO5R_88xF zx~?X|13MZ5LE$3p8F({K+?>U-t?1D*n8~3#pSLgN(& zA|Y{I-*5$1Vt_Ax2RO$|LeUETUBO~ijDLZfk?s{@|2cHNymRUXc5-nv3vmw6t*Wl|Mx2VfCB^nu9=jiKE z%Qq%+3_%?1ETb9BaI1|pBSjWJ)hMRO6p|KOq!e>H+eJK%FaHG0l`4#(17C3|si1_l zw>Fz=V+WosMWN`js`42;Bma$eB|4A8X*mRq&al>cs zC8uOXpPB4=37s#orx_W2HF#vUw8)8)jfG+9Or};*-1G&^dkOPT_|2C8qR}Y2{nYZ` zqwPoAj{LX7^54Dxug~)PE1&=Ao*m|$c9!yA-U-)?VdHWDKmQ<5qt#0hdN##8+kWd< z%lL!j&9`~gb3#DwqCEn^Cq=szd~5KVm*K3JlKm2WrM|qQM=w zanmWKEulX1$oV3e*A{Ybcn zHuz**;bI&-w3s@@zj^tl)K{&@oVhIC>9M^6>5+?2tr5$}br;k00L^%pNxK+z>*=6( z8wej2TFS}0JdPY~8HJ#B1{^x{qG;84@U2?^Hy1H*x$<-;!q`9oB7@gOuG8Q;y3KYm zW5CrlIBP`@2HMhwmiT#Xk!JhkgxsD#rd!4cf(N5e`wL9Kr>h|K*AzDVG?iigi~a)jCWl#{H{ukt*P z-^iwW$FY4gMax`ab_u|1hY3v~fK$yV(9B(gIJX&cha zfpCt?uNWT5m#X)cwiu?SRuX7Z7!zA-P5f83J?0Qa;)@Xaw0q@jU+?>P zGLJuaG0+V)9dN~i7QWkgC_fG9cGt;j{eG8hN|(i7_|z5+dy~$ki`iv-E2Bl{N~EkE zCDeP!X^A;wxx+{q#aA&}J{Bq1BLd1OkpA5F`%?slq}wHN!%7YnD7?18<{<t^#XE?NseTaPg^*$i^(-kJ6##H$< z1y&!V6g`YiM5KTxNlNm(;+z6a!PFVN4z5(^hGJ}{PM^SHOhh%q>qCcc?~DfO!YUYt z${vPM#W&8(;Xv^UH&`d60{Gt4N<{q2;$hh>BwmVPWfO@{@Xw? z(4ccccUUurmP_=f#d%cn;3XmLb=ziX(l9W>8SIAfsLrTWXs$p8 z5-bHD<(X2vToZ`0+9m3&$+hR$+PI72zr+#gZ2ga1wfjg7(7gL!&CRX6{^wD1<6i&s zIerW3f11J5UOGx(oAf_%GXCwKq}PGsW!BVdF!`MUtEz$kS+++1^6G$tkusnpGVPnH zG?KJU-nNV9r%Y_0tr1T;$_d+te#!?j*`4`ic3lR z+>k)FFnfaASl{}R+kqE*!$!kY3OW2cK_5;F7Ec%JAN9Xo%)obw2WE@>FGb;tUA*g* zF+Ckp`e^5fT1qST{KfGRB2P89tu~q7?k#}+SN!Iz|5x!~oPF#8(46=$`2YO+zrB5b z{_|OWf6eosSzedsI&v~rlkU-v{hXyvS$x@B{1~XrK%ds>qv0;2)P~1azQqW0I7&dk9pARuWs!n3g&dfV`IsOb)Vt`toBT^r z^gBy2C^SmqtYEed%*Ao?ILfN#uW>zANN78>w|LW&d(q2g!@B}#<8D%_)34DOeLSDm zu}LuwCUsU|HvSGYR@50S1Qo7n3Fq>QXqDx=ahX8pQ7Xz9u&wAM_{MoXJu#6gmwdKm zwH3#hGsZje9*ch!M+0IB>z+&c)Tg7Sd$$g`|xf+CC_fj?WpGP^CA=rZoEFo2r&a({Qqmu%KWye_gAr zspYrgiVZuD$A+^iW_$_nyT+aQ{167*LJ1x7a%~sxPl>m*QSAvOBP)z_k#!5d-j_RJ~{&t@yKF9c(2C#Q~j}+ ze7>tT3~=M)>smupR#0x@%fogD3NXpWMc{4Qaa@74y7+74<(`0dfEPr~c;nf81XG>f;?i&e8wvG`I8q zA9o%-y1)PTS$=c%e+#JoAj_+0(hCkIqoi~3PrUQ@=H-)@yTMU#7RP8Ra0Z*9AnMa~ zFT5^?81>Tgq=UgKCcQ42d?tf&d_IcCcxMf5DxXaNr%nx_Whv{l&{pd<9Y9`+uQQ74 z$p9xvcn${fG` zd;RFi2^zf5E3@_0ms}4t;DAcZFSGsSS6t7tCkL+Xr-PmeuhGh9CeY4Tnbn<7DQyipGZ|s)Y_^Q!-B&E1_ zwi+9aW@E=GdD9;bLAoKAtIft{V+X!(!+(z&UpBU-tmRavV0VyZqbs_3Q7EXD3cD`z zjME?Tty&GQ8B~U8mL(YY3WxA$Kr=zqtI7@D47HRnsL69If{1U%(7=vV`$Ezx`L0C}5q8jVjIIMX;oT4uuo<4PyM z*mG6Vk)HzYV=^s7cmG%)X_cW#5m(%c&&KsW#uMyCr*R>8YKN(U)Wl|1I9{qYoh0>) zPY-xvJf4^v&jaKnjRNs)5WJ4B5}4sfaWB4#;CnWVJ6XfH(1qM>iEHSM84eIB9&bz@ zPlZSR(Q&fI3mre;_mwQ*IB7UN9t3aFgX70XM;PO5#6c+}&f&6e_p9gZE;8m>!z}yZ zRy!9dh}2y#Bm3+Bx%G470}VqmwWnF0?rR6p*_d}-D0>^?FFVd_JrcWyp)!K} z46vQk&7eyo^v)}2J9;Ca7Ws!q%pT)0Rrkg53xo<}BX76R9us4h9raf8R?o5_Tc#iw z2gq24odU~FbZmiR3K(+PxCGW9(?73#0pzLXG+LuL)4e3;E+eOGJpC@%w`B{h{+MRx z+MVBzF8e&B*FVgJG6-;jf-dYwAaGF2XaXVYVVy)0yoplB+3o;lJ1n1I5Q1cktNP4| zB?!JtaXNyk-oAPIrA*|RS~I-@K67Tsnlv@z0MgmmMZr|qO;HR<2A$rdOJb8wEg71p zV9>x{K&XXmXtXNhJPt6n3ZWwY(QJGXo<@=^HOI9wTMQ{QA#y$5AP@e}(Ua`kX>*V+ z1=A*>;zVL1q4Hq=xZ%aD{$tG3=QU1Yz}-YmL(5a_1@7o9VEJ{BUe{1X!^OvdNgQ-W z(QmiZ;yUyWHo8$99j*UbI|-)^+at70L&_@0AQP(xiNpq-aS&3LcGOD_#hd|06w|C` zPEqZScXZ;-yk$7mbRJf~|KXrv6+nfF%hYJq#3cjRZTz$m>}hLt1TU4U^5>3Z4!rvi zV=G)?XnXDUl93DxCP)`Sg++|&T?Vu}a799?<*P7|U|{xeiY1Ydb{GM#byrEG>t4e) z0*4@q0$to}bU=2j<6-L{OE3g(@3ux`H<~F)P*dg!69XWDQi)cA#MEM&OE+cH1Pr1(uk%LnjDPPS;>?qA?keQm zQOfzi<}WZweqQn~I63F$6kzJ)?6xh_<86LU!AX{<2z-KpHs)DVvB%V1lUjl8^VyeS z?)Z$Yt0*Tt;>-yfGzsns39aI8_r%UWwB?Q{M#Pl7dm?7gQ;aae~M3Id{3dSwyVrnF!F;tAbpS zYZPlG?$9J4{!3h8Ik+H{eL)$d59v1fC=lAmxO7V!bL7Bfea?!T$8l=wa?J{58x`KI zqslc4If(OcV1b->D-?zi7!+jA)5+KyJs_@hdT}&rxM)uX2`al@$E^N6GHiQ?hFDTe z$>~|w)48ZKpP}s_3xX&Cl1hyiP!bBMf2~-^q8YP6LebpGUli=cMlpek%zjqpl!M-w zUMptv1``AiT5=b_5Jzz*2HCGhFfh947;hu8QfIkrDrz>qgp$GI7cdhbWf9NEjQk6O zJWI5S3BlpZc^45Xu9+c8bi@~@xQ(4gC3UWqS9_7RGhnr(Bd2H)M?mRfE=e~klJ1}t z0-uL;0G`ukI&H>MS36zhjl}s}6G>ow1!Qg|-Aa8AjH1-0Q)=7q@!8 zaUGNN1B*d7Iitm9{O$CWdPu6~aHX#QeRuf%(TkwcI;j6ofKs9P@NV?&y8%eU%VDLp zUjGWdNA=$xuI;}Yy&If-QKio|_u-2t!AjGdi>-sr|8Dv+HGh3#-}wOET`fL~c{tX6k%YrV7OhQy6~Df!I_ z>-b}OtYq{8EzI5x=#d(zsbNW2#L)&cpu#S=0S&xCeM`5Yr3vtNcS1HRk(jtgfuT8?4rX$^-mTZ&uf!#f(+K zP#`C<0SdVks9t)G`v{*9Uv4lCB7V9zH29bO%|8EUp8B-+f7Um*Hr9*xf13B_|DWTh z$5Y-3qhomnFXtGj7WJXGVsV5U5e}Fgjm{?+VlH#Nu1)tsHYFevD;11pq7Yk2VkymV zW#$~)(Im)!{5S=GYgVIwt?MC)Sx_qpzd(zukV8dy7Up;9Q?n6JSjJtLQdd?fX`>N5 z?M3GqB(-3ndl)=eKjAN%jo`UHNJJfZa0FL!!dtq zb-GD9x%o$Q5FehMfB$Q?vcjPGcn@TZbjZh%9hmcL!C@_c72vEEoY#WyYe53L!dft? z1^-~V@`h!Hn_*1iEnj&-u~j=1#R!lWAmvvoklD<_DN?a}X4*|-QEhiR@o=o?3nWFM z^}}EsB?C-}p}HnXt4pL+IYCk zT?P{xh3$Cb$9mV#7o~4h1zq?_?njDLM#>*l4v#K*F!#{hLrzGIppVsh-MA z4&sThI2w_uvE}uq2}`6O0l=@cJ$Di^>q8G~w#GEv;W-3Mymd$_hFrizB9t2`ULmu= zjpa_}!MOYF+$xr+0|0DmB|EW=&)H{Vrakoy<#P{i{is{ic}o&}?M)sWj>YZKDIHqu z&*fYF-`3d@a+Wgu+1Z)53R+gz z!AMy_uFrdASvd!{t2{@IHt7;-1EZ^#W$Sv`TKITUnsLR;xDwc`If*t$Hvon0MLNTu ze@iKKw)~fTtm_y0&5{3_TiZK1`EO@uXX{@6`y9Uo?|(m9@c#Fs!u{{58UH)!2M4_? zkSs_49A3;d4wUV@kz`MIwkD$< ziKeaaA%{D!!}Qh)*Z8GPFZ=uw2F4YynZX%?dZt6SbY?ZEa8oNDjup3!lpkG&v>vYQ zqj1B}s>P`kR(+D$gA#u(J_;)eE`~EMuI?SH`>8$V*`+sk4ZEQWt@BcSeV26DlV$w)VL!%;#fm6g>Y2xiymsJp5sm1KFliVpkCC)n+c zJB{j8cU~JC%yl{;;?$2JW!ieW^E(D)XJCPG`bsIecjwLdWF}19(Db8T8(k$?jlj;f znTp5psNYF@u$UC5e&<`L0MFyG)qL3R4U=xvAmiH}E*RF8V!N!!E&2^v;>>bCje-wF zquVx~adJ)VN_a}kE1PTJI!K2l`g3!@ynfmfVSA|;U&TH2cH!kbAI0%NK*0=I1a*sY z|8;1B5YrqwEyw%vO$Oe=qok}Y4l6H46lsWXvOZ2Ji{2Q;Wt>t7XLebOe)2CS=W*Uf zux8@`(qSw)j@GT0lYvy!IK=@*RNBX+W-F|^`?Hx4s3ZnE$(40)gqq{5oR3e(A5Dc@ zk4Ha_DT=L?|Gv-r0p(KD$vzqKs1?F{4!ZT5Qe1pzyMC=D%hWC?_JKHzb2`8%h~UVqP;B{BFaS z!uXb;IjDVd!36srRMfZ_(qdPbI#BGR!?%i)hKEL>#*A%~gILGGyTQCVWtz zt}@sAH3yXbHLR+3Lqc+T)=^qSOBj8Mli8Y3J>YEL_+4Qz^H@tr;$^LGV#JF7-~Z?T z>uQ`#sM`@^jJ=OK5=EP-o7*&NJopNPD9umF_tGimSuYRjA;XeO#`4M z?Z{&CS+;j>p?fi?{HPJ(?*Xu~8&$=thJt{wR@S22APYRN5s(zT4~xgU-qeT29Pue^ z3UiB&I_US79(?nc9!v@L-P}_aAlzn_uRQq0oe%LnxAwWqOlfvmUW#i9<<3u=y3S`U zE?9RP%RUw8-n+Jr{_Z)IYh#woVmy2CekiY`s9(p4sVU6ttS%)B5!Tb7)ktsAd#f6? zp?tPxk50VjZyN!rAB`^KQKc7UWBmr=s9o!<042MAJp8Afwhg{hsZ`2@#Cot(g?}Ct zV6SadofCN@_ElJfYvhGDVB#xaet9DvhSx$dmFR%L`3k2MDb^$puxb?0UfI~+U#IR0 z>sO@e53gXdxZCy>1>zzlKQJfADQwUZ%JIs>&45A_vIW%GJw2@H%_ND2T9rU6 zd=MR-qD#g}#&<0qHu2c@NNfu)2kCXAFmcbC@%@=fdL66VqPA7(G)Um(MvLsVyhpG*#k^aE+J9aSE{c986K#psb{+ zYiFYlAEP`z33;?X4p9BaJ(SCcefD;MgdK#klsOmxlt2#ZT)e{2L`|i@CFNC{D^t?W zR`57D!R8uJ(4@z9!YP~Ibl+K%7SaZQc+V3E%{OMk%7k0QR_$TcthI_Q(vuLS8(Bq6 zVNN@lgOA^8>>Mf$h3E@~B=3^*2o4gWF2Z5S4Ok4J*={(Buab0<5tZ@)_XBT^$&21J z*MPk6ZjAWfP2zDR#evS_{7|Q3>nRoC4wJJP@!*?KII>#St*TC{;RdnM;Ic?s%5PX+ zSl!BB6$D7Omk-P)hznQs0uqA~3Dm!kERrbiuF5y=Zs}T?+K&nA{1AN=%XIWP6_xL= zoIdhF01ci|;ayC%aEcDRd^OAhjj~#h4`~*(%BxG;wQ#fEVrg!c3&`IYF4yaSDl;1a z+sYZRsR4=7toFO4AMrMorp`e)MX&Ov0QIE=Dm;FuG_tr*38#jP`*VGo4;fNCT#(F5g%Ay1a1posD zD-RTyc&|K89IF0Ie(wvX)^goJ3p*h%=~;QXhMz}bBbT(E06H`^`{^YhK-L*0Lq8RZ z+Bdlu!!L$~C1weQPQW9`n!|pD2!VS2|CgkjwSldpUIiYTwE+IL;hC)$6%!v?nkngR z$ZlzDk_lE-eP)=XV(ez?h2XX_pg2QOXH1s>={w(GrX&PLS1t2*FIC^G7z2&d(_a)} zB3ujqJ=yc}L=>OXWJft)Um9-5w5WDlSZT`Tsg9ED%S%E2M>l;f33G$0BJDOr;MSKx z2?yyQR>jg|zIu5^1=;;YhPPKvp@_(zM$6moW>O(9U)H-i4qps3H&@G$+1_!+ zSG5hMayhr*5l$}np~Vz1hT-_-kDQwqGv^KR`w4Sbkf|e;*RPWA$+$OrT#by%QjDy&nu!R6PEm2-)o1`UquoY-V1P@Q+_GBOcPvfqonBA0dxHBq^ z{*~v|UfiXbc*2(&@XSUphRloN`Om`A**UUZQ#p4}snum~xi~b1wav)hD_Mi!5kQb% z7)qD9-Ca#>O@=%jx^f#D%7yk+IRB}gLYa|a)tTe0gW*FK9a-g&X7=i*9<2^aI?G0r zamw+B+v&g}m1mCW13af-&aoteb{Nq!!*Q6fgbP*QJG-e4vzlqfG-G6D8NIuPXF_bT z=gM7e;<4$1S4BpT@l9YBD^G}QS!mJ=lr=|vNMfwC?KXvMvZ-ZaOc=a(No+EDdAxaL znFDc8$BXNjR$E|>#R-ZCx=xIV&;?wN@QPhX22yN_ZkQaNiPa4myFz1&ikTOj?s@N= zZqJ%@#G(DndFQiFH_n1moN%0v|Ewvee8KzI5D{{Pi$k~^8Uk_}RS-BzW&*Ym`s|~h z3(J~M0CX_Rs%$>#w4e!Qh~}eNX@+7*D|bdIiK1a3l$M@5e+Wc7@h&u1@R0rB+2XEK z18mT|=^?9lGs7qD|K%m8m-%|L)7?4Npp$*1h>5Pn{lez1G@7T+cfNFYC&_J!O#M%s zLGu_Dr_p?lPd1l+mRZl~q}uekZ(9F(!j-gfwx~UO7s>GMxH6EFF`p_^%Hz=LC7rPr zmwCf2$fkm7Y)zNejGpe)iMlyOrRWHGs15vGl%D&h9-}Y-Xh4_0d_Pq!i2tYjsQNQ# zxpRZj4_ET|H>}EW+LVa->P+a8sZfTJ{B?py=EUl9jRLcg_GWrLfPqnZd{{zvnbV6c zH(?!@3nF?sS9arG>~rM@F(ZTdR})jFQf?aIX7T~IaWOt{InX&qs3@USp;#mt`cz2X&%A{1@8c3PyL?-#T^^3+-+f*09Xk**acFdG6w~h#aRmQ-tb< z$srd^5f#&SGi(TeO|jh^;G!oEG3#Vc;B$Qm6BD(BqI208SqV+g1SfpNKeL&e52t4F zHbc{yW>FE5ye<|QT|RseuS?la!|N57*~!+hV))$h0!nny>D6f{OqtXi{>cMWE&?w3 zq)a5lTbzlQZ#ZBpdC+v1wh!eb?fw$+Z0eLbI?qX9K%nI8_Fs>MK626fgyIkpaj{j9 z+X3{Q+usCq?y9(8H{-5@+L@m+KB$`ww12gZMl0p6u{?bpqw!S-!;xil$WG>`88omL z2iDy)fU*^^2>LrsrY+VMOqrut)5v=}F0P9W~s?H;1G%NO0%Xa9QJ`fUEb zKKqOtdwck>OLU=Ysq~o6JGV&XSF*X>NWRWYLxSlP>6o zs^oB-OwGyn9hNcIV%UaNZ*}MOTUJTSs(ac(Kfd6T1lSYlPI=<;kE^qWW3{nC}D<(E8>q7tOqxk&7^vCzDz z#~e%6{SF6b9+NW29L0;uMVBl}>^bzv75hNac(hiD{CtPlTmQhj3SG$E?OY*F&Y{Jh=;}FqbKmOdySLQQfw`^b5W=aVP^oF7R?2wSlpy=8 zh_eOumUAfEh0JMxDMjYD>tU{4G?Lr>czls|^*GJ@lE0ea7rW{cRB60NNRE+^+Jby^#02Nq>kUHc=_%KEO}PsaO?u z5Q(AMYhGf%VLbP^23sV~BM9DS&4lZmmeO}EhO?Bf#Gh* zOGLanifQ0z;7cGH!OCy^ZKwI&j4i2}Ggj_s2Q&Yy6^1qq7WjbLEXRpfEs#lohPoa0 zfjPK#cnC*v3BS&e$Nhnay1L7SN1a}pHT~so&!}y)>Jss@SeZ;@MW?D(6VuPBVDjg7 zNI;sgi3KczL}fFNYZaKgR2k?a%r{s+5yp(}Y&;i1lE!YO>Riq;BYJjsU>j`PWc~1( zCoM5cRbYF%#-3l?{-^be$WKqwvRN45fUy{qO)`RkS;S^zP(G>5#sIBKXv<#kBD&Gs zSQ~r0QCN%9n_Iby>>f|J={buPGE<=?!K{jwU0@=-^umbgO$Zp1d!h;9C8-Vjsq*r? zYA$&v<90oDbYXN@R|zE^E=+DbZO{xvo+tQfW}W85Fy{l$;6a;PABkcMWTfYsz#a-` z78GW73l_Xn<|$q-dg0YQT*zu>m4MnZzJ4dJ|INKl^3sf|1tI`t>SOeCiux)sCFqQc zi#yJ}*uS$0CO{d!3D(PDos%&E1;iOp)RNGueBEn^rMD~t)eCS0Fe9%)U4j<3Rs}&C zAu8+fi(NzQ8vDLxWVfPwZg(d?Ya>5<|HrPdKXLr0=El}W;r=%y-S7WC!*4dQGpc<3}9HD7s#Hs}y~bJGJ7Lg$F}TAKGkdl%$Px z7!NApS~tF0lW*vtlIER)Ygv%!Va+O=_1OQuv{?cz2G(q)LtQXwB@jmQDP$yt_+ zw*y}B(jYy>@Jkegwle{u2>^+%a~=;ct~#n|hqf;+#^YhOyS65?L?h|1b<>Va3jw})c(V>YF4#wfrvbV+Z;-&`u5u)8uh zOQ)Bj^CqitfsY-KAkX7odOoEQbXK&szHah0l29#Iz2dq%a1(bi)_etToWlyVezUR8 z;yAZ|@itm`QyS@4>NL~6>S&rAjXDLbJA3+-9WMDkQFLdu? z&kSehb3aKdI9cvDbz|cdLj9HhOfNxY<)-|LyukEccNC_) zz(YjP%w?R6VGW~=4n@Ne*X70_O9Dagou&vw<91`1)ySnKwj9k`IN~VA?!4`vraf&J zh1)?_MNro+CMZUkTQhBLxYkyP8Nw54BjjQ-cY{er6yWU=2=(c}2INJ7AJ6=iZb0Za zDJ-p->c1EY`36T%dxXP(yl)tM$Zp|1d0RO}$IGmC5`!BiGii#b#2Y-Kz^Q@`Q8MfR z`nb!m9`I!X*=hWqbZ@A&zjGDu5yDHdf2gw}o%B>vb|o0MqzIWkIc1>M>>|BJkwHC8 z(T*_5GAHaTLHQO*TQ{BUwW~&*e35i6gv*G%-0aC&z9;bX0gn^vNp@jr_MiD$#E&)x z=N+aQpk7l`KL>aw)iSq{GxAvC5d+c1AOx?e-i|M@T_9Z9V-yga8YW)R?a&D%5$xv@ z^t_L#TNCHhxHER&jmI{$Ev!jsJp4-wS75y5bE=J(XI?0u3Dw+Y_nU}|ST?%(`l!t_BsMiiVKoooWs)SIeLkw<7S3 zB5>0XAAGKr(n9TeIXA-g=i?nif3-gerN)Eh=eKM_m1}qQu9MoJuLE9wiKC34_ z1ro5DoSu+@+7y8h-)g}|EvRpJA{%*chG`XefHJedB-z8CE3K8NebQRFZZ}T8s8&{n z-&QMvQZamxASrrqIl6IUxNszz6Sp*fC!r66)SM*)kQXuF$cBcPHClNel(p@o$Ycq- z8Q(pp286Aj8z&D#W6S9kZD9emru5LrNAoDyS*l}i>z6>H6?1v#6c$K|eZKmCR}B)v zol^1H-N_D_t6Ex42eQ_g(~>i8fwuNcqwY*^jH3BqRbo!l+sdkKUoPU%ABK;;J{Mo~ zjx}z=ZXKNpXgTFs5Z!b0^k)mClQ9KO2X-9~DI(|l8b-YG7+48ljK58clj2E|V_YG* z-d8Qxz!E2S?=W%z-jb0PYIhmn4aiE@tZw!SU+mpI`39|MB_}nCcrNn~H>hT@t-|Mr zP4Cdi9LvcJUI92>@NT8!fBIdMf2H#ua+x0F{S{LxsyCsMABew=yuup@ z%5aXB|Ee5Ki%=l#JRXIOWRQ$2F5r?wAIQsBDzggzsfnD!K#UayE~15NnAVcwOy?0f z+Ih*BglLmNs?*^x237{)jSjyZ56*I*$Q;fram8pd$PW}+6Ltv3yN5&{F>@TlAyaiD z>J~1H(!cB%pVWT{8eJeDSwMpcGfKJaeHb+FWI;P&4if&+O?t ze=oN!7{NyjfR^u)szP_b3R+VtocgV1A}j4y%a8i7_6s1bqJYo#+|R*H&)qOX*1~^J z8p=XcXl^5?S5u_K^xCG>gWK;sXY1WlPB*+wZ*7W!z^-D1ZYF8Z%bB&K(I~oAvx*WJ zoWTpgB%L-KCFw{V+scg&t&KtS@k*i-jwz3pL5h10_pkIg4QMfJaw!wSSp zJh-LUAQemdmSj62U(MfQ449BYUzj;X!9p>?k3%@UGx3Bqu1Hq35l-!!;G(864})gz2A>;F#m8z!R27Gt zDzL+(Th4hi$l9k(>N?-V+SqTo6L(T4Aen#fRvVKD6M@{A&p8&V?$nF&d!O@ zxtWs}N;ic7lufcED3pEJW2hd$GFW9`Og?AA#Vw|N+w;P?1YR7MkCFfTQRkzt|ICyB z*LT);^74Q4(bm2E|2cktP5Gb7KYw-bW;b|=7mG>Q%( zA}+>2;pEWH4ne=WO$!XBH*kcsA*Hsw1miJk=DuK(eA?LFDSpJnf2xhs?D2n%YQS!K z{&91_Jo}%m?MHe0pY=!g`~T1KlY^S1PuoGC^(i&9L42%2GpFCwEGbBg32h+Lj7pom zaQpDZ-}MfSBq?u|UP`kc^Y_vU#ij(r!Rkqci-w;VQ_RR53ZbB+4WtYz_p~%cpc};* z`OlE{VenmrN;l=?@qNw38-)>~U;~}-kE85TaY7-^iCx5DE(vngNR?i_b{Lw}J$qZl z$vXSm3f9o>#b*ez;*@%*&Bd_RE;>?)E%&tz>aGHm;}UY6EQiWWD}pJ6 z{B@6fPwx`8XrV*b2+DhAE|5+%=)}EpDE1oEzs;5SIrcyOA#9R9wf+D4)@CvO+vffJ z|2cktP5IB*><@+#S(0|I@(RWH36*q(yJOAfrZHcTYgSsGU-#_n!sDaDlB8-r?S(@@ zw9!kWZrp8gHd2VlLMtW3c^;iT_1&|1(uiQJbMH#8+GaBIWs9RNB(@N&y(Rln?>(`pYS(({#Uz>Pb&X!Z#~M}f8v^OKmUJ@AI!8R zw`Vuk5|#SL(crg;#c+Rjz+b|K$#I8`f@gcCiN+$$H$~&<$@~0w&m74`U1R5FU-oh* zfArT{qlq5{ozD5y;xx+Q_D#Q6Xep$H4f;H5KjTD_PWlL^!j!4<;Y70kfZuD)nyPxm z0mlU_sbpG*pHVBzVmGBXj5!m{=L(v>Rb6iu3Wfgel2umt^Gfywp1g%sNr3miaRPg_ z&>FRzT0#jhSck-{W^CLga2rt98svPvmFa)Qx3?TPn27Os=E>2`0jFQ>-2(|8ZUUbR z+P_y?KfgcuqWV6x8>b4{&B;o&if0ex_aIztG_poxH9Sd2Assrb7B(CJm{+!PWbq1% zqKeP804PpT8+1q@cB{Xy%CQqErj6q+K8L|_at4FDH0(pPCLus!pr*Z;MoBiji?$rv z6Sh`=SUb*GmOV%tO9%e^$coD3}ibjL}_EzWh~ z3nw^$E35v-8qwZg`L%{rfdNCJ2&mz;&g}*H?skT;ZR~af1h=e*V({Xe zhe=7yVM4Ybfg6poWhbKn6tR8N6~^#BaaOoXc2|nJ*w3tmSGL%BcGB_J`5aHsoSu^C`2WfsU=c|Nfx@x$m z3rn-6L?WJIsPHfJsjOB&kp$lM;jd64IZ-xYkAY4ZHQH+sPhz&1y(J34YJBn8uDTT{ z=Ta(fvcgMu1^%u2PCw2nUZWi*^G*|03bo2W$H?6fWo*KKk9jZw1RHug-^~ism@a2E zsOM(v%<|lC+*l(VR49{eA!nP?%)BJ9XWUuhj@3QI#P`Z3aK|xUO_T5Rhfl=~!YkSC z3YuZ-sl5yLW3Ru-c<>C*}~nUN0HMe41_mVz;H&gKB8eGq)28 zD$-~;?A_*A-HsNlsan(FfNxAy6uI!v`O zynQx7D%okD=QEv8-Hr!=R~`Jyw&(dw{$?Fjm_Z37`d~?bqM)0}xk={TK=UElyJrr? zVPY?Vgvs_)GH`zT?n|1P?Rz(E4`Ie1-@>0{FlOO`;^}0#K*xitO8Dc^izi2~ae+3( z&BnJVxzH1L4hRM%uvoIUerd+>sNYF@z|f=zDf3R_WYI`*HnvYm)wFh+A`P3PkjjYa z_Mp7w#@nH@=F}-hwMYQ zE=ae8;+x6Ru#32(aw@w?$e(4iOgnL3sH4gpOJ~jmFZ4&^6XKSUg#2KdUoRDUrbw;! zkU&XBDhq*h?m;4*ztbxJ4AXqr{dE$LZY#PQcfGFxx|NVVQ>Y%+DyVkhec@Qtf;@$( zpClebssdQd63XXY%&J20G?-Y*64ue2$i0+82W56oLv&ftcqtI?vU)b|Aes|B%WX2r3 zzE(*iR11t6mA7lYH&*>P3l$%SPujr-*M;bW_McpiN14tUa$Z}tjs zTjGNt#1tv47l9o&#`&l|(<$7KhD6_j&7DlQlM!AvId{oiBfYMuQQOKDHF%Z|dBFWD z6feJ_VE});iogq}|Y`$ewVl))8UynlD3 zxmWb{JDpR=v4XgclTB!vNuSCxN+fxJc^JBLF~r%9=mnCoxZl<@)rbz#=qflnq67H! zkNOwmEFdQQSD3eHG{dTu1AvHBPxRQ;1@gNEB4}}Y)Rh8*Ku-!kzdw0ceNXNa6rv@j zZOaS*|F!l2y)d-kkN9EGX1Uil|De-b^<*K=Vx;W^dY?$FSmSa>np!CKz`5_9^KLzD zWp!Dmv`8Vh95F$rxl6I!=@Adv%u{L|KsV`)|L)&|R=66{G0=ZT(8@g^PAhyDO46^B zbj(R#OG;1PzmfNIdH+uZ(jV@HCC3PWTU&1N#e(DeeV>t{nN>rE@^FB89G=&HNLZM4Ki|8x1K+Y;!_YuswIffa6Z>DVW-gh zzB#uZH~f=pRjF!;0gOpWiisS>H9ktu(%<{!I)I1ZVmq zlSv*=?)}|ChWJ80JifwXeuo$pKI~k@qpHx&xC@VjPFbNVDic{yXkG;T2|+3So?B` zdL&yMMkb{exGj>n*?CtdP-Ob9uQ5)CxCS~^JC+JKWrVVKAac1;Hm8lWK)0@!p1UWO zs(s+@TccqV&Xq7&$@W)Qvel5H3OF5Ly_8gC+OeX!nWznzuUE2_?3=JAlSj?1a0X4x zj%dsq@dx7u3oQ;;=czn)dwCjAK2bGxRE|Mdo1L4X)4K!+=Osq%8hSTq4$&=F)(%lgg&wby-{L&uWv=4bvsn`Tv15x9 zs8fQnjkRk5G*@rssHJK?dd}pkQ?Z-Zu@Nkc`0~bg%i2yZG{=F_R&(qrYxZDd?jjL% zX(AI9`V6xj$<>KQR0`Y+O8Ds}a827GrPQd-kxd{KR*?Ve3Mc9&%F9tMzgPig5IMpN z7eVpm|AMsse=CiLMs`^uEL(#N)+&IB>(+@(%`N!n#Ac#bqu%rvKx&*DbCjTJ>$tQA z88xEvoWqBug&1xDj$7&$xUA3s&;Es{dnZWO>-cnnIEZPUuVQhWSjSbxPs|mUYHP)rL11w#3v_hn!Ohos;SS|GaX&>;#Rn%{xBp$5|Gg$6|_$XHnJ=72onJ zwmn}8rKp}=St)vcUgzXX&b+8*IyrF!m;6!RuN65&0|cp~bSk2yJ?UDZuE9GXS*!eG z6c?}LS3!vmCIhdOJ=iNa02=mgE9r=0G8cj32jM1qG?@O5-lO(yVgp^o)Y$E@n>%06vj`P{Ll5siwwa~3Tu z6>8IjMoyN#x7tclgBcRy8K6ZKWqg(&F`fB@-(l4ILLt1ouLkwH`XV?^fg;`LR`#}v z|2cZ_x`;=>nFP+kuRsRFfxuuM@^V1O_>dG>TAEndZ#6^oqp^u;F3lkvrjr(|E;+c4 z@N{3?8!-~ubXjW9iFHhraJOc$LzDo`x1k`@hPLV))YhRA-o_XK(zUTQ8LzyIqqtkh z1+zhWiualh;vH3vS@ zmd|1*dsAEO6qsL^!IZ`ueDKdytiBQV$!1;uJax{=@%7pwmCS5XNrQZ`l_$r~f<#|i$H7qY=di#Q$hNY-t z`P4cVXF!vZ#nr4hiWUEItto98s8qR9^9iJRRMeQo6s|(*FGMeI&`ncFu^dJ`huhS2 zG`dA;CC)C;eKW=(P#ZgJ>}@&;&L_87ut(R=$_AHfT;?bm_e$~$hF%FtD>#vG?c5wQ zuO(xTX4gbq+Euhc?L}tOS?n|NAEdbI05l_XUg2xk``Goqk!Y_XKD?_Gv9Izr;_)jY z@GGfK*y^AD?x_Y$Q=K=(Y0xqFz$2vE>4L>KdHHKP)%aiZn{EHkK3qSs|Bua$o$Z4C z|9$+o&-43B+W$|x)ZUA);@+}n^lt8;Pd8GgQtd1mT&nU)KJ=r@xXnYPXoyUXp>r1p z&)a%2-6<-E-Jx+G?PQm0U?sWnOD^+uG#Zp=#xJ?ddaJ%9w>casF>fMT)O3w7zMlCQ z6F!l!z%4155SaE?yyEUzgoQ!vD+NJUpt+fDl0DgQ8&ZZh8u(g_bY$UkTk}+NeeHFh*WbC0{oRK{s$q@F zSjgXcPy*v&(4>G{9vt_?)(W>c)1jaUe^8LLobFFABu28IHT7WUlK}S;Uc#PwU-O{c z3ygo}Z_fSCDC@0#bR8(K64B)N~- z1I&^CAHhrB|I_Byz5mzG@zDl|npYkFi^AiAqX8@>=GAAh%Z4+%6b}e4``yz)O#jX^zI_N;4 z5B!0~osn!oqEoyo+%Xh_#Thm+HIWxkCP>e`Y6smMPEcJ3Mie@Rorwrk=nzE_f!1~> zo%m13MYmYpv_oM4Bkij-Jgb8*u+@sjq(I6n$*G^Hn1j0CtQT=Yr7;&9BA?|M2@tp6 zC3&77k2?SEfs2OnSr{g$a!a%t$AbEuWR5?~FhE+|^#@E>Y%1-9+ zio#U{*CXVl0rOOrIlD;sz4_tjI5>X!^v#b4uMY!we)an0-;bUgJ_)}22|gauM)md4 z_dmP|et7xp$>Hnc;NZm*NPY3<_0e~4-@Jr`@ZcCqhV5J@ao|8o1@2XpB=moUcG(&>gDlafX#Yxbo}_) z!O`=>Ck?0_Y77qle)!@|aQwr;vuC+hzWnjU;cGsFpm%a-?xwnJ_b(?o*#ShI2z1Hg zx33SMBg#OA!FGB|n~96b5^5uz=bq3e&2giVNKkADzyn|QK? zps${b0$eqQFdqeZZ+YK%+=8BS{$RO-=Vl>xBma;h2+8tonTy^UI#|@ z{+u60jy^bk765MoxuZ@e9ns-8%s#K5J`T2anmY)n)mlED4ABcLOgRS=+?0)Fp$fi> zI+rk0Wy{MXLhag9oC-{2Bi;m$;;7emT-gnyEW?1HWEewUaA>~cRctXl&Eqs}rc(i>=h5L3#!&Oz3CQ+VxQD}^ zN)=a0%5Igk^$joL?`-Np;?dwL>Ln!N6@WML+|YKW0lIVrt2ioro$-z&vDyCEm)O_R zpaStLHZKL@;^%5fU%0&DfIu^s5)$UGh-DKR)vzSr~rXaizE@L>@*C9=R zm{J}QX)OCTx&orDm>?bUX%>DFn#>IOVM`f#;&C8icjSTdr5eNWs&p;ZM01@YUugN1 z{8P|#TIM0j)Ms<%G1;nl%vI9WxDLQRunzJrS}>AZJZ*x)z)PVL1WpMt9U$bY>ud$! za8wTHE*q>fCY?^MjjWwx&(0|B;wuW~kZ<)0k5L9=XRK+p*`(8f$uykerUaMGQG5=P zd^~y{cP^qqlJ&`KE0f9~}^_xhiE{g2WA825&Qc!b_^ zClfL|^wlkx7&bJ|G)2oS1q=?d3gF#zusVi$^^#}b3{dJNv9rU&Or6MhLZZDyW2&ab;9JnP za7G2Y=lDHw_K05RRIHZ_Z)cRR!;-__2<11RUfurY;iLBsro(CfU@*j8gL%2%Ief0) z0`h;>8Abh1cmBJvwYk$Qp8ww4e}0zVN6Y_9v&8?Ue@*FsY3W};@-Ii?f3?)lP5R#~ z@h{yA{PzO?zn{Rr$bqk1ZN@*6avEjv&ep6GT+X2oOhoiT5ec$xW2T!^=2^Mjj6WpP zv!VRb{vq)I-)(R6zw5|57qVc#G+2RpNaUWzH~n&Y%SSBy1>Zh+b9ems^}+KxOe*ze zaeKG@<@(0r+dJ;X-=7~o{^9*D9naz;ED>}goo>~2qfs}&Ugu?}B3rc-mJJ}o(ZP#@ z)r`OMwq$f$<+W_JzDifyqK>X^tL@c=c99vZRdKg{8QkqnpfE(mNAYv9u{bI|il2*( z#ZmE5{9J4-j*5@s=VD`VET>PNiskglQ?Z;r1uB-(r$EJ0`V^>GN}mE1OX*XfVkv#{ zRJ50)*w=^LKgp>JSi=3s%h#14ss*P()jF;T9(Yb`ZfXJEFvUrzLQyAc{CukZb#-pM zzQGV{*O>VxSP7atSP=i(Ocx2{xkxZe>}rYbYC0XFPXV~;E4Xl82Z;uSUaIhv;SIVKOHH{CMD0X5Ag#ewXf)O%Gt(6?{a zb@wc~xiSvG<&DtB2f2PIP&H*2m@XbwG$w2vNzx9daMXD`_Lt-*=(`ETI#|@3700lG z*0K;C1-hDgRg1L^em<53L)C^Xx6~XdVP_Aw47w34hB&y!_~YG(pZ1eFBfUBb}m^RcQh(~Ajg7uTQL%JB?lRr@wk^DA^tnQ4Xf6vp^;i}W|~p@m@;x{ z$7||nLPmvUVo)hVu^b1YHF2oi1pJ|W2LC)ic-%g-{=iv>-IhTVa={RNOn6M*)*)0{ z5#}f;*tO{_fVDd;ezi|U{Mt7bRRxo(&MCXVm|m2R48(nja=%ucXYmKd?Sgtr4HmL5 z^SmZ{Hc={JI{x{_*0CE*dDk&(&_*e$^GQucY|%bTM%h@MLRp`EWnWz{5d!wj%O@{) z14J5+OVC8=H`rGtR%=988)1IGj^!XlNQk)ggWGs)t31y(+81%ujbY`*=MGZ0eb&S1 zy!KuEfpAT=QaszI5r)&UYanMDz)H$qYOIxMS#dHst+a-N+mq`4x0Tk0BQ;OoldaR=sG-2d^|4@0BB-^T{14-Ah$&&SPybo5As;Myp%(n zaamxPe*{&BK7K4#U0=kc0=QFIeJ6*?lraEAhh|BsrB=Wu>;}@t0CHTomRdC%OJ>nW z8*^?9Jd_Slv7hCH->3sCt(AajvHl2~--aEs;$*%2kX7bTsAd!=sNAZu>h@Oy3z&6~bPuPYUjtbndxUdK_E4t9f;EOZf{L1T=_oQ|T= zEm69zUkYpi;2kC=4G#ZJ@OMcQ@O

zpG*8j8WGe99y`lmuTCW!m$fWs4t~pizHO2Ou>{#fA{cpnyBu81E#KYN@ehRwKm+Z zl!)R4S}$sFhwH5k50^U%>5%w5VfsbvDiKe#O!IwH6?e8JwMnaATY zX1Xzr86V54Et*b7?Xu!DdRn1P3r|!^z%Py5ka4A2M~=;RRF;a&i+f#=abdBWpg_q| z9s!t!PcyQxXXXWPe@v_A&fTgDd0v917B>pJGiIqjgzh~3-M!Ku zM=4ang_D7_uTH#QpT$3{t@&@6j}U>}lqK0{s`9cqlb6khLc?=A{ZP*7(;9SPSR+l1 zSG7Nj*-Z222a5>nu#S`S0W5VigRvjk*(%Sa#QUAL=IjpH^`{=YBf*Svigs?5ceFNir6lcS9kj2&< z=#*UW=eOi+N`N2G(I`wH(6r73CF!oWEh@$)F?zc@-cu|11>-Dq25s$69jzli)>!9> zk9@3Kuvg_XY#_Z;(z*90YRN{UQlgctzOR)jJXHfyjv$?*RzyG&>@BiuZ{65mMX}Z@`8;e8Or*I16Y-dzgqaU3EE?6*f z_YYzq)4rgjcx_|MBMV^^1dNv^ppa z@iK-!-`~afEB_Xl|GNnuY}fnU?GIc5=G^~)Ut#`lKDxjE@mYTN_rLG&f8XE#zQ6x{ ze;wrhI!Nw1hz7qwqb3svr*Ic!&)yz6&s`rm_Z-LwxYr`(%>J%zLfgCfc|T9xQCEzy%~67_nlQOxi>j!cv@44im6N-y=a zS$+T|=?{CcS+QW*9IuiclHFP{j;yirE?`*XXE;`z(t?@;_Jf@*GKj*)xL!wVI#>X) zX=8izawfj%eoL$eJ!|f00`?Z{9P!8<7099J7O}B(J_TaiFogvV{f*HnM#hGN0-+UB zqeDI`S1|ae(P*{k+kSX*(rD;G1SR3Ouy%41m^i@(935j!0Y~3_aB^Zi72L1sa0)Q^ z;)8;O8GvwJ$l~!7VDfd}g(qovWF3|OjC$uO2o)F8XlK5AKuzj2u%m2<{XeZk_^Ss} z(p-Q}DX{>r{SEaFp~J@b(f8D7_-ryh`*MsHG0C8roGJUT=}6b|9EHn3HUISm1@H;J z-VYvdCJhc^&5yctWl1J+0kw;$C3wxlSbv$k-vsM7kDl6d6ZhNK@a^%s@wTYhA8!_o z<~W0AHnN0>BoZ)Q4T=^)uYkjsMI63+x)2U}n(1QVg+m+$CaMd){{rvpWb^A2z2Z{6 z`U%MH)5?e3ZqBEfi5ERID|bc9uWWs>vjxB{yp^3Tj2s9P*wJdA&Ydw-$jCd!ngy}y z9~S4yYv*viYBMy!t8-(3xqqDESg2$a+qTd(I9cQEfPoQ=Fei+&hTfT3B4J2L)VVMO zhi73S=WMX7Wt|Ic6Kff@;Ny7(A_uqgOT(8tm9#;25wC@gU#!w z2@(@J-eo1beP+%_rg6T*^x^mlmTSUnL&R1`B4Ye*ETnAJHAgao4#l(Hbc<#ODo7gpYGS5~C@3(X#*HUw^y)T^V97gyT=IE;0 zE!y?~L+}!$Ks;ED44par7TwL)vPHOza?$axl>#BFZR%9OmjcMdrNVk?dn~j+%VKId>lgXEHsdXarU*Vbmj}I-q9Kgn-C5N(jjc2klaG&2XG{ z(q7;M%C>mQ+1F&0I73>C)GWmE61#F)y0UWpu)1c9P(`dZ6&vKhckFPh(+S=_*6jpRDd<&NY;>TPQPq&zCJ*g$pV9Gy6Lj)8|j@KhTu^ zC$xp`Zdc0C1*YHihJ#EdlJ4DDDZ9uJ+9O$qEq^K}o}YU`BG!sCU9D`g_}3uz92(Wh zE4?L@Tvs(qf4%NAVcRPCeo|sORv8-5v=Ul9YWRU9m8n`}OlZSTcPC=KF75y6!zn0M zzRj{(u%Wkk9jUhPZC~i*3TAUN0l)tj@O#PnX?KF6T5xXT%Qbd1F;94HJ104J^Q(<@ zl<|4DxzlLYf?=9K&PP>qWs6$)Q(^pxU{gr%lz-3$%{8G-*krse`8~T=DfWRFS;1Ah zZUejS;O(0q@a*jI!J9*xNo0)yFl+G2>&u>95!r$gr>O&=7AmhDrz$@XO!~NCKANxp z{RC~F51I>Oj=P;j2`u8Bqyi$20~N{A=8Fc5;D0}H5p?)dbM1SBkDvS*!I&opqBEt= zA*#-%-?_jjO%1P|C@$f3?fuE!Y2 zc$^c6Z5nOt`1B^a!i;DKPO2N&q73)&^dY^5YP=Jui}854yS6q?(_Yp{;_+D{9i6XT zjQhQ{?kGAN*DMMO z`@Ht>I+)#sO!X8-ajhTxUizbCxiG$(xjlCgBBw>GzKcnrw=Am3`FlMvySFF&SNhGi z|HI+gSoUSQ)&?bxy3deft8iY%FW76bxOr_0HlywStf43Yq7+5Rt;K zt){3TfsqeJqv$rE+ruCX!6N*7!1{NVHs8y!QyUtX#Jw)^IA5jaSm_)mFJ*Zg%B!5AewIniXVFa1axU*R{w_46eL~5lR@wSXwE{gfZBAIh9H#u z=QJ;L2-V?bJvmeT+J5M3xn0g@UtEs&Me0=VRM0pzth9dK|Id>zs(5`I|LRFC<=hW0 zm31GY1hulVu^v|8OG)aUEo5=Igv|EsiZWT^)`W?$9_^2PfFLJa_E6C!;i#Nk>fNS2 zMvE!t5}e`S1zl|tPwwOG+eU+4bT$g!jZfGVL~r_$;fVG2#<|auLAOGs38a^|7U&*G zB-4VlXXZsF4nI4TacRaq)i?R=OU>a4`Cy9p%||B-UININd-p=7{ASC4$)6zo&6EF{ zTRWRO{{4^U&ZG71d-?Bk{N~DkeEFmKuOtK}!*)N0eRwwuT=&A5OsjU#hFP^6-{8Dp z1dL=@3(&2Qt`QXrr3L9HRY>5)0xb^OZO8iA1!Bs>(1^O-ky9f6HJA4QrOWS}5(iWS zH}#Nii<=f)#5WtKc=rJt(F)i3{1FEU%&V=iY2KUkzM=0;{=RA6`TLfLcxdFSst z`Yz=knRovFCBHYd{;$kCe?QQ7DgT{$=kJf@UF&~h-ue5XzDxP1=DisP?~4-kAii!V zLm=!i8d8x)&I$wc>RWVVWV}GxRZ{qQ<>q0fQ4Oo+V2X4s;clowwJVTRB~g_N;>y^p zHLH@X>YoB4zDKXFc2w2kfNX@NS+|U`rxbHtX<_BG`r`mug|B=1iXtxhhe9T_y|kVD zJyRd9YBlwOsSxhBbRhAh1#<(;(uIV8)sPD$E1mudL_kF&9cpIWu^PDy3#25^EYQBQi*D(wN8x;S(Ri^cx8R-AM_7M zMzRx$zS!8_c?g;5Z&yWJWh})4`l0E`rd|isO~+d8o82(QW0;^K+GSRL4|wVbT<*tR zEdDjbra$j%JQYrnrN`-aFvZ|hR@m>*(T`+DNl)ija+f@8c)he0+WscAKp6b{7Hl+z z)EnHh_@yE=}TVbOLk?H)w(igF&9MBN|inH5gC7W`5@ndP#D zi%;8&^!w@H)hIqoZl1-1^YMjU8IckAkqlvlFAu6U`|@2?c58`{cH>LaO^{VgiWAyx zKyLeBsV4;9&P{+Hx}e!t4^sZH-lL8EKP@}Aph(x z8wSi!<$xxc8;^36`1;L;lu8Dda(F!%B%O#ZvB=us!`S(XI9C!kC~;$ZYZ~D1d+BKb zsGIL_Z~9rm)s92DLfh<^{kgRcgTMJVyQto!eJ-4*XD6-0_@wpaR|nrkrzg_^9w+1Y zE&v~Qo^%gmcq;+9%^;rx>(7ByR^G5dxPF5^4~N9MTQxSZ{@5<)MW=C(I{+7>vN2dw zc`Dr9ZIU?}F1^(%v)q^Y=2|n_InZFsu(7-A0{jN~F9&bqF7TQKc$*tJc-srZJL{~k z7vSYbSaWl6cyXr)ueqKF*jyOk=Gj?1pMcH9DOdpZRUX*lt=-){gWvA@?)p5KTYGty zZO&lW;VAB)g-s{^Gr4yA&t}`rI|2OseEX-f?VruHe4Jg^*(6~LD&e0iKrnFp7eu&9NJk`Qr(y(wMRRTxbHdJdv9g;B*RrKKX;;KO1#hN< zL@cuw2u5GC>rkDi3bp+6Hp9hT*NZg3Pi8yq9u26*-GR;47PxiUlUp?QW3bO9Y!l>l zD$=|pSH1f7^4J$PSBe&w&LL5?%v#K6_SaO1((jJ6GcA88<_?JY=;t!~ZLlBj-Vl~Z zKeP?H8SpqFhq_9=ejbB7ef*FPNUox>gSjM_yIceon4aZ9qf+8bDDuy00Es|$zn>~j z6&k4|O}amg{h9Ms=^h8K&3kEdgSO(QeYH{C$251oM14&$^CQk|=QUZAY)z2#HLl84 zSFfi8R`WNzX%t#&26?i*X%b3B9JHBkcaknp0{$^Qira0oOhDK7_{<8j$VuCpbE>Aw z7|JCmi^|y28H>_Jn6f>Dvh^k(!r~_d&YDeuRc{)0^`~S)wI)cGHH&vTx{>Fcrfs}1 zw*|vlx&Uq%Wn}H&chi`*3?{$TVL_+6V^=$YOw%&e#{ji=9o=T=Z*)Y55m`*N`Hgm= z0k2f(0oVmZ%e>th(+AZ{^iW$~DmJgQ&5+Zwg5EZy7x+Td+^2s(%PHj?|8L`HoOM6; z3~-+P*Q4!?-1*<5?ML_aU!UbCCnag;Qbaa!Kf@`ZIfNM}a%a?aPlJhJV~}2#9o1Ai z>EJ9mwani}GOHE4wTm`AwjY)S%dTM;#&EoMemOw>iSl4oGAzv-f$}gK6+hp;r z3pY*ys1TRzk^nhFK{G@f3cR>h;@xG?MVVlfbjSk6oDndBuu3qrMkA}{TIRzzk0$4F zMPjG*If}_B##O@Q()Hno>%NA&Mo1 z^s2E8bNFg9)}5*(^Q=kb3$(issIl=3WE=e6Zad5f&Y9Z5&|&#>`n8JL@*kr5$?gBw zH`fdD-$wIZ{`)LH^rqA&iRC;VGb6L-)Mu0En1mr%QDO5Gz~%`rXhnRt>jD_14jZeq z#}gBlMC&fP05$~C0CjzJw89z!PvSi&C~rJP65O^_SR!>cE-ti=42b_`t8^H#T$ZG7C^3Ed&8uv-I1YI6(zFpmEW_=c4^0 zOj_+ha(dc}v&z6;i~&d$7l{hPstndPs@1Bh=>}8Gxe)01Iz>fQ#lozFE6$0F2fbO9 zn=`>mfDZP)oC=s7k5$-+Ltp8t{Z?~hgZ-1@b==_X+oLBLNO188ooAE55?5&va@+nT zZbUFdk(;I+F6~F%S~)pS=HA3n=(!TJBug7g2Q!u(&nP}<~-|DE)MgWgqq zHW~esmI)~SkHc5>_08tyZlKW(4@R8})N4JD2JniGr3ru#$yr^1Zw9|bc3t3Qfm1{I zYyFe6BF4LbT1+f;ukPGq)my7(X}Rh523Z?MDSTNK-wD4&rvQrlCa8Hgj^kBRC}w}z zZ8~=t>G|F=T2*RY`XQHfub`#6$=a|0R5DlJX3n7?d6%Z`_+|`q_B6ks07KPOp4!eW zY*bc)Nh3OA^^YmMXTP1sXX(h*#t2}k7$M?LA_w2%Pv6Ne9LA-9H@oT9D*Dk4SDuhc zQJ?P+a@Kq8Vp;Xl z5eKq%P0#VlU;+DDpq^YY@GEdCdv+zlQ8|140Wcp&=arD4pi2nTSaMy>FYl|n)HF;& zTb11jtKf}Av=2pcTfHh)?i7+ETX-(x1`m05h|R~n1)RBbI2|36VIh2$-`7wMDPB;j zv}=Ltt8$7b4_~d9@-9jPyhB=k99@B)w)X(cSwGHrPz&9TjmNt%Blf!Ro~h}$ge_p* z9(-tM=xlca5w#zk5acG37De!tqXfxq47TN~o{WwvP(k?(;?a~NX(PJYwq-ozaZ;{? z=(-Hqkfu)@7G@fKujb~LwJUoadTg%-aZK;y;D5jT`|tjn zE&t<;(kDS^^bz}jIq~0i;OF~)*;t3a_wxVe`298YKc2UkAm=B>1SE2VoSe*KuM~^e zorv6RE*(1FXFPW^9So|n&wm#WA>@oR8%Zch+v$*O!IHFrPx>K+IX~`W?6-Y*Zt%1B zQC4R9$V;>CL!8}*zvmdRR6HPYcj`7|UL2;`QJmtzRWFUY)TOz7lY9yrP9ED);N4#TsI>Qi%q^WT3I} z;;wW(haBvrc<@Mmi(!tenho3dqMe}^6oR@RL>UpTl7r1Rg&;ZnxzhUi-QeV5H4Lgj zEeLZs(0#`N$uQk$)FtMIoXYDmk@J;MeA=^W(Cc>p5}JzU!Dp~{!DpoqAlFYiZ8Vlc zNs$u|U%bRnYWsLghd8-nWKnB}I!v>qs21g9av9=O%c)#5c?Q*QWUco^T;xHY;6ZPI zzKi-%cDcOdVQ1mwkX|zQ%6EB(iuj4dtm?FIS%3keo(1?=H>}EDM%1Z@-5pOxJxnTY zlTfrTbv*zQ;AJ%!vkMpBrP3u{7Db;*y7z=kWa>bY=<}%;t7{KNYgHJ!;{gZqZFs@>N?a`=M9bGAMVCGyH6t)@8 z-4`(f!FsE(_Otk@g40D6H|%6IihraZ(D>J%OE^3Nx!}f=*+GyF$4Or%LG($^Q7^j_ znxY6|XB4wJ0s!D(oDrTojACP)#~8LSx7pE{QOek1TfJ=iZfouSVtnCkYmlmKX;(#O zDRERlwt4t1E2cC|zmiFuth_K8;Z;(jwW{+kICymw)ZJfUR|WmwHn=Fg$+2)ZKAn*F z`eQs*#;~ZU5g?Su>29!+Nf#gm+}0GDYA-ztnobUS>ccH4#knCh5-YRg)fZXK%qm`-}#;5MC* zJNe#ia2*ZCXl{TzS`7tgO0&>MJd7@IzeRhn9AIm_Z@)Y+j}Pfy0_NPCI&yQ3Vj-)n zU1e=rUNWu*X7nrFf}oy&g4TS_0!-9-?6HVV>b>$^F+1 z%&NF(CM?ulv$o6F5#|@OY)${ypz&_Nm5|0#4G7}g1e$?kId*f9nU9IqKkXJc2-4I0 z*obl*4J#gv=$}DKMr%e2ugqnZDhNLB9j_cTDcOD#nENVLI!?FIwtE87FV<5F(n}oj zY`N$!yLOqS2^%1$Bb>0G(khIl5L=k314Ib-hLzQoY_)2_BjGImUxu7YJ#4Y-us(#U zLT;XUbpuSX0C0%4<3vSHtEIw%JvqBzuF1VmmZEhgR{w?KDBE1da+~&cK>N}UY#Lpp z{F9qzy?sp4TZ$k@C{(aZ#h{TFI-yHvBvF7h0}O~i9KSQj2DPA{oeMLf6ny3;(0-V9 z#uWjELRsk0^{nh30RS*vBsGv&>Bx{40&=2E`C_KyJ$!(W`hwG=j+{;kdC_Q--^=A7QVP zUT4c1Q6u;fFJs_R4y+fv8AXFEBG!P8eeve$F_!r|0Ezh40EVwG?gOT$=^*l7WQhlU!N_d{|C6NtcuDJ7U#Q8vcFNWmcH zb!ilfNDzq#*|kb1lHREJtF(!ZcHJsoUz!ZmaehiAlk$DCbIMGn;0XwQ{ir+Btc? z@MF*Rkm0Xm=>QrJ@f9@g8e0hIc<+>&hiIS1od_q%-Xt<1A}(;SL=4AF(>WVzbmL4{ zJZK{3XoPi~nUk^3%rGkq#u!lS(%ukY_Mu^kn`PF+M8PRY=LnG}nG{kGLSbEJ&CI;b zf}OVlDt1iVJN_Of(gNP`)6H9?lXAX011S+zU@pQ{81piKj5Y zZV3=AgtY*Aay3(lKNNF+}8tgwC6L)ly%ML2xmh*W6YHYy5hBoz?3gN%esPwK&*a+mYvddr|K;{hCJ7( zGQ(b*+tv_i5_&7EPx(8~-l#`d$x7yMoUiiJI3aqs4S)(XIUntI-YDzzKT($Xv_0<# z9mc=~Bas6eI0_nO0MgBLS^45Hischb^ZCS?%syNIQJxVQ#JI<2mHNkX(4V&c%Ye20 z_Tj7gXI#|pu%>HYSd+y+X=VS|g?+J6xuDty**NE<>SHxQhH$mucN$xcfgAed)My7( zH4H!2fZgkk{%v$e)bSqcqO91)_#|}c{4&11iYOMZ=$Mh6@RisKulp6E+@Kj=h51k# z03h))bWpery|vj~lbHwdh-m{>-ojUG8rM(Z71eGKvbTAMme>^BS@At5tl6XZz@I${A*=x%Az8d}owDj2l3mgJowY`^ z_8&HYETV{dYXgQ49ZM-nmLp7BD7;+2lagn32$kYsG}zo^;330DC3dGkI{-ZYfV_@h z@h{MwcdHvAqntc+11*!e37s^sT{rf%IcyPRB`6DKb-ffQkxVq>sS2H}FexGz{uz8W zoy$Hed;L`zODJKvDg1fGaowNSiFroi^mQ7!8;t>ViV&R)=pn^XSKr3mg)qoY=aUROig$H(y%+9V1_148*S-Fe3$>==4A2SHz z%iU)fr**J+kAyPlhht=96B*PsQ^h=G148n*P0&d1_JNvx7V1<({2URrW{hann?LHN z4;#A#PX}d~9{zhGp?;OYS5*;Evc2)}0+Fra=|8 zz<6b~S86@88n%hE?|_YK4T76u=atlxo>>K%6M89obZJ*$%M&qWgnN1X18=-T+-HJd zour>>kD_a%tkGPW={Rm@IkJGV3?ar|{I zZWkH$_p30uCS5p&!8f+GMv!vaKhz^YxA6k)y*Z*JNc;OGpqzN33c*mUZ13gRooN12 zvqShC^*W{lal55`D5A6CK)vC0Hqm1m56DsQgR)}#a=$Jpg=qs16)xJ5FX2LkQ}CdL zvd}tOEDNc3bcr-){_joBlL0PkA9De0p8to9ox=S8X#3Iq{Qo(Af93ff?I^N%Xzl08 zX1jR#2Dg?g#}BJ38U3+0u$cYZ);h$7{&;1-w1RNT>+#aKK@hc%63aF)Icd-}_N?^_2Rk!W zIK~C$B7{*ansrSsD5QgN%wALB>n^IpE8!QBDk><^Imb7}Ya4s3z4GqGbZcx6RS~ zz_aSvT;-Q#o@mS?FWqlPt7IfG0Y!WC0E{4bf|7}2~TPN`+4O`CqX#!#e<$Ic~G zxqO~w~ilaD@=bJASOcmr_N|tOqcWRk$_!~L~llj}t8|<6Ud*;4a zE`tT@&boe$H1!rKGDIuW4j=Y(_*Py=tTmc@rJyjnjb_1gLsb1Ry{@#^qq=HAHtZ#1 z8-dM1V-^kcwJ!A(ZeTKX@?DZ6JynYJTbEsaUF+8HM;9=(8>}hFT0p4Q<#pDT4Yu*E zK|;)TXl%)Md=o2Nyr9klD8JHw>T>9F>1|e9_D#pa|cE7tVL{%_XVLpV=bH$ z|0l|NpW6R(6J0_U{XgIP|NJaJGMD8}4zAW4TeDOesLA}%Llb_WPJjIK^&5Hc^5Gk_s zY$L1w+MJ7S*VQxVH0Z+hN>%#z^U%h_$_oF9=PlE4$ zf{%x!sC<3&{SR+~A6`Cta`^fS_@l$a4k5{h` zkB@_wuY;rKubv$NFo6F0;KiGx!{b_T^y2Zew@;2z{Py+Xb3_@)aQybW<2Ofd-o7~uzJK}h3DNoZ@b%x19v>d>1jcevU(_R*^&z&n+cj~Or9QKar+(R*m`%zwk4~-D^1%ef!m+Fw z!FN&T5{)}vp+{syCfi+JR+~h=PqK@X7-G>iAIR8m7iJqj880~O8vFclG#D>0KfZv8 zEbay0!5#)?R)GE{m4ZPw8FEZGwD9L_r<{!!!9K1`_$A5u8F@j`+oLkkq7BO^g~eo;`ni{07&iNc{nluHOY>V7q|Gw{-Cx!pRTqjI}snR(il&oWJ(ITyM$ zkhm--e7D=pK4(oKX0wyb^cfAmSax>;+G{7|PN>sM6?yi|_>lRqh=tqTIwIy{W9L`L5})d| zqb6^Fk6+zf>=N~;Gs&N!oQM;ApQD##A~e#~z+^B^X|(i`(@`|KEnqJh zD^i%^JW=OzBoq?@!$~j;nR;$PKbVsdNi6-ShnkAGTSxIc&c>m4eCSN1UTaT?(`s6a zGk=lE2sXeLUC#OcMb#Arp$bXe!0wa_G9SP!Dc4PaVB>nfyB*%CTm+K;Z9ko4;oa&( zPfh&~z!T4kM}w#r&MN0-g4MCJfI zV#sK+c>AUVN;GT112=<;f$DnLerhEr74{(Ene%%=mh4X0aXFmdM44Ng4HA`M&*4P0-LOtI-A_pXROLa(h`W70&9=Z)_^ zOi0kIcu$>|Xfsw#68)48xC_fUOOT8rjV8h(s>YCGy^6jvOg zntsiXbgyUUc3T1NoOy+u92KUPQhFJ36){ZwIAA&J4m&;IXfQ8whn6A94O*SDmb^yU z+q33-j*?z+O3A~}Y{kU;UBX}SH^=@b9)J4yzdP_&jQ_iFFaLjz-(Ok&PvpQ_{=p>=9BAOSWq(5%7$@u|>XsqGE#igscz8PbBqb&~9 za%&x>mH^gt1udmZfS1Gdj(~8bFZhrvL_*RktuZc#vHU$~YZ?AaH)7ata%5bZN!*W7 zIyt|<2se}ARn(g(A7rs;FtLNw>07XhYQ)vxG{)|n4De(N0T)~YZ8SI5FzfQNyN?>< z`3HM;#N{4QYvI4SC^xw>Xrlydo|%HKn=>w7UXU_WoD$4h;vTK6ga{So7_zWcQVLgl z>@X_Vmaao-#=IN3Mb61`E-`I6-T0N#rXbek+dJs=Cf&F~mSh}rmPIb9P198}Ev;i3 z@c8Bf zx$v+!GVNG%hNa9Ed%AZPn&=tNxG5R*sA&f0mlfYwxVUZh6t_yr*;zb7_XeN4l@;Em znYQo;4k_jgta%Mc2Dnp;)uiSlnqUj_r>2?k9W1A}b$TPUp&!`7n{?ziOru2Qc{8X_ zrAGcS4s+Sk z*5x=)tJ_WC7G>Cuo3ArFY&SA&19Q)<(Ihr%+yt=P2 z=M*3|7l&AIp<8Ue38?M{N6%{3VJ=!*+@V{u)&udpWgu&xx}9R&ZB6yH<($|p(XfCw z`U~%t%OTOepvuS@iKJPuukiJTf|J6(_xt;Q$KUMzeEEKwkGT3;A4g9!QcEFgW{5Piy z@DCa#Q%Pv-LZtEO$^$pbXlK%k#&H|5tKemxw2ic|+jI0TpNx|j?VRHX))9O%&IkCs zu_phw{>#SExf>P1!ZqtI-3kASGB^QW=2gdX(W!19ubh1uHE9 zSPsZTSolkHdK!;*Z+7uKGw*|xE_a#ePn`Djx~e@CHnxFFJia8GbF7?e7B<=t&-1ZtQUO(l(rTWlB_j9c z10ljU;?qq^TCRYes^w}_&NH%`HYEI7ov}J0yXF8ZczyQH#DxS{u&R84oMWnHkXW&v z>)S?i6gw_pQWbejH$*oW+F7C&m`d$VLeQ}T9KS1$GJc#S3r(&UJg_AV#hv-eZJ0ZW zVDmIW`EMvCuhH=TI)nz`Egla-7}}^p4-_d|n@MqrXof!4=K) z3HEbq&HY~CukxEM|7(Pr4)WP2^8eV}+T7Uk<^PTKNB8po=lT7W<$tT$NzcY0&Q}_Z z21d0|KkK~&Z>We5dlC0*0cP3@_%?!T>JGVOZg#`oa4Ll{XQTDk42N!2;l(-$#6!-0 z1#vXZ2d?Y&^aeeQtWnyz%$8N7#rOuHerT`@*3iV&dNzq(W?be= zF=iO)X1S`Cp5jqk+*M|QKvmf15^51H~1AR1VJ+}^}=(M^N@tP?C!oV(WX~F;mg%Nbj*28?Ibz5hnVIBKX z<;5PupmZ3(MPhE_I2}i%@&<5BHUyR4Y-L*9hL7nv1x@kuim+bCLWi+ESO+0^f@FuuMSM{)n zeHlE7Pm^e{3v*5^&jI^-<(Wh;JmPI0C{BC(-^NjAT$78DAl^V*Vzn0&KN3nD=su{V zK{FbbPcn|Ob&jXh6n~3oIgC?urFwmV(QuK1l98a9HI~&! zEi?(oeJiwBdiS=2inTJ-GBi;@kq&eYyqurI0O>~q_%sTQew+}kIAG_r8aH$9we+*( z2HzFsAOx6nt))RBT^hmj+^p<#$W)GyMvSrt+}K*MUbPOP1nYjD3wcKlm z_}hWF0{|2eAPC?nuv+pj7DHSG z>s)qEO6qdPh4jrW;O9T4IgoP;hxJ)(foZJU=%kIw<(kML*_sw#C{I_+BhAp{n1V0 z^AyQ+#x}@NZ_U74lvcg7OkI##{yED+%RXn>6f#k$%iC-m_mxzOG}kG$w|r;n7E4c| z*JTXz`bb!)k&e#Syt9x@6 zd31?RZ$Jb&YNkZLG2E z0ky1>e6reyT32;*pnyf{HW9#RS2lsgfUB@*WvM%}smAthE2}QqK4=h$pTJ+7_qf2n7UKy{e>&F*u|J08UV;n^(|1q--s_BR zhZt5FH?5;_f*Rma^wu)IcAwG4bdPj@z2>~Pn@WF_){)=;+ z=$CX<3;M|b|3FXO%Ht3R5xI+iGG_CjW2>^#eTd;Q`OmlT_ls)f`M1)2>W>FulUkrM zP6w0zX*{Y>TGbxoIbX0|vKm~k24C+7o4M}>Hz&_Vm0h$5uIMx7xih>yVw(Wgr2lbv zl7*i@&8>lNF9+#0Y$+$_%+VBbJtKdX>0p53eT|ff^ED3zclzG0hc-RjFV2QX_uQm7 zg!INBzJ~cII3B|&d6IVU`1(oQ>8YcY;Qjmt$GP?%;?@L}DYVgM@e+4}SI|tIWN7Ry z!LIvi(i_AhRj%m^sJ7)SQGTHIv%6PxJK|3jQs2ZXNO=i1j)Zk1q>WhZ?m!4 zSjSGhNY2UE7<$pfn|YaWh0_R*fxxEdOiDk{y;ix-*69dmdx=!7{Qkb$05MHGwVd9< zh6NUg@t;FZ6TDcZFw+|J>i1g|WOx~`m-G|lC)N+4CsOK$fE?Y9vVe@UVOq*?OK%_y z;_-Dl0)ep-H_jWhHjw2Vq*sG^{biuc>9|?_W!v&uID z3I>lI3yGxJwexwf?@jOb2a|XF&G-M^?%V=ze~cC2-1EOjJNftzTRYqL=YOB$x3K^3 z^{?*zf8YE6zW4uq@BjPW|My?r|F<}-#C0DR2iF+dB!+6ajEA3jYiT@qj7Q>DFSJqw z%8T>efE)kgxW7VoEcjQ8wP||`ySp|=(!{dtcUeF18-F#mAqp7AUT%A%cnag2ym`Ws zHR+9My3Ya__e-tj2@HJLs73>x`9QKC;+7xJKlx-a^4yE#4zaZ^g|Z1u9)sWyGmrXBq;DJitsnPMQv_oEXiWAkZk|of12g{U3}$aY<8*?TeE92@LQt1~ z&aNiza-MC@a~jc_IZiuiFIdBq*-qT!96Ou?l2*roIB_I-KVYXkX#YnmMSO$xoC|7? zxL7i{ih2od_0_*LBG5~;{x3P(coYpXbTF*#;~f$#`f+p_T*kLm&i<7`9mnV7Lx_W1 zVFK}%PH9(QTCSukWMg`7-oUB zJPOD`CmMkRYh)Shio1N=A@1=lB`jKqjf2RS1Q|;YFGdlW#}4rTyhbPgY-xp(r;fF+ zm<}D*6{uf-8Eo90)Yn$w%%7OVsyP5*fTtJ|b1+0?JrSPRU`nI41UlKyaRK+>WMB_+ zxX_NRnIZ>(qzm#5V1ddC5J=*Y+i>Pv;sB02EVRood=yM#%oZEXJZ*Y-vZO8A5ImK{ zJZ{Mzi*K@Hhf3Z@c}Qg4;_ycncP2CxhiNbA+)A-8ZL4&^8)Uf_BdmwCKlg9Gdoy#* zivwo@6jY7BS?H_yjLg7D+4CRdV>WnSopoX6E>R1dsUt9MlFQuuRYX@qj*hJzj$7W- z;$|Gc6RoghMXQ*#w80$H#=^D011!2)$4`Tgp}FEKX9vC>>?u!Hq{27Or5_pBeFG4ZEdy z3T*iO@$tc{BiZM4ai!@4M{st9VN6CvqXszPacdKJw~3u8Ho5nW;@Zl>xvV1 zg}DGR;w)=4n>U8Q2_T_s)j2o!F2*Dxx(%R4Qrd>}zfG$#PbBhvP zGdi5R9FLg;j!7$`CVhog|6FPP{9h*z_4tcO(v43i6cgmJWgc=rlcC3Ez9M{J-=UyjgkeAHXes7}Dt z9B^V9G+Pbn$~w^oSBh&=?}&(AaezXm*3W?ncJGE)xX!r@S(2)X(GK>eI8mYeC4mqY zk0hYe1$N%YgcI-=hffewzzx-N@4jB#*Nc&i69}6<$okDXOF-CYqp05QA}?5@*qXSh z4GJ?TDv8J3&BFO!la2R!xg)A1$yc?Xi*Y)q&UolmnXiL~zlqi))1-xicQ5sW1E|XM zsF3l-J|5HRtpa4k_RIfXwqYb>Ti+&)9}2}dyCFLmYL?}wcsSX!&yt`40H?0|6_5`h zxZRxsqrQ~`^5W(5!^b}?=T`}LpvxZJY!O&rDI1CyO<0!PALlX}`ta115wVTZ9;8bgmtF&luo z0X7|_;+f=q&;$QB`~2@BzWMb2Ki41aZ0G%dtZ(n!pZ|T1pK4WM>KIv7D!v(a7;Qf9 zw_o|)e#dLf_A9>GZ>Xwt0Mo14P-8XiaoWD1jkt{h2=ACIIFX}$6c%lv8fFnulbngy zHnz7}pfsOJg2%T?QmvU*RKk_@jhj$?F*_Kv@EJu=2EF7U(Sqj_vPM9%Om$m5PAi!e z%_>Y7^5)cl3Z1H|Q+)j45>N_)$q1hS*2+J=sI1(q+*IKqthux@V0F4faSEMI)p&8) z=Rfb=X>ZQ`Us!%om-lg#z?|{Fxem{{`@iek_xFE4%kQsw{}%!L#6~{HpbO@$dyUW2{)2x9{d-ek#9RJS@P&2?t=^2H4@p;s_ zorc9q-@#!9lwmZ=VwwEnP;y=9MKfB(amBzO#-7hMw|9QAlKl!%tMfGpS$QEnQdHg}bw$rmS z_9yA^QAL=oVrccnIIO~)Ur7HC`cS3Y-DE%rVEHDwso^)+7ddtQ*0oix?}>jHZ1^7( z<&8{3j72?WcHB_3B;*BWctCzEH~2fk z4%b7QLF-fN;)`m{zK9Q;C9h!@!56{KI{)(!3gd&phA=?~L3O!C?-i}vw_I#N*kE@c zLk0glbUP2doI0hP4X*ar@7VkM4g>C6HrzL?xNrDzUwLw$_%g}5*?6DMAl}b3w4|vk zpp#6VyOwkwkQAPmmMDeuNeYisO5sPmWsRebbJ64dPU$cFn=SuE-HWvI(L2C7@?Z1O z=0<-1x4E@>FaLdxU-5{loh2ALp7u-PQ;h9cG&HbX)4c%ltQ$l78<=padTc4~4Ky|_ zW@$v?ik3}H(E7wKIA-gDMd^S?^2FURVBd5yEo;=IxYso|(GXqovPW^q8rD~ufb|eYNm0nBfYbm@eP2@_Z1e|jf?9~h z3BIIn`K|day zquqONoS+XIJX6kH!9z=~lnlbm{+S%M?$aOL|Efb<@n_44qv)FDZGM;=LdW;B8~9#z z_vV|D&f0OytRf!W71&uahqMmdNzLTYVe9h(TNp{NKVY8GEw6m0~>k!s; zbc=tE&=!xq$eN39atl~(sswr7A4N_rG#L?;Q9SHL9kI57IvcEQd7KWeu!qFjUr)L5 zDI+fnXdT3c_sTAK(;`MgqId)ZirA2bz368OXP9O%wO!Gf=KwY+^o${0MqM$Mi^M7w zK>W# z2Fjy>RV<1wp^KO^sWI#p-UbRf$?$>*&ZCBCvs~J8$ywpQ5>rYU*-0dU(cx#u6huAZ z+T0*3?HYF{n$LcA9KKCPG^wI-TAI4e?ckTp#5vC6%k4Fm@9eQ#uG9+g$>5K!k!iL< zk%##*H^hEC2Z`aZSrxS;FC}=#|7rupPJGzJhjA~vYMO_(^SD9Mvm1li0_&z0a?3s? zCqbhTgb&GCMH1A5=AK!aXr@!k_KX(|bQ+-S9zj~%BQYTAqIF06rl5?Kie$dCmSoAG z?U2agBa)*gNc37SyRbzrCt2Ggtu{$&c8K5=W(VZPU$p>{7LnaTJ8U#u`jnfvJ|}_4 z8~Cd*pRTHRJ6gL|`DL{bs&)wLqFDlX?)N73;vhJqK*qFIOr6D-DmuG4O9smh)%=3P z@ zffSdQtgSe@oS`0vXZlP0i4D;y2NK?s!nDlzw_0wu_`Be`|NDCkEM#gg1^~*}ov-@t z)-7}Pe|Qfx8z-GldH;L8xlz3Ty?uZG`?LIXgN07|&Grgk^zKCatd~-VDDr(vFJ@cD z2MqqzKTHf8gY>#&2&BWdbETv7#4jG9KcWOiMTANoG`qtClc5uejqKdln(KJbQ{fC4 zI^O#Hy{rXfgvzK_2344tSDL*1T(VyqUmk&~@Xj9xsaI>c%ix=RslOyUe>lkrEcoT} z1hDCTQK4rP-0G4%J*H}V6rbY->RUV2%4Dq@2ih@MEA8%NM5o>DEFvWlt?V3!Lzcm* zIRMah5l%n4k(^lx4Ej1wM{(C=LNG9R?Ii@$9<(}juY;rQ>^Q5$S9lo&dZG;y2yAHE zngDy;PRyb5kaubr(QJ(JwDz}F%>@9x2mFL{uSS=k1X=@S3ZJN_XIFg4gW{!@^Wwh` z1O5P_f-a}F*U8v+84T5#R}i<5RImDDdWnjS#_Xd*KlnuacaHG0P|jw&FwMy43dgD*(E}ebc`}W z9N;QaLNU*KNwM1}bZHL-egfraLdj6yEgkMzI_va@GAs|YfP-Wrf!qeKh@uD2=MHgmS`G6Nv$duf0`&W27 zM2Bk`sVo4D@%BY4Z_=Lz_wzEiQfXkCMaDjz;N55vxy=i)gg(PM)?8n=(zP8EhJO@Z zLr7K2r?7Y|R*`u0BqNJ&lL?^0RWZI_O81!p_AcVB#z;r!%9ot$ISr<}1Ku708bbf9 z+2-*!z!XD8>b|=Z%{Nys4|w;?OmUWov09|Q1v7>Gw6pyer>hj2NfKy>w*39Qwc!7n z-)#LKx>o3v4A7zN-w{ohveQC|Ot+3)p#pW*kHy#K+q0>hHasNEnrA7HkP=H^(k~ZjZZxMBD(FSLx zWlX7=j-+0*PyIcNNS9`KlRO?=Rl*<1nV)grEx8IhU`Y>INRd+`V3sz{C5XHh#5GEu z>9#r$K1+KsXPfo0GSlHtHoon}{b;Cq267EW@^x^^JWHZLH$f3$12?DLc$8ttEO_6l z1*g4aa0!pwHRB;>KX_DwHNM-8QKI~k1iaH8Fe1Ed0^AY#J=kpS1?Quf@@#JG1-CJs zt;5SER82-0!RFQ;bly4o*u=N(y`Xa&QGuO3bSOjpzWIo1XoXzIDg1LjB1csyn`}Xa ztq`lse`w+d#vuP`13w8u`EQ%1Hb61|aSID7#`%xi_>mfr|FVN$xIOt#+_+P;SmKU| zMwd=c0QIFK%xjn52RO2Nx>I`ZaI4?tt#F-cvP@SC$aV>>IpAxPzCL>RB_$&wl)AUM zNgp;IZaJT%7bOQ5h41Dw^uw}2rITeA3wF(QmJY`C>lpcNmrB6St;K%1Qkcq;@$GJ~ z-q^-e_9})3cJ(eWItzNcmJFDO-EE=ggVUr(g_$kG8q~PS&dsRFyTm(KWV7j{j_3}5 zYjfjdUs8x)C~ecEJ$U-`$)ojk2D;?|oe&zE+fJe~G=11{J|JgM;v+XVaRq_iVtg%w z)N`nBHOn(dE4Hu|g^$u8guhw#ojWwF!S}6c^>Zt?w#&cU24f{V<(ahcTaTsyVLEun z#eLiyijPXVyu5zX{0<{Sw^p+LN)|R6e(HMPIO23qU?i?4jS5)DfT83P9VXfUrSb=U*lRtEN{+Z@AvvAMRnQGK|66MyM03^oQIP3)uEdF_;u zC1(}vZsZ&vPjiS@%q7`zXxU;tAwWtZayUZKOY zGu(89d(h<0MV3UGc6JupwL1iHmUHQX9J2o`M5xC)rw{;oK!v}{P#&|&Qzl9pPDVo# zxk7~VB__%8A7b?kDEf60DIlso?V-6Tmy-H<{nv7oG>EQlH31a<9{KF9HW%9VT2I@!ttY(5uo>Ea7IL9{Vx#NG3QZwvPF+FQp@B&(N4~#qUSnI z28ejJnyX{qR!TN(E@yC#eCo&5UpjB$tO>a&O0;#YcS}ka@ezzRPw*M9b{O-{L`Dn} zDv{W}R7wn=_@jdvJ)DTf#+#6>F&o#XW3klg(-=`|-f%DUO$^99iZ9g`B4TS}b+CI_ z(g0l7ctn))$3BD82spAusf6z~9<^XqqFk^b^;!EZRa2_FRscMe{Tb49jHaP96(`+} zu=6~3v*5^wLj8cE9;t9B9{qfr9g2%)&Dp}JDPIA5Hfx!>IHK$04H!rjd}xz%SDtC@ zJ57!2p%;5R{CX`LMuTtkcC?w`0>{pn;uRzV2h^_k-wRtm?^&07)?zY4cY-9aw#<@( z1*<1{OI$_ZYy6ik!Dgeo66YGa*7ZCp4Xgb>;Hbq(!s|& zfSRrU+t}RM$m#!@k2bdM{Xcz{-(OPyH(ep7b6?F<|MA_RTHXxOWGzt&nj*$v()zrb z?n`T&>JH1(3g#0%-CWJ83B7mCG~f#!1KO2|wCxD|wY(B=`bSeOg=gI7zs_~JtR0O; z=(U3W1nO>BbbmEb{?SL20=O8xvMIHJz*{gm;{9stKp0BnaP~X~G$280hk3(|{aWa^ONFEJ(UE{Yk#Nd?D z0h!>8o)8P#4^aKIS)iIpWaK(Yyxm`~Z8ihf|61U9R@<|Yh8eL|=YrkBdI|dhtnKe6 zD~+vxgww${Je*<1E-K(s3+XAuvZx4F^YDj?k4z?=ei7Ru{48;U6c@=ymXN}A&I8=WDy zai$f{l-VuddxACGV9+?U2|OP;38!g_4wfZh+3>tv8f{<3w*tJ~))`1HA-3BX_%<*J zc5>ib^jT!)YJQ~h{K$ym^PY3x&8Ak;nuJ=Z(ruKdNB?+!D0i@i80KMoR{zqCVMhLZ z(JeheTDI~wL#feVZ8R#W$h_zrP{v9X#pidS*~i&^gW~I9Q-s_Kbwt8)P)V!qouhUw zxNN$MmmbLo9vlrMW4* z7cXm}fMdIkE5(wo(sF)3yIdk*gTgCEh^Smv+0e6crS82PzHeQzoh9D4#XTIYB91GK zONNxwqLGg*hr#jsfU%&$=3xS3y=46Oy0u=KS}(O$j<~C>#`1JLX5lg^J;-X}?Cf}v zgE%K$O-2ZG3mcM46Q#mxuDT*O{2n@%`h7n8dB9(Vto+iTTi!O1hW3oi18fsa-Do?J zF=NKIRb!D_a9MTQs#gc_Q`JCf*Df6fqHhY!nGr7iVN%jWjeG45E}{9{vNFcBPsF=P zfnB|pel&7dcSXwt>n&lEf;!8Y`8eylaJLm&vU?3vVA?c`rSCh;(0Jb#$JZZbfQjq7dgcPysr4*@dQn$ENX;Pi|HN!YATe~saWF}l&$*tGX8B|nZ?Gr zofS8WI)F-@>4|mfUc_Cyy*vK!enVyzwyBPr{7O z_dtwvN~KXVJLYcn6Sc2$Cm=b2kn6w~MS(te7)Vw@Km>`YxVQ@tT?Nf8YzS1vCzQJs zt{J^cms3S6y?1{4i+g?y6LQq0yBsxsR+V8Wgc0Nsgd>**E_@j=vScnmmDv>8jEYr|<;%cnglXqYxYtao$loNNX zSXA9Dy3C^y4g2aRVS>fmP{I%=3oryPAM^O3t;*3h1)C{Oo#uNsfeh!-IHr3^70W6h zM|ELwA4N&eHM3DuoL~pq(A;tTQ1hp+AbEqo89p-_%wV73249e-4OM7dK^^Cc?Wa#3 z)72WwtG1vhDqTnw`%(|0yb|zErB8FEJ9jGGF{SfL#i!Urlhx=AJ63~eo}zLaD%(@0 ze~@8s)bF@4HL3-hvU|AE@m85x0aW@c}i}cnVWC=(UAw~2!PUSRFP1|WcI_6YFT7o zDP(fiWkMrbW-4y3{8oRr**p>J@BH#M7>`o6jwdgKysy%A$f!-lg^!y(f(3Dup_;Bh zE|IG0b;LGP6M=V=R`&vgA(}V9$kPkGe(~Zv_KRJAQBFr&u#7pCRob+JjG`>xN z3%+~)3O9s)#f@+IKM%Hnh@xk%4Mj?6lx)ssD5QhP=>_g_S7u}gqDiOeaO!d>99gy= z_OHR@}7Gk|#`7&L@ ziJ?OgW|5UrGZV}?r8E_7&y7lH2Ks`UjI^)&%ETv znmq854>Wn?B|p*Rv6uXnCQod#+;Ye(-td-7mnjFM694E>(=``QM_sB^0|}%%N@##Z zJ!_m1-*n>PICwYt2mES5KfzlG=AXK4^!TaVFLqQ z_Uj~p&Wll?MFkqBMW-o+A{~$~W8jW{P0sXeibhB`GEuf{Ck|LwN%M$kk+W8ecZz4m z%XSkwWB1vV>2``bz}XK5dZ;%?eOMG%&ZE&O+FC`dL3b){orJ|*QH@VO1l zOIlWP&6ZanV>UD0GE+GDgiEBn%{a78^2fs)SDuj-DMp;d2v7 zk}|t^G;eFwuL5S5!ke3~GTu3lQ_5Yq3<(S_zG*AB<1^Z!&bI#?opp8|ZESs{3FsXE z|Bp7-*YozDo7<1>?LR-qZ?64kvx#<{o59mwI!a(J`=2-&|Mt(a>(n~of0K+)HppVL z3$sl!V1F-Bw>yfn40m$3fLweQk6_eM-Q5YT1jif4xC0%qflk&CKiDu+ua0Rq$nKKU zvoov!)*1wfxQNpqbTxYlGti}R^b9g&C++vs!7HdQxp~H3Bh9sFHjGS$VWXI<#PThl zrIHK}(CYI$M^A<8WNEE7vsKMt_OFATEp}BMqx*bP-IUtsvsnZza~KAty6pN+sXQ2y zZh-Zq_~92+3niq_tOf9uk4)^o0d*d&V{v72DbGwYJwCGF59CN9LU(Vn!q8@wV;2{OEbBrL>RdIXE}HI&PH zQ86y?SyHq)zsu(&0a4YmPQ@Fh;%JEWWH7|WFdjPTFy`8!)&{*o2LfDqc67^b21Fp2 zqkw=tqRKVGu{ZI+elxA!?-r@oLeEv}AY^*jAfnGs!oWq3?ikHsKKyM1AH>1)6lWOn zh;;`0NvDn@O%o^UwjP|`7HPn#9Rbcwk@89Y78HAhGdLe<#uXdV}iPp~6_EW1l<*uT$-g%ICCbTmjzavu{ zi@AAIqAq9$vMBGnKw6M~vghRbZc482PWJril?U@=Fv&Q`iQyP^!=;}+;Gs$S$wftzW#t(rZv2| zz8k#6pjX!ks=i_4L}9Nm&J|47uq`={or5C5)mXB(u}a5=$q|F)8oD<>pO_gN(6#Hv z-iNGGxy!k^6`{7gl<75 z`k&A8`zzo7UBLU@6c2pPm0Y?7BzJ7fk{1kNNv;JbZMpqM7ugv+ zd+QOYThjRLJ-cQ%M^@zLh{7QA89zL z7dBOG5KVhsH-Z49OMkj5uOblU2XixpAynP6;yav0(Ofh0H$J9Tz<~MoM>DL76CJ0X za`+(2V)*WP&>8D_z+n2SQ#4^8Ao4kUa=2XjNUnWNs}#yCOed^b#=)P|7 zj*=@3Me=7>nI|Cd?C}t`?;Op~1Z)19Kz@UR9A-p3hDJ(bY~29eM;h9bhs|Wbqsw>+ zsd;MxYcGsBd5!EH4IqG?iRKqzSDzw*v)I34T|X~_@LYcdL!4Q(Zk+6o70 zHchX3_|0IfMxMFo=M&NB=AEwdrma~NAjHd??oMmflIEML^g;jP-R45a8SdD(+`%`T z{RLy;VYUF5=7-ySCjH;Zgveb!l0sL*gdf9he+`x@c5A*Dr<27)GKZRX>?M}DahDuY zGQ#vGcE$Wf@v;?Cx+fEdAdv6g^oPS;`c{v7aX+T`VHdHuzNQZieys)9Nte#5IhEhu zyEo!PvBH0Q;HBS2f!?C zYAA-?XIdb=*|Pg4W1Ap34SM;_OD!lxn2S}Q&9z)h3r-U}{~8R;tm?vqydCCmHD!$) zqjDZH(lZ%KjU&j?u}wqJ^j|G7=;hedWZ5N``^Y?8R_8Xhd;Z7atNQx-`WEm~oUs#= z=r$lfmOHhHM`Lk_wzl+wI z(Jk(<(FW0l-G@C;ro6!(qZKmAPTVBpq(ooCFi&qbb)3#~dAgHv=xctz2DC6nK;Y9$ ztSIq34I|_rXDcpBQa;xV596i|$Li84_L${B&xzgUp$oWqf%iRM-ers2B(|GN}uy&J?HFJObL#@Jozk z>jD3L*z{uu;@B~Dsb8X;Fa%9%J%E3>Y-I|~ohoylVx(${RGaHWbzxjV_$HLCajX!J z$UDk_H5kz2##4qn=1Uo4#zJC^GIDI-Yym!k4@|Ew*yB?>DA(VM)AN%O$x%z(g-Gsf zGK1{1W*2W3kZHrP3d1K}DINJd^UUb?sq?Q~1!C13v$^rY$U#B)N>+>gte6BFjYKXr zwZ#33P2#H&J~FD~yX$l<3eyjoukC<$Cu|GRpRsku@k!D$MbyQ)(R8@C;!9_5^#C}E zMWo^QC;r@0=vGZF>rzn&Pa|U0LRm!c@y@xOkc)h`Ww~B&?YEYfpOK8dyZk$zqtjUf z$Q;k#J`NsJSalP=6K|n8CkXpNtA&;iWP3~}ALzG5io}6#U(e`PDITH$#8H~|8z(0< zsOk5B<@g|c`ttSj_M4wx9fsymMCo9=K5$&;*rG&)I=(q&IT7Fd@_ha7J%$aywx8^u z+@I$EulvnD{~t!k*6dbhzN%HV7{CoF z+}6Tv{8Sl6BUmx$xkj1USuj3X-w?qu+Cy>}vE(;3Fm;Mj3(cEc4O|Hu4JARN5kCAI z-V&7iVp_&z{&}U5&#&3d(wSrid08Yag~?wt$-e|t2~2wDHLDtSKsfpi5%)Z3@7^)E zN+~@5%SLUJzwBzMl22=4wK@+E6;j>LxwYS+vr8^~@+422A3unLwKAp>uVz6MocGdG zGP4h!O(HBfjz@zsR>F+v$3wDI@ZH)qgg-+^Vv=4FT^WAyEnb(jq69_nMPorC^%r5j zkzwPD(6uR~Y~Pk-Gr8PUWTcKu4D=8Dw=i!~VcYXdnhYd>P2M}*?~weyW>}-@o9!78 z_a=G&R=?Tne-^_|@S{V3%v=ArH@EWZ|D)}V`}O~G{A4{EB;y2E#JGKy^u~PB;aj0e zdf2de)r72|yes#B(UdI%7c1cSTn526LT$m&U zd>|Ph@kgR>#a7`~X!6~mO1$W*;A(X3wQ2$4D|!7I4BU1NC2cq11F}Wyf-QTI*iwgE z<(>%|K_At2&Vu5s1depTxF$M8sD$14baIYj)srOaL?f~cBUKO`qQS}!u=s{ANRv`> zH(1F+#~m<1R^@2PeXT;XUFV}b9LPIYe&`qqn8Uqmp{K@jUUFL)>^tJbSj34jpUN3m z(WEUy=#`Mq^|G~ef`__eUne*&ErM=qOaX2FSlaHDGOEn6s*tWLh`Cl|)kU#u8&KXi zhvWha+l<}A0-9X9&i4h>Rn>EH-vtn>>&lMJOYcIIvTBLSrfqwbCkZwXZqsnKLse4w zMZOq@=0{1DuGB}=iu|+Z_CO*_bK-xkZ)|M)>;K03*3Q=b`u{n8 ze`Wjs-i>EW53k|k=J@=|mhr{_9bRojC~;EgIU9B2P3dDk^jP4B7hCZDfO_mVpZRrf zk*f|&&gZWV-s}d~Yp^3eyn*dr&}=jt>y}jQY%;{lgIT+qc0~B%0AKL20aGR#_Z-7u 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 Date: Wed, 16 May 2018 12:54:04 +0100 Subject: [PATCH 107/214] Update mailpile with efail fixes --- src/freedombone-app-mailpile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-mailpile b/src/freedombone-app-mailpile index a82bea25..c384eecd 100755 --- a/src/freedombone-app-mailpile +++ b/src/freedombone-app-mailpile @@ -35,7 +35,7 @@ MAILPILE_DOMAIN_NAME= MAILPILE_CODE= MAILPILE_ONION_PORT=8103 MAILPILE_REPO="https://github.com/mailpile/Mailpile" -MAILPILE_COMMIT='3f6ab53de90f85bca8c52e5511e78cd7aca5ef1f' +MAILPILE_COMMIT='4f28f1bb55b3b9985f22ab6372d539b1087482dd' MAILPILE_PORT=33411 mailpile_variables=(MAILPILE_REPO From 9f999b6887d7e3c891462b9209ae357a077d90f0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 13:52:23 +0100 Subject: [PATCH 108/214] Functions for adding and removing snap packages --- src/freedombone-app-rocketchat | 5 ++- src/freedombone-utils-snap | 60 ++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) create mode 100755 src/freedombone-utils-snap diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat index 3aaad292..66cbc458 100755 --- a/src/freedombone-app-rocketchat +++ b/src/freedombone-app-rocketchat @@ -238,12 +238,11 @@ function remove_rocketchat { remove_ddns_domain "$ROCKETCHAT_DOMAIN_NAME" - snap remove rocketchat-server + remove_snap rocketchat-server } function install_rocketchat { - apt-get -qy install snapd - snap install rocketchat-server + install_snap rocketchat-server install_nodejs rocketchat if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then diff --git a/src/freedombone-utils-snap b/src/freedombone-utils-snap new file mode 100755 index 00000000..282cd836 --- /dev/null +++ b/src/freedombone-utils-snap @@ -0,0 +1,60 @@ +#!/bin/bash +# _____ _ _ +# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ +# | __| _| -_| -_| . | . | | . | . | | -_| +# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| +# +# Freedom in the Cloud +# +# Handling installation of snap packages +# +# License +# ======= +# +# Copyright (C) 2018 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +function install_snap { + snap_package="$1" + + if [ ! "$snap_package" ]; then + return + fi + no_of_snaps=$(df | grep -c "/snap/core/") + if [ "$no_of_snaps" -eq 0 ]; then + apt-get -yq install snapd + fi + if ! snap install "$snap_package"; then + echo $"Failed to install snap package $snap_package" + exit 46382854 + fi +} + +function remove_snap { + snap_package="$1" + + if [ ! "$snap_package" ]; then + return + fi + + snap remove "$snap_package" + + no_of_snaps=$(df | grep -c "/snap/") + if [ "$no_of_snaps" -eq 1 ]; then + apt-get -yq remove snapd + fi +} + +# NOTE: deliberately no exit 0 From bb67f0ac37083339268afc789bf55ded1c817ef1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 13:59:41 +0100 Subject: [PATCH 109/214] Exit instead of return if no package name is given --- src/freedombone-utils-snap | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/freedombone-utils-snap b/src/freedombone-utils-snap index 282cd836..be282cef 100755 --- a/src/freedombone-utils-snap +++ b/src/freedombone-utils-snap @@ -30,7 +30,8 @@ function install_snap { snap_package="$1" if [ ! "$snap_package" ]; then - return + echo $'No snap package was specified' + exit 257625472 fi no_of_snaps=$(df | grep -c "/snap/core/") if [ "$no_of_snaps" -eq 0 ]; then @@ -46,7 +47,8 @@ function remove_snap { snap_package="$1" if [ ! "$snap_package" ]; then - return + echo $'No snap package was specified' + exit 45332485421 fi snap remove "$snap_package" From 387851ee1b62d43fc159f696211b9b47f6dbbe95 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 14:26:46 +0100 Subject: [PATCH 110/214] Rocketchat doesn't work on ARM, probably because of meteor and/or mongodb --- src/freedombone-app-rocketchat | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat index 66cbc458..7a194434 100755 --- a/src/freedombone-app-rocketchat +++ b/src/freedombone-app-rocketchat @@ -29,6 +29,7 @@ VARIANTS='full full-vim' IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=1 +NOT_ON_ARM=1 ROCKETCHAT_DOMAIN_NAME= ROCKETCHAT_CODE= From 90c5a41d4702f58f4a70725341bf0bef1944da7b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 14:32:16 +0100 Subject: [PATCH 111/214] Dialog height --- src/freedombone-utils-interactive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-interactive b/src/freedombone-utils-interactive index 9e5a562f..5574d19b 100755 --- a/src/freedombone-utils-interactive +++ b/src/freedombone-utils-interactive @@ -136,7 +136,7 @@ function interactive_site_details { else dialog --backtitle "$SITE_BACKTITLE" \ --title "$SITE_CONFIG_TITLE" \ - --form "$SITE_FORM_TEXT" 11 55 3 \ + --form "$SITE_FORM_TEXT" 13 55 3 \ $"Domain:" 1 1 "$(grep "${site_name_upper}_DOMAIN_NAME" temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ 2> "$data" fi From eead93e78e6ac3c65b1833f66b0dd0192c87c2b6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 14:33:49 +0100 Subject: [PATCH 112/214] Generic freedns match --- src/freedombone-utils-interactive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-interactive b/src/freedombone-utils-interactive index 5574d19b..fb1a1e9e 100755 --- a/src/freedombone-utils-interactive +++ b/src/freedombone-utils-interactive @@ -126,7 +126,7 @@ function interactive_site_details { while [ ! $SITE_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "freedns" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle "$SITE_BACKTITLE" \ --title "$SITE_CONFIG_TITLE" \ --form "$SITE_FORM_TEXT" 14 55 3 \ From 71cc89c713ecbdb95ea9b19d6eb153caa520223d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 14:46:37 +0100 Subject: [PATCH 113/214] Disable https content security for rocket chat Otherwise it won't load --- src/freedombone-app-rocketchat | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat index 7a194434..cf33e809 100755 --- a/src/freedombone-app-rocketchat +++ b/src/freedombone-app-rocketchat @@ -342,6 +342,9 @@ function install_rocketchat { echo ' }'; echo '}'; } >> "$rocketchat_nginx_site" + # If content security is enabled then the https site won't load + sed -i 's|add_header Content-Security-Policy|#add_header Content-Security-Policy|g' "$rocketchat_nginx_site" + create_site_certificate "$ROCKETCHAT_DOMAIN_NAME" 'yes' nginx_ensite "$ROCKETCHAT_DOMAIN_NAME" From 465a2fb5f02e879e0696e427afa89c88bc40d7b1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 15:51:32 +0100 Subject: [PATCH 114/214] Documentation for rocketchat --- doc/EN/app_bdsmail.org | 2 +- doc/EN/app_rocketchat.org | 28 +++ doc/EN/apps.org | 4 + website/EN/app_bdsmail.html | 160 ++++++++++--- website/EN/app_rocketchat.html | 305 ++++++++++++++++++++++++ website/EN/apps.html | 423 ++++++++++++++++++++------------- 6 files changed, 726 insertions(+), 196 deletions(-) create mode 100644 doc/EN/app_rocketchat.org create mode 100644 website/EN/app_rocketchat.html diff --git a/doc/EN/app_bdsmail.org b/doc/EN/app_bdsmail.org index 93af81e5..e66b6325 100644 --- a/doc/EN/app_bdsmail.org +++ b/doc/EN/app_bdsmail.org @@ -1,7 +1,7 @@ #+TITLE: #+AUTHOR: Bob Mottram #+EMAIL: bob@freedombone.net -#+KEYWORDS: freedombone, dlna +#+KEYWORDS: freedombone, bdsmail #+DESCRIPTION: How to use BDS Mail #+OPTIONS: ^:nil toc:nil #+HTML_HEAD: diff --git a/doc/EN/app_rocketchat.org b/doc/EN/app_rocketchat.org new file mode 100644 index 00000000..8e5ae07c --- /dev/null +++ b/doc/EN/app_rocketchat.org @@ -0,0 +1,28 @@ +#+TITLE: +#+AUTHOR: Bob Mottram +#+EMAIL: bob@freedombone.net +#+KEYWORDS: freedombone, rocketchat +#+DESCRIPTION: How to use Rocketchat +#+OPTIONS: ^:nil toc:nil +#+HTML_HEAD: + +#+attr_html: :width 80% :height 10% :align center +[[file:images/logo.png]] + +* Rocketchat + +Rocketchat is a chat system which is mainly suited for private chat with a few family and friends. It has some integration capability with other systems, but isn't federated as [[./app_xmpp.html][XMPP]] or [[./app_matrix.html][Matrix]] are. If you need high security then XMPP with Conversations is probably still the best option. + +This system is only available for X86 architecture, so won't install on ARM boards but probably will on an old laptop. + +* Installation + +ssh into the system with: + +#+BEGIN_SRC bash +ssh myusername@mydomain.com -p 2222 +#+END_SRC + +Select *Administrator controls* then *Add/Remove Apps* then *rocketchat*. Enter your domain name and freedns code if you're using freedns. + +Navigate to your rocketchat domain and register an account. The first registration becomes the administrator. It's a good idea within the Rocketchat administration settings under *Accounts* to select *Registration* and *Manually Approve New Users*, then save. This will prevent millions of random internet users from creating accounts on your server. diff --git a/doc/EN/apps.org b/doc/EN/apps.org index 46cf9460..66306e2f 100644 --- a/doc/EN/apps.org +++ b/doc/EN/apps.org @@ -155,6 +155,10 @@ A shell based XMPP client which you can run on the Freedombone server via ssh. A browser based user interface for the Matrix federated communications system, including WebRTC audio and video chat. [[./app_riot.html][How to use it]] +* Rocketchat +A non-federated chat server (x86 systems only). + +[[./app_rocketchat.html][How to use it]] * SearX A metasearch engine for customised and private web searches. diff --git a/website/EN/app_bdsmail.html b/website/EN/app_bdsmail.html index 0a1a760d..8edc2aa8 100644 --- a/website/EN/app_bdsmail.html +++ b/website/EN/app_bdsmail.html @@ -3,26 +3,33 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - - - - - - + + + + + + - + @@ -97,7 +189,7 @@ @licstart The following is the entire license notice for the JavaScript code in this tag. -Copyright (C) 2012-2013 Free Software Foundation, Inc. +Copyright (C) 2012-2017 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modify it under the terms of the GNU @@ -144,16 +236,15 @@ for the JavaScript code in this tag.

-

logo.png

-
-

BDS Mail

-
+
+

BDS Mail

+

BDS Mail (aka "Brain Dead Simple Mail") is an optional addition to the existing email server which comes installed as default. It creates an extra folder within the Mutt client which allows you to send and receive email using i2p as the transport layer. This solves the problem of being blocked by dubious systems and also the problem of user friendly email encryption. If you're behind a hostile firewall which you don't control and which blocks all ports, this system is still likely to work. You can use GPG as an additional encryption layer if you prefer, but it's not strictly necessary because you already have the i2p public key system to ensure end-to-end security.

@@ -164,15 +255,14 @@ It's unlikely that many people will use this. If it's hard to persuade anyone to
-
-

Installation

-
+
+

Installation

+

ssh into the system with:

-
ssh myusername@mydomain.com -p 2222
 
diff --git a/website/EN/app_rocketchat.html b/website/EN/app_rocketchat.html new file mode 100644 index 00000000..72b96d44 --- /dev/null +++ b/website/EN/app_rocketchat.html @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+

logo.png +

+
+ +
+

Rocketchat

+
+

+Rocketchat is a chat system which is mainly suited for private chat with a few family and friends. It has some integration capability with other systems, but isn't federated as XMPP or Matrix are. If you need high security then XMPP with Conversations is probably still the best option. +

+ +

+This system is only available for X86 architecture, so won't install on ARM boards but probably will on an old laptop. +

+
+
+ +
+

Installation

+
+

+ssh into the system with: +

+ +
+
ssh myusername@mydomain.com -p 2222
+
+
+ +

+Select Administrator controls then Add/Remove Apps then rocketchat. Enter your domain name and freedns code if you're using freedns. +

+ +

+Navigate to your rocketchat domain and register an account. The first registration becomes the administrator. It's a good idea within the Rocketchat administration settings under Accounts to select Registration and Manually Approve New Users, then save. This will prevent millions of random internet users from creating accounts on your server. +

+
+
+
+
+ + diff --git a/website/EN/apps.html b/website/EN/apps.html index ee24ddd0..96da0862 100644 --- a/website/EN/apps.html +++ b/website/EN/apps.html @@ -3,26 +3,33 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - - - - - - + + + + + + - + @@ -97,7 +189,7 @@ @licstart The following is the entire license notice for the JavaScript code in this tag. -Copyright (C) 2012-2013 Free Software Foundation, Inc. +Copyright (C) 2012-2017 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modify it under the terms of the GNU @@ -144,7 +236,6 @@ for the JavaScript code in this tag.
-

logo.png @@ -167,9 +258,9 @@ The base install of the system just contains an email server and Mutt client, bu

-
-

Akaunting

-
+
+

Akaunting

+

A web based accounts system for small businesses or freelancers.

@@ -179,9 +270,9 @@ A web based accounts system for small businesses or freelancers.

-
-

BDS Mail

-
+
+

BDS Mail

+

It's like ordinary email, but with i2p as the transport mechanism.

@@ -191,9 +282,9 @@ It's like ordinary email, but with i

-
-

Bludit

-
+
+

Bludit

+

This is a simple databaseless blogging system which uses markdown files. It should run well on any hardware.

@@ -203,9 +294,9 @@ This is a simple databaseless blogging system which uses markdown files. It shou

-
-

CryptPad

-
+
+

CryptPad

+

Collaborate on editing documents, presentations and source code, or vote on things. All with a good level of security.

@@ -215,9 +306,9 @@ Collaborate on editing documents, presentations and source code, or vote on thin

-
-

DLNA

-
+
+

DLNA

+

Enables you to use the system as a music server which any DLNA compatible devices can connect to within your home network.

@@ -227,9 +318,9 @@ Enables you to use the system as a music server which any DLNA compatible device

-
-

Dokuwiki

-
+
+

Dokuwiki

+

A databaseless wiki system.

@@ -239,9 +330,9 @@ A databaseless wiki system.

-
-

Edith

-
+
+

Edith

+

Extremely simple and distraction-free notes system.

@@ -251,9 +342,9 @@ Extremely simple and distraction-free notes system.

-
-

Emacs

-
+
+

Emacs

+

If you use the Mutt client to read your email then this will set it up to use emacs for composing new mail.

@@ -263,17 +354,17 @@ If you use the Mutt client to read your email then this will set it up to use em

-
-

Email Server

-
+
+

Email Server

+

Since many apps require email registration an email server is installed by default. You can find advice on using the email system here.

-
-

Etherpad

-
+
+

Etherpad

+

Collaborate on creating documents in real time. Maybe you're planning a holiday with other family members or creating documentation for a Free Software project along with other volunteers. Etherpad is hard to beat for simplicity and speed. Only users of the system will be able to access it.

@@ -283,9 +374,9 @@ Collaborate on creating documents in real time. Maybe you're planning a holiday

-
-

Federated wiki

-
+
+

Federated wiki

+

A new approach to creating wiki content.

@@ -295,9 +386,9 @@ A new approach to creating wiki content.

-
-

Friendica

-
+
+

Friendica

+

Federated social network system.

@@ -307,9 +398,9 @@ Federated social network system.

-
-

GNU Social

-
+
+

GNU Social

+

Federated social network based on the OStatus protocol. You can "remote follow" other users within the GNU Social federation.

@@ -319,9 +410,9 @@ Federated social network based on the OStatus protocol. You can "remote follo

-
-

Gogs

-
+
+

Gogs

+

Lightweight git project hosting system. You can mirror projects from Github, or if Github turns evil then just host your own projects while retaining the familiar fork-and-pull workflow. If you can use Github then you can also use Gogs.

@@ -331,9 +422,9 @@ Lightweight git project hosting system. You can mirror projects from Github, or

-
-

HTMLy

-
+
+

HTMLy

+

Databaseless blogging system. Quite simple and with a markdown-like format.

@@ -343,9 +434,9 @@ Databaseless blogging system. Quite simple and with a markdown-like format.

-
-

Hubzilla

-
+
+

Hubzilla

+

Web publishing platform with social network like features and good privacy controls so that it's possible to specify who can see which content. Includes photo albums, calendar, wiki and file storage.

@@ -355,9 +446,9 @@ Web publishing platform with social network like features and good privacy contr

-
-

Icecast media stream

-
+
+

Icecast media stream

+

Make your own internet radio station.

@@ -367,9 +458,9 @@ Make your own internet radio station.

-
-

IRC Server (ngirc)

-
+
+

IRC Server (ngirc)

+

Run your own IRC chat channel which can be secured with a password and accessible via an onion address. A bouncer is included so that you can receive messages sent while you were offline. Works with Hexchat and other popular clients.

@@ -379,18 +470,18 @@ Run your own IRC chat channel which can be secured with a password and accessibl

-
-

Jitsi Meet

-
+
+

Jitsi Meet

+

Experimental WebRTC video conferencing system, similar to Google Hangouts. This may not be fully functional, but is hoped to be in the near future.

-
-

KanBoard

-
+
+

KanBoard

+

A simple kanban system for managing projects or TODO lists.

@@ -400,9 +491,9 @@ A simple kanban system for managing projects or TODO lists.

-
-

Key Server

-
+
+

Key Server

+

An OpenPGP key server for storing and retrieving GPG public keys.

@@ -412,9 +503,9 @@ An OpenPGP key server for storing and retrieving GPG public keys.

-
-

Koel

-
+
+

Koel

+

Access your music collection from any internet connected device.

@@ -424,9 +515,9 @@ Access your music collection from any internet connected device.

-
-

Lychee

-
+
+

Lychee

+

Make your photo albums available on the web.

@@ -436,9 +527,9 @@ Make your photo albums available on the web.

-
-

Mailpile

-
+
+

Mailpile

+

Modern email client which supports GPG encryption.

@@ -448,9 +539,9 @@ Modern email client which supports GPG encryption.

-
-

Matrix

-
+
+

Matrix

+

Multi-user chat with some security and moderation controls.

@@ -460,9 +551,9 @@ Multi-user chat with some security and moderation controls.

-
-

Mediagoblin

-
+
+

Mediagoblin

+

Publicly host video and audio files so that you don't need to use YouTube/Vimeo/etc.

@@ -472,9 +563,9 @@ Publicly host video and audio files so that you don't need to use YouTube/Vimeo/

-
-

Mumble

-
+
+

Mumble

+

The popular VoIP and text chat system. Say goodbye to old-fashioned telephony conferences with silly dial codes. Also works well on mobile.

@@ -484,9 +575,9 @@ The popular VoIP and text chat system. Say goodbye to old-fashioned telephony co

-
-

NextCloud

-
+
+

NextCloud

+

Store files on your server and sync them with laptops or mobile devices. Includes many plugins including videoconferencing and collaborative document editing.

@@ -496,9 +587,9 @@ Store files on your server and sync them with laptops or mobile devices. Include

-
-

PeerTube

-
+
+

PeerTube

+

Peer-to-peer video hosting. Similar to Mediagoblin, but the P2P aspect better enables the streaming load to be shared across servers.

@@ -508,9 +599,9 @@ Peer-to-peer video hosting. Similar to Mediagoblin, but the P2P aspect better en

-
-

PI-Hole

-
+
+

PI-Hole

+

The black hole for web adverts. Block adverts at the domain name level within your local network. It can significantly reduce bandwidth, speed up page load times and protect your systems from being tracked by spyware.

@@ -520,9 +611,9 @@ The black hole for web adverts. Block adverts at the domain name level within yo

-
-

Pleroma

-
+
+

Pleroma

+

Fediverse instance which is compatible with GNU Social and Mastodon, and suited for systems without much RAM or CPU resource.

@@ -532,9 +623,9 @@ Fediverse instance which is compatible with GNU Social and Mastodon, and suited

-
-

PostActiv

-
+
+

PostActiv

+

An alternative federated social networking system compatible with GNU Social, Pleroma and Mastodon. It includes some optimisations and fixes currently not available within the main GNU Social project.

@@ -544,9 +635,9 @@ An alternative federated social networking system compatible with GNU Social, Pl

-
-

PrivateBin

-
+
+

PrivateBin

+

A pastebin where the server has zero knowledge of the content being pasted.

@@ -556,9 +647,9 @@ A pastebin where the server has zero knowledge of the content being pasted.

-
-

Profanity

-
+
+

Profanity

+

A shell based XMPP client which you can run on the Freedombone server via ssh.

@@ -568,9 +659,9 @@ A shell based XMPP client which you can run on the Freedombone server via ssh.

-
-

Riot Web

-
+
+

Riot Web

+

A browser based user interface for the Matrix federated communications system, including WebRTC audio and video chat.

@@ -580,9 +671,21 @@ A browser based user interface for the Matrix federated communications system, i

-
-

SearX

-
+
+

Rocketchat

+
+

+A non-federated chat server (x86 systems only). +

+ +

+How to use it +

+
+
+
+

SearX

+

A metasearch engine for customised and private web searches.

@@ -592,9 +695,9 @@ A metasearch engine for customised and private web searches.

-
-

tt-rss

-
+
+

tt-rss

+

Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via an onion address. Have "the right to read" without the Surveillance State knowing what you're reading. Also available with a user interface suitable for viewing on mobile devices via a browser such as OrFox.

@@ -604,9 +707,9 @@ Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via a

-
-

Syncthing

-
+
+

Syncthing

+

Possibly the best way to synchronise files across all of your devices. Once it has been set up it "just works" with no user intervention needed.

@@ -616,9 +719,9 @@ Possibly the best way to synchronise files across all of your devices. Once it h

-
-

Tahoe-LAFS

-
+
+

Tahoe-LAFS

+

Robust and encrypted storage of files on one or more server.

@@ -628,9 +731,9 @@ Robust and encrypted storage of files on one or more server.

-
-

Tox

-
+
+

Tox

+

Client and bootstrap node for the Tox chat/VoIP system.

@@ -640,9 +743,9 @@ Client and bootstrap node for the Tox chat/VoIP system.

-
-

Turtl

-
+
+

Turtl

+

A system for privately creating and sharing notes and images, similar to Evernote but without the spying.

@@ -652,18 +755,18 @@ A system for privately creating and sharing notes and images, similar to Evernot

-
-

Vim

-
+
+

Vim

+

If you use the Mutt client to read your email then this will set it up to use vim for composing new mail.

-
-

Virtual Private Network (VPN)

-
+
+

Virtual Private Network (VPN)

+

Set up a VPN on your server so that you can bypass local internet censorship.

@@ -673,9 +776,9 @@ Set up a VPN on your server so that you can bypass local internet censorship.

-
-

XMPP

-
+
+

XMPP

+

Chat server which can be used together with client such as Gajim or Conversations to provide end-to-end content security and also onion routed metadata security. Includes advanced features such as client state notification to save battery power on your mobile devices, support for seamless roaming between networks and message carbons so that you can receive the same messages while being simultaneously logged in to your account on more than one device.

From 63914893fe7a5629ecf174b22fadc5e0e58a224f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 16:14:28 +0100 Subject: [PATCH 115/214] Rocketchat has no admin settings --- src/freedombone-app-rocketchat | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat index cf33e809..ddd2fa14 100755 --- a/src/freedombone-app-rocketchat +++ b/src/freedombone-app-rocketchat @@ -92,27 +92,6 @@ function reconfigure_rocketchat { echo -n '' } -function configure_interactive_rocketchat { - W=(1 $"Option 1" - 2 $"Option 2") - - while true - do - # shellcheck disable=SC2068 - selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"rocketchat" --menu $"Choose an operation, or ESC for main menu:" 14 70 3 "${W[@]}" 3>&2 2>&1 1>&3) - - if [ ! "$selection" ]; then - break - fi - case $selection in - 1) # call some function for option 1 - ;; - 2) # call some function for option 2 - ;; - esac - done -} - function upgrade_rocketchat { echo -n '' } From 3eecbbc734ab46c97fb05312db515855bef41f97 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 16 May 2018 17:44:00 +0100 Subject: [PATCH 116/214] Add libtool package for inadyn configure --- src/freedombone-image-customise | 2 +- src/freedombone-utils-web | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 1adaa05e..e9208d5f 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1657,7 +1657,7 @@ image_install_inadyn() { mkdir -p "$rootdir/root/build" fi chroot "$rootdir" apt-get -yq install build-essential curl libgnutls28-dev automake1.11 libconfuse-dev - chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config + chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config libtool if [ -d /repos/inadyn ]; then mkdir "$rootdir/root/build/inadyn" diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 76080651..81a70e2a 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -513,7 +513,7 @@ function install_dynamicdns { # https version 1.99.8 apt-get -yq install build-essential curl libgnutls28-dev automake1.11 - apt-get -yq install gnutls-dev libconfuse-dev pkg-config + apt-get -yq install gnutls-dev libconfuse-dev pkg-config libtool if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then From a15a45310dabf01a42af07dfe55aaecd0b52f81c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 17 May 2018 15:04:55 +0100 Subject: [PATCH 117/214] Include screen reader in mesh client --- src/freedombone-image-customise | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index e9208d5f..fa75bdef 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1045,11 +1045,13 @@ mesh_client_startup_applications() { echo 'dconf write /org/mate/power-manager/lock-hibernate false'; echo 'dconf write /org/mate/power-manager/lock-keyring-hibernate false'; echo 'dconf write /org/mate/desktop/peripherals/touchpad/scroll-method 2'; + echo '#dconf write /org/mate/desktop.a11y.applications/screen-reader-enabled true'; + echo '#dconf write /org/mate/interface/accessibility true'; + echo '#dconf write /org/mate/applications-at-visual/startup true'; echo "touch /home/$MY_USERNAME/.dbus/Xdbus"; echo "chmod 600 /home/$MY_USERNAME/.dbus/Xdbus"; echo "env | grep DBUS_SESSION_BUS_ADDRESS > /home/$MY_USERNAME/.dbus/Xdbus"; echo "echo 'export DBUS_SESSION_BUS_ADDRESS' >> /home/$MY_USERNAME/.dbus/Xdbus"; - echo ''; echo "amixer set 'Master' unmute"; echo "amixer set 'Master' 50%"; @@ -1163,6 +1165,9 @@ configure_user_interface() { # for gtk dialog entry chroot "$rootdir" apt-get -yq install zenity + # accessibility + chroot "$rootdir" apt-get -yq install orca festival + # Produce a text file on the desktop listing users on the mesh cat < "$rootdir/usr/bin/list-tox-users" #!/bin/bash From 6049101caa7d4498420af739fc1df02fc4452ed9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 17 May 2018 15:14:44 +0100 Subject: [PATCH 118/214] node version --- src/freedombone-utils-nodejs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-nodejs b/src/freedombone-utils-nodejs index 09a63261..c4910bba 100755 --- a/src/freedombone-utils-nodejs +++ b/src/freedombone-utils-nodejs @@ -33,7 +33,7 @@ VARIANTS='mesh' # change these versions at your peril. Things will often crash if you don't # have specifically the correct versions -NODEJS_VERSION='8.11.1' +NODEJS_VERSION='8.11.2' NODEJS_N_VERSION='2.1.7' NPM_VERSION='5.8.0' From cb2b607eb408a8fb05b46ca8dfc243cbcef9b2a0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 17 May 2018 16:07:32 +0100 Subject: [PATCH 119/214] gnome-orca --- src/freedombone-image-customise | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index fa75bdef..769655d0 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1166,7 +1166,8 @@ configure_user_interface() { chroot "$rootdir" apt-get -yq install zenity # accessibility - chroot "$rootdir" apt-get -yq install orca festival + chroot "$rootdir" apt-get -yq -t stretch-backports install gnome-orca + chroot "$rootdir" apt-get -yq install festival # Produce a text file on the desktop listing users on the mesh cat < "$rootdir/usr/bin/list-tox-users" From 5f01c28c7d918d96a55c8db39785f53d6789db2f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 17 May 2018 16:52:08 +0100 Subject: [PATCH 120/214] Abandon readers --- src/freedombone-image-customise | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 769655d0..56fe1fc7 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1166,8 +1166,8 @@ configure_user_interface() { chroot "$rootdir" apt-get -yq install zenity # accessibility - chroot "$rootdir" apt-get -yq -t stretch-backports install gnome-orca - chroot "$rootdir" apt-get -yq install festival + #chroot "$rootdir" apt-get -yq -t stretch-backports install gnome-orca + #chroot "$rootdir" apt-get -yq install festival # Produce a text file on the desktop listing users on the mesh cat < "$rootdir/usr/bin/list-tox-users" From 2f9f5be961054240f9d18b5f1dd9665de00e7d79 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 17 May 2018 18:05:24 +0100 Subject: [PATCH 121/214] More explicit instructions on copying image --- src/freedombone-image | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/freedombone-image b/src/freedombone-image index fb202a3e..968501d6 100755 --- a/src/freedombone-image +++ b/src/freedombone-image @@ -697,7 +697,7 @@ Image was created. " fi -ls -lh ${PROJECT_NAME}*.img ${PROJECT_NAME}*.sig ${PROJECT_NAME}*.xz ${PROJECT_NAME}*.vdi ${PROJECT_NAME}*.qcow2 +#ls -lh ${PROJECT_NAME}*.img ${PROJECT_NAME}*.sig ${PROJECT_NAME}*.xz ${PROJECT_NAME}*.vdi ${PROJECT_NAME}*.qcow2 # Remove the mesh script after use if [[ $VARIANT == "mesh"* ]]; then @@ -710,16 +710,17 @@ Password: $PASSWORD" > "${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt" chmod 600 "${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt" if [[ $IMAGE_TYPE != "qemu"* ]]; then + IMAGE_FILENAME=$(find "${CURR_DIR}" -name "*.img" | head -n 1 | awk -F '/' '{print $2}') + echo '' - if [[ $VARIANT != 'meshclient' && $VARIANT != 'meshusb' ]]; then - echo $'You can copy the image to a microSD card with:' - else - echo $'You can copy the image to a USB drive with:' - fi + echo $'To compress:' echo '' - echo " unxz -k ${PROJECT_NAME}*.img.xz" - echo ' sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8' - echo " sudo dd bs=32M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync,sync,noerror" + echo " xz --no-warn --verbose --keep --threads=0 -3 ${IMAGE_FILENAME}" + echo '' + echo 'To copy to microSD, USB drive or SSD' + echo '' + echo ' sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8' + echo " sudo dd bs=32M if=${IMAGE_FILENAME} of=/dev/sdX conv=fdatasync,sync,noerror" echo '' fi From 1c817365cad6ed01b7cd24822ec5f5c39aab88c9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 17 May 2018 18:49:56 +0100 Subject: [PATCH 122/214] Lemaker Banana Pro build support --- doc/EN/boards.org | 1 + man/freedombone-image.1.gz | Bin 4527 -> 4535 bytes src/freedombone-image-hardware-setup | 4 ++++ src/freedombone-image-make | 2 +- src/freedombone-image-makefile | 11 +++++++++++ website/EN/boards.html | 9 +++++---- 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/doc/EN/boards.org b/doc/EN/boards.org index 3d57109e..bd0ad696 100644 --- a/doc/EN/boards.org +++ b/doc/EN/boards.org @@ -20,6 +20,7 @@ The following ARM boards are supported by the build system. If your board isn't - a20-olinuxino-lime - a20-olinuxino-lime2 - a20-olinuxino-micro + - [[http://www.lemaker.org/product-bananapro-index.html][Lemaker Banana Pro]] The latest image builds can be [[./downloads/current][found here]]. diff --git a/man/freedombone-image.1.gz b/man/freedombone-image.1.gz index c70a24e35756239c6835c9f55b44f6ad50b92826..261975ab097b475663b146e7dc8b0bb0deb4aa1f 100644 GIT binary patch literal 4535 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 literal 4527 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 N`akdkkrkdR008b7v?l-n diff --git a/src/freedombone-image-hardware-setup b/src/freedombone-image-hardware-setup index ea297faa..7c109122 100755 --- a/src/freedombone-image-hardware-setup +++ b/src/freedombone-image-hardware-setup @@ -258,6 +258,10 @@ case "$MACHINE" in a20_setup_boot sun7i-a20-olinuxino-micro.dtb "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; + banana-pro) + a20_setup_boot sun7i-a20-bananapro.dtb "$EXTERNAL_DRIVE" + enable_serial_console ttyS0 + ;; cubieboard2) a20_setup_boot sun7i-a20-cubieboard2.dtb "$EXTERNAL_DRIVE" enable_serial_console ttyS0 diff --git a/src/freedombone-image-make b/src/freedombone-image-make index e5b2d416..a78ffc90 100755 --- a/src/freedombone-image-make +++ b/src/freedombone-image-make @@ -119,7 +119,7 @@ case "$MACHINE" in --roottype btrfs \ " ;; - cubietruck | a20-olinuxino-lime | a20-olinuxino-lime2 | a20-olinuxino-micro | cubieboard2 | pcduino3) + cubietruck | a20-olinuxino-lime | a20-olinuxino-lime2 | a20-olinuxino-micro | cubieboard2 | pcduino3 | banana-pro) extra_pkgs="$a20_pkgs" extra_opts="\ --variant minbase \ diff --git a/src/freedombone-image-makefile b/src/freedombone-image-makefile index 24e34405..1d764a95 100755 --- a/src/freedombone-image-makefile +++ b/src/freedombone-image-makefile @@ -111,6 +111,17 @@ cubieboard2: prep $(SIGN) @echo "Build complete." +# build Banana Pro SD card image +banana-pro: prep + $(eval ARCHITECTURE = armhf) + $(eval MACHINE = banana-pro) + $(MAKE_IMAGE) + @rm -f $(ARCHIVE) + $(XZ) + @echo "" + $(SIGN) + @echo "Build complete." + # build PCDuino3 SD card image pcduino3: prep $(eval ARCHITECTURE = armhf) diff --git a/website/EN/boards.html b/website/EN/boards.html index efa4c7b3..5a634614 100644 --- a/website/EN/boards.html +++ b/website/EN/boards.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -242,9 +242,9 @@ for the JavaScript code in this tag.

-
-

Supported ARM boards

-
+
+

Supported ARM boards

+

The following ARM boards are supported by the build system. If your board isn't listed here then you may still be able to install Freedombone using Armbian.

@@ -257,6 +257,7 @@ The following ARM boards are supported by the build system. If your board isn't
  • a20-olinuxino-lime
  • a20-olinuxino-lime2
  • a20-olinuxino-micro
  • +
  • Lemaker Banana Pro
  • From 2e7f9427f8493973efa7912153873a0d3227dba8 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 17 May 2018 20:20:52 +0100 Subject: [PATCH 123/214] Bump pleroma commit --- src/freedombone-app-pleroma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 86b72a3b..6b2d3dfd 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -36,7 +36,7 @@ PLEROMA_CODE= PLEROMA_PORT=4000 PLEROMA_ONION_PORT=8011 PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git" -PLEROMA_COMMIT='762f6edc29a7a48e3a663e9bedec58e0036ff363' +PLEROMA_COMMIT='1d4bbec6b3239bb83b500a6a90e6686cb682cfac' PLEROMA_ADMIN_PASSWORD= PLEROMA_DIR=/etc/pleroma PLEROMA_SECRET_KEY="" From 5514550f482dffeb8fef2fae633924677e786b34 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 10:01:38 +0100 Subject: [PATCH 124/214] Switch xmpp to v3 onion addresses --- src/freedombone-app-xmpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-xmpp b/src/freedombone-app-xmpp index 0de55ab2..32e2cb4a 100755 --- a/src/freedombone-app-xmpp +++ b/src/freedombone-app-xmpp @@ -644,7 +644,7 @@ function remove_xmpp { function_check remove_onion_service remove_onion_service xmpp 5222 5223 5269 - sed -i '/HiddenServiceVersion 2/d' "$ONION_SERVICES_FILE" + sed -i '/HiddenServiceVersion 3/d' "$ONION_SERVICES_FILE" apt-mark -q unhold prosody apt-get -yq remove --purge prosody @@ -1133,7 +1133,7 @@ function install_xmpp { fi if ! grep -q "hidden_service_xmpp" "$ONION_SERVICES_FILE"; then { echo 'HiddenServiceDir /var/lib/tor/hidden_service_xmpp/'; - echo 'HiddenServiceVersion 2'; + echo 'HiddenServiceVersion 3'; echo "HiddenServicePort 5222 127.0.0.1:5222"; echo "HiddenServicePort 5269 127.0.0.1:5269"; } >> "$ONION_SERVICES_FILE" echo $'Added onion site for xmpp chat' From 4366396c9c32006aec76e777fa54b32fe6a927fd Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 10:03:30 +0100 Subject: [PATCH 125/214] Don't need extra onion removal on removing xmpp --- src/freedombone-app-xmpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/freedombone-app-xmpp b/src/freedombone-app-xmpp index 32e2cb4a..7877f17e 100755 --- a/src/freedombone-app-xmpp +++ b/src/freedombone-app-xmpp @@ -644,7 +644,6 @@ function remove_xmpp { function_check remove_onion_service remove_onion_service xmpp 5222 5223 5269 - sed -i '/HiddenServiceVersion 3/d' "$ONION_SERVICES_FILE" apt-mark -q unhold prosody apt-get -yq remove --purge prosody From 7ffa98d7fd4d797f44408b0ed912ce30bb257399 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 22:21:26 +0100 Subject: [PATCH 126/214] smolrss app --- src/freedombone-app-smolrss | 395 ++++++++++++++++++++++++++++++++ src/freedombone-image-customise | 1 + 2 files changed, 396 insertions(+) create mode 100755 src/freedombone-app-smolrss diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss new file mode 100755 index 00000000..648d2b89 --- /dev/null +++ b/src/freedombone-app-smolrss @@ -0,0 +1,395 @@ +#!/bin/bash +# +# _____ _ _ +# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ +# | __| _| -_| -_| . | . | | . | . | | -_| +# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| +# +# Freedom in the Cloud +# +# License +# ======= +# +# Copyright (C) 2018 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +VARIANTS='full full-vim' + +IN_DEFAULT_INSTALL=0 +SHOW_ON_ABOUT=1 +SHOW_ICANN_ADDRESS_ON_ABOUT=0 + +SMOLRSS_DOMAIN_NAME= +SMOLRSS_CODE= +SMOLRSS_ONION_PORT=9051 +SMOLRSS_REPO="https://github.com/bashrc/smolrss" +SMOLRSS_COMMIT='afa7135651ef87073e366b8ed183917e245ccc0e' + +smolrss_variables=(ONION_ONLY + SMOLRSS_DOMAIN_NAME + SMOLRSS_CODE + DDNS_PROVIDER + MY_USERNAME) + +function logging_on_smolrss { + echo -n '' +} + +function logging_off_smolrss { + echo -n '' +} + +function remove_user_smolrss { + #remove_username="$1" + echo -n '' +} + +function add_user_smolrss { + #new_username="$1" + #new_user_password="$2" + + echo '0' +} + +function install_interactive_smolrss { + echo -n '' + APP_INSTALLED=1 +} + +function change_password_smolrss { + #curr_username="$1" + #new_user_password="$2" + echo -n '' +} + +function reconfigure_smolrss { + # This is used if you need to switch identity. Dump old keys and generate new ones + echo -n '' +} + +function smolrss_add_feed { + data=$(mktemp 2>/dev/null) + dialog --backtitle $"Smol RSS" \ + --title $"Add an RSS feed" \ + --form "\\n" 8 60 3 \ + $"Title:" 1 1 "" 1 12 40 256 \ + $"Feed URL:" 2 1 "" 2 12 40 10000 \ + 2> "$data" + sel=$? + case $sel in + 1) rm -f "$data" + return;; + 255) rm -f "$data" + return;; + esac + title=$(sed -n 1p < "$data") + url=$(sed -n 2p < "$data") + rm -f "$data" + + if [ ! "$title" ]; then + return + fi + + if [ ! "$url" ]; then + return + fi + + if [[ "$url" == *','* ]]; then + return + fi + if [[ "$url" != *'.'* ]]; then + return + fi + + cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || return + + if grep -q "${title}," feeds.txt; then + sed -i "s|${title},.*|${title},${url}|g" feeds.txt + else + echo "${title},${url}" >> feeds.txt + fi + + ./create_feeds feeds.txt > feeds.xml + chown www-data:www-data feeds.txt + + dialog --title $"Add an RSS feed" \ + --msgbox $"${title} has been added" 6 70 +} + +function smolrss_remove_feed { + data=$(mktemp 2>/dev/null) + dialog --title $"Remove an RSS feed" \ + --backtitle $"Smol RSS" \ + --inputbox $"Enter the title of the feed to remove" 8 60 2>"$data" + sel=$? + case $sel in + 0) + title=$(<"$data") + if [ "$title" ]; then + cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || return + if grep -q "${title}," feeds.txt; then + sed -i "/${title},/d" feeds.xml + ./create_feeds feeds.txt > feeds.xml + chown www-data:www-data feeds.txt + dialog --title $"Remove an RSS feed" \ + --msgbox $"${title} has been removed" 6 70 + fi + fi + ;; + esac + rm -f "$data" +} + +function configure_interactive_smolrss { + W=(1 $"Add an RSS feed" + 2 $"Remove an RSS feed" + 3 $'Edit all feeds') + + read_config_param SMOLRSS_DOMAIN_NAME + + while true + do + # shellcheck disable=SC2068 + selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Smol RSS" --menu $"Choose an operation, or ESC for main menu:" 14 70 3 "${W[@]}" 3>&2 2>&1 1>&3) + + if [ ! "$selection" ]; then + break + fi + case $selection in + 1) smolrss_add_feed + ;; + 2) smolrss_remove_feed + ;; + 3) editor "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs/feeds.txt" + cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || break + ./create_feeds feeds.txt > feeds.xml + chown www-data:www-data feeds.txt + ;; + esac + done +} + +function upgrade_smolrss { + CURR_SMOLRSS_COMMIT=$(get_completion_param "smolrss commit") + if [[ "$CURR_SMOLRSS_COMMIT" == "$SMOLRSS_COMMIT" ]]; then + return + fi + + if grep -q "smolrss domain" "$COMPLETION_FILE"; then + SMOLRSS_DOMAIN_NAME=$(get_completion_param "smolrss domain") + fi + + # update to the next commit + set_repo_commit "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" "smolrss commit" "$SMOLRSS_COMMIT" "$SMOLRSS_REPO" + chown -R www-data:www-data "/var/www/${SMOLRSS_DOMAIN_NAME}/htdocs" +} + +function backup_local_smolrss { + SMOLRSS_DOMAIN_NAME='smolrss' + if grep -q "smolrss domain" "$COMPLETION_FILE"; then + SMOLRSS_DOMAIN_NAME=$(get_completion_param "smolrss domain") + fi + + source_directory=/var/www/${SMOLRSS_DOMAIN_NAME}/htdocs + + suspend_site "${SMOLRSS_DOMAIN_NAME}" + + dest_directory=smolrss + backup_directory_to_usb "$source_directory" $dest_directory + + restart_site +} + +function restore_local_smolrss { + if ! grep -q "smolrss domain" "$COMPLETION_FILE"; then + return + fi + SMOLRSS_DOMAIN_NAME=$(get_completion_param "smolrss domain") + if [ ! "$SMOLRSS_DOMAIN_NAME" ]; then + return + fi + suspend_site "${SMOLRSS_DOMAIN_NAME}" + temp_restore_dir=/root/tempsmolrss + smolrss_dir=/var/www/${SMOLRSS_DOMAIN_NAME}/htdocs + + restore_directory_from_usb $temp_restore_dir smolrss + if [ -d $temp_restore_dir ]; then + if [ -d "$temp_restore_dir$smolrss_dir" ]; then + cp -rp "$temp_restore_dir$smolrss_dir"/* "$smolrss_dir"/ + else + if [ ! -d "$smolrss_dir" ]; then + mkdir "$smolrss_dir" + fi + cp -rp "$temp_restore_dir"/* "$smolrss_dir"/ + fi + chown -R www-data:www-data "$smolrss_dir" + rm -rf $temp_restore_dir + fi + restart_site +} + +function backup_remote_smolrss { + SMOLRSS_DOMAIN_NAME='smolrss' + if grep -q "smolrss domain" "$COMPLETION_FILE"; then + SMOLRSS_DOMAIN_NAME=$(get_completion_param "smolrss domain") + fi + + source_directory=/var/www/${SMOLRSS_DOMAIN_NAME}/htdocs + + suspend_site "${SMOLRSS_DOMAIN_NAME}" + + dest_directory=smolrss + backup_directory_to_friend "$source_directory" $dest_directory + + restart_site +} + +function restore_remote_smolrss { + if ! grep -q "smolrss domain" "$COMPLETION_FILE"; then + return + fi + SMOLRSS_DOMAIN_NAME=$(get_completion_param "smolrss domain") + if [ ! "$SMOLRSS_DOMAIN_NAME" ]; then + return + fi + suspend_site "${SMOLRSS_DOMAIN_NAME}" + temp_restore_dir=/root/tempsmolrss + smolrss_dir=/var/www/${SMOLRSS_DOMAIN_NAME}/htdocs + + restore_directory_from_friend $temp_restore_dir smolrss + if [ -d $temp_restore_dir ]; then + if [ -d "$temp_restore_dir$smolrss_dir" ]; then + cp -rp "$temp_restore_dir$smolrss_dir"/* "$smolrss_dir"/ + else + if [ ! -d "$smolrss_dir" ]; then + mkdir "$smolrss_dir" + fi + cp -rp $temp_restore_dir/* "$smolrss_dir"/ + fi + chown -R www-data:www-data "$smolrss_dir" + rm -rf $temp_restore_dir + fi + restart_site +} + +function remove_smolrss { + nginx_dissite "$SMOLRSS_DOMAIN_NAME" + remove_certs "$SMOLRSS_DOMAIN_NAME" + + + if [ -d "/var/www/$SMOLRSS_DOMAIN_NAME" ]; then + rm -rf "/var/www/$SMOLRSS_DOMAIN_NAME" + fi + if [ -f "/etc/nginx/sites-available/$SMOLRSS_DOMAIN_NAME" ]; then + rm "/etc/nginx/sites-available/$SMOLRSS_DOMAIN_NAME" + fi + remove_onion_service smolrss "${SMOLRSS_ONION_PORT}" + if grep -q "smolrss" /etc/crontab; then + sed -i "/smolrss/d" /etc/crontab + fi + remove_app smolrss + remove_completion_param install_smolrss + sed -i '/smolrss/d' "$COMPLETION_FILE" + + remove_ddns_domain "$SMOLRSS_DOMAIN_NAME" +} + +function install_smolrss { + apt-get -yq install php-gettext php-curl php-gd php-mysql git curl + apt-get -yq install memcached php-memcached php-intl exiftool libfcgi0ldbl + + if [ ! "$SMOLRSS_DOMAIN_NAME" ]; then + echo $'No domain name was given' + exit 3568356 + fi + + if [ -d "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" ]; then + rm -rf "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" + fi + if [ -d /repos/smolrss ]; then + mkdir "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" + cp -r -p /repos/smolrss/. "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" + cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || exit 324687356 + git pull + else + git_clone "$SMOLRSS_REPO" "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" + fi + + if [ ! -d "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" ]; then + echo $'Unable to clone smolrss repo' + exit 87525 + fi + + cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || exit 36587356 + git checkout "$SMOLRSS_COMMIT" -b "$SMOLRSS_COMMIT" + set_completion_param "smolrss commit" "$SMOLRSS_COMMIT" + + cp feeds.example.txt feeds.txt + ./create_feeds feeds.txt > feeds.xml + + chmod g+w "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" + chown -R www-data:www-data "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" + + add_ddns_domain "$SMOLRSS_DOMAIN_NAME" + + SMOLRSS_ONION_HOSTNAME=$(add_onion_service smolrss 80 "${SMOLRSS_ONION_PORT}") + + smolrss_nginx_site=/etc/nginx/sites-available/$SMOLRSS_DOMAIN_NAME + echo -n '' > "$smolrss_nginx_site" + { echo 'server {'; + echo " listen 127.0.0.1:$SMOLRSS_ONION_PORT default_server;"; + echo " server_name $SMOLRSS_ONION_HOSTNAME;"; + echo ''; } >> "$smolrss_nginx_site" + nginx_compress "$SMOLRSS_DOMAIN_NAME" + echo '' >> "$smolrss_nginx_site" + nginx_security_options "$SMOLRSS_DOMAIN_NAME" + { echo ''; + echo ' access_log /dev/null;'; + echo ' error_log /dev/null;'; + echo ''; + echo " root /var/www/$SMOLRSS_DOMAIN_NAME/htdocs;"; + echo ''; + echo ' index index.php;'; + echo ' location ~ \.php {'; + echo ' include snippets/fastcgi-php.conf;'; + echo ' fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;'; + echo ' fastcgi_read_timeout 30;'; + echo ' fastcgi_param HTTPS off;'; + echo ' }'; + echo ''; + echo ' # Location'; + echo ' location / {'; } >> "$smolrss_nginx_site" + nginx_limits "$SMOLRSS_DOMAIN_NAME" '15m' + { echo " try_files \$uri \$uri/ index.php?\$args;"; + echo ' }'; + echo '}'; } >> "$smolrss_nginx_site" + + configure_php + + create_site_certificate "$SMOLRSS_DOMAIN_NAME" 'yes' + + nginx_ensite "$SMOLRSS_DOMAIN_NAME" + + systemctl restart php7.0-fpm + + systemctl restart nginx + + "${PROJECT_NAME}-pass" -u "$MY_USERNAME" -a smolrss -p "$SMOLRSS_ADMIN_PASSWORD" + set_completion_param "smolrss domain" "$SMOLRSS_DOMAIN_NAME" + + APP_INSTALLED=1 +} + +# NOTE: deliberately there is no "exit 0" diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 56fe1fc7..9af78d53 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1993,6 +1993,7 @@ image_preinstall_repos() { git clone "$PRIVATEBIN_REPO" "$rootdir/repos/privatebin" git clone "$EDITH_REPO" "$rootdir/repos/edith" git clone "$BDSMAIL_REPO" "$rootdir/repos/bdsmail" + git clone "$SMOLRSS_REPO" "$rootdir/repos/smolrss" #git clone "$WEKAN_REPO" "$rootdir/repos/wekan" #git clone "$FLOW_ROUTER_REPO" "$rootdir/repos/flowrouter" #git clone "$ZERONET_REPO" "$rootdir/repos/zeronet" From 9e5b32d42ca317078765cbfe10f57506929ca80d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 22:25:01 +0100 Subject: [PATCH 127/214] Change onion port --- src/freedombone-app-smolrss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index 648d2b89..c516fde1 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -33,7 +33,7 @@ SHOW_ICANN_ADDRESS_ON_ABOUT=0 SMOLRSS_DOMAIN_NAME= SMOLRSS_CODE= -SMOLRSS_ONION_PORT=9051 +SMOLRSS_ONION_PORT=8751 SMOLRSS_REPO="https://github.com/bashrc/smolrss" SMOLRSS_COMMIT='afa7135651ef87073e366b8ed183917e245ccc0e' From ef52dc23b7ffc331fbaf3b06da836f36abe59069 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 22:27:36 +0100 Subject: [PATCH 128/214] Set domain name --- src/freedombone-app-smolrss | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index c516fde1..1256fd77 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -310,10 +310,7 @@ function install_smolrss { apt-get -yq install php-gettext php-curl php-gd php-mysql git curl apt-get -yq install memcached php-memcached php-intl exiftool libfcgi0ldbl - if [ ! "$SMOLRSS_DOMAIN_NAME" ]; then - echo $'No domain name was given' - exit 3568356 - fi + SMOLRSS_DOMAIN_NAME='smolrss.local' if [ -d "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" ]; then rm -rf "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" From 61f1ed2e1ef335c9519739b242315d9eac993b44 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 22:33:02 +0100 Subject: [PATCH 129/214] Regenerate feeds after upgrades --- src/freedombone-app-smolrss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index 1256fd77..3e3dc466 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -193,6 +193,10 @@ function upgrade_smolrss { # update to the next commit set_repo_commit "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" "smolrss commit" "$SMOLRSS_COMMIT" "$SMOLRSS_REPO" + + cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || return + ./create_feeds feeds.txt > feeds.xml + chown -R www-data:www-data "/var/www/${SMOLRSS_DOMAIN_NAME}/htdocs" } From a7d7c5240dc602fe69493475d7d8844b4c48ae45 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 22:35:52 +0100 Subject: [PATCH 130/214] Reduce dialog height --- src/freedombone-app-smolrss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index 3e3dc466..ceabbb77 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -162,7 +162,7 @@ function configure_interactive_smolrss { while true do # shellcheck disable=SC2068 - selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Smol RSS" --menu $"Choose an operation, or ESC for main menu:" 14 70 3 "${W[@]}" 3>&2 2>&1 1>&3) + selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Smol RSS" --menu $"Choose an operation, or ESC for main menu:" 12 70 3 "${W[@]}" 3>&2 2>&1 1>&3) if [ ! "$selection" ]; then break From 73dd18371fbcea01507a9733382fec415637f0aa Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 23:02:48 +0100 Subject: [PATCH 131/214] Documentation for smolrss --- doc/EN/app_smolrss.org | 29 +++ doc/EN/apps.org | 10 +- website/EN/app_smolrss.html | 219 ++++++++++++++++++ website/EN/apps.html | 433 +++++++++++++++--------------------- 4 files changed, 432 insertions(+), 259 deletions(-) create mode 100644 doc/EN/app_smolrss.org create mode 100644 website/EN/app_smolrss.html diff --git a/doc/EN/app_smolrss.org b/doc/EN/app_smolrss.org new file mode 100644 index 00000000..573b2f8e --- /dev/null +++ b/doc/EN/app_smolrss.org @@ -0,0 +1,29 @@ +#+TITLE: +#+AUTHOR: Bob Mottram +#+EMAIL: bob@freedombone.net +#+KEYWORDS: freedombone, smolrss, rss +#+DESCRIPTION: How to use Smol RSS +#+OPTIONS: ^:nil toc:nil +#+HTML_HEAD: + +#+attr_html: :width 80% :height 10% :align center +[[file:images/logo.png]] + +* Smol RSS +This is an extremely simple RSS reader which is available only from an onion address, so that you have /the right to read/. There is very little code and so not much attack surface, and it will scale to screens of any size. This should be a better reading experience on mobile than with [[./app_ttrss.html][tt-rss]]. + +A disadvantage is that you can only add or remove feeds via the Freedombone administrator control panel, so this isn't suitable for multi-user environments. But once you have your feeds set up it's trivial to use, and unless you publish the onion address confidentiality should be maintained. + +* Installation + +ssh into the system with: + +#+BEGIN_SRC bash +ssh myusername@mydomain.com -p 2222 +#+END_SRC + +Select *Administrator controls* then *Add/Remove Apps* then *smolrss*. + +After installation within *Administrator controls* go to *App settings* then *smolrss*. You can then add some feeds or edit the existing feed list. There are a few default feeds as an example. + +Within *Administrator controls* go to *About this system* and select *smolrss*. You will then have the onion address. Navigate to your reader in a Tor compatible browser, select a feed from the list and begin reading. That's all there is to it. diff --git a/doc/EN/apps.org b/doc/EN/apps.org index 66306e2f..d38e1e93 100644 --- a/doc/EN/apps.org +++ b/doc/EN/apps.org @@ -163,14 +163,18 @@ A non-federated chat server (x86 systems only). A metasearch engine for customised and private web searches. [[./app_searx.html][How to use it]] -* tt-rss -Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via an onion address. Have "/the right to read/" without the Surveillance State knowing what you're reading. Also available with a user interface suitable for viewing on mobile devices via a browser such as OrFox. +* Smol RSS +A very minimal RSS reader. -[[./app_rss.html][How to use it]] +[[./app_smolrss.html][How to use it]] * Syncthing Possibly the best way to synchronise files across all of your devices. Once it has been set up it "just works" with no user intervention needed. [[./app_syncthing.html][How to use it]] +* tt-rss +Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via an onion address. Have "/the right to read/" without the Surveillance State knowing what you're reading. Also available with a user interface suitable for viewing on mobile devices via a browser such as OrFox. + +[[./app_rss.html][How to use it]] * Tahoe-LAFS Robust and encrypted storage of files on one or more server. diff --git a/website/EN/app_smolrss.html b/website/EN/app_smolrss.html new file mode 100644 index 00000000..289bafee --- /dev/null +++ b/website/EN/app_smolrss.html @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + +

    + +
    +
    +

    + +
    +

    logo.png +

    +
    + +
    +

    Smol RSS

    +
    +

    +This is an extremely simple RSS reader which is available only from an onion address, so that you have the right to read. There is very little code and so not much attack surface, and it will scale to screens of any size. This should be a better reading experience on mobile than with tt-rss. +

    + +

    +A disadvantage is that you can only add or remove feeds via the Freedombone administrator control panel, so this isn't suitable for multi-user environments. But once you have your feeds set up it's trivial to use, and unless you publish the onion address confidentiality should be maintained. +

    +
    +
    + +
    +

    Installation

    +
    +

    +ssh into the system with: +

    + +
    + +
    ssh myusername@mydomain.com -p 2222
    +
    +
    + +

    +Select Administrator controls then Add/Remove Apps then smolrss. +

    + +

    +After installation within Administrator controls go to App settings then smolrss. You can then add some feeds or edit the existing feed list. There are a few default feeds as an example. +

    + +

    +Within Administrator controls go to About this system and select smolrss. You will then have the onion address. Navigate to your reader in a Tor compatible browser, select a feed from the list and begin reading. That's all there is to it. +

    +
    +
    +
    +
    + + + + +
    + + diff --git a/website/EN/apps.html b/website/EN/apps.html index 96da0862..3603d2ac 100644 --- a/website/EN/apps.html +++ b/website/EN/apps.html @@ -3,33 +3,26 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - - - - - - - + + + + + - + @@ -189,7 +97,7 @@ @licstart The following is the entire license notice for the JavaScript code in this tag. -Copyright (C) 2012-2017 Free Software Foundation, Inc. +Copyright (C) 2012-2013 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modify it under the terms of the GNU @@ -236,6 +144,7 @@ for the JavaScript code in this tag.
    +

    logo.png @@ -258,9 +167,9 @@ The base install of the system just contains an email server and Mutt client, bu

    -
    -

    Akaunting

    -
    +
    +

    Akaunting

    +

    A web based accounts system for small businesses or freelancers.

    @@ -270,9 +179,9 @@ A web based accounts system for small businesses or freelancers.

    -
    -

    BDS Mail

    -
    +
    +

    BDS Mail

    +

    It's like ordinary email, but with i2p as the transport mechanism.

    @@ -282,9 +191,9 @@ It's like ordinary email, but with i

    -
    -

    Bludit

    -
    +
    +

    Bludit

    +

    This is a simple databaseless blogging system which uses markdown files. It should run well on any hardware.

    @@ -294,9 +203,9 @@ This is a simple databaseless blogging system which uses markdown files. It shou

    -
    -

    CryptPad

    -
    +
    +

    CryptPad

    +

    Collaborate on editing documents, presentations and source code, or vote on things. All with a good level of security.

    @@ -306,9 +215,9 @@ Collaborate on editing documents, presentations and source code, or vote on thin

    -
    -

    DLNA

    -
    +
    +

    DLNA

    +

    Enables you to use the system as a music server which any DLNA compatible devices can connect to within your home network.

    @@ -318,9 +227,9 @@ Enables you to use the system as a music server which any DLNA compatible device

    -
    -

    Dokuwiki

    -
    +
    +

    Dokuwiki

    +

    A databaseless wiki system.

    @@ -330,9 +239,9 @@ A databaseless wiki system.

    -
    -

    Edith

    -
    +
    +

    Edith

    +

    Extremely simple and distraction-free notes system.

    @@ -342,9 +251,9 @@ Extremely simple and distraction-free notes system.

    -
    -

    Emacs

    -
    +
    +

    Emacs

    +

    If you use the Mutt client to read your email then this will set it up to use emacs for composing new mail.

    @@ -354,17 +263,17 @@ If you use the Mutt client to read your email then this will set it up to use em

    -
    -

    Email Server

    -
    +
    +

    Email Server

    +

    Since many apps require email registration an email server is installed by default. You can find advice on using the email system here.

    -
    -

    Etherpad

    -
    +
    +

    Etherpad

    +

    Collaborate on creating documents in real time. Maybe you're planning a holiday with other family members or creating documentation for a Free Software project along with other volunteers. Etherpad is hard to beat for simplicity and speed. Only users of the system will be able to access it.

    @@ -374,9 +283,9 @@ Collaborate on creating documents in real time. Maybe you're planning a holiday

    -
    -

    Federated wiki

    -
    +
    +

    Federated wiki

    +

    A new approach to creating wiki content.

    @@ -386,9 +295,9 @@ A new approach to creating wiki content.

    -
    -

    Friendica

    -
    +
    +

    Friendica

    +

    Federated social network system.

    @@ -398,9 +307,9 @@ Federated social network system.

    -
    -

    GNU Social

    -
    +
    +

    GNU Social

    +

    Federated social network based on the OStatus protocol. You can "remote follow" other users within the GNU Social federation.

    @@ -410,9 +319,9 @@ Federated social network based on the OStatus protocol. You can "remote follo

    -
    -

    Gogs

    -
    +
    +

    Gogs

    +

    Lightweight git project hosting system. You can mirror projects from Github, or if Github turns evil then just host your own projects while retaining the familiar fork-and-pull workflow. If you can use Github then you can also use Gogs.

    @@ -422,9 +331,9 @@ Lightweight git project hosting system. You can mirror projects from Github, or

    -
    -

    HTMLy

    -
    +
    +

    HTMLy

    +

    Databaseless blogging system. Quite simple and with a markdown-like format.

    @@ -434,9 +343,9 @@ Databaseless blogging system. Quite simple and with a markdown-like format.

    -
    -

    Hubzilla

    -
    +
    +

    Hubzilla

    +

    Web publishing platform with social network like features and good privacy controls so that it's possible to specify who can see which content. Includes photo albums, calendar, wiki and file storage.

    @@ -446,9 +355,9 @@ Web publishing platform with social network like features and good privacy contr

    -
    -

    Icecast media stream

    -
    +
    +

    Icecast media stream

    +

    Make your own internet radio station.

    @@ -458,9 +367,9 @@ Make your own internet radio station.

    -
    -

    IRC Server (ngirc)

    -
    +
    +

    IRC Server (ngirc)

    +

    Run your own IRC chat channel which can be secured with a password and accessible via an onion address. A bouncer is included so that you can receive messages sent while you were offline. Works with Hexchat and other popular clients.

    @@ -470,18 +379,18 @@ Run your own IRC chat channel which can be secured with a password and accessibl

    -
    -

    Jitsi Meet

    -
    +
    +

    Jitsi Meet

    +

    Experimental WebRTC video conferencing system, similar to Google Hangouts. This may not be fully functional, but is hoped to be in the near future.

    -
    -

    KanBoard

    -
    +
    +

    KanBoard

    +

    A simple kanban system for managing projects or TODO lists.

    @@ -491,9 +400,9 @@ A simple kanban system for managing projects or TODO lists.

    -
    -

    Key Server

    -
    +
    +

    Key Server

    +

    An OpenPGP key server for storing and retrieving GPG public keys.

    @@ -503,9 +412,9 @@ An OpenPGP key server for storing and retrieving GPG public keys.

    -
    -

    Koel

    -
    +
    +

    Koel

    +

    Access your music collection from any internet connected device.

    @@ -515,9 +424,9 @@ Access your music collection from any internet connected device.

    -
    -

    Lychee

    -
    +
    +

    Lychee

    +

    Make your photo albums available on the web.

    @@ -527,9 +436,9 @@ Make your photo albums available on the web.

    -
    -

    Mailpile

    -
    +
    +

    Mailpile

    +

    Modern email client which supports GPG encryption.

    @@ -539,9 +448,9 @@ Modern email client which supports GPG encryption.

    -
    -

    Matrix

    -
    +
    +

    Matrix

    +

    Multi-user chat with some security and moderation controls.

    @@ -551,9 +460,9 @@ Multi-user chat with some security and moderation controls.

    -
    -

    Mediagoblin

    -
    +
    +

    Mediagoblin

    +

    Publicly host video and audio files so that you don't need to use YouTube/Vimeo/etc.

    @@ -563,9 +472,9 @@ Publicly host video and audio files so that you don't need to use YouTube/Vimeo/

    -
    -

    Mumble

    -
    +
    +

    Mumble

    +

    The popular VoIP and text chat system. Say goodbye to old-fashioned telephony conferences with silly dial codes. Also works well on mobile.

    @@ -575,9 +484,9 @@ The popular VoIP and text chat system. Say goodbye to old-fashioned telephony co

    -
    -

    NextCloud

    -
    +
    +

    NextCloud

    +

    Store files on your server and sync them with laptops or mobile devices. Includes many plugins including videoconferencing and collaborative document editing.

    @@ -587,9 +496,9 @@ Store files on your server and sync them with laptops or mobile devices. Include

    -
    -

    PeerTube

    -
    +
    +

    PeerTube

    +

    Peer-to-peer video hosting. Similar to Mediagoblin, but the P2P aspect better enables the streaming load to be shared across servers.

    @@ -599,9 +508,9 @@ Peer-to-peer video hosting. Similar to Mediagoblin, but the P2P aspect better en

    -
    -

    PI-Hole

    -
    +
    +

    PI-Hole

    +

    The black hole for web adverts. Block adverts at the domain name level within your local network. It can significantly reduce bandwidth, speed up page load times and protect your systems from being tracked by spyware.

    @@ -611,9 +520,9 @@ The black hole for web adverts. Block adverts at the domain name level within yo

    -
    -

    Pleroma

    -
    +
    +

    Pleroma

    +

    Fediverse instance which is compatible with GNU Social and Mastodon, and suited for systems without much RAM or CPU resource.

    @@ -623,9 +532,9 @@ Fediverse instance which is compatible with GNU Social and Mastodon, and suited

    -
    -

    PostActiv

    -
    +
    +

    PostActiv

    +

    An alternative federated social networking system compatible with GNU Social, Pleroma and Mastodon. It includes some optimisations and fixes currently not available within the main GNU Social project.

    @@ -635,9 +544,9 @@ An alternative federated social networking system compatible with GNU Social, Pl

    -
    -

    PrivateBin

    -
    +
    +

    PrivateBin

    +

    A pastebin where the server has zero knowledge of the content being pasted.

    @@ -647,9 +556,9 @@ A pastebin where the server has zero knowledge of the content being pasted.

    -
    -

    Profanity

    -
    +
    +

    Profanity

    +

    A shell based XMPP client which you can run on the Freedombone server via ssh.

    @@ -659,9 +568,9 @@ A shell based XMPP client which you can run on the Freedombone server via ssh.

    -
    -

    Riot Web

    -
    +
    +

    Riot Web

    +

    A browser based user interface for the Matrix federated communications system, including WebRTC audio and video chat.

    @@ -671,9 +580,9 @@ A browser based user interface for the Matrix federated communications system, i

    -
    -

    Rocketchat

    -
    +
    +

    Rocketchat

    +

    A non-federated chat server (x86 systems only).

    @@ -683,9 +592,9 @@ A non-federated chat server (x86 systems only).

    -
    -

    SearX

    -
    +
    +

    SearX

    +

    A metasearch engine for customised and private web searches.

    @@ -695,21 +604,21 @@ A metasearch engine for customised and private web searches.

    -
    -

    tt-rss

    -
    +
    +

    Smol RSS

    +

    -Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via an onion address. Have "the right to read" without the Surveillance State knowing what you're reading. Also available with a user interface suitable for viewing on mobile devices via a browser such as OrFox. +A very minimal RSS reader.

    -How to use it +How to use it

    -
    -

    Syncthing

    -
    +
    +

    Syncthing

    +

    Possibly the best way to synchronise files across all of your devices. Once it has been set up it "just works" with no user intervention needed.

    @@ -719,9 +628,21 @@ Possibly the best way to synchronise files across all of your devices. Once it h

    -
    -

    Tahoe-LAFS

    -
    +
    +

    tt-rss

    +
    +

    +Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via an onion address. Have "the right to read" without the Surveillance State knowing what you're reading. Also available with a user interface suitable for viewing on mobile devices via a browser such as OrFox. +

    + +

    +How to use it +

    +
    +
    +
    +

    Tahoe-LAFS

    +

    Robust and encrypted storage of files on one or more server.

    @@ -731,9 +652,9 @@ Robust and encrypted storage of files on one or more server.

    -
    -

    Tox

    -
    +
    +

    Tox

    +

    Client and bootstrap node for the Tox chat/VoIP system.

    @@ -743,9 +664,9 @@ Client and bootstrap node for the Tox chat/VoIP system.

    -
    -

    Turtl

    -
    +
    +

    Turtl

    +

    A system for privately creating and sharing notes and images, similar to Evernote but without the spying.

    @@ -755,18 +676,18 @@ A system for privately creating and sharing notes and images, similar to Evernot

    -
    -

    Vim

    -
    +
    +

    Vim

    +

    If you use the Mutt client to read your email then this will set it up to use vim for composing new mail.

    -
    -

    Virtual Private Network (VPN)

    -
    +
    +

    Virtual Private Network (VPN)

    +

    Set up a VPN on your server so that you can bypass local internet censorship.

    @@ -776,9 +697,9 @@ Set up a VPN on your server so that you can bypass local internet censorship.

    -
    -

    XMPP

    -
    +
    +

    XMPP

    +

    Chat server which can be used together with client such as Gajim or Conversations to provide end-to-end content security and also onion routed metadata security. Includes advanced features such as client state notification to save battery power on your mobile devices, support for seamless roaming between networks and message carbons so that you can receive the same messages while being simultaneously logged in to your account on more than one device.

    From e45adfc5208c233a45cdf5e2d8be3bedd5483f2a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 May 2018 23:13:05 +0100 Subject: [PATCH 132/214] Mention noscript --- doc/EN/app_smolrss.org | 2 +- website/EN/app_smolrss.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/EN/app_smolrss.org b/doc/EN/app_smolrss.org index 573b2f8e..ad775374 100644 --- a/doc/EN/app_smolrss.org +++ b/doc/EN/app_smolrss.org @@ -26,4 +26,4 @@ Select *Administrator controls* then *Add/Remove Apps* then *smolrss*. After installation within *Administrator controls* go to *App settings* then *smolrss*. You can then add some feeds or edit the existing feed list. There are a few default feeds as an example. -Within *Administrator controls* go to *About this system* and select *smolrss*. You will then have the onion address. Navigate to your reader in a Tor compatible browser, select a feed from the list and begin reading. That's all there is to it. +Within *Administrator controls* go to *About this system* and select *smolrss*. You will then have the onion address. Navigate to your reader in a Tor compatible browser. You may need to allow the site within NoScript. Then select a feed from the list and begin reading. That's all there is to it. diff --git a/website/EN/app_smolrss.html b/website/EN/app_smolrss.html index 289bafee..d3565de2 100644 --- a/website/EN/app_smolrss.html +++ b/website/EN/app_smolrss.html @@ -4,7 +4,7 @@ - + @@ -186,7 +186,7 @@ After installation within Administrator controls go to App settings

    -Within Administrator controls go to About this system and select smolrss. You will then have the onion address. Navigate to your reader in a Tor compatible browser, select a feed from the list and begin reading. That's all there is to it. +Within Administrator controls go to About this system and select smolrss. You will then have the onion address. Navigate to your reader in a Tor compatible browser. You may need to allow the site within NoScript. Then select a feed from the list and begin reading. That's all there is to it.

    From b066aef973402e8f339cc2e0eb779cb2f0e413c9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 May 2018 10:46:23 +0100 Subject: [PATCH 133/214] No need to create certificate for smolrss --- src/freedombone-app-smolrss | 2 -- src/freedombone-template | 6 ++++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index ceabbb77..17079653 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -379,8 +379,6 @@ function install_smolrss { configure_php - create_site_certificate "$SMOLRSS_DOMAIN_NAME" 'yes' - nginx_ensite "$SMOLRSS_DOMAIN_NAME" systemctl restart php7.0-fpm diff --git a/src/freedombone-template b/src/freedombone-template index 00946298..ba45ebbf 100755 --- a/src/freedombone-template +++ b/src/freedombone-template @@ -1002,8 +1002,10 @@ if [ $app_daemon ]; then echo " systemctl start ${app_name}" fi if [ $app_webui ]; then - echo '' - echo " create_site_certificate \"\$${app_name_upper}_DOMAIN_NAME\" 'yes'" + if [ ! $app_onion_only ]; then + echo '' + echo " create_site_certificate \"\$${app_name_upper}_DOMAIN_NAME\" 'yes'" + fi echo '' echo " nginx_ensite \"\$${app_name_upper}_DOMAIN_NAME\"" fi From 73f269bca7fb5b89937a0aa15d12e4fdbd1f777b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 May 2018 13:17:25 +0100 Subject: [PATCH 134/214] Bump smolrss commit --- src/freedombone-app-smolrss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index 17079653..b09f5685 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -35,7 +35,7 @@ SMOLRSS_DOMAIN_NAME= SMOLRSS_CODE= SMOLRSS_ONION_PORT=8751 SMOLRSS_REPO="https://github.com/bashrc/smolrss" -SMOLRSS_COMMIT='afa7135651ef87073e366b8ed183917e245ccc0e' +SMOLRSS_COMMIT='f6478243e43c53fe40116eabf7118b0cd2d28f1a' smolrss_variables=(ONION_ONLY SMOLRSS_DOMAIN_NAME From 708e0b45ea79c78b4743eef7fba37061dfe0983b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 May 2018 13:21:18 +0100 Subject: [PATCH 135/214] Options to switch smolrss themes --- src/freedombone-app-smolrss | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index b09f5685..b5fd0379 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -155,14 +155,17 @@ function smolrss_remove_feed { function configure_interactive_smolrss { W=(1 $"Add an RSS feed" 2 $"Remove an RSS feed" - 3 $'Edit all feeds') + 3 $'Edit all feeds' + 4 $'Light theme' + 5 $'Dark theme') read_config_param SMOLRSS_DOMAIN_NAME while true do + # shellcheck disable=SC2068 - selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Smol RSS" --menu $"Choose an operation, or ESC for main menu:" 12 70 3 "${W[@]}" 3>&2 2>&1 1>&3) + selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Smol RSS" --menu $"Choose an operation, or ESC for main menu:" 14 70 5 "${W[@]}" 3>&2 2>&1 1>&3) if [ ! "$selection" ]; then break @@ -177,6 +180,18 @@ function configure_interactive_smolrss { ./create_feeds feeds.txt > feeds.xml chown www-data:www-data feeds.txt ;; + 4) cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || break + cp style.light.css style.css + chown www-data:www-data style.css + dialog --title $"Smol RSS theme" \ + --msgbox $"Switched theme to light" 6 50 + ;; + 5) cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || break + cp style.dark.css style.css + chown www-data:www-data style.css + dialog --title $"Smol RSS theme" \ + --msgbox $"Switched theme to dark" 6 50 + ;; esac done } From e03d056d8af00b120679d2473f0c63a3dfce9193 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 21 May 2018 13:45:54 +0100 Subject: [PATCH 136/214] Beginning of hackmd --- src/freedombone-app-hackmd | 484 +++++++++++++++++++++++++++++++++++++ 1 file changed, 484 insertions(+) create mode 100755 src/freedombone-app-hackmd diff --git a/src/freedombone-app-hackmd b/src/freedombone-app-hackmd new file mode 100755 index 00000000..c2a50e91 --- /dev/null +++ b/src/freedombone-app-hackmd @@ -0,0 +1,484 @@ +#!/bin/bash +# +# _____ _ _ +# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ +# | __| _| -_| -_| . | . | | . | . | | -_| +# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| +# +# Freedom in the Cloud +# +# License +# ======= +# +# Copyright (C) 2018 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +VARIANTS='full full-vim' + +IN_DEFAULT_INSTALL=0 +SHOW_ON_ABOUT=1 + +HACKMD_DOMAIN_NAME= +HACKMD_CODE= +HACKMD_ONION_PORT=9052 +HACKMD_REPO="https://github.com/hackmdio/hackmd" +HACKMD_COMMIT='c71361467d6eee6519b050fb5c40fc32520a19a8' +HACKMD_PORT_INTERNAL=TODO + +hackmd_variables=(ONION_ONLY + HACKMD_DOMAIN_NAME + HACKMD_CODE + DDNS_PROVIDER + MY_USERNAME) + +function logging_on_hackmd { + echo -n '' +} + +function logging_off_hackmd { + echo -n '' +} + +function remove_user_hackmd { + remove_username="$1" + + "${PROJECT_NAME}-pass" -u "$remove_username" --rmapp hackmd +} + +function add_user_hackmd { + new_username="$1" + new_user_password="$2" + + "${PROJECT_NAME}-pass" -u "$new_username" -a hackmd -p "$new_user_password" + echo '0' +} + +function install_interactive_hackmd { + if [ ! "$ONION_ONLY" ]; then + ONION_ONLY='no' + fi + + if [[ "$ONION_ONLY" != "no" ]]; then + HACKMD_DOMAIN_NAME='hackmd.local' + write_config_param "HACKMD_DOMAIN_NAME" "$HACKMD_DOMAIN_NAME" + else + interactive_site_details "hackmd" "HACKMD_DOMAIN_NAME" "HACKMD_CODE" + fi + APP_INSTALLED=1 +} + +function change_password_hackmd { + curr_username="$1" + new_user_password="$2" + + read_config_param 'HACKMD_DOMAIN_NAME' + + "${PROJECT_NAME}-pass" -u "$curr_username" -a hackmd -p "$new_user_password" +} + +function hackmd_create_database { + if [ -f $IMAGE_PASSWORD_FILE ]; then + HACKMD_ADMIN_PASSWORD="$(printf "%d" "$(cat "")")" + else + if [ ! $HACKMD_ADMIN_PASSWORD ]; then + HACKMD_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})" + fi + fi + if [ ! $HACKMD_ADMIN_PASSWORD ]; then + return + fi + + create_database hackmd "$HACKMD_ADMIN_PASSWORD" $MY_USERNAME +} + +function reconfigure_hackmd { + # This is used if you need to switch identity. Dump old keys and generate new ones + echo -n '' +} + +function configure_interactive_hackmd { + W=(1 $"Option 1" + 2 $"Option 2") + + while true + do + # shellcheck disable=SC2068 + selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"hackmd" --menu $"Choose an operation, or ESC for main menu:" 14 70 3 "${W[@]}" 3>&2 2>&1 1>&3) + + if [ ! "$selection" ]; then + break + fi + case $selection in + 1) # call some function for option 1 + ;; + 2) # call some function for option 2 + ;; + esac + done +} + +function upgrade_hackmd { + CURR_HACKMD_COMMIT=$(get_completion_param "hackmd commit") + if [[ "$CURR_HACKMD_COMMIT" == "$HACKMD_COMMIT" ]]; then + return + fi + + if grep -q "hackmd domain" "$COMPLETION_FILE"; then + HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") + fi + + # update to the next commit + set_repo_commit "/etc/hackmd" "hackmd commit" "$HACKMD_COMMIT" "$HACKMD_REPO" + chown -R hackmd:hackmd "/etc/hackmd" + systemctl restart hackmd +} + +function backup_local_hackmd { + HACKMD_DOMAIN_NAME='hackmd' + if grep -q "hackmd domain" "$COMPLETION_FILE"; then + HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") + fi + + source_directory=/etc/hackmd + + suspend_site "${HACKMD_DOMAIN_NAME}" + + systemctl stop hackmd + + dest_directory=hackmd + backup_directory_to_usb "$source_directory" $dest_directory + + backup_database_to_usb hackmd + + restart_site + systemctl start hackmd +} + +function restore_local_hackmd { + if ! grep -q "hackmd domain" "$COMPLETION_FILE"; then + return + fi + HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") + if [ ! "$HACKMD_DOMAIN_NAME" ]; then + return + fi + suspend_site "${HACKMD_DOMAIN_NAME}" + systemctl stop hackmd + + temp_restore_dir=/root/temphackmd + hackmd_dir=/etc/hackmd + + hackmd_create_database + + restore_database hackmd + if [ -d $temp_restore_dir ]; then + rm -rf $temp_restore_dir + fi + + restore_directory_from_usb $temp_restore_dir hackmd + if [ -d $temp_restore_dir ]; then + if [ -d "$temp_restore_dir$hackmd_dir" ]; then + cp -rp "$temp_restore_dir$hackmd_dir"/* "$hackmd_dir"/ + else + if [ ! -d "$hackmd_dir" ]; then + mkdir "$hackmd_dir" + fi + cp -rp "$temp_restore_dir"/* "$hackmd_dir"/ + fi + chown -R hackmd:hackmd "$hackmd_dir" + rm -rf $temp_restore_dir + fi + systemctl start hackmd + + restart_site +} + +function backup_remote_hackmd { + HACKMD_DOMAIN_NAME='hackmd' + if grep -q "hackmd domain" "$COMPLETION_FILE"; then + HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") + fi + + source_directory=/etc/hackmd + + suspend_site "${HACKMD_DOMAIN_NAME}" + systemctl stop hackmd + + dest_directory=hackmd + backup_directory_to_friend "$source_directory" $dest_directory + backup_database_to_friend hackmd + + + systemctl start hackmd + + restart_site +} + +function restore_remote_hackmd { + if ! grep -q "hackmd domain" "$COMPLETION_FILE"; then + return + fi + HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") + if [ ! "$HACKMD_DOMAIN_NAME" ]; then + return + fi + suspend_site "${HACKMD_DOMAIN_NAME}" + systemctl stop hackmd + + temp_restore_dir=/root/temphackmd + hackmd_dir=/etc/hackmd + + hackmd_create_database + + restore_database_from_friend hackmd + if [ -d "$temp_restore_dir" ]; then + rm -rf $temp_restore_dir + fi + + restore_directory_from_friend $temp_restore_dir hackmd + if [ -d $temp_restore_dir ]; then + if [ -d "$temp_restore_dir$hackmd_dir" ]; then + cp -rp "$temp_restore_dir$hackmd_dir"/* "$hackmd_dir"/ + else + if [ ! -d "$hackmd_dir" ]; then + mkdir "$hackmd_dir" + fi + cp -rp $temp_restore_dir/* "$hackmd_dir"/ + fi + chown -R hackmd:hackmd "$hackmd_dir" + rm -rf $temp_restore_dir + fi + systemctl start hackmd + + restart_site +} + +function remove_hackmd { + nginx_dissite "$HACKMD_DOMAIN_NAME" + remove_certs "$HACKMD_DOMAIN_NAME" + + if [ -f /etc/systemd/system/hackmd.service ]; then + systemctl stop hackmd + systemctl disable hackmd + rm /etc/systemd/system/hackmd.service + fi + userdel -r hackmd + remove_nodejs hackmd + + + if [ -d "/var/www/$HACKMD_DOMAIN_NAME" ]; then + rm -rf "/var/www/$HACKMD_DOMAIN_NAME" + fi + if [ -f "/etc/nginx/sites-available/$HACKMD_DOMAIN_NAME" ]; then + rm "/etc/nginx/sites-available/$HACKMD_DOMAIN_NAME" + fi + drop_database hackmd + remove_onion_service hackmd "${HACKMD_ONION_PORT}" + if grep -q "hackmd" /etc/crontab; then + sed -i "/hackmd/d" /etc/crontab + fi + remove_app hackmd + remove_completion_param install_hackmd + sed -i '/hackmd/d' "$COMPLETION_FILE" + + remove_ddns_domain "$HACKMD_DOMAIN_NAME" +} + +function hackmd_create_config { + { echo '{'; + echo ' "production": {'; + echo ' "domain": "localhost",'; + echo ' "hsts": {'; + echo ' "enable": true,'; + echo ' "maxAgeSeconds": "31536000",'; + echo ' "includeSubdomains": true,'; + echo ' "preload": true'; + echo ' },'; + echo ' "csp": {'; + echo ' "enable": true,'; + echo ' "directives": {'; + echo ' },'; + echo ' "upgradeInsecureRequests": "auto",'; + echo ' "addDefaults": true,'; + echo ' "addDisqus": true,'; + echo ' "addGoogleAnalytics": true'; + echo ' },'; + echo ' "db": {'; + echo " \"username\": \"root\","; + echo " \"password\": \"$MARIADB_PASSWORD\","; + echo ' "database": "hackmd",'; + echo ' "host": "localhost",'; + echo ' "port": "5432",'; + echo ' "dialect": "mysql"'; + echo ' },'; + echo ' "github": {'; + echo ' "clientID": "change this",'; + echo ' "clientSecret": "change this"'; + echo ' },'; + echo ' "gitlab": {'; + echo ' "baseURL": "change this",'; + echo ' "clientID": "change this",'; + echo ' "clientSecret": "change this",'; + echo ' "scope": "use read_user scope for auth user only or remove this property if you need gitlab snippet import/export support (will result to be default scope api)"'; + echo ' }'; + echo ' }'; + echo '}'; } > config.json +} + +function install_hackmd { + install_mariadb + + get_mariadb_password + + install_nodejs hackmd + if [ ! "$HACKMD_DOMAIN_NAME" ]; then + echo $'No domain name was given' + exit 3568356 + fi + + if [ -d "/var/www/$HACKMD_DOMAIN_NAME/htdocs" ]; then + rm -rf "/var/www/$HACKMD_DOMAIN_NAME/htdocs" + fi + if [ -d /repos/hackmd ]; then + mkdir "/var/www/$HACKMD_DOMAIN_NAME/htdocs" + cp -r -p /repos/hackmd/. "/etc/hackmd" + cd "/etc/hackmd" || exit 36487365 + git pull + else + git_clone "$HACKMD_REPO" "/etc/hackmd" + fi + + if [ ! -d "/etc/hackmd" ]; then + echo $'Unable to clone hackmd repo' + exit 87525 + fi + + cd "/etc/hackmd" || exit 3463754637 + git checkout "$HACKMD_COMMIT" -b "$HACKMD_COMMIT" + set_completion_param "hackmd commit" "$HACKMD_COMMIT" + + if [ ! -f bin/setup ]; then + echo $'No setup file found' + exit 36587356 + fi + chmod +x bin/setup + ./bin/setup + hackmd_create_config + npm run build + + chmod g+w "/var/www/$HACKMD_DOMAIN_NAME/htdocs" + chown -R www-data:www-data "/var/www/$HACKMD_DOMAIN_NAME/htdocs" + + hackmd_create_database + + add_ddns_domain "$HACKMD_DOMAIN_NAME" + + HACKMD_ONION_HOSTNAME=$(add_onion_service hackmd 80 "${HACKMD_ONION_PORT}") + + hackmd_nginx_site=/etc/nginx/sites-available/$HACKMD_DOMAIN_NAME + if [[ "$ONION_ONLY" == "no" ]]; then + nginx_http_redirect "$HACKMD_DOMAIN_NAME" "index index.html" + { echo 'server {'; + echo ' listen 443 ssl;'; + echo ' #listen [::]:443 ssl;'; + echo " server_name $HACKMD_DOMAIN_NAME;"; + echo ''; } >> "$hackmd_nginx_site" + nginx_compress "$HACKMD_DOMAIN_NAME" + echo '' >> "$hackmd_nginx_site" + echo ' # Security' >> "$hackmd_nginx_site" + nginx_ssl "$HACKMD_DOMAIN_NAME" + + nginx_security_options "$HACKMD_DOMAIN_NAME" + + { echo ' add_header Strict-Transport-Security max-age=15768000;'; + echo ''; + echo ' access_log /dev/null;'; + echo ' error_log /dev/null;'; + echo ''; + echo " root /var/www/$HACKMD_DOMAIN_NAME/htdocs;"; + echo ''; + echo ' index index.html;'; + echo ' # Location'; + echo ' location / {'; } >> "$hackmd_nginx_site" + nginx_limits "$HACKMD_DOMAIN_NAME" '15m' + { echo " proxy_pass http://localhost:$HACKMD_PORT_INTERNAL;"; + echo ' }'; + echo '}'; } >> "$hackmd_nginx_site" + else + echo -n '' > "$hackmd_nginx_site" + fi + { echo 'server {'; + echo " listen 127.0.0.1:$HACKMD_ONION_PORT default_server;"; + echo " server_name $HACKMD_ONION_HOSTNAME;"; + echo ''; } >> "$hackmd_nginx_site" + nginx_compress "$HACKMD_DOMAIN_NAME" + echo '' >> "$hackmd_nginx_site" + nginx_security_options "$HACKMD_DOMAIN_NAME" + { echo ''; + echo ' access_log /dev/null;'; + echo ' error_log /dev/null;'; + echo ''; + echo " root /var/www/$HACKMD_DOMAIN_NAME/htdocs;"; + echo ''; + echo ' index index.html;'; + echo ' # Location'; + echo ' location / {'; } >> "$hackmd_nginx_site" + nginx_limits "$HACKMD_DOMAIN_NAME" '15m' + { echo " proxy_pass http://localhost:$HACKMD_PORT_INTERNAL;"; + echo ' }'; + echo '}'; } >> "$hackmd_nginx_site" + + adduser --system --home="/etc/hackmd" --group hackmd + + + + { echo '[Unit]'; + echo 'Description=hackmd'; + echo 'After=syslog.target'; + echo 'After=network.target'; + echo "Documentation=$HACKMD_REPO"; + echo ''; + echo '[Service]'; + echo 'Type=simple'; + echo 'User=hackmd'; + echo 'Group=hackmd'; + echo 'WorkingDirectory=/etc/hackmd'; + echo 'ExecStart=/usr/local/bin/npm start'; + echo 'ExecStop=/usr/local/bin/npm stop'; + echo 'Environment=USER=hackmd'; + echo 'Restart=always'; + echo 'StandardError=syslog'; + echo ''; + echo '[Install]'; + echo 'WantedBy=multi-user.target'; } >> "/etc/systemd/system/hackmd.service" + systemctl enable hackmd + chown -R hackmd:hackmd "/etc/hackmd" + systemctl start hackmd + + create_site_certificate "$HACKMD_DOMAIN_NAME" 'yes' + + nginx_ensite "$HACKMD_DOMAIN_NAME" + + systemctl restart mariadb + + systemctl restart nginx + + "${PROJECT_NAME}-pass" -u "$MY_USERNAME" -a hackmd -p "$HACKMD_ADMIN_PASSWORD" + set_completion_param "hackmd domain" "$HACKMD_DOMAIN_NAME" + + APP_INSTALLED=1 +} + +# NOTE: deliberately there is no "exit 0" From d592ad2619e9df06a2bfc3ca9ab2f09b30cb3e12 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 21 May 2018 13:58:00 +0100 Subject: [PATCH 137/214] Extra quotes --- src/freedombone-app-hackmd | 10 +++++----- src/freedombone-template | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/freedombone-app-hackmd b/src/freedombone-app-hackmd index c2a50e91..253d348b 100755 --- a/src/freedombone-app-hackmd +++ b/src/freedombone-app-hackmd @@ -89,18 +89,18 @@ function change_password_hackmd { } function hackmd_create_database { - if [ -f $IMAGE_PASSWORD_FILE ]; then + if [ -f "$IMAGE_PASSWORD_FILE" ]; then HACKMD_ADMIN_PASSWORD="$(printf "%d" "$(cat "")")" else - if [ ! $HACKMD_ADMIN_PASSWORD ]; then - HACKMD_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})" + if [ ! "$HACKMD_ADMIN_PASSWORD" ]; then + HACKMD_ADMIN_PASSWORD=$(create_password "${MINIMUM_PASSWORD_LENGTH}") fi fi - if [ ! $HACKMD_ADMIN_PASSWORD ]; then + if [ ! "$HACKMD_ADMIN_PASSWORD" ]; then return fi - create_database hackmd "$HACKMD_ADMIN_PASSWORD" $MY_USERNAME + create_database hackmd "$HACKMD_ADMIN_PASSWORD" "$MY_USERNAME" } function reconfigure_hackmd { diff --git a/src/freedombone-template b/src/freedombone-template index ba45ebbf..ce334fd4 100755 --- a/src/freedombone-template +++ b/src/freedombone-template @@ -344,22 +344,22 @@ echo '}' if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"* || "$database_type" == "mongo"* ]]; then echo '' echo "function ${app_name}_create_database {" - echo " if [ -f \$IMAGE_PASSWORD_FILE ]; then" + echo " if [ -f \"\$IMAGE_PASSWORD_FILE\" ]; then" echo " ${app_name_upper}_ADMIN_PASSWORD=\"\$(printf \"%d\" \"\$(cat \"$IMAGE_PASSWORD_FILE\")\")\"" echo ' else' - echo " if [ ! \$${app_name_upper}_ADMIN_PASSWORD ]; then" - echo " ${app_name_upper}_ADMIN_PASSWORD=\"\$(create_password \${MINIMUM_PASSWORD_LENGTH})\"" + echo " if [ ! \"\$${app_name_upper}_ADMIN_PASSWORD\" ]; then" + echo " ${app_name_upper}_ADMIN_PASSWORD=\$(create_password \"\${MINIMUM_PASSWORD_LENGTH}\")" echo ' fi' echo ' fi' - echo " if [ ! \$${app_name_upper}_ADMIN_PASSWORD ]; then" + echo " if [ ! \"\$${app_name_upper}_ADMIN_PASSWORD\" ]; then" echo ' return' echo ' fi' echo '' if [[ "$database_type" = "mysql" || "$database_type" = "mariadb" ]]; then - echo " create_database ${app_name} \"\$${app_name_upper}_ADMIN_PASSWORD\" \$MY_USERNAME" + echo " create_database ${app_name} \"\$${app_name_upper}_ADMIN_PASSWORD\" \"\$MY_USERNAME\"" fi if [[ "$database_type" = "mongo"* ]]; then - echo " create_database_mongodb ${app_name} \"\$${app_name_upper}_ADMIN_PASSWORD\" \$MY_USERNAME" + echo " create_database_mongodb ${app_name} \"\$${app_name_upper}_ADMIN_PASSWORD\" \"\$MY_USERNAME\"" fi if [[ "$database_type" == "postgres"* ]]; then echo ' systemctl restart postgresql' From 749f8ab283affc416e1b3c4302ca1318b886345f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 21 May 2018 14:24:55 +0100 Subject: [PATCH 138/214] Extra environment variables --- src/freedombone-app-hackmd | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/freedombone-app-hackmd b/src/freedombone-app-hackmd index 253d348b..e49f2a05 100755 --- a/src/freedombone-app-hackmd +++ b/src/freedombone-app-hackmd @@ -35,7 +35,7 @@ HACKMD_CODE= HACKMD_ONION_PORT=9052 HACKMD_REPO="https://github.com/hackmdio/hackmd" HACKMD_COMMIT='c71361467d6eee6519b050fb5c40fc32520a19a8' -HACKMD_PORT_INTERNAL=TODO +HACKMD_PORT_INTERNAL=3007 hackmd_variables=(ONION_ONLY HACKMD_DOMAIN_NAME @@ -301,19 +301,19 @@ function hackmd_create_config { echo ' "production": {'; echo ' "domain": "localhost",'; echo ' "hsts": {'; - echo ' "enable": true,'; + echo ' "enable": false,'; echo ' "maxAgeSeconds": "31536000",'; echo ' "includeSubdomains": true,'; echo ' "preload": true'; echo ' },'; echo ' "csp": {'; - echo ' "enable": true,'; + echo ' "enable": false,'; echo ' "directives": {'; echo ' },'; - echo ' "upgradeInsecureRequests": "auto",'; + echo ' "upgradeInsecureRequests": "false",'; echo ' "addDefaults": true,'; - echo ' "addDisqus": true,'; - echo ' "addGoogleAnalytics": true'; + echo ' "addDisqus": false,'; + echo ' "addGoogleAnalytics": false'; echo ' },'; echo ' "db": {'; echo " \"username\": \"root\","; @@ -442,7 +442,10 @@ function install_hackmd { adduser --system --home="/etc/hackmd" --group hackmd - + hmd_domain="$HACKMD_DOMAIN_NAME" + if [[ "$ONION_ONLY" != 'no' ]]; then + hmd_domain="$HACKMD_ONION_HOSTNAME" + fi { echo '[Unit]'; echo 'Description=hackmd'; @@ -458,6 +461,12 @@ function install_hackmd { echo 'ExecStart=/usr/local/bin/npm start'; echo 'ExecStop=/usr/local/bin/npm stop'; echo 'Environment=USER=hackmd'; + echo 'Environment=NODE_ENV=production'; + echo "Environment=HMD_DOMAIN=$hmd_domain"; + echo "Environment=HMD_PORT=$HACKMD_PORT_INTERNAL"; + echo 'Environment=HMD_PROTOCOL_USESSL=false'; + echo 'Environment=HMD_ALLOW_ANONYMOUS=false'; + echo 'Environment=HMD_ALLOW_FREEURL=true'; echo 'Restart=always'; echo 'StandardError=syslog'; echo ''; From 2d934d1fdd47c4d27becdc39aeb24b160a90a316 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 21 May 2018 14:27:20 +0100 Subject: [PATCH 139/214] Restart nginx on removal --- src/freedombone-app-hackmd | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-app-hackmd b/src/freedombone-app-hackmd index e49f2a05..de147dfa 100755 --- a/src/freedombone-app-hackmd +++ b/src/freedombone-app-hackmd @@ -294,6 +294,7 @@ function remove_hackmd { sed -i '/hackmd/d' "$COMPLETION_FILE" remove_ddns_domain "$HACKMD_DOMAIN_NAME" + systemctl restart nginx } function hackmd_create_config { From e570985bfea1f79fe27aa51e6077c90d14234b1a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 21 May 2018 18:14:18 +0100 Subject: [PATCH 140/214] Extra node packages --- src/freedombone-app-hackmd | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/freedombone-app-hackmd b/src/freedombone-app-hackmd index de147dfa..e74093b1 100755 --- a/src/freedombone-app-hackmd +++ b/src/freedombone-app-hackmd @@ -339,6 +339,8 @@ function hackmd_create_config { } function install_hackmd { + apt-get -yq install phantomjs + install_mariadb get_mariadb_password @@ -377,6 +379,23 @@ function install_hackmd { chmod +x bin/setup ./bin/setup hackmd_create_config + npm install + npm install ejs + npm install passport + npm install method-override + npm install cookie-parser + npm install compression + npm install express-session + npm install connect-session-sequelize + npm install morgan + npm install passport.socketio + npm install helmet + npm install i18n + npm install connect-flash + npm install lodash + npm install deep-freeze + npm install winston + npm install markdown-pdf npm run build chmod g+w "/var/www/$HACKMD_DOMAIN_NAME/htdocs" From 0291dbdbf1708d9d1446a658312e9ce04aab77c2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 21 May 2018 19:47:29 +0100 Subject: [PATCH 141/214] Extra packages --- src/freedombone-app-hackmd | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/freedombone-app-hackmd b/src/freedombone-app-hackmd index e74093b1..617b2760 100755 --- a/src/freedombone-app-hackmd +++ b/src/freedombone-app-hackmd @@ -141,6 +141,14 @@ function upgrade_hackmd { # update to the next commit set_repo_commit "/etc/hackmd" "hackmd commit" "$HACKMD_COMMIT" "$HACKMD_REPO" + + # Remove references to markdown-pdf node package, because it doesn't install on arm + cd /etc/hackmd || return + sed -i '/markdown-pdf/d' lib/response.js + sed -i '/markdownpdf/,/})/d' lib/response.js + mv yarn.lock yarn.lock.old + npm install + chown -R hackmd:hackmd "/etc/hackmd" systemctl restart hackmd } @@ -298,8 +306,11 @@ function remove_hackmd { } function hackmd_create_config { + hackmd_secret=$(create_password "30")$(create_password "30")$(create_password "30") + { echo '{'; echo ' "production": {'; + echo " \"sessionSecret\": \"$hackmd_secret\","; echo ' "domain": "localhost",'; echo ' "hsts": {'; echo ' "enable": false,'; @@ -395,7 +406,19 @@ function install_hackmd { npm install lodash npm install deep-freeze npm install winston - npm install markdown-pdf + npm install graceful-fs + npm install webpack + npm install extract-text-webpack-plugin + npm install html-webpack-plugin + npm install copy-webpack-plugin + npm install eve + npm install js-sequence-diagrams + #npm install markdown-pdf + + sed -i '/markdown-pdf/d' lib/response.js + sed -i '/markdownpdf/,/})/d' lib/response.js + + mv yarn.lock yarn.lock.old npm run build chmod g+w "/var/www/$HACKMD_DOMAIN_NAME/htdocs" From e483f37c009ed8d00db5673767da76a00065d0c4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 21 May 2018 19:48:30 +0100 Subject: [PATCH 142/214] Hackmd seems hard to install, especially on arm Particularly the node package markdown-pdf --- src/freedombone-app-hackmd | 536 ------------------------------------- 1 file changed, 536 deletions(-) delete mode 100755 src/freedombone-app-hackmd diff --git a/src/freedombone-app-hackmd b/src/freedombone-app-hackmd deleted file mode 100755 index 617b2760..00000000 --- a/src/freedombone-app-hackmd +++ /dev/null @@ -1,536 +0,0 @@ -#!/bin/bash -# -# _____ _ _ -# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ -# | __| _| -_| -_| . | . | | . | . | | -_| -# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| -# -# Freedom in the Cloud -# -# License -# ======= -# -# Copyright (C) 2018 Bob Mottram -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -VARIANTS='full full-vim' - -IN_DEFAULT_INSTALL=0 -SHOW_ON_ABOUT=1 - -HACKMD_DOMAIN_NAME= -HACKMD_CODE= -HACKMD_ONION_PORT=9052 -HACKMD_REPO="https://github.com/hackmdio/hackmd" -HACKMD_COMMIT='c71361467d6eee6519b050fb5c40fc32520a19a8' -HACKMD_PORT_INTERNAL=3007 - -hackmd_variables=(ONION_ONLY - HACKMD_DOMAIN_NAME - HACKMD_CODE - DDNS_PROVIDER - MY_USERNAME) - -function logging_on_hackmd { - echo -n '' -} - -function logging_off_hackmd { - echo -n '' -} - -function remove_user_hackmd { - remove_username="$1" - - "${PROJECT_NAME}-pass" -u "$remove_username" --rmapp hackmd -} - -function add_user_hackmd { - new_username="$1" - new_user_password="$2" - - "${PROJECT_NAME}-pass" -u "$new_username" -a hackmd -p "$new_user_password" - echo '0' -} - -function install_interactive_hackmd { - if [ ! "$ONION_ONLY" ]; then - ONION_ONLY='no' - fi - - if [[ "$ONION_ONLY" != "no" ]]; then - HACKMD_DOMAIN_NAME='hackmd.local' - write_config_param "HACKMD_DOMAIN_NAME" "$HACKMD_DOMAIN_NAME" - else - interactive_site_details "hackmd" "HACKMD_DOMAIN_NAME" "HACKMD_CODE" - fi - APP_INSTALLED=1 -} - -function change_password_hackmd { - curr_username="$1" - new_user_password="$2" - - read_config_param 'HACKMD_DOMAIN_NAME' - - "${PROJECT_NAME}-pass" -u "$curr_username" -a hackmd -p "$new_user_password" -} - -function hackmd_create_database { - if [ -f "$IMAGE_PASSWORD_FILE" ]; then - HACKMD_ADMIN_PASSWORD="$(printf "%d" "$(cat "")")" - else - if [ ! "$HACKMD_ADMIN_PASSWORD" ]; then - HACKMD_ADMIN_PASSWORD=$(create_password "${MINIMUM_PASSWORD_LENGTH}") - fi - fi - if [ ! "$HACKMD_ADMIN_PASSWORD" ]; then - return - fi - - create_database hackmd "$HACKMD_ADMIN_PASSWORD" "$MY_USERNAME" -} - -function reconfigure_hackmd { - # This is used if you need to switch identity. Dump old keys and generate new ones - echo -n '' -} - -function configure_interactive_hackmd { - W=(1 $"Option 1" - 2 $"Option 2") - - while true - do - # shellcheck disable=SC2068 - selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"hackmd" --menu $"Choose an operation, or ESC for main menu:" 14 70 3 "${W[@]}" 3>&2 2>&1 1>&3) - - if [ ! "$selection" ]; then - break - fi - case $selection in - 1) # call some function for option 1 - ;; - 2) # call some function for option 2 - ;; - esac - done -} - -function upgrade_hackmd { - CURR_HACKMD_COMMIT=$(get_completion_param "hackmd commit") - if [[ "$CURR_HACKMD_COMMIT" == "$HACKMD_COMMIT" ]]; then - return - fi - - if grep -q "hackmd domain" "$COMPLETION_FILE"; then - HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") - fi - - # update to the next commit - set_repo_commit "/etc/hackmd" "hackmd commit" "$HACKMD_COMMIT" "$HACKMD_REPO" - - # Remove references to markdown-pdf node package, because it doesn't install on arm - cd /etc/hackmd || return - sed -i '/markdown-pdf/d' lib/response.js - sed -i '/markdownpdf/,/})/d' lib/response.js - mv yarn.lock yarn.lock.old - npm install - - chown -R hackmd:hackmd "/etc/hackmd" - systemctl restart hackmd -} - -function backup_local_hackmd { - HACKMD_DOMAIN_NAME='hackmd' - if grep -q "hackmd domain" "$COMPLETION_FILE"; then - HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") - fi - - source_directory=/etc/hackmd - - suspend_site "${HACKMD_DOMAIN_NAME}" - - systemctl stop hackmd - - dest_directory=hackmd - backup_directory_to_usb "$source_directory" $dest_directory - - backup_database_to_usb hackmd - - restart_site - systemctl start hackmd -} - -function restore_local_hackmd { - if ! grep -q "hackmd domain" "$COMPLETION_FILE"; then - return - fi - HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") - if [ ! "$HACKMD_DOMAIN_NAME" ]; then - return - fi - suspend_site "${HACKMD_DOMAIN_NAME}" - systemctl stop hackmd - - temp_restore_dir=/root/temphackmd - hackmd_dir=/etc/hackmd - - hackmd_create_database - - restore_database hackmd - if [ -d $temp_restore_dir ]; then - rm -rf $temp_restore_dir - fi - - restore_directory_from_usb $temp_restore_dir hackmd - if [ -d $temp_restore_dir ]; then - if [ -d "$temp_restore_dir$hackmd_dir" ]; then - cp -rp "$temp_restore_dir$hackmd_dir"/* "$hackmd_dir"/ - else - if [ ! -d "$hackmd_dir" ]; then - mkdir "$hackmd_dir" - fi - cp -rp "$temp_restore_dir"/* "$hackmd_dir"/ - fi - chown -R hackmd:hackmd "$hackmd_dir" - rm -rf $temp_restore_dir - fi - systemctl start hackmd - - restart_site -} - -function backup_remote_hackmd { - HACKMD_DOMAIN_NAME='hackmd' - if grep -q "hackmd domain" "$COMPLETION_FILE"; then - HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") - fi - - source_directory=/etc/hackmd - - suspend_site "${HACKMD_DOMAIN_NAME}" - systemctl stop hackmd - - dest_directory=hackmd - backup_directory_to_friend "$source_directory" $dest_directory - backup_database_to_friend hackmd - - - systemctl start hackmd - - restart_site -} - -function restore_remote_hackmd { - if ! grep -q "hackmd domain" "$COMPLETION_FILE"; then - return - fi - HACKMD_DOMAIN_NAME=$(get_completion_param "hackmd domain") - if [ ! "$HACKMD_DOMAIN_NAME" ]; then - return - fi - suspend_site "${HACKMD_DOMAIN_NAME}" - systemctl stop hackmd - - temp_restore_dir=/root/temphackmd - hackmd_dir=/etc/hackmd - - hackmd_create_database - - restore_database_from_friend hackmd - if [ -d "$temp_restore_dir" ]; then - rm -rf $temp_restore_dir - fi - - restore_directory_from_friend $temp_restore_dir hackmd - if [ -d $temp_restore_dir ]; then - if [ -d "$temp_restore_dir$hackmd_dir" ]; then - cp -rp "$temp_restore_dir$hackmd_dir"/* "$hackmd_dir"/ - else - if [ ! -d "$hackmd_dir" ]; then - mkdir "$hackmd_dir" - fi - cp -rp $temp_restore_dir/* "$hackmd_dir"/ - fi - chown -R hackmd:hackmd "$hackmd_dir" - rm -rf $temp_restore_dir - fi - systemctl start hackmd - - restart_site -} - -function remove_hackmd { - nginx_dissite "$HACKMD_DOMAIN_NAME" - remove_certs "$HACKMD_DOMAIN_NAME" - - if [ -f /etc/systemd/system/hackmd.service ]; then - systemctl stop hackmd - systemctl disable hackmd - rm /etc/systemd/system/hackmd.service - fi - userdel -r hackmd - remove_nodejs hackmd - - - if [ -d "/var/www/$HACKMD_DOMAIN_NAME" ]; then - rm -rf "/var/www/$HACKMD_DOMAIN_NAME" - fi - if [ -f "/etc/nginx/sites-available/$HACKMD_DOMAIN_NAME" ]; then - rm "/etc/nginx/sites-available/$HACKMD_DOMAIN_NAME" - fi - drop_database hackmd - remove_onion_service hackmd "${HACKMD_ONION_PORT}" - if grep -q "hackmd" /etc/crontab; then - sed -i "/hackmd/d" /etc/crontab - fi - remove_app hackmd - remove_completion_param install_hackmd - sed -i '/hackmd/d' "$COMPLETION_FILE" - - remove_ddns_domain "$HACKMD_DOMAIN_NAME" - systemctl restart nginx -} - -function hackmd_create_config { - hackmd_secret=$(create_password "30")$(create_password "30")$(create_password "30") - - { echo '{'; - echo ' "production": {'; - echo " \"sessionSecret\": \"$hackmd_secret\","; - echo ' "domain": "localhost",'; - echo ' "hsts": {'; - echo ' "enable": false,'; - echo ' "maxAgeSeconds": "31536000",'; - echo ' "includeSubdomains": true,'; - echo ' "preload": true'; - echo ' },'; - echo ' "csp": {'; - echo ' "enable": false,'; - echo ' "directives": {'; - echo ' },'; - echo ' "upgradeInsecureRequests": "false",'; - echo ' "addDefaults": true,'; - echo ' "addDisqus": false,'; - echo ' "addGoogleAnalytics": false'; - echo ' },'; - echo ' "db": {'; - echo " \"username\": \"root\","; - echo " \"password\": \"$MARIADB_PASSWORD\","; - echo ' "database": "hackmd",'; - echo ' "host": "localhost",'; - echo ' "port": "5432",'; - echo ' "dialect": "mysql"'; - echo ' },'; - echo ' "github": {'; - echo ' "clientID": "change this",'; - echo ' "clientSecret": "change this"'; - echo ' },'; - echo ' "gitlab": {'; - echo ' "baseURL": "change this",'; - echo ' "clientID": "change this",'; - echo ' "clientSecret": "change this",'; - echo ' "scope": "use read_user scope for auth user only or remove this property if you need gitlab snippet import/export support (will result to be default scope api)"'; - echo ' }'; - echo ' }'; - echo '}'; } > config.json -} - -function install_hackmd { - apt-get -yq install phantomjs - - install_mariadb - - get_mariadb_password - - install_nodejs hackmd - if [ ! "$HACKMD_DOMAIN_NAME" ]; then - echo $'No domain name was given' - exit 3568356 - fi - - if [ -d "/var/www/$HACKMD_DOMAIN_NAME/htdocs" ]; then - rm -rf "/var/www/$HACKMD_DOMAIN_NAME/htdocs" - fi - if [ -d /repos/hackmd ]; then - mkdir "/var/www/$HACKMD_DOMAIN_NAME/htdocs" - cp -r -p /repos/hackmd/. "/etc/hackmd" - cd "/etc/hackmd" || exit 36487365 - git pull - else - git_clone "$HACKMD_REPO" "/etc/hackmd" - fi - - if [ ! -d "/etc/hackmd" ]; then - echo $'Unable to clone hackmd repo' - exit 87525 - fi - - cd "/etc/hackmd" || exit 3463754637 - git checkout "$HACKMD_COMMIT" -b "$HACKMD_COMMIT" - set_completion_param "hackmd commit" "$HACKMD_COMMIT" - - if [ ! -f bin/setup ]; then - echo $'No setup file found' - exit 36587356 - fi - chmod +x bin/setup - ./bin/setup - hackmd_create_config - npm install - npm install ejs - npm install passport - npm install method-override - npm install cookie-parser - npm install compression - npm install express-session - npm install connect-session-sequelize - npm install morgan - npm install passport.socketio - npm install helmet - npm install i18n - npm install connect-flash - npm install lodash - npm install deep-freeze - npm install winston - npm install graceful-fs - npm install webpack - npm install extract-text-webpack-plugin - npm install html-webpack-plugin - npm install copy-webpack-plugin - npm install eve - npm install js-sequence-diagrams - #npm install markdown-pdf - - sed -i '/markdown-pdf/d' lib/response.js - sed -i '/markdownpdf/,/})/d' lib/response.js - - mv yarn.lock yarn.lock.old - npm run build - - chmod g+w "/var/www/$HACKMD_DOMAIN_NAME/htdocs" - chown -R www-data:www-data "/var/www/$HACKMD_DOMAIN_NAME/htdocs" - - hackmd_create_database - - add_ddns_domain "$HACKMD_DOMAIN_NAME" - - HACKMD_ONION_HOSTNAME=$(add_onion_service hackmd 80 "${HACKMD_ONION_PORT}") - - hackmd_nginx_site=/etc/nginx/sites-available/$HACKMD_DOMAIN_NAME - if [[ "$ONION_ONLY" == "no" ]]; then - nginx_http_redirect "$HACKMD_DOMAIN_NAME" "index index.html" - { echo 'server {'; - echo ' listen 443 ssl;'; - echo ' #listen [::]:443 ssl;'; - echo " server_name $HACKMD_DOMAIN_NAME;"; - echo ''; } >> "$hackmd_nginx_site" - nginx_compress "$HACKMD_DOMAIN_NAME" - echo '' >> "$hackmd_nginx_site" - echo ' # Security' >> "$hackmd_nginx_site" - nginx_ssl "$HACKMD_DOMAIN_NAME" - - nginx_security_options "$HACKMD_DOMAIN_NAME" - - { echo ' add_header Strict-Transport-Security max-age=15768000;'; - echo ''; - echo ' access_log /dev/null;'; - echo ' error_log /dev/null;'; - echo ''; - echo " root /var/www/$HACKMD_DOMAIN_NAME/htdocs;"; - echo ''; - echo ' index index.html;'; - echo ' # Location'; - echo ' location / {'; } >> "$hackmd_nginx_site" - nginx_limits "$HACKMD_DOMAIN_NAME" '15m' - { echo " proxy_pass http://localhost:$HACKMD_PORT_INTERNAL;"; - echo ' }'; - echo '}'; } >> "$hackmd_nginx_site" - else - echo -n '' > "$hackmd_nginx_site" - fi - { echo 'server {'; - echo " listen 127.0.0.1:$HACKMD_ONION_PORT default_server;"; - echo " server_name $HACKMD_ONION_HOSTNAME;"; - echo ''; } >> "$hackmd_nginx_site" - nginx_compress "$HACKMD_DOMAIN_NAME" - echo '' >> "$hackmd_nginx_site" - nginx_security_options "$HACKMD_DOMAIN_NAME" - { echo ''; - echo ' access_log /dev/null;'; - echo ' error_log /dev/null;'; - echo ''; - echo " root /var/www/$HACKMD_DOMAIN_NAME/htdocs;"; - echo ''; - echo ' index index.html;'; - echo ' # Location'; - echo ' location / {'; } >> "$hackmd_nginx_site" - nginx_limits "$HACKMD_DOMAIN_NAME" '15m' - { echo " proxy_pass http://localhost:$HACKMD_PORT_INTERNAL;"; - echo ' }'; - echo '}'; } >> "$hackmd_nginx_site" - - adduser --system --home="/etc/hackmd" --group hackmd - - hmd_domain="$HACKMD_DOMAIN_NAME" - if [[ "$ONION_ONLY" != 'no' ]]; then - hmd_domain="$HACKMD_ONION_HOSTNAME" - fi - - { echo '[Unit]'; - echo 'Description=hackmd'; - echo 'After=syslog.target'; - echo 'After=network.target'; - echo "Documentation=$HACKMD_REPO"; - echo ''; - echo '[Service]'; - echo 'Type=simple'; - echo 'User=hackmd'; - echo 'Group=hackmd'; - echo 'WorkingDirectory=/etc/hackmd'; - echo 'ExecStart=/usr/local/bin/npm start'; - echo 'ExecStop=/usr/local/bin/npm stop'; - echo 'Environment=USER=hackmd'; - echo 'Environment=NODE_ENV=production'; - echo "Environment=HMD_DOMAIN=$hmd_domain"; - echo "Environment=HMD_PORT=$HACKMD_PORT_INTERNAL"; - echo 'Environment=HMD_PROTOCOL_USESSL=false'; - echo 'Environment=HMD_ALLOW_ANONYMOUS=false'; - echo 'Environment=HMD_ALLOW_FREEURL=true'; - echo 'Restart=always'; - echo 'StandardError=syslog'; - echo ''; - echo '[Install]'; - echo 'WantedBy=multi-user.target'; } >> "/etc/systemd/system/hackmd.service" - systemctl enable hackmd - chown -R hackmd:hackmd "/etc/hackmd" - systemctl start hackmd - - create_site_certificate "$HACKMD_DOMAIN_NAME" 'yes' - - nginx_ensite "$HACKMD_DOMAIN_NAME" - - systemctl restart mariadb - - systemctl restart nginx - - "${PROJECT_NAME}-pass" -u "$MY_USERNAME" -a hackmd -p "$HACKMD_ADMIN_PASSWORD" - set_completion_param "hackmd domain" "$HACKMD_DOMAIN_NAME" - - APP_INSTALLED=1 -} - -# NOTE: deliberately there is no "exit 0" From 56a8a7ac7e4dd9d7ab728c946b46e46dbf8dc969 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 21 May 2018 21:40:14 +0100 Subject: [PATCH 143/214] Bump smolrss commit --- src/freedombone-app-smolrss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index b5fd0379..0fa7b103 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -35,7 +35,7 @@ SMOLRSS_DOMAIN_NAME= SMOLRSS_CODE= SMOLRSS_ONION_PORT=8751 SMOLRSS_REPO="https://github.com/bashrc/smolrss" -SMOLRSS_COMMIT='f6478243e43c53fe40116eabf7118b0cd2d28f1a' +SMOLRSS_COMMIT='d9fca3fd76b95c601553a1264ff500c287211105' smolrss_variables=(ONION_ONLY SMOLRSS_DOMAIN_NAME From 77ef565a3c80be5492247537eda3b8d38e49fc34 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 12:28:52 +0100 Subject: [PATCH 144/214] Matrix synapse 0.28.1 --- src/freedombone-app-matrix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix index 3992238d..de34a5f1 100755 --- a/src/freedombone-app-matrix +++ b/src/freedombone-app-matrix @@ -48,7 +48,7 @@ MATRIX_PORT=8009 MATRIX_FEDERATION_ONION_PORT=8111 MATRIX_ONION_PORT=8109 MATRIX_REPO="https://github.com/matrix-org/synapse" -MATRIX_COMMIT='ddb00efc1ddec646d02e8def6053003f04d077d7' +MATRIX_COMMIT='ab5e888927e6a38190a65e10af7acf67873124e3' REPORT_STATS="no" MATRIX_SECRET= MATRIX_EXPIRE_MONTHS=1 From 7a6c52b487f2b38d393c833ad7e5f5f6f1813b47 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 12:43:25 +0100 Subject: [PATCH 145/214] Set temp directory for matrix upgrades --- src/freedombone-app-matrix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix index de34a5f1..034e07c9 100755 --- a/src/freedombone-app-matrix +++ b/src/freedombone-app-matrix @@ -418,6 +418,11 @@ function upgrade_matrix { function_check set_repo_commit set_repo_commit /etc/matrix "matrix commit" "$MATRIX_COMMIT" $MATRIX_REPO cd /etc/matrix || exit 62476724 + if [ ! -d /etc/matrix/tmp ]; then + mkdir /etc/matrix/tmp + fi + export TMPDIR=/etc/matrix/tmp + pip install --upgrade --process-dependency-links . pip install --upgrade --force "pynacl>=1.2.1" @@ -434,6 +439,11 @@ function upgrade_matrix { fi systemctl start turn systemctl start matrix + + export TMPDIR=/tmp + if [ -d /etc/matrix/tmp ]; then + rm -rf /etc/matrix/tmp/* + fi } function backup_local_matrix { From 7c192ca04609dea4711bcd3ca2f46c68be5ba560 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 12:50:58 +0100 Subject: [PATCH 146/214] pynacl version --- src/freedombone-app-matrix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix index 034e07c9..fa2ba9d4 100755 --- a/src/freedombone-app-matrix +++ b/src/freedombone-app-matrix @@ -431,7 +431,7 @@ function upgrade_matrix { chown -R matrix:matrix /etc/matrix chown -R matrix:matrix $MATRIX_DATA_DIR - pip install --upgrade --force "pynacl==0.3.0" + pip install --upgrade --force "pynacl>=1.2.1" pip install --upgrade --force "phonenumbers>=8.2.0" if [ -f /etc/ssl/certs/${MATRIX_DOMAIN_NAME}.dhparam ]; then @@ -804,7 +804,7 @@ function install_matrix { # wait for nginx to start otherwise user add fails later sleep 5 - pip install --upgrade --force "pynacl==0.3.0" + pip install --upgrade --force "pynacl>=1.2.1" if [[ $(add_user_matrix "${MY_USERNAME}" "${MATRIX_PASSWORD}" | tail -n 1) != "0" ]]; then echo $'Failed to add matrix admin user'; From 159ee9002ce8ee8c68d561c6f21842c8493e2425 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 12:53:45 +0100 Subject: [PATCH 147/214] Additional package needed for matrix --- src/freedombone-app-matrix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix index fa2ba9d4..e79ccc73 100755 --- a/src/freedombone-app-matrix +++ b/src/freedombone-app-matrix @@ -432,6 +432,7 @@ function upgrade_matrix { chown -R matrix:matrix $MATRIX_DATA_DIR pip install --upgrade --force "pynacl>=1.2.1" + pip install --upgrade --force "canonicaljson>=1.1.3" pip install --upgrade --force "phonenumbers>=8.2.0" if [ -f /etc/ssl/certs/${MATRIX_DOMAIN_NAME}.dhparam ]; then @@ -805,6 +806,7 @@ function install_matrix { sleep 5 pip install --upgrade --force "pynacl>=1.2.1" + pip install --upgrade --force "canonicaljson>=1.1.3" if [[ $(add_user_matrix "${MY_USERNAME}" "${MATRIX_PASSWORD}" | tail -n 1) != "0" ]]; then echo $'Failed to add matrix admin user'; From 6ba9c72af497033274991fecdaac40a582c3d822 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 12:57:10 +0100 Subject: [PATCH 148/214] Upgrade matrix to 0.30.0 --- src/freedombone-app-matrix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix index e79ccc73..de6bd581 100755 --- a/src/freedombone-app-matrix +++ b/src/freedombone-app-matrix @@ -48,7 +48,7 @@ MATRIX_PORT=8009 MATRIX_FEDERATION_ONION_PORT=8111 MATRIX_ONION_PORT=8109 MATRIX_REPO="https://github.com/matrix-org/synapse" -MATRIX_COMMIT='ab5e888927e6a38190a65e10af7acf67873124e3' +MATRIX_COMMIT='9e8ab0a4f44a3ec9e4b049f5571c14e333e8f0fa' REPORT_STATS="no" MATRIX_SECRET= MATRIX_EXPIRE_MONTHS=1 From 47869af5d677c9dbd76b12f5e45ab9590d26c477 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 13:09:37 +0100 Subject: [PATCH 149/214] Upgrade riot version --- src/freedombone-app-riot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-riot b/src/freedombone-app-riot index 015e1156..b596d566 100755 --- a/src/freedombone-app-riot +++ b/src/freedombone-app-riot @@ -32,7 +32,7 @@ IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=1 NOT_ON_ONION=1 -RIOT_VERSION='0.13.3' +RIOT_VERSION='0.15.3' RIOT_FILENAME="riot-v${RIOT_VERSION}" RIOT_HASH='bcd6c2f4be018612ac76a71b58749a5edab1e02de7d145a22d9b9aa6e6a89129' RIOT_DOWNLOAD_URL="https://github.com/vector-im/riot-web/releases/download/v${RIOT_VERSION}" From 45c117a7a20e23c592bc0b3927464917a49d5a0d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 13:11:18 +0100 Subject: [PATCH 150/214] Update riot hash --- src/freedombone-app-riot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-riot b/src/freedombone-app-riot index b596d566..e513d024 100755 --- a/src/freedombone-app-riot +++ b/src/freedombone-app-riot @@ -34,7 +34,7 @@ NOT_ON_ONION=1 RIOT_VERSION='0.15.3' RIOT_FILENAME="riot-v${RIOT_VERSION}" -RIOT_HASH='bcd6c2f4be018612ac76a71b58749a5edab1e02de7d145a22d9b9aa6e6a89129' +RIOT_HASH='0aecaa1c0d1e387c1730fea33cdb01b1a296e6146b7aef6a819fa90d9efc026e' RIOT_DOWNLOAD_URL="https://github.com/vector-im/riot-web/releases/download/v${RIOT_VERSION}" RIOT_ONION_PORT=8115 RIOT_ONION_HOSTNAME= From e803b6b130de39af0684aaf6bed1f7c75550565e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 17:51:07 +0100 Subject: [PATCH 151/214] Remove ip addresses from email logs --- src/freedombone-base-email | 20 ++++++++++++++++++++ src/freedombone-upgrade | 1 + src/freedombone-utils-setup | 3 +++ 3 files changed, 24 insertions(+) diff --git a/src/freedombone-base-email b/src/freedombone-base-email index 71b266ec..84ac0374 100755 --- a/src/freedombone-base-email +++ b/src/freedombone-base-email @@ -1694,4 +1694,24 @@ function install_email { mark_completed "${FUNCNAME[0]}" } +function remove_ip_addresses_from_email_logs { + { echo '#!/bin/bash'; + echo 'if [ -f /var/log/exim4/mainlog ]; then'; + echo " if grep -q '\\[' /var/log/exim4/mainlog; then"; + echo " tail -n 50 /var/log/exim4/mainlog | sed 's/\\[[^][]*\\]//g' > /tmp/.exim4_mainlog"; + echo ' chown Debian-exim:adm /tmp/.exim4_mainlog'; + echo ' mv /tmp/.exim4_mainlog /var/log/exim4/mainlog'; + echo ' fi'; + echo 'fi'; + echo 'if [ -f /var/log/exim4/rejectlog ]; then'; + echo " if grep -q '\\[' /var/log/exim4/rejectlog; then"; + echo " tail -n 50 /var/log/exim4/rejectlog | sed 's/\\[[^][]*\\]//g' > /tmp/.exim4_rejectlog"; + echo ' chown Debian-exim:adm /tmp/.exim4_rejectlog'; + echo ' mv /tmp/.exim4_rejectlog /var/log/exim4/rejectlog'; + echo ' fi'; + echo 'fi'; } > /usr/bin/exim_log_tidy + chown +x /usr/bin/exim_log_tidy + cron_add_mins 1 '/usr/bin/exim_log_tidy' +} + # NOTE: deliberately no exit 0 diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 94c408ca..e5891212 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -107,6 +107,7 @@ if [ -d "$PROJECT_DIR" ]; then apt-get -yq -t stretch-backports install certbot email_install_tls email_disable_chunking + remove_ip_addresses_from_email_logs rm /etc/exim4/exim4.conf.template.bak* email_update_onion_domain prevent_mail_process_overrun diff --git a/src/freedombone-utils-setup b/src/freedombone-utils-setup index ba2a43ef..cf892569 100755 --- a/src/freedombone-utils-setup +++ b/src/freedombone-utils-setup @@ -1096,6 +1096,9 @@ function setup_email { function_check install_email install_email + function_check remove_ip_addresses_from_email_logs + remove_ip_addresses_from_email_logs + function_check create_procmail create_procmail From 8eb28483f0db7ae276f4846a3c87eac826295ab7 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 18:05:59 +0100 Subject: [PATCH 152/214] chmod --- src/freedombone-base-email | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-base-email b/src/freedombone-base-email index 84ac0374..1e06b907 100755 --- a/src/freedombone-base-email +++ b/src/freedombone-base-email @@ -1710,7 +1710,7 @@ function remove_ip_addresses_from_email_logs { echo ' mv /tmp/.exim4_rejectlog /var/log/exim4/rejectlog'; echo ' fi'; echo 'fi'; } > /usr/bin/exim_log_tidy - chown +x /usr/bin/exim_log_tidy + chmod +x /usr/bin/exim_log_tidy cron_add_mins 1 '/usr/bin/exim_log_tidy' } From 77993fb22948c48ae0468e94d0cf91ccb01dcbe8 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 23 May 2018 18:14:34 +0100 Subject: [PATCH 153/214] Better email log handling --- src/freedombone-base-email | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/freedombone-base-email b/src/freedombone-base-email index 1e06b907..28dbd422 100755 --- a/src/freedombone-base-email +++ b/src/freedombone-base-email @@ -1696,18 +1696,28 @@ function install_email { function remove_ip_addresses_from_email_logs { { echo '#!/bin/bash'; - echo 'if [ -f /var/log/exim4/mainlog ]; then'; - echo " if grep -q '\\[' /var/log/exim4/mainlog; then"; - echo " tail -n 50 /var/log/exim4/mainlog | sed 's/\\[[^][]*\\]//g' > /tmp/.exim4_mainlog"; - echo ' chown Debian-exim:adm /tmp/.exim4_mainlog'; - echo ' mv /tmp/.exim4_mainlog /var/log/exim4/mainlog'; + echo ''; + echo 'if grep -q "= /dev/null" /etc/php/7.0/fpm/php-fpm.conf; then'; + echo ' if [ -f /var/log/exim4/mainlog ]; then'; + echo ' rm /var/log/exim4/mainlog'; echo ' fi'; - echo 'fi'; - echo 'if [ -f /var/log/exim4/rejectlog ]; then'; - echo " if grep -q '\\[' /var/log/exim4/rejectlog; then"; - echo " tail -n 50 /var/log/exim4/rejectlog | sed 's/\\[[^][]*\\]//g' > /tmp/.exim4_rejectlog"; - echo ' chown Debian-exim:adm /tmp/.exim4_rejectlog'; - echo ' mv /tmp/.exim4_rejectlog /var/log/exim4/rejectlog'; + echo ' if [ -f /var/log/exim4/rejectlog ]; then'; + echo ' rm /var/log/exim4/rejectlog'; + echo ' fi'; + echo 'else'; + echo ' if [ -f /var/log/exim4/mainlog ]; then'; + echo " if grep -q '\\[' /var/log/exim4/mainlog; then"; + echo " tail -n 50 /var/log/exim4/mainlog | sed 's/\\[[^][]*\\]//g' > /tmp/.exim4_mainlog"; + echo ' chown Debian-exim:adm /tmp/.exim4_mainlog'; + echo ' mv /tmp/.exim4_mainlog /var/log/exim4/mainlog'; + echo ' fi'; + echo ' fi'; + echo ' if [ -f /var/log/exim4/rejectlog ]; then'; + echo " if grep -q '\\[' /var/log/exim4/rejectlog; then"; + echo " tail -n 50 /var/log/exim4/rejectlog | sed 's/\\[[^][]*\\]//g' > /tmp/.exim4_rejectlog"; + echo ' chown Debian-exim:adm /tmp/.exim4_rejectlog'; + echo ' mv /tmp/.exim4_rejectlog /var/log/exim4/rejectlog'; + echo ' fi'; echo ' fi'; echo 'fi'; } > /usr/bin/exim_log_tidy chmod +x /usr/bin/exim_log_tidy From 8861e41128666b65e5bf9a3d95dec3ae8e1a8267 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 12:59:48 +0100 Subject: [PATCH 154/214] Changed user menu --- doc/EN/app_syncthing.org | 2 +- website/EN/app_syncthing.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/EN/app_syncthing.org b/doc/EN/app_syncthing.org index d2e97ee2..73186c34 100644 --- a/doc/EN/app_syncthing.org +++ b/doc/EN/app_syncthing.org @@ -39,7 +39,7 @@ In another terminal log into Freedombone: ssh username@domainname -p 2222 #+END_SRC -Then select *File Synchronization*. +Then select *Run an App* and *syncthing*. #+attr_html: :width 80% :align center [[file:images/controlpanel/control_panel_file_sync.jpg]] diff --git a/website/EN/app_syncthing.html b/website/EN/app_syncthing.html index 5d477593..17e6618d 100644 --- a/website/EN/app_syncthing.html +++ b/website/EN/app_syncthing.html @@ -4,7 +4,7 @@ - + @@ -205,7 +205,7 @@ In another terminal log into Freedombone:

    -Then select File Synchronization. +Then select Run an App and syncthing.

    From 6781dba015d0e2418ebff26383cd19ec051dc24e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 13:17:11 +0100 Subject: [PATCH 155/214] Selecting apps on the user control panel --- src/freedombone-controlpanel-user | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/freedombone-controlpanel-user b/src/freedombone-controlpanel-user index f78ee5f2..6ebc59bb 100755 --- a/src/freedombone-controlpanel-user +++ b/src/freedombone-controlpanel-user @@ -812,7 +812,7 @@ function sign_keys { function menu_run_client_app { detect_installable_apps - applist="" + W=() appnames=() n=1 app_index=0 @@ -821,7 +821,7 @@ function menu_run_client_app { do if [[ ${APPS_INSTALLED[$app_index]} != "0" ]]; then if [[ $(function_exists "run_client_${a}") == "1" ]]; then - applist="$applist $n $a off" + W+=("$n" "$a") n=$((n+1)) appnames+=("$a") fi @@ -831,24 +831,17 @@ function menu_run_client_app { if [ $n -le 1 ]; then return fi - backstr=$'Exit' - applist="$applist $n $backstr on" - appnames+=("Exit") # shellcheck disable=SC2086 - choice=$(dialog --stdout --backtitle $"Freedombone" \ - --title $"Run an App" \ - --radiolist $'Choose:' \ - 16 40 20 $applist) + selection=$(dialog --backtitle $"Freedombone" --title $"Run an App" --menu $"Choose an operation, or ESC for main menu:" 16 70 20 "${W[@]}" 3>&2 2>&1 1>&3) - # shellcheck disable=SC2181 - if [ $? -eq 0 ]; then - app_index=$((choice-1)) - chosen_app=${appnames[$app_index]} - if [[ $chosen_app != "Exit" ]]; then - "run_client_${chosen_app}" - fi + if [ ! "$selection" ]; then + return fi + + app_index=$((selection-1)) + chosen_app=${appnames[$app_index]} + "run_client_${chosen_app}" } function show_your_email_address { From c7d16657a6842860bec3d94ded9f1e1aa1bf3b45 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 13:33:44 +0100 Subject: [PATCH 156/214] New style syncthing menu --- src/freedombone-app-syncthing | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/src/freedombone-app-syncthing b/src/freedombone-app-syncthing index 1a78be9c..49fd18f0 100755 --- a/src/freedombone-app-syncthing +++ b/src/freedombone-app-syncthing @@ -213,33 +213,26 @@ function run_client_syncthing { SYNCTHING_CONFIG_FILE=~/.syncthingids SYNCTHING_ID=$(cat ~/.syncthing-server-id) + W=(1 $"Show device ID for ${PROJECT_NAME}" + 2 $"Add an ID for another machine or device" + 3 $"Remove an ID for another machine or device" + 4 $"Manually edit device IDs") + while true do - data=$(mktemp 2>/dev/null) - dialog --backtitle $"Freedombone User Control Panel" \ - --title $"File Synchronization" \ - --radiolist $"Choose an operation:" 12 70 6 \ - 1 $"Show device ID for ${PROJECT_NAME}" off \ - 2 $"Add an ID for another machine or device" off \ - 3 $"Remove an ID for another machine or device" off \ - 4 $"Manually edit device IDs" off \ - 5 $"Back to main menu" on 2> "$data" - sel=$? - case $sel in - 1) rm -f "$data" - break;; - 255) rm -f "$data" - break;; - esac - case $(cat "$data") in + # shellcheck disable=SC2068 + selection=$(dialog --backtitle $"Freedombone User Control Panel" --title $"File Synchronization" --menu $"Choose an operation, or ESC for main menu:" 12 70 6 "${W[@]}" 3>&2 2>&1 1>&3) + + if [ ! "$selection" ]; then + break + fi + + case $selection in 1) syncthing_show_id;; 2) syncthing_add_id;; 3) syncthing_remove_id;; 4) syncthing_manual_edit;; - 5) rm -f "$data" - break;; esac - rm -f "$data" done } From d36f92711a1a1ec8d494f4239113b8ed2546398b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 13:41:14 +0100 Subject: [PATCH 157/214] Mention syncthing-gtk --- doc/EN/app_syncthing.org | 3 +++ website/EN/app_syncthing.html | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/EN/app_syncthing.org b/doc/EN/app_syncthing.org index 73186c34..a8532997 100644 --- a/doc/EN/app_syncthing.org +++ b/doc/EN/app_syncthing.org @@ -55,6 +55,9 @@ From the top menu select *Actions* and then *Show ID*, then copy the ID string ( Now wait for a few minutes. Eventually you will see two messages appear within the browser asking if you want to add two new folders from the Freedombone server. Say yes to both, and specify *~/Sync* as the directory with your username and *~/SyncShared* as the shared directory. You can now copy files into your *~/Sync* directory and they will automatically be synced to the server. Those will be files which only you can access. If you copy files into *~/SyncShared* then they will also be available to any other users on the system. +* Desktop app +If you're running Arch/Parabola there is a package called [[https://github.com/syncthing/syncthing-gtk][syncthing-gtk]] which provides a GTK GUI and an icon indicating whether synchronization is happening. This can be more convenient than using the browser interface. + * On Android Install Syncthing and Connectbot from F-droid. diff --git a/website/EN/app_syncthing.html b/website/EN/app_syncthing.html index 17e6618d..b26b50ce 100644 --- a/website/EN/app_syncthing.html +++ b/website/EN/app_syncthing.html @@ -4,7 +4,7 @@ - + @@ -239,9 +239,18 @@ Now wait for a few minutes. Eventually you will see two messages appear within t
    -

    On Android

    +

    Desktop app

    +If you're running Arch/Parabola there is a package called syncthing-gtk which provides a GTK GUI and an icon indicating whether synchronization is happening. This can be more convenient than using the browser interface. +

    +
    +
    + +
    +

    On Android

    +
    +

    Install Syncthing and Connectbot from F-droid.

    From e685d0ec19e334e331b8ce9d700dc739bdbf9ad0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 19:14:41 +0100 Subject: [PATCH 158/214] Bump pleroma commit --- src/freedombone-app-pleroma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 6b2d3dfd..b9a390de 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -36,7 +36,7 @@ PLEROMA_CODE= PLEROMA_PORT=4000 PLEROMA_ONION_PORT=8011 PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git" -PLEROMA_COMMIT='1d4bbec6b3239bb83b500a6a90e6686cb682cfac' +PLEROMA_COMMIT='6b9a6838331210dd514d5ecda52783c183bd1bbf' PLEROMA_ADMIN_PASSWORD= PLEROMA_DIR=/etc/pleroma PLEROMA_SECRET_KEY="" From a7576e0581f7512ab5ab94c8359bd1028e269ae6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 21:11:35 +0100 Subject: [PATCH 159/214] Tor messenger is deprecated --- doc/EN/app_xmpp.org | 3 --- website/EN/app_xmpp.html | 13 ++----------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/doc/EN/app_xmpp.org b/doc/EN/app_xmpp.org index dee57a64..058db2e3 100644 --- a/doc/EN/app_xmpp.org +++ b/doc/EN/app_xmpp.org @@ -71,9 +71,6 @@ Enter your username (username@domainname) and password. Click on *Advanced* and make sure that *Encryption required* and *Ignore SSL certificate errors* are checked. Ignoring the certificate errors will allow you to use the self-signed certificate created earlier. Then click *Done* and set your Jabber account and Empathy to *On*. -* Using Tor Messenger -Tor Messenger is a messaging client which supports XMPP, and its onion routing enables you to protect the metadata of chat interactions to some extent by making it difficult for an adversary to know which server is talking to which. You can download Tor Messenger from [[https://torproject.org][torproject.org]] and the setup is pretty simple. - * Using with Android/Conversations Install [[https://f-droid.org/][F-Droid]] diff --git a/website/EN/app_xmpp.html b/website/EN/app_xmpp.html index 4f5a5c6f..bc659183 100644 --- a/website/EN/app_xmpp.html +++ b/website/EN/app_xmpp.html @@ -4,7 +4,7 @@ - + @@ -279,18 +279,9 @@ Click on Advanced and make sure that Encryption required and Ig
    -

    Using Tor Messenger

    +

    Using with Android/Conversations

    -Tor Messenger is a messaging client which supports XMPP, and its onion routing enables you to protect the metadata of chat interactions to some extent by making it difficult for an adversary to know which server is talking to which. You can download Tor Messenger from torproject.org and the setup is pretty simple. -

    -
    -
    - -
    -

    Using with Android/Conversations

    -
    -

    Install F-Droid

    From af88095e089db4b84ea74c3100bbd46333376921 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 21:16:55 +0100 Subject: [PATCH 160/214] Mention xmpp support channel membership --- doc/EN/index.org | 2 +- website/EN/index.html | 151 +++++++++--------------------------------- 2 files changed, 31 insertions(+), 122 deletions(-) diff --git a/doc/EN/index.org b/doc/EN/index.org index 0254c70e..c7910f1f 100644 --- a/doc/EN/index.org +++ b/doc/EN/index.org @@ -21,7 +21,7 @@ Check out the [[./apps.html][list of available apps]] and [[./faq.html][Frequent Disk images which can be cloned straight to USB or microSD drives are [[./downloads/v31][available here]]. -If you find bugs, or want to add a new app to this system see the [[./devguide.html][Developers Guide]] and [[./codeofconduct.html][Code of Conduct]]. There is a Matrix chat room available at *#fbone:matrix.freedombone.net* and an XMPP channel at *support@chat.freedombone.net*. +If you find bugs, or want to add a new app to this system see the [[./devguide.html][Developers Guide]] and [[./codeofconduct.html][Code of Conduct]]. There is a Matrix chat room available at *#fbone:matrix.freedombone.net* and an XMPP channel at *support@chat.freedombone.net*. The XMPP channel requires membership which you can ask for via [[./support.html][these contact details]]. If you like this project and want to support continued development then [[./support.html][here's what to do]]. diff --git a/website/EN/index.html b/website/EN/index.html index 6b562d8c..ed5464c2 100644 --- a/website/EN/index.html +++ b/website/EN/index.html @@ -3,33 +3,26 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - - - - - - - + + + + + - + @@ -189,7 +97,7 @@ @licstart The following is the entire license notice for the JavaScript code in this tag. -Copyright (C) 2012-2017 Free Software Foundation, Inc. +Copyright (C) 2012-2013 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modify it under the terms of the GNU @@ -236,13 +144,14 @@ for the JavaScript code in this tag.
    +

    logo.png

    -
    +

    New release 3.1

    @@ -265,7 +174,7 @@ Disk images which can be cloned straight to USB or microSD drives are Developers Guide and Code of Conduct. There is a Matrix chat room available at #fbone:matrix.freedombone.net and an XMPP channel at support@chat.freedombone.net. +If you find bugs, or want to add a new app to this system see the
    Developers Guide and Code of Conduct. There is a Matrix chat room available at #fbone:matrix.freedombone.net and an XMPP channel at support@chat.freedombone.net. The XMPP channel requires membership which you can ask for via these contact details.

    From f591090f07ab557add9a0af7f50c66067486b9b1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 21:19:14 +0100 Subject: [PATCH 161/214] Link to information about backups --- doc/EN/index.org | 2 +- website/EN/index.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/EN/index.org b/doc/EN/index.org index c7910f1f..346715d8 100644 --- a/doc/EN/index.org +++ b/doc/EN/index.org @@ -17,7 +17,7 @@ So you want to run your own internet services? Email, chat, VoIP, web sites, fil You can run Freedombone on an old laptop or a single board computer. See the [[./installmethods.html][list of installation methods]]. You can also use it to [[./mesh.html][set up a mesh network]] in your local area. -Check out the [[./apps.html][list of available apps]] and [[./faq.html][Frequently Asked Questions]] section. Recent developments are also described on [[https://blog.freedombone.net/tag/freedombone][the blog]]. +Check out the [[./apps.html][list of available apps]] and [[./faq.html][Frequently Asked Questions]] section. Recent developments are also described on [[https://blog.freedombone.net/tag/freedombone][the blog]]. You might also wish to know how to [[./backups.html][backup and restore the system]]. Disk images which can be cloned straight to USB or microSD drives are [[./downloads/v31][available here]]. diff --git a/website/EN/index.html b/website/EN/index.html index ed5464c2..b9a4a698 100644 --- a/website/EN/index.html +++ b/website/EN/index.html @@ -4,7 +4,7 @@ - + @@ -166,7 +166,7 @@ You can run Freedombone on an old laptop or a single board computer. See the

    -Check out the list of available apps and Frequently Asked Questions section. Recent developments are also described on the blog. +Check out the list of available apps and Frequently Asked Questions section. Recent developments are also described on the blog. You might also wish to know how to backup and restore the system.

    From 2af31a4a084534ee12ebce250dd1971b300f99d4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 21:24:24 +0100 Subject: [PATCH 162/214] Mention membership --- doc/EN/support.org | 2 +- website/EN/support.html | 214 ++++++++++++---------------------------- 2 files changed, 62 insertions(+), 154 deletions(-) diff --git a/doc/EN/support.org b/doc/EN/support.org index 0aa8fa74..590d30ad 100644 --- a/doc/EN/support.org +++ b/doc/EN/support.org @@ -21,7 +21,7 @@ This site can also be accessed via a Tor browser at *http://yjxlc3imv7obva4grjae #+attr_html: :width 60% :align center [[file:images/pubkey.png]] -*XMPP channel:* support@chat.freedombone.net +*XMPP channel:* support@chat.freedombone.net (Requires membership. Ask via any of the other contact methods) *Matrix:* #fbone:matrix.freedombone.net diff --git a/website/EN/support.html b/website/EN/support.html index 1616da5f..990f0519 100644 --- a/website/EN/support.html +++ b/website/EN/support.html @@ -3,33 +3,26 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - - - - - - - + + + + + - + @@ -189,7 +97,7 @@ @licstart The following is the entire license notice for the JavaScript code in this tag. -Copyright (C) 2012-2017 Free Software Foundation, Inc. +Copyright (C) 2012-2013 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modify it under the terms of the GNU @@ -236,19 +144,20 @@ for the JavaScript code in this tag.

    +

    logo.png

    -
    -

    Support

    +
    +

    Support

    -
    -

    Contact details

    -
    +
    +

    Contact details

    +

    This site can also be accessed via a Tor browser at http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion

    @@ -267,7 +176,7 @@ This site can also be accessed via a Tor browser at
    -
    -

    Things which would be nice to have

    -
    -
    -
    -

    Ideas

    -
    +
    +

    Things which would be nice to have

    +
    +
    +

    Ideas

    +

    Know of some fabulous web system which could run on Freedombone, but currently doesn't? Contact the above, and be prepared to make a compelling argument for why it should be included.

    -
    -

    Money

    -
    +
    +

    Money

    +
    -
    -

    Testing and reporting bugs

    -
    +
    +

    Testing and reporting bugs

    +

    Testing of the install on different hardware. Also pentesting on test installations to find vulnerabilities.

    -
    -

    Web design and artwork

    -
    + -
    -

    Howto videos

    -
    +
    +

    Howto videos

    +

    If you're good at making videos then a howto for installing Freedombone onto various types of hardware, or testing the mesh system in realistic/exotic scenarios would be good. You could even host videos on PeerTube or Mediagoblin.

    -
    -

    More education and promotion

    -
    +
    +

    More education and promotion

    +

    educate.png @@ -351,18 +259,18 @@ Raising awareness beyond the near zero current level, overcoming fear and parano

    -
    -

    Translations

    -
    +
    +

    Translations

    +

    To add translations modify the json files within the locale subdirectory. Then make a pull request on the Github site.

    -
    -

    Packaging

    -
    +
    +

    Packaging

    +

    Helping to package GNU Social and Hubzilla for Debian would be beneficial.

    From 417cd763882921364cc53f82b6af05b80f4530ca Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 21:39:09 +0100 Subject: [PATCH 163/214] Show public key block on support page --- doc/EN/support.org | 16 ++++++++++++++++ website/EN/support.html | 20 +++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/doc/EN/support.org b/doc/EN/support.org index 590d30ad..e33cb576 100644 --- a/doc/EN/support.org +++ b/doc/EN/support.org @@ -18,6 +18,22 @@ This site can also be accessed via a Tor browser at *http://yjxlc3imv7obva4grjae *Email:* bob@freedombone.net *PGP/GPG Public key:* +#+BEGIN_SRC bash +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEWZBueBYJKwYBBAHaRw8BAQdAKx1t6wL0RTuU6/IBjngMbVJJ3Wg/3UW73/PV +I47xKTS0IUJvYiBNb3R0cmFtIDxib2JAZnJlZWRvbWJvbmUubmV0PoiQBBMWCAA4 +FiEEmruCwAq/OfgmgEh9zCU2GR+nwz8FAlmQbngCGwMFCwkIBwMFFQoJCAsFFgID +AQACHgECF4AACgkQzCU2GR+nwz/9sAD/YgsHnVszHNz1zlVc5EgY1ByDupiJpHj0 +XsLYk3AbNRgBALn45RqgD4eWHpmOriH09H5Rc5V9iN4+OiGUn2AzJ6oHuDgEWZBu +eBIKKwYBBAGXVQEFAQEHQPRBG2ZQJce475S3e0Dxeb0Fz5WdEu2q3GYLo4QG+4Ry +AwEIB4h4BBgWCAAgFiEEmruCwAq/OfgmgEh9zCU2GR+nwz8FAlmQbngCGwwACgkQ +zCU2GR+nwz+OswD+JOoyBku9FzuWoVoOevU2HH+bPOMDgY2OLnST9ZSyHkMBAMcK +fnaZ2Wi050483Sj2RmQRpb99Dod7rVZTDtCqXk0J +=gv5G +-----END PGP PUBLIC KEY BLOCK----- +#+END_SRC + #+attr_html: :width 60% :align center [[file:images/pubkey.png]] diff --git a/website/EN/support.html b/website/EN/support.html index 990f0519..5961a7db 100644 --- a/website/EN/support.html +++ b/website/EN/support.html @@ -4,7 +4,7 @@ - + @@ -169,6 +169,24 @@ This site can also be accessed via a Tor browser at
    + +
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    +
    +mDMEWZBueBYJKwYBBAHaRw8BAQdAKx1t6wL0RTuU6/IBjngMbVJJ3Wg/3UW73/PV
    +I47xKTS0IUJvYiBNb3R0cmFtIDxib2JAZnJlZWRvbWJvbmUubmV0PoiQBBMWCAA4
    +FiEEmruCwAq/OfgmgEh9zCU2GR+nwz8FAlmQbngCGwMFCwkIBwMFFQoJCAsFFgID
    +AQACHgECF4AACgkQzCU2GR+nwz/9sAD/YgsHnVszHNz1zlVc5EgY1ByDupiJpHj0
    +XsLYk3AbNRgBALn45RqgD4eWHpmOriH09H5Rc5V9iN4+OiGUn2AzJ6oHuDgEWZBu
    +eBIKKwYBBAGXVQEFAQEHQPRBG2ZQJce475S3e0Dxeb0Fz5WdEu2q3GYLo4QG+4Ry
    +AwEIB4h4BBgWCAAgFiEEmruCwAq/OfgmgEh9zCU2GR+nwz8FAlmQbngCGwwACgkQ
    +zCU2GR+nwz+OswD+JOoyBku9FzuWoVoOevU2HH+bPOMDgY2OLnST9ZSyHkMBAMcK
    +fnaZ2Wi050483Sj2RmQRpb99Dod7rVZTDtCqXk0J
    +=gv5G
    +-----END PGP PUBLIC KEY BLOCK-----
    +
    +
    +

    pubkey.png From 6ea6d928b3eef23a7a5601a87fc96211ecf10107 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 24 May 2018 21:43:15 +0100 Subject: [PATCH 164/214] Better membership instructions --- doc/EN/support.org | 4 ++-- website/EN/support.html | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/EN/support.org b/doc/EN/support.org index e33cb576..06f4652c 100644 --- a/doc/EN/support.org +++ b/doc/EN/support.org @@ -15,7 +15,7 @@ This site can also be accessed via a Tor browser at *http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion* -*Email:* bob@freedombone.net +*Email/XMPP:* bob@freedombone.net *PGP/GPG Public key:* #+BEGIN_SRC bash @@ -37,7 +37,7 @@ fnaZ2Wi050483Sj2RmQRpb99Dod7rVZTDtCqXk0J #+attr_html: :width 60% :align center [[file:images/pubkey.png]] -*XMPP channel:* support@chat.freedombone.net (Requires membership. Ask via any of the other contact methods) +*XMPP channel:* support@chat.freedombone.net (Requires membership. Ask via XMPP to *bob@freedombone.net*) *Matrix:* #fbone:matrix.freedombone.net diff --git a/website/EN/support.html b/website/EN/support.html index 5961a7db..c18a68b1 100644 --- a/website/EN/support.html +++ b/website/EN/support.html @@ -4,7 +4,7 @@ - + @@ -163,7 +163,7 @@ This site can also be accessed via a Tor browser at '; echo ' '; echo " This is a test on $local_hostname"; echo ' '; echo ''; } > "/var/www/${local_hostname}/htdocs/index.html" - chown -R www-data:www-data "/var/www/${local_hostname}/htdocs" nginx_file=/etc/nginx/sites-available/$local_hostname { echo 'server {'; @@ -1160,6 +1162,15 @@ function install_web_local_user_interface { echo ' index index.html;'; echo '}'; } > "$nginx_file" nginx_ensite "$local_hostname" + + # Compatibility with FreedomBox android app + # The installed apps get published to a json file called "1" + # in this directory + if [ ! -d "/var/www/${local_hostname}/htdocs/plinth/api" ]; then + mkdir -p "/var/www/${local_hostname}/htdocs/plinth/api" + fi + + chown -R www-data:www-data "/var/www/${local_hostname}/htdocs" } # NOTE: deliberately no exit 0 From 89794b7b1659b311db97027fc36b785319529803 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 15:17:34 +0100 Subject: [PATCH 167/214] Support for freedombox android app --- src/freedombone-addremove | 1 + src/freedombone-template | 6 ++ src/freedombone-upgrade | 1 + src/freedombone-utils-android | 127 +++++++++++++++++++++++++++++++++ src/freedombone-utils-selector | 2 +- 5 files changed, 136 insertions(+), 1 deletion(-) create mode 100755 src/freedombone-utils-android diff --git a/src/freedombone-addremove b/src/freedombone-addremove index af5c9a60..f93b3eb7 100755 --- a/src/freedombone-addremove +++ b/src/freedombone-addremove @@ -267,5 +267,6 @@ if [[ "$1" == "add-all" ]]; then else install_apps_selected fi +android_update_apps exit 0 diff --git a/src/freedombone-template b/src/freedombone-template index ce334fd4..42ff37ff 100755 --- a/src/freedombone-template +++ b/src/freedombone-template @@ -280,6 +280,12 @@ if [ $app_daemon ]; then fi fi echo '' +echo $'# These parameters are used by the FreedomBox mobile app' +echo "${app_name_upper}_SHORT_DESCRIPTION=" +echo "${app_name_upper}_DESCRIPTION=" +echo "${app_name_upper}_ICON_URL=" +echo "${app_name_upper}_MOBILE_APP_URL=" +echo '' echo "${app_name}_variables=(ONION_ONLY" echo " ${app_name_upper}_DOMAIN_NAME" echo " ${app_name_upper}_CODE" diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index e5891212..b36d3233 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -111,6 +111,7 @@ if [ -d "$PROJECT_DIR" ]; then rm /etc/exim4/exim4.conf.template.bak* email_update_onion_domain prevent_mail_process_overrun + android_update_apps #defrag_filesystem # reinstall tor from backports diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android new file mode 100755 index 00000000..78b9ff57 --- /dev/null +++ b/src/freedombone-utils-android @@ -0,0 +1,127 @@ +#!/bin/bash +# _____ _ _ +# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ +# | __| _| -_| -_| . | . | | . | . | | -_| +# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| +# +# Freedom in the Cloud +# +# Integration with the FreedomBox android app +# +# License +# ======= +# +# Copyright (C) 2018 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +function android_update_apps { + if [ "$1" ]; then + detect_installable_apps + fi + + local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local + plinth_api="/var/www/${local_hostname}/htdocs/plinth/api/1" + + if [ ! -d "/var/www/${local_hostname}/htdocs/plinth/api" ]; then + mkdir -p "/var/www/${local_hostname}/htdocs/plinth/api" + fi + + echo '{' > "$plinth_api" + echo ' "shortcuts": [' >> "$plinth_api" + + android_ctr=0 + app_index=0 + # shellcheck disable=SC2068 + for a in ${APPS_INSTALLED[@]} + do + if [[ "$a" == "1" ]]; then + app_name=${APPS_INSTALLED_NAMES[$app_index]} + app_filename="/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}" + if [ -f "$app_filename" ]; then + if [ $android_ctr -gt 0 ]; then + echo ',' >> "$plinth_api" + fi + app_name_upper=$(echo "$app_name" | awk '{print toupper($0)}') + "${app_name_upper}_SHORT_DESCRIPTION"= + "${app_name_upper}_DESCRIPTION"= + "${app_name_upper}_ICON_URL"= + "${app_name_upper}_MOBILE_APP_URL"= + if ! grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then + # shellcheck disable=SC2140 + "${app_name_upper}_SHORT_DESCRIPTION"="$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + fi + if ! grep "${app_name_upper}_DESCRIPTION=" "$app_filename"; then + # shellcheck disable=SC2140 + "${app_name_upper}_DESCRIPTION"="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + fi + if ! grep "${app_name_upper}_ICON_URL=" "$app_filename"; then + # shellcheck disable=SC2140 + "${app_name_upper}_ICON_URL"="$(grep "${app_name_upper}_ICON_URL=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + fi + if ! grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename"; then + # shellcheck disable=SC2140 + "${app_name_upper}_MOBILE_APP_URL"="$(grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + fi + + { echo ' {'; + echo " \"name\": \"${app_name}\","; + echo " \"short_description\": \"${app_name_upper}_SHORT_DESCRIPTION\","; + echo " \"description\": \"${app_name_upper}_DESCRIPTION\","; + echo " \"icon_url\": \"${app_name_upper}_ICON_URL\","; + echo " \"clients\": ["; + echo ' {'; + echo " \"name\": \"${app_name}\","; + echo " \"platforms\": ["; + echo ' {'; + echo ' "type": "web",'; + echo " \"url\": \"${app_name_upper}_DOMAIN_NAME\""; + echo ' }'; + echo ' ]'; + echo -n ' }'; } >> "$plinth_api" + + if [[ $(("${app_name_upper}_MOBILE_APP_URL")) ]]; then + { echo ','; + echo ' {'; + echo " \"name\": \"${app_name}\","; + echo " \"platforms\": ["; + echo ' {'; + echo ' "type": "store",'; + echo ' "os": "android",'; + echo ' "store_name": "f-droid",'; + echo " \"url\": \"${app_name_upper}_MOBILE_APP_URL\""; + echo ' }'; + echo ' ]'; + echo -n ' }'; } >> "$plinth_api" + else + echo '' >> "$plinth_api" + fi + + { echo ' ]'; + echo -n ' }'; } >> "$plinth_api" + + android_ctr=$((android_ctr+1)) + fi + fi + app_index=$((app_index+1)) + done + + { echo ''; + echo ' ]'; + echo '}'; } >> "$plinth_api" + + chown -R www-data:www-data "/var/www/${local_hostname}/htdocs/plinth" +} + +# NOTE: deliberately no exit 0 diff --git a/src/freedombone-utils-selector b/src/freedombone-utils-selector index 99aaab1b..a03d3766 100755 --- a/src/freedombone-utils-selector +++ b/src/freedombone-utils-selector @@ -584,7 +584,7 @@ function add_users_after_install { if [[ $(is_valid_user "$USERNAME") == "1" ]]; then if [[ "$USERNAME" != "$ADMIN_USERNAME" ]]; then if [[ $(user_added_to_app "${USERNAME}" "${app_name}") == "0" ]]; then - valstr=$"Login for user ${USERNAME}=" + #valstr=$"Login for user ${USERNAME}=" app_password="$(create_password ${MINIMUM_PASSWORD_LENGTH})" "add_user_${app_name}" "${USERNAME}" "${app_password}" echo "${app_name}_${USERNAME}" >> "$APP_USERS_FILE" From 287ad1b2d414ebc08bf66e51a97a3a136d28cb43 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 15:20:26 +0100 Subject: [PATCH 168/214] Detect installed apps --- src/freedombone-upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index b36d3233..e408c619 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -111,7 +111,7 @@ if [ -d "$PROJECT_DIR" ]; then rm /etc/exim4/exim4.conf.template.bak* email_update_onion_domain prevent_mail_process_overrun - android_update_apps + android_update_apps yes #defrag_filesystem # reinstall tor from backports From 95b0f1cbee3de6c1e46454f9374d9a8bad8f750a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 15:34:09 +0100 Subject: [PATCH 169/214] Only add web client if a corresponding domain variable exists --- src/freedombone-utils-android | 47 +++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index 78b9ff57..f12d6b30 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -58,49 +58,54 @@ function android_update_apps { "${app_name_upper}_DESCRIPTION"= "${app_name_upper}_ICON_URL"= "${app_name_upper}_MOBILE_APP_URL"= - if ! grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then + if grep -q "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then # shellcheck disable=SC2140 "${app_name_upper}_SHORT_DESCRIPTION"="$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" fi - if ! grep "${app_name_upper}_DESCRIPTION=" "$app_filename"; then + if grep -q "${app_name_upper}_DESCRIPTION=" "$app_filename"; then # shellcheck disable=SC2140 "${app_name_upper}_DESCRIPTION"="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" fi - if ! grep "${app_name_upper}_ICON_URL=" "$app_filename"; then + if grep -q "${app_name_upper}_ICON_URL=" "$app_filename"; then # shellcheck disable=SC2140 "${app_name_upper}_ICON_URL"="$(grep "${app_name_upper}_ICON_URL=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" fi - if ! grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename"; then + if grep -q "${app_name_upper}_MOBILE_APP_URL=" "$app_filename"; then # shellcheck disable=SC2140 "${app_name_upper}_MOBILE_APP_URL"="$(grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" fi { echo ' {'; echo " \"name\": \"${app_name}\","; - echo " \"short_description\": \"${app_name_upper}_SHORT_DESCRIPTION\","; - echo " \"description\": \"${app_name_upper}_DESCRIPTION\","; - echo " \"icon_url\": \"${app_name_upper}_ICON_URL\","; - echo " \"clients\": ["; - echo ' {'; - echo " \"name\": \"${app_name}\","; - echo " \"platforms\": ["; - echo ' {'; - echo ' "type": "web",'; - echo " \"url\": \"${app_name_upper}_DOMAIN_NAME\""; - echo ' }'; - echo ' ]'; - echo -n ' }'; } >> "$plinth_api" + echo " \"short_description\": \"$((${app_name_upper}_SHORT_DESCRIPTION))\","; + echo " \"description\": \"$((${app_name_upper}_DESCRIPTION))\","; + echo " \"icon_url\": \"$((${app_name_upper}_ICON_URL))\","; + echo " \"clients\": ["; } >> "$plinth_api" - if [[ $(("${app_name_upper}_MOBILE_APP_URL")) ]]; then - { echo ','; - echo ' {'; + if [ $(("${app_name_upper}_DOMAIN_NAME")) ]; then + { echo ' {'; + echo " \"name\": \"${app_name}\","; + echo " \"platforms\": ["; + echo ' {'; + echo ' "type": "web",'; + echo " \"url\": \"$((${app_name_upper}_DOMAIN_NAME))\""; + echo ' }'; + echo ' ]'; + echo -n ' }'; } >> "$plinth_api" + fi + + if [ $(("${app_name_upper}_MOBILE_APP_URL")) ]; then + if [ $(("${app_name_upper}_DOMAIN_NAME")) ]; then + echo ',' >> "$plinth_api" + fi + { echo ' {'; echo " \"name\": \"${app_name}\","; echo " \"platforms\": ["; echo ' {'; echo ' "type": "store",'; echo ' "os": "android",'; echo ' "store_name": "f-droid",'; - echo " \"url\": \"${app_name_upper}_MOBILE_APP_URL\""; + echo " \"url\": \"$((${app_name_upper}_MOBILE_APP_URL))\""; echo ' }'; echo ' ]'; echo -n ' }'; } >> "$plinth_api" From fe963a94d6ea6bbdf124fb97379378c7002b30c0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 15:36:06 +0100 Subject: [PATCH 170/214] Hack to try to ensure nginx failures don't happen when matrix is installed --- src/freedombone-upgrade | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index e408c619..aa0acd17 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -126,6 +126,13 @@ fi # If logging was left on then turn it off ${PROJECT_NAME}-logging off +# This is a hack to fix nginx failures which happen sometimes +# when matrix is installed +if [ -d /etc/matrix ]; then + systemctl restart matrix + systemctl restart nginx +fi + # upgrading file prevents USB canary from activating if [ -f /tmp/.upgrading ]; then rm /tmp/.upgrading From dad0b391f5deec323e196cd25a3136f5b0620149 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 17:27:55 +0100 Subject: [PATCH 171/214] Add mobile app variables to app scripts --- src/freedombone-app-akaunting | 5 +++++ src/freedombone-app-bludit | 5 +++++ src/freedombone-app-dlna | 5 +++++ src/freedombone-app-dokuwiki | 5 +++++ src/freedombone-app-edith | 5 +++++ src/freedombone-app-etherpad | 5 +++++ src/freedombone-app-fedwiki | 5 +++++ src/freedombone-app-friendica | 5 +++++ src/freedombone-app-gnusocial | 5 +++++ src/freedombone-app-gogs | 5 +++++ src/freedombone-app-htmly | 5 +++++ src/freedombone-app-hubzilla | 5 +++++ src/freedombone-app-icecast | 5 +++++ src/freedombone-app-irc | 5 +++++ src/freedombone-app-jitsi | 5 +++++ src/freedombone-app-kanboard | 4 ++++ src/freedombone-app-koel | 5 +++++ src/freedombone-app-lychee | 5 +++++ src/freedombone-app-mailpile | 5 +++++ src/freedombone-app-matrix | 5 +++++ src/freedombone-app-mediagoblin | 5 +++++ src/freedombone-app-movim | 5 +++++ src/freedombone-app-mumble | 5 +++++ src/freedombone-app-nextcloud | 5 +++++ src/freedombone-app-peertube | 5 +++++ src/freedombone-app-pleroma | 5 +++++ src/freedombone-app-postactiv | 5 +++++ src/freedombone-app-privatebin | 5 +++++ src/freedombone-app-rocketchat | 5 +++++ src/freedombone-app-syncthing | 5 +++++ src/freedombone-app-turtl | 5 +++++ src/freedombone-app-xmpp | 5 +++++ src/freedombone-syncthing | 5 +++++ src/freedombone-utils-android | 4 ++-- 34 files changed, 166 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-akaunting b/src/freedombone-app-akaunting index 9963023c..e6ae32a9 100755 --- a/src/freedombone-app-akaunting +++ b/src/freedombone-app-akaunting @@ -40,6 +40,11 @@ AKAUNTING_ADMIN_PASSWORD= AKAUNTING_BACKGROUND_IMAGE_URL= +AKAUNTING_SHORT_DESCRIPTION=$'Personal accounting' +AKAUNTING_DESCRIPTION=$'Personal or small business accounting' +AKAUNTING_ICON_URL= +AKAUNTING_MOBILE_APP_URL= + akaunting_variables=(ONION_ONLY AKAUNTING_DOMAIN_NAME AKAUNTING_CODE diff --git a/src/freedombone-app-bludit b/src/freedombone-app-bludit index ccbd50bf..7405d2f7 100755 --- a/src/freedombone-app-bludit +++ b/src/freedombone-app-bludit @@ -35,6 +35,11 @@ BLUDIT_ONION_PORT=9844 BLUDIT_REPO="https://github.com/bludit/bludit" BLUDIT_COMMIT='0e27e31a84421b3e6bd000a77bc89c2dff3c446a' +BLUDIT_SHORT_DESCRIPTION=$'Bludit Blog' +BLUDIT_DESCRIPTION=$'Simple Markdown blogging' +BLUDIT_ICON_URL= +BLUDIT_MOBILE_APP_URL= + bludit_variables=(ONION_ONLY BLUDIT_DOMAIN_NAME BLUDIT_CODE diff --git a/src/freedombone-app-dlna b/src/freedombone-app-dlna index a2366390..b7f62c73 100755 --- a/src/freedombone-app-dlna +++ b/src/freedombone-app-dlna @@ -31,6 +31,11 @@ VARIANTS='full full-vim media' IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=0 +DLNA_SHORT_DESCRIPTION=$'DLNA media' +DLNA_DESCRIPTION=$'DLNA media' +DLNA_ICON_URL= +DLNA_MOBILE_APP_URL= + dlna_variables=(SYSTEM_TYPE USB_MOUNT_DLNA INSTALLED_WITHIN_DOCKER diff --git a/src/freedombone-app-dokuwiki b/src/freedombone-app-dokuwiki index b92ef3bb..d06263ae 100755 --- a/src/freedombone-app-dokuwiki +++ b/src/freedombone-app-dokuwiki @@ -40,6 +40,11 @@ DOKUWIKI_TITLE="${PROJECT_NAME} Dokuwiki" DOKUWIKI_REPO="https://github.com/splitbrain/dokuwiki" DOKUWIKI_COMMIT='be15c01c0b982cf1a75b5af031bf077143c63f39' +DOKUWIKI_SHORT_DESCRIPTION=$'Dokuwiki' +DOKUWIKI_DESCRIPTION=$'Dokuwiki databaseless wiki' +DOKUWIKI_ICON_URL= +DOKUWIKI_MOBILE_APP_URL= + dokuwiki_variables=(ONION_ONLY MY_USERNAME DOKUWIKI_TITLE diff --git a/src/freedombone-app-edith b/src/freedombone-app-edith index a399d660..cc5fa069 100755 --- a/src/freedombone-app-edith +++ b/src/freedombone-app-edith @@ -38,6 +38,11 @@ EDITH_CODE= EDITH_ONION_PORT=8278 EDITH_LOGIN_TEXT=$"Edith login" +EDITH_SHORT_DESCRIPTION=$'Edith Notes' +EDITH_DESCRIPTION=$'Extremely simple note taking' +EDITH_ICON_URL= +EDITH_MOBILE_APP_URL= + edith_variables=(MY_USERNAME MY_EMAIL_ADDRESS ONION_ONLY diff --git a/src/freedombone-app-etherpad b/src/freedombone-app-etherpad index 2ae82191..4c5c919c 100755 --- a/src/freedombone-app-etherpad +++ b/src/freedombone-app-etherpad @@ -42,6 +42,11 @@ ETHERPAD_ADMIN_PASSWORD= ETHERPAD_TITLE=$'Freedombone Docs' ETHERPAD_WELCOME_MESSAGE=$"Welcome to ${ETHERPAD_TITLE}!\\n\\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!" +ETHERPAD_SHORT_DESCRIPTION=$'Etherpad' +ETHERPAD_DESCRIPTION=$'Etherpad' +ETHERPAD_ICON_URL= +ETHERPAD_MOBILE_APP_URL= + etherpad_variables=(ONION_ONLY DEFAULT_DOMAIN_NAME ETHERPAD_DOMAIN_NAME diff --git a/src/freedombone-app-fedwiki b/src/freedombone-app-fedwiki index da0f5fbb..5b7ed8a2 100755 --- a/src/freedombone-app-fedwiki +++ b/src/freedombone-app-fedwiki @@ -42,6 +42,11 @@ FEDWIKI_PORT=3053 FEDWIKI_DATA=/var/lib/fedwiki FEDWIKI_COOKIE= +FEDWIKI_SHORT_DESCRIPTION=$'FedWiki' +FEDWIKI_DESCRIPTION=$'Federated Wiki' +FEDWIKI_ICON_URL= +FEDWIKI_MOBILE_APP_URL= + fedwiki_variables=(FEDWIKI_DOMAIN_NAME FEDWIKI_CODE FEDWIKI_COOKIE diff --git a/src/freedombone-app-friendica b/src/freedombone-app-friendica index b03a1eeb..aa8325d9 100755 --- a/src/freedombone-app-friendica +++ b/src/freedombone-app-friendica @@ -40,6 +40,11 @@ FRIENDICA_ADMIN_PASSWORD= FRIENDICA_COMMIT='b5a42c5b31fae5315bacd37769eba20ab2345aaa' FRIENDICA_ADDONS_COMMIT='7cb9dbdda7f227462895c07be3c968405561d40e' +FRIENDICA_SHORT_DESCRIPTION=$'Friendica' +FRIENDICA_DESCRIPTION=$'Friendica federated social network' +FRIENDICA_ICON_URL= +FRIENDICA_MOBILE_APP_URL= + friendica_variables=(ONION_ONLY FRIENDICA_DOMAIN_NAME FRIENDICA_CODE diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial index c6071544..324625c6 100755 --- a/src/freedombone-app-gnusocial +++ b/src/freedombone-app-gnusocial @@ -46,6 +46,11 @@ GNUSOCIAL_TITLE='Pleroma FE' # Number of months after which posts expire GNUSOCIAL_EXPIRE_MONTHS=3 +GNUSOCIAL_SHORT_DESCRIPTION=$'GNU Social' +GNUSOCIAL_DESCRIPTION=$'GNU Social federated microblogging' +GNUSOCIAL_ICON_URL= +GNUSOCIAL_MOBILE_APP_URL='https://f-droid.org/packages/org.mariotaku.twidere/' + gnusocial_variables=(ONION_ONLY GNUSOCIAL_DOMAIN_NAME GNUSOCIAL_CODE diff --git a/src/freedombone-app-gogs b/src/freedombone-app-gogs index 5e0ca0a9..b9c0d80a 100755 --- a/src/freedombone-app-gogs +++ b/src/freedombone-app-gogs @@ -41,6 +41,11 @@ GIT_ADMIN_PASSWORD= GOGS_BIN= GOGS_PORT=3145 +GOGS_SHORT_DESCRIPTION=$'Gogs' +GOGS_DESCRIPTION=$'Gogs git repo management' +GOGS_ICON_URL= +GOGS_MOBILE_APP_URL= + gogs_variables=(ONION_ONLY GIT_ADMIN_PASSWORD GIT_DOMAIN_NAME diff --git a/src/freedombone-app-htmly b/src/freedombone-app-htmly index 11142f60..e5ca0b01 100755 --- a/src/freedombone-app-htmly +++ b/src/freedombone-app-htmly @@ -39,6 +39,11 @@ HTMLY_COMMIT='bf5fe9486160be4da86d8987d3e5c977e1dc6d32' HTMLY_TITLE="My Blog" HTMLY_SUBTITLE="Another ${PROJECT_NAME} blog" +HTMLY_SHORT_DESCRIPTION=$'HTMLy' +HTMLY_DESCRIPTION=$'HTMLy databaseless blogging' +HTMLY_ICON_URL= +HTMLY_MOBILE_APP_URL= + htmly_variables=(HTMLY_REPO HTMLY_DOMAIN_NAME HTMLY_CODE diff --git a/src/freedombone-app-hubzilla b/src/freedombone-app-hubzilla index 27d86461..1c234758 100755 --- a/src/freedombone-app-hubzilla +++ b/src/freedombone-app-hubzilla @@ -41,6 +41,11 @@ HUBZILLA_ADDONS_REPO="https://github.com/redmatrix/hubzilla-addons.git" HUBZILLA_ADDONS_COMMIT='be9dcd044b9326c3bd9301d7c4b375a2c2f54663' HUBZILLA_ADMIN_PASSWORD= +HUBZILLA_SHORT_DESCRIPTION=$'Hubzilla' +HUBZILLA_DESCRIPTION=$'Hubzilla' +HUBZILLA_ICON_URL= +HUBZILLA_MOBILE_APP_URL= + hubzilla_variables=(ONION_ONLY HUBZILLA_DOMAIN_NAME HUBZILLA_CODE diff --git a/src/freedombone-app-icecast b/src/freedombone-app-icecast index 47ed3d86..e0772daa 100755 --- a/src/freedombone-app-icecast +++ b/src/freedombone-app-icecast @@ -44,6 +44,11 @@ ICECAST_DIR=/icestream ICECAST_PLAYLIST_FILE=/etc/ices2/playlist.txt ICECAST_LOGIN_TEXT=$"Icecast login" +ICECAST_SHORT_DESCRIPTION=$'Icecast' +ICECAST_DESCRIPTION=$'Icecast' +ICECAST_ICON_URL= +ICECAST_MOBILE_APP_URL= + icecast_variables=(MY_USERNAME MY_EMAIL_ADDRESS ONION_ONLY diff --git a/src/freedombone-app-irc b/src/freedombone-app-irc index 0ae6d10d..a89f12df 100755 --- a/src/freedombone-app-irc +++ b/src/freedombone-app-irc @@ -41,6 +41,11 @@ IRC_PASSWORD= # Number of entries for the bouncer to buffer IRC_BUFFER_LENGTH=300 +IRC_SHORT_DESCRIPTION=$'IRC' +IRC_DESCRIPTION=$'IRC' +IRC_ICON_URL= +IRC_MOBILE_APP_URL='https://f-droid.org/packages/org.yaaic' + irc_variables=(MY_USERNAME MY_NAME IRC_PORT diff --git a/src/freedombone-app-jitsi b/src/freedombone-app-jitsi index dde625c7..97893818 100755 --- a/src/freedombone-app-jitsi +++ b/src/freedombone-app-jitsi @@ -44,6 +44,11 @@ JITSI_DOMAIN_NAME= JITSI_CODE= JITSI_ONION_HOSTNAME= +JITSI_SHORT_DESCRIPTION=$'Jitsi' +JITSI_DESCRIPTION=$'Jitsi' +JITSI_ICON_URL= +JITSI_MOBILE_APP_URL= + jitsi_variables=(ONION_ONLY JITSI_DOMAIN_NAME JITSI_ONION_HOSTNAME diff --git a/src/freedombone-app-kanboard b/src/freedombone-app-kanboard index 3f726626..66a2bf56 100755 --- a/src/freedombone-app-kanboard +++ b/src/freedombone-app-kanboard @@ -38,6 +38,10 @@ KANBOARD_REPO="https://github.com/kanboard/kanboard" KANBOARD_COMMIT='7a6b1bc3da0af442e02b5a2dc430a4ded8e7c4ee' KANBOARD_ADMIN_PASSWORD= +KANBOARD_SHORT_DESCRIPTION=$'Kanboard' +KANBOARD_DESCRIPTION=$'Kanboard kanban' +KANBOARD_ICON_URL= +KANBOARD_MOBILE_APP_URL= kanboard_variables=(ONION_ONLY KANBOARD_DOMAIN_NAME diff --git a/src/freedombone-app-koel b/src/freedombone-app-koel index 4f9bd585..f43b408d 100755 --- a/src/freedombone-app-koel +++ b/src/freedombone-app-koel @@ -40,6 +40,11 @@ KOEL_REPO="https://github.com/phanan/koel" KOEL_COMMIT='8e9b021aa09f2b1460977bdd52fff14ea2bc1607' KOEL_ADMIN_PASSWORD= +KOEL_SHORT_DESCRIPTION=$'Koel music' +KOEL_DESCRIPTION=$'Koel music player' +KOEL_ICON_URL= +KOEL_MOBILE_APP_URL= + koel_variables=(ONION_ONLY KOEL_DOMAIN_NAME KOEL_CODE diff --git a/src/freedombone-app-lychee b/src/freedombone-app-lychee index 16bdd431..a52cb132 100755 --- a/src/freedombone-app-lychee +++ b/src/freedombone-app-lychee @@ -37,6 +37,11 @@ LYCHEE_ONION_PORT=8105 LYCHEE_REPO="https://github.com/electerious/Lychee" LYCHEE_COMMIT='27f207dcbac8488629ffc3b5a9cac78ae123bee9' +LYCHEE_SHORT_DESCRIPTION=$'Lychee photos' +LYCHEE_DESCRIPTION=$'Lychee photos' +LYCHEE_ICON_URL= +LYCHEE_MOBILE_APP_URL= + lychee_variables=(LYCHEE_REPO LYCHEE_DOMAIN_NAME LYCHEE_CODE diff --git a/src/freedombone-app-mailpile b/src/freedombone-app-mailpile index c384eecd..0e4e189a 100755 --- a/src/freedombone-app-mailpile +++ b/src/freedombone-app-mailpile @@ -38,6 +38,11 @@ MAILPILE_REPO="https://github.com/mailpile/Mailpile" MAILPILE_COMMIT='4f28f1bb55b3b9985f22ab6372d539b1087482dd' MAILPILE_PORT=33411 +MAILPILE_SHORT_DESCRIPTION=$'Mailpile' +MAILPILE_DESCRIPTION=$'Mailpile email client' +MAILPILE_ICON_URL= +MAILPILE_MOBILE_APP_URL= + mailpile_variables=(MAILPILE_REPO MAILPILE_DOMAIN_NAME MAILPILE_CODE diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix index de6bd581..696c1d0a 100755 --- a/src/freedombone-app-matrix +++ b/src/freedombone-app-matrix @@ -53,6 +53,11 @@ REPORT_STATS="no" MATRIX_SECRET= MATRIX_EXPIRE_MONTHS=1 +MATRIX_SHORT_DESCRIPTION=$'Matrix chat' +MATRIX_DESCRIPTION=$'Matrix chat' +MATRIX_ICON_URL= +MATRIX_MOBILE_APP_URL='https://f-droid.org/packages/im.vector.alpha' + matrix_variables=(ONION_ONLY MY_USERNAME MATRIX_SECRET diff --git a/src/freedombone-app-mediagoblin b/src/freedombone-app-mediagoblin index 8f5232c6..a70399d9 100755 --- a/src/freedombone-app-mediagoblin +++ b/src/freedombone-app-mediagoblin @@ -40,6 +40,11 @@ MEDIAGOBLIN_COMMIT='c4d3293dfa4076719e60fe9e052add07426f9a9a' MEDIAGOBLIN_BASE_DIR=/var/www/mediagoblin.local/htdocs MEDIAGOBLIN_PORT=6543 +MEDIAGOBLIN_SHORT_DESCRIPTION=$'Mediagoblin' +MEDIAGOBLIN_DESCRIPTION=$'Mediagoblin' +MEDIAGOBLIN_ICON_URL= +MEDIAGOBLIN_MOBILE_APP_URL= + mediagoblin_variables=(ONION_ONLY MY_USERNAME MEDIAGOBLIN_DOMAIN_NAME diff --git a/src/freedombone-app-movim b/src/freedombone-app-movim index 5a3e1fe8..b32d5648 100755 --- a/src/freedombone-app-movim +++ b/src/freedombone-app-movim @@ -39,6 +39,11 @@ MOVIM_COMMIT='6142c2033b7695448516a67690324a3bde048260' MOVIM_ADMIN_PASSWORD= MOVIM_DAEMON_PORT=8880 +MOVIM_SHORT_DESCRIPTION=$'Movim' +MOVIM_DESCRIPTION=$'Movim' +MOVIM_ICON_URL= +MOVIM_MOBILE_APP_URL='https://f-droid.org/packages/com.movim.movim' + movim_variables=(ONION_ONLY MOVIM_DOMAIN_NAME MOVIM_CODE diff --git a/src/freedombone-app-mumble b/src/freedombone-app-mumble index 79d80d3b..a5f43609 100755 --- a/src/freedombone-app-mumble +++ b/src/freedombone-app-mumble @@ -40,6 +40,11 @@ MUMBLE_PORT=64738 MUMBLE_DATABASE="mumble-server.sqlite" MUMBLE_CONFIG_FILE="mumble-server.ini" +MUMBLE_SHORT_DESCRIPTION=$'Mumble' +MUMBLE_DESCRIPTION=$'Mumble' +MUMBLE_ICON_URL= +MUMBLE_MOBILE_APP_URL='https://f-droid.org/packages/com.morlunk.mumbleclient' + mumble_variables=(MY_USERNAME DEFAULT_DOMAIN_NAME MUMBLE_PORT diff --git a/src/freedombone-app-nextcloud b/src/freedombone-app-nextcloud index c17e2ef5..83bc8576 100755 --- a/src/freedombone-app-nextcloud +++ b/src/freedombone-app-nextcloud @@ -42,6 +42,11 @@ NEXTCLOUD_COMMIT='edd5712c6ead5b09fa4f996cfda66fc4e18ba597' NEXTCLOUD_ADMIN_PASSWORD= NEXTCLOUD_SERVER_SIDE_ENCRYPTION=1 +NEXTCLOUD_SHORT_DESCRIPTION=$'NextCloud' +NEXTCLOUD_DESCRIPTION=$'NextCloud' +NEXTCLOUD_ICON_URL= +NEXTCLOUD_MOBILE_APP_URL='https://f-droid.org/packages/com.nextcloud.client' + nextcloud_variables=(ONION_ONLY NEXTCLOUD_DOMAIN_NAME NEXTCLOUD_CODE diff --git a/src/freedombone-app-peertube b/src/freedombone-app-peertube index aed36c69..f87761c7 100755 --- a/src/freedombone-app-peertube +++ b/src/freedombone-app-peertube @@ -44,6 +44,11 @@ PEERTUBE_PORT=9004 MESH_PEERTUBE_PORT=8500 PEERTUBE_DIR=/etc/peertube +PEERTUBE_SHORT_DESCRIPTION=$'PeerTube' +PEERTUBE_DESCRIPTION=$'PeerTube' +PEERTUBE_ICON_URL= +PEERTUBE_MOBILE_APP_URL= + peertube_variables=(PEERTUBE_DOMAIN_NAME PEERTUBE_CODE PEERTUBE_ADMIN_PASSWORD diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index b9a390de..a56054bf 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -51,6 +51,11 @@ PLEROMA_EXPIRE_MONTHS=3 pleroma_expire_posts_script=/usr/bin/pleroma-expire-posts blocking_script_file=/usr/bin/pleroma-blocking +PLEROMA_SHORT_DESCRIPTION=$'Pleroma' +PLEROMA_DESCRIPTION=$'Pleroma federated microblogging' +PLEROMA_ICON_URL= +PLEROMA_MOBILE_APP_URL='https://f-droid.org/packages/com.keylesspalace.tusky' + pleroma_variables=(ONION_ONLY PLEROMA_DOMAIN_NAME PLEROMA_CODE diff --git a/src/freedombone-app-postactiv b/src/freedombone-app-postactiv index d81c1f2b..15556470 100755 --- a/src/freedombone-app-postactiv +++ b/src/freedombone-app-postactiv @@ -45,6 +45,11 @@ POSTACTIV_TITLE='PostActiv' # Number of months after which posts expire POSTACTIV_EXPIRE_MONTHS=3 +POSTACTIV_SHORT_DESCRIPTION=$'PostActiv' +POSTACTIV_DESCRIPTION=$'PostActiv federated microblogging' +POSTACTIV_ICON_URL= +POSTACTIV_MOBILE_APP_URL='https://f-droid.org/packages/org.mariotaku.twidere/' + postactiv_variables=(ONION_ONLY POSTACTIV_DOMAIN_NAME POSTACTIV_CODE diff --git a/src/freedombone-app-privatebin b/src/freedombone-app-privatebin index e081bf89..a8669ce9 100755 --- a/src/freedombone-app-privatebin +++ b/src/freedombone-app-privatebin @@ -38,6 +38,11 @@ PRIVATEBIN_REPO="https://github.com/PrivateBin/PrivateBin" PRIVATEBIN_COMMIT='9c132cd839fd5e91da18e4a1e8ebef64fce605fb' PRIVATEBIN_ADMIN_PASSWORD= +PRIVATEBIN_SHORT_DESCRIPTION=$'PrivateBin' +PRIVATEBIN_DESCRIPTION=$'PrivateBin zero knowledge pastebin' +PRIVATEBIN_ICON_URL= +PRIVATEBIN_MOBILE_APP_URL= + privatebin_variables=(ONION_ONLY PRIVATEBIN_DOMAIN_NAME PRIVATEBIN_CODE diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat index ddd2fa14..b10fddb8 100755 --- a/src/freedombone-app-rocketchat +++ b/src/freedombone-app-rocketchat @@ -36,6 +36,11 @@ ROCKETCHAT_CODE= ROCKETCHAT_ONION_PORT=9722 ROCKETCHAT_PORT_INTERNAL=3000 +ROCKETCHAT_SHORT_DESCRIPTION=$'Rocketchat' +ROCKETCHAT_DESCRIPTION=$'Rocketchat' +ROCKETCHAT_ICON_URL= +ROCKETCHAT_MOBILE_APP_URL= + rocketchat_variables=(ONION_ONLY ROCKETCHAT_DOMAIN_NAME ROCKETCHAT_CODE diff --git a/src/freedombone-app-syncthing b/src/freedombone-app-syncthing index 49fd18f0..93ef2b3c 100755 --- a/src/freedombone-app-syncthing +++ b/src/freedombone-app-syncthing @@ -40,6 +40,11 @@ SYNCTHING_PORT=22000 SYNCTHING_SHARED_DATA=/var/lib/syncthing/SyncShared SYNCTHING_USER_IDS_FILE='.syncthingids' +SYNCTHING_SHORT_DESCRIPTION=$'Syncthing' +SYNCTHING_DESCRIPTION=$'Syncthing file synchronization' +SYNCTHING_ICON_URL= +SYNCTHING_MOBILE_APP_URL='https://f-droid.org/packages/com.nutomic.syncthingandroid' + syncthing_variables=(SYNCTHING_ID SYNCTHING_CONFIG_PATH SYNCTHING_CONFIG_FILE diff --git a/src/freedombone-app-turtl b/src/freedombone-app-turtl index b4f62a2e..9fd0e9a8 100755 --- a/src/freedombone-app-turtl +++ b/src/freedombone-app-turtl @@ -48,6 +48,11 @@ TURTL_BASE_DIR=/etc/turtl TURTL_SIGNUP_STRING='Signup a new user' turtl_users_file=$TURTL_BASE_DIR/api/controllers/users.lisp +TURTL_SHORT_DESCRIPTION=$'Turtl' +TURTL_DESCRIPTION=$'Turtl notes' +TURTL_ICON_URL= +TURTL_MOBILE_APP_URL= + turtl_variables=(ONION_ONLY DEFAULT_DOMAIN_NAME TURTL_DOMAIN_NAME diff --git a/src/freedombone-app-xmpp b/src/freedombone-app-xmpp index 7877f17e..56df3431 100755 --- a/src/freedombone-app-xmpp +++ b/src/freedombone-app-xmpp @@ -53,6 +53,11 @@ prosody_modules_filename='prosody-modules-20180322.tar.gz' prosody_modules_hash='982d0dfcef98e9cb9cee4cc3801b8ce9a503a32e44c32b99df6fe94545b90072' xmpp_encryption_warning=$"For security reasons, OMEMO or PGP encryption is required for conversations on this server." +XMPP_SHORT_DESCRIPTION=$'XMPP chat' +XMPP_DESCRIPTION=$'XMPP chat' +XMPP_ICON_URL= +XMPP_MOBILE_APP_URL='https://f-droid.org/packages/eu.siacs.conversations' + xmpp_variables=(ONION_ONLY INSTALLED_WITHIN_DOCKER XMPP_CIPHERS diff --git a/src/freedombone-syncthing b/src/freedombone-syncthing index 1ca261fb..ab6c0244 100755 --- a/src/freedombone-syncthing +++ b/src/freedombone-syncthing @@ -55,6 +55,11 @@ SYNCTHING_UPDATE_FILE='.syncthing-update' CHANGED= TEMP_IDS_FILE=/root/.synthingids +SYNCTHING_SHORT_DESCRIPTION=$'File Synchronization' +SYNCTHING_DESCRIPTION=$'File Synchronization' +SYNCTHING_ICON_URL= +SYNCTHING_MOBILE_APP_URL='https://f-droid.org/packages/com.nutomic.syncthingandroid' + function remove_user_syncthing { remove_username="$1" diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index f12d6b30..fd5256c4 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -82,7 +82,7 @@ function android_update_apps { echo " \"icon_url\": \"$((${app_name_upper}_ICON_URL))\","; echo " \"clients\": ["; } >> "$plinth_api" - if [ $(("${app_name_upper}_DOMAIN_NAME")) ]; then + if [[ $(("${app_name_upper}_DOMAIN_NAME")) && "$app_name" != 'matrix' ]]; then { echo ' {'; echo " \"name\": \"${app_name}\","; echo " \"platforms\": ["; @@ -95,7 +95,7 @@ function android_update_apps { fi if [ $(("${app_name_upper}_MOBILE_APP_URL")) ]; then - if [ $(("${app_name_upper}_DOMAIN_NAME")) ]; then + if [[ $(("${app_name_upper}_DOMAIN_NAME")) && "$app_name" != 'matrix' ]]; then echo ',' >> "$plinth_api" fi { echo ' {'; From 34079951ce9664472bac3676bedbe4fa288b8d63 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 17:30:00 +0100 Subject: [PATCH 172/214] If there is no short description then don't include within android app --- src/freedombone-utils-android | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index fd5256c4..117a8696 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -50,18 +50,18 @@ function android_update_apps { app_name=${APPS_INSTALLED_NAMES[$app_index]} app_filename="/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}" if [ -f "$app_filename" ]; then - if [ $android_ctr -gt 0 ]; then - echo ',' >> "$plinth_api" - fi app_name_upper=$(echo "$app_name" | awk '{print toupper($0)}') "${app_name_upper}_SHORT_DESCRIPTION"= "${app_name_upper}_DESCRIPTION"= "${app_name_upper}_ICON_URL"= "${app_name_upper}_MOBILE_APP_URL"= - if grep -q "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then - # shellcheck disable=SC2140 - "${app_name_upper}_SHORT_DESCRIPTION"="$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + + if ! grep -q "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then + continue fi + # shellcheck disable=SC2140 + "${app_name_upper}_SHORT_DESCRIPTION"="$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + if grep -q "${app_name_upper}_DESCRIPTION=" "$app_filename"; then # shellcheck disable=SC2140 "${app_name_upper}_DESCRIPTION"="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" @@ -75,6 +75,10 @@ function android_update_apps { "${app_name_upper}_MOBILE_APP_URL"="$(grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" fi + if [ $android_ctr -gt 0 ]; then + echo ',' >> "$plinth_api" + fi + { echo ' {'; echo " \"name\": \"${app_name}\","; echo " \"short_description\": \"$((${app_name_upper}_SHORT_DESCRIPTION))\","; From d99d46acd52cc30099ce0fc5bb7da75ded9a0910 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 17:35:28 +0100 Subject: [PATCH 173/214] Quotes --- src/freedombone-utils-android | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index 117a8696..bec2839a 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -81,9 +81,9 @@ function android_update_apps { { echo ' {'; echo " \"name\": \"${app_name}\","; - echo " \"short_description\": \"$((${app_name_upper}_SHORT_DESCRIPTION))\","; - echo " \"description\": \"$((${app_name_upper}_DESCRIPTION))\","; - echo " \"icon_url\": \"$((${app_name_upper}_ICON_URL))\","; + echo " \"short_description\": \""$((${app_name_upper}_SHORT_DESCRIPTION))"\","; + echo " \"description\": \""$((${app_name_upper}_DESCRIPTION))"\","; + echo " \"icon_url\": \""$((${app_name_upper}_ICON_URL))"\","; echo " \"clients\": ["; } >> "$plinth_api" if [[ $(("${app_name_upper}_DOMAIN_NAME")) && "$app_name" != 'matrix' ]]; then @@ -92,7 +92,7 @@ function android_update_apps { echo " \"platforms\": ["; echo ' {'; echo ' "type": "web",'; - echo " \"url\": \"$((${app_name_upper}_DOMAIN_NAME))\""; + echo " \"url\": \""$((${app_name_upper}_DOMAIN_NAME))"\""; echo ' }'; echo ' ]'; echo -n ' }'; } >> "$plinth_api" @@ -109,7 +109,7 @@ function android_update_apps { echo ' "type": "store",'; echo ' "os": "android",'; echo ' "store_name": "f-droid",'; - echo " \"url\": \"$((${app_name_upper}_MOBILE_APP_URL))\""; + echo " \"url\": \""$((${app_name_upper}_MOBILE_APP_URL))"\""; echo ' }'; echo ' ]'; echo -n ' }'; } >> "$plinth_api" From 26c6a36b72c77bfd9f04ac8f6a1626c81eaeb935 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 18:15:24 +0100 Subject: [PATCH 174/214] Handle commented out variables --- src/freedombone-utils-android | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index bec2839a..d89ae14e 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -59,6 +59,9 @@ function android_update_apps { if ! grep -q "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then continue fi + if grep -q "#${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then + continue + fi # shellcheck disable=SC2140 "${app_name_upper}_SHORT_DESCRIPTION"="$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" From d59aa5dac98c70d74032c4b6127b53aadfc41b3c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 18:45:09 +0100 Subject: [PATCH 175/214] Simplify --- src/freedombone-utils-android | 37 ++++++++++++++++------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index d89ae14e..3e37f41e 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -51,10 +51,10 @@ function android_update_apps { app_filename="/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}" if [ -f "$app_filename" ]; then app_name_upper=$(echo "$app_name" | awk '{print toupper($0)}') - "${app_name_upper}_SHORT_DESCRIPTION"= - "${app_name_upper}_DESCRIPTION"= - "${app_name_upper}_ICON_URL"= - "${app_name_upper}_MOBILE_APP_URL"= + SHORT_DESCRIPTION= + DESCRIPTION= + ICON_URL= + MOBILE_APP_URL= if ! grep -q "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then continue @@ -62,20 +62,16 @@ function android_update_apps { if grep -q "#${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then continue fi - # shellcheck disable=SC2140 - "${app_name_upper}_SHORT_DESCRIPTION"="$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + SHORT_DESCRIPTION=$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | awk -F '=' '{print $2}') if grep -q "${app_name_upper}_DESCRIPTION=" "$app_filename"; then - # shellcheck disable=SC2140 - "${app_name_upper}_DESCRIPTION"="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + DESCRIPTION="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | awk -F '=' '{print $2}')" fi if grep -q "${app_name_upper}_ICON_URL=" "$app_filename"; then - # shellcheck disable=SC2140 - "${app_name_upper}_ICON_URL"="$(grep "${app_name_upper}_ICON_URL=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + ICON_URL="$(grep "${app_name_upper}_ICON_URL=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | awk -F '=' '{print $2}')" fi if grep -q "${app_name_upper}_MOBILE_APP_URL=" "$app_filename"; then - # shellcheck disable=SC2140 - "${app_name_upper}_MOBILE_APP_URL"="$(grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename" | head -n 1 | awk -F '=' '{print $2}')" + MOBILE_APP_URL="$(grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | awk -F '=' '{print $2}')" fi if [ $android_ctr -gt 0 ]; then @@ -84,25 +80,26 @@ function android_update_apps { { echo ' {'; echo " \"name\": \"${app_name}\","; - echo " \"short_description\": \""$((${app_name_upper}_SHORT_DESCRIPTION))"\","; - echo " \"description\": \""$((${app_name_upper}_DESCRIPTION))"\","; - echo " \"icon_url\": \""$((${app_name_upper}_ICON_URL))"\","; + echo " \"short_description\": \"$SHORT_DESCRIPTION\","; + echo " \"description\": \"$DESCRIPTION))\","; + echo " \"icon_url\": \"$ICON_URL\","; echo " \"clients\": ["; } >> "$plinth_api" - if [[ $(("${app_name_upper}_DOMAIN_NAME")) && "$app_name" != 'matrix' ]]; then + domain_name=$(("${app_name_upper}_DOMAIN_NAME")) + if [[ "$domain_name" && "$app_name" != 'matrix' ]]; then { echo ' {'; echo " \"name\": \"${app_name}\","; echo " \"platforms\": ["; echo ' {'; echo ' "type": "web",'; - echo " \"url\": \""$((${app_name_upper}_DOMAIN_NAME))"\""; + echo " \"url\": \"$domain_name\""; echo ' }'; echo ' ]'; echo -n ' }'; } >> "$plinth_api" fi - if [ $(("${app_name_upper}_MOBILE_APP_URL")) ]; then - if [[ $(("${app_name_upper}_DOMAIN_NAME")) && "$app_name" != 'matrix' ]]; then + if [ "$MOBILE_APP_URL" ]; then + if [[ "$domain_name" && "$app_name" != 'matrix' ]]; then echo ',' >> "$plinth_api" fi { echo ' {'; @@ -112,7 +109,7 @@ function android_update_apps { echo ' "type": "store",'; echo ' "os": "android",'; echo ' "store_name": "f-droid",'; - echo " \"url\": \""$((${app_name_upper}_MOBILE_APP_URL))"\""; + echo " \"url\": \"$MOBILE_APP_URL\""; echo ' }'; echo ' ]'; echo -n ' }'; } >> "$plinth_api" From b96ab2849dd3370687f1d4709c43aa312ce32ae3 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 18:50:32 +0100 Subject: [PATCH 176/214] Read domain variables from configuration file --- src/freedombone-utils-android | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index 3e37f41e..2393d196 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -81,12 +81,13 @@ function android_update_apps { { echo ' {'; echo " \"name\": \"${app_name}\","; echo " \"short_description\": \"$SHORT_DESCRIPTION\","; - echo " \"description\": \"$DESCRIPTION))\","; + echo " \"description\": \"$DESCRIPTION\","; echo " \"icon_url\": \"$ICON_URL\","; echo " \"clients\": ["; } >> "$plinth_api" + read_config_param "${app_name_upper}_DOMAIN_NAME" domain_name=$(("${app_name_upper}_DOMAIN_NAME")) - if [[ "$domain_name" && "$app_name" != 'matrix' ]]; then + if [[ "$domain_name" != "0" && "$app_name" != 'matrix' ]]; then { echo ' {'; echo " \"name\": \"${app_name}\","; echo " \"platforms\": ["; @@ -99,7 +100,7 @@ function android_update_apps { fi if [ "$MOBILE_APP_URL" ]; then - if [[ "$domain_name" && "$app_name" != 'matrix' ]]; then + if [[ "$domain_name" != "0" && "$app_name" != 'matrix' ]]; then echo ',' >> "$plinth_api" fi { echo ' {'; From c32d3884ac431e546ee0c83c7ade806c6e5937cc Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 18:53:28 +0100 Subject: [PATCH 177/214] Remove quotes --- src/freedombone-utils-android | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index 2393d196..97f4f22d 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -62,16 +62,16 @@ function android_update_apps { if grep -q "#${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then continue fi - SHORT_DESCRIPTION=$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | awk -F '=' '{print $2}') + SHORT_DESCRIPTION=$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}') if grep -q "${app_name_upper}_DESCRIPTION=" "$app_filename"; then - DESCRIPTION="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | awk -F '=' '{print $2}')" + DESCRIPTION="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}')" fi if grep -q "${app_name_upper}_ICON_URL=" "$app_filename"; then - ICON_URL="$(grep "${app_name_upper}_ICON_URL=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | awk -F '=' '{print $2}')" + ICON_URL="$(grep "${app_name_upper}_ICON_URL=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}')" fi if grep -q "${app_name_upper}_MOBILE_APP_URL=" "$app_filename"; then - MOBILE_APP_URL="$(grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | awk -F '=' '{print $2}')" + MOBILE_APP_URL="$(grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}')" fi if [ $android_ctr -gt 0 ]; then From 0bd2b8c8f3df03eb08f119be10252833af4ae2a0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 18:55:59 +0100 Subject: [PATCH 178/214] Add quotes --- src/freedombone-utils-android | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index 97f4f22d..dd855bd5 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -62,7 +62,7 @@ function android_update_apps { if grep -q "#${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then continue fi - SHORT_DESCRIPTION=$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}') + SHORT_DESCRIPTION="$(grep "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}')" if grep -q "${app_name_upper}_DESCRIPTION=" "$app_filename"; then DESCRIPTION="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}')" From 8f58083d22ffbdfe0041f8eacd573f148add367c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 19:26:23 +0100 Subject: [PATCH 179/214] Getting domain name --- src/freedombone-utils-android | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index dd855bd5..9875b574 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -86,7 +86,8 @@ function android_update_apps { echo " \"clients\": ["; } >> "$plinth_api" read_config_param "${app_name_upper}_DOMAIN_NAME" - domain_name=$(("${app_name_upper}_DOMAIN_NAME")) + test_domain_name="${app_name_upper}_DOMAIN_NAME" + domain_name=${!test_domain_name} if [[ "$domain_name" != "0" && "$app_name" != 'matrix' ]]; then { echo ' {'; echo " \"name\": \"${app_name}\","; From 62e6afd6b5f33cca9b3ad559b6bbeaef546a6372 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 19:44:26 +0100 Subject: [PATCH 180/214] Keep platforms together --- src/freedombone-utils-android | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index 9875b574..705caadf 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -95,31 +95,30 @@ function android_update_apps { echo ' {'; echo ' "type": "web",'; echo " \"url\": \"$domain_name\""; - echo ' }'; - echo ' ]'; - echo -n ' }'; } >> "$plinth_api" + echo -n ' }'; } >> "$plinth_api" fi if [ "$MOBILE_APP_URL" ]; then if [[ "$domain_name" != "0" && "$app_name" != 'matrix' ]]; then echo ',' >> "$plinth_api" + else + { echo ' {'; + echo " \"name\": \"${app_name}\","; + echo " \"platforms\": ["; } >> "$plinth_api" fi - { echo ' {'; - echo " \"name\": \"${app_name}\","; - echo " \"platforms\": ["; - echo ' {'; + { echo ' {'; echo ' "type": "store",'; echo ' "os": "android",'; echo ' "store_name": "f-droid",'; echo " \"url\": \"$MOBILE_APP_URL\""; - echo ' }'; - echo ' ]'; - echo -n ' }'; } >> "$plinth_api" + echo ' }'; } >> "$plinth_api" else echo '' >> "$plinth_api" fi - { echo ' ]'; + { echo ' ]'; + echo ' }'; + echo ' ]'; echo -n ' }'; } >> "$plinth_api" android_ctr=$((android_ctr+1)) From d182906ee1b3e8f8ed24c03a674cb285f1c059da Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 19:46:43 +0100 Subject: [PATCH 181/214] Don't check for zero --- src/freedombone-utils-android | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index 705caadf..e72d9c5a 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -88,7 +88,7 @@ function android_update_apps { read_config_param "${app_name_upper}_DOMAIN_NAME" test_domain_name="${app_name_upper}_DOMAIN_NAME" domain_name=${!test_domain_name} - if [[ "$domain_name" != "0" && "$app_name" != 'matrix' ]]; then + if [[ "$domain_name" && "$app_name" != 'matrix' ]]; then { echo ' {'; echo " \"name\": \"${app_name}\","; echo " \"platforms\": ["; @@ -99,7 +99,7 @@ function android_update_apps { fi if [ "$MOBILE_APP_URL" ]; then - if [[ "$domain_name" != "0" && "$app_name" != 'matrix' ]]; then + if [[ "$domain_name" && "$app_name" != 'matrix' ]]; then echo ',' >> "$plinth_api" else { echo ' {'; From 9737d2cc45885b2f1c7d810f99dd0758b95af8ac Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 20:06:38 +0100 Subject: [PATCH 182/214] Prepend https to domains --- src/freedombone-utils-android | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index e72d9c5a..d97a424c 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -88,6 +88,13 @@ function android_update_apps { read_config_param "${app_name_upper}_DOMAIN_NAME" test_domain_name="${app_name_upper}_DOMAIN_NAME" domain_name=${!test_domain_name} + if [ "$domain_name" ]; then + if [[ "$domain_name" != *'.onion' ]]; then + domain_name="https://${!test_domain_name}" + else + domain_name="http://${!test_domain_name}" + fi + fi if [[ "$domain_name" && "$app_name" != 'matrix' ]]; then { echo ' {'; echo " \"name\": \"${app_name}\","; From 72830a82afa141674b3cc74583779e70911841d1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 20:09:29 +0100 Subject: [PATCH 183/214] Not desirable, but have the option to specify apps from play --- src/freedombone-utils-android | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/freedombone-utils-android b/src/freedombone-utils-android index d97a424c..86205fa4 100755 --- a/src/freedombone-utils-android +++ b/src/freedombone-utils-android @@ -113,10 +113,14 @@ function android_update_apps { echo " \"name\": \"${app_name}\","; echo " \"platforms\": ["; } >> "$plinth_api" fi + store_name='f-droid' + if [[ "$MOBILE_APP_URL" == *'google'* ]]; then + store_name='google-play' + fi { echo ' {'; echo ' "type": "store",'; echo ' "os": "android",'; - echo ' "store_name": "f-droid",'; + echo " \"store_name\": \"$store_name\","; echo " \"url\": \"$MOBILE_APP_URL\""; echo ' }'; } >> "$plinth_api" else From 95d11130dec4a1f0166361a51b0a3169c62becb6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 22:17:53 +0100 Subject: [PATCH 184/214] Icons for android app --- Makefile | 2 ++ img/android-app/akaunting.png | Bin 0 -> 7355 bytes img/android-app/bludit.png | Bin 0 -> 7724 bytes img/android-app/conversations.png | Bin 0 -> 30505 bytes img/android-app/dlna.png | Bin 0 -> 9608 bytes img/android-app/dokuwiki.png | Bin 0 -> 3744 bytes img/android-app/edith.png | Bin 0 -> 2258 bytes img/android-app/etherpad.png | Bin 0 -> 10092 bytes img/android-app/fedwiki.png | Bin 0 -> 23058 bytes img/android-app/friendica.png | Bin 0 -> 10969 bytes img/android-app/gnusocial.png | Bin 0 -> 15507 bytes img/android-app/gogs.png | Bin 0 -> 29157 bytes img/android-app/htmly.png | Bin 0 -> 4942 bytes img/android-app/hubzilla.png | Bin 0 -> 9457 bytes img/android-app/irc.png | Bin 0 -> 12208 bytes img/android-app/kanboard.png | Bin 0 -> 18209 bytes img/android-app/koel.png | Bin 0 -> 7608 bytes img/android-app/lychee.png | Bin 0 -> 9562 bytes img/android-app/mailpile.png | Bin 0 -> 30573 bytes img/android-app/matrix.png | Bin 0 -> 7882 bytes img/android-app/mediagoblin.png | Bin 0 -> 69208 bytes img/android-app/movim.png | Bin 0 -> 13712 bytes img/android-app/mumble.png | Bin 0 -> 46940 bytes img/android-app/nextcloud.png | Bin 0 -> 33496 bytes img/android-app/peertube.png | Bin 0 -> 5966 bytes img/android-app/postactiv.png | Bin 0 -> 7270 bytes img/android-app/privatebin.png | Bin 0 -> 17776 bytes img/android-app/rocketchat.png | Bin 0 -> 12562 bytes img/android-app/searx.png | Bin 0 -> 12976 bytes img/android-app/syncthing.png | Bin 0 -> 20075 bytes img/android-app/tahoelafs.png | Bin 0 -> 37926 bytes img/android-app/turtl.png | Bin 0 -> 25060 bytes src/freedombone-app-akaunting | 1 - src/freedombone-app-bludit | 1 - src/freedombone-app-dlna | 1 - src/freedombone-app-dokuwiki | 1 - src/freedombone-app-edith | 1 - src/freedombone-app-etherpad | 1 - src/freedombone-app-fedwiki | 1 - src/freedombone-app-friendica | 1 - src/freedombone-app-gnusocial | 1 - src/freedombone-app-gogs | 1 - src/freedombone-app-htmly | 1 - src/freedombone-app-hubzilla | 1 - src/freedombone-app-icecast | 1 - src/freedombone-app-irc | 1 - src/freedombone-app-jitsi | 1 - src/freedombone-app-kanboard | 1 - src/freedombone-app-koel | 1 - src/freedombone-app-lychee | 1 - src/freedombone-app-mailpile | 1 - src/freedombone-app-matrix | 1 - src/freedombone-app-mediagoblin | 3 +-- src/freedombone-app-movim | 1 - src/freedombone-app-mumble | 1 - src/freedombone-app-nextcloud | 1 - src/freedombone-app-peertube | 1 - src/freedombone-app-pleroma | 1 - src/freedombone-app-postactiv | 1 - src/freedombone-app-privatebin | 1 - src/freedombone-app-rocketchat | 1 - src/freedombone-app-syncthing | 1 - src/freedombone-app-turtl | 1 - src/freedombone-app-xmpp | 1 - src/freedombone-syncthing | 1 - src/freedombone-template | 1 - src/freedombone-utils-android | 18 +++++++++++++----- 67 files changed, 16 insertions(+), 40 deletions(-) create mode 100644 img/android-app/akaunting.png create mode 100644 img/android-app/bludit.png create mode 100644 img/android-app/conversations.png create mode 100644 img/android-app/dlna.png create mode 100644 img/android-app/dokuwiki.png create mode 100644 img/android-app/edith.png create mode 100644 img/android-app/etherpad.png create mode 100644 img/android-app/fedwiki.png create mode 100644 img/android-app/friendica.png create mode 100644 img/android-app/gnusocial.png create mode 100644 img/android-app/gogs.png create mode 100644 img/android-app/htmly.png create mode 100644 img/android-app/hubzilla.png create mode 100644 img/android-app/irc.png create mode 100644 img/android-app/kanboard.png create mode 100644 img/android-app/koel.png create mode 100644 img/android-app/lychee.png create mode 100644 img/android-app/mailpile.png create mode 100644 img/android-app/matrix.png create mode 100644 img/android-app/mediagoblin.png create mode 100644 img/android-app/movim.png create mode 100644 img/android-app/mumble.png create mode 100644 img/android-app/nextcloud.png create mode 100644 img/android-app/peertube.png create mode 100644 img/android-app/postactiv.png create mode 100644 img/android-app/privatebin.png create mode 100644 img/android-app/rocketchat.png create mode 100644 img/android-app/searx.png create mode 100644 img/android-app/syncthing.png create mode 100644 img/android-app/tahoelafs.png create mode 100644 img/android-app/turtl.png diff --git a/Makefile b/Makefile index e99ffc08..075d283a 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ install: mkdir -p ${DESTDIR}${PREFIX}/bin mkdir -p ${DESTDIR}/usr/share/${APP}/base mkdir -p ${DESTDIR}/usr/share/${APP}/apps + mkdir -p ${DESTDIR}/usr/share/${APP}/android-app mkdir -p ${DESTDIR}/usr/share/${APP}/utils mkdir -p ${DESTDIR}/usr/share/${APP}/avatars mkdir -p ${DESTDIR}/etc/${APP} @@ -46,6 +47,7 @@ install: cp man/*.1.gz ${DESTDIR}${PREFIX}/share/man/man1 cp man/${APP}-backup-local.1.gz ${DESTDIR}${PREFIX}/share/man/man1/backup.1.gz cp man/${APP}-restore-local.1.gz ${DESTDIR}${PREFIX}/share/man/man1/restore.1.gz + cp img/android-app/*.png ${DESTDIR}/usr/share/${APP}/android-app chown -R root: /usr/share/${APP} chmod -R +r /usr/share/${APP} # bash -c "./translate install" diff --git a/img/android-app/akaunting.png b/img/android-app/akaunting.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3e3320b7ea8d05c9e20f8edd6eea578dbc7ebb GIT binary patch literal 7355 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 literal 0 HcmV?d00001 diff --git a/img/android-app/bludit.png b/img/android-app/bludit.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a696624510a4fa9297c81f100ce846590eaa2f GIT binary patch literal 7724 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 KQ@%#lBIJKzxV}mN literal 0 HcmV?d00001 diff --git a/img/android-app/conversations.png b/img/android-app/conversations.png new file mode 100644 index 0000000000000000000000000000000000000000..ebed60ef81103bdc05974d99bc4fa99a300d0ad2 GIT binary patch literal 30505 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 YMtyNI(+_9-Nag~h#pT7SL=1xd2jQtO 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 KMNUMnLSTZihC~+t literal 0 HcmV?d00001 diff --git a/img/android-app/edith.png b/img/android-app/edith.png new file mode 100644 index 0000000000000000000000000000000000000000..a36334bb82b3387076b933942c361fc6cc08d096 GIT binary patch literal 2258 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 literal 0 HcmV?d00001 diff --git a/img/android-app/fedwiki.png b/img/android-app/fedwiki.png new file mode 100644 index 0000000000000000000000000000000000000000..613ede184b8d368d416c90ef5bdbd4ab91d0db97 GIT binary patch literal 23058 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 literal 0 HcmV?d00001 diff --git a/img/android-app/friendica.png b/img/android-app/friendica.png new file mode 100644 index 0000000000000000000000000000000000000000..e44c8e837ad9c33efa8c13d061b30f764968ba21 GIT binary patch literal 10969 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 Hu0mjfsiH1C literal 0 HcmV?d00001 diff --git a/img/android-app/gnusocial.png b/img/android-app/gnusocial.png new file mode 100644 index 0000000000000000000000000000000000000000..6c03bc6db9269bf22a8a4b888b23313a57ca4035 GIT binary patch literal 15507 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

    Z)6;K^nysAQMnk6X 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 literal 0 HcmV?d00001 diff --git a/img/android-app/gogs.png b/img/android-app/gogs.png new file mode 100644 index 0000000000000000000000000000000000000000..34385535534c7520f4b1194e9a5def4094874374 GIT binary patch literal 29157 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 Z9+&4SM@nbE!bUOzl;qXrYGlmA{tx4U{&@fZ literal 0 HcmV?d00001 diff --git a/img/android-app/htmly.png b/img/android-app/htmly.png new file mode 100644 index 0000000000000000000000000000000000000000..7443580e2144191aad54f7f7808e123e7515c9f3 GIT binary patch literal 4942 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 AUjP6A literal 0 HcmV?d00001 diff --git a/img/android-app/hubzilla.png b/img/android-app/hubzilla.png new file mode 100644 index 0000000000000000000000000000000000000000..6d72f774a142aa35b1db3733db7f9b1c80ee52e6 GIT binary patch literal 9457 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 D=hzlR literal 0 HcmV?d00001 diff --git a/img/android-app/irc.png b/img/android-app/irc.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e745246862310fea35bc89f63e18f735b2ac34 GIT binary patch literal 12208 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 y-RtTT$-22Gq&!{$$;z<{x}KCL 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

    7D_BM-IX;$MuCG@@Br4RRW{Og$_CJhS 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 Y0bGd#veBLmvH$=807*qoM6N<$g7yYuumAu6 literal 0 HcmV?d00001 diff --git a/img/android-app/koel.png b/img/android-app/koel.png new file mode 100644 index 0000000000000000000000000000000000000000..ba3d90c6f472bba89042c544df3e826ad920fdc3 GIT binary patch literal 7608 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

    2Bj$(ds4L7e{z~u|CU^Lu>_^Kh` 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

    u|ONKq!j=dgTxbhCt6@0i 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 E1F=CyS^xk5 literal 0 HcmV?d00001 diff --git a/img/android-app/nextcloud.png b/img/android-app/nextcloud.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9dc1b81790993bbe92da4fbf65d51ff2e65c1b GIT binary patch literal 33496 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 UwGHctf2IKxWmRQrrA)*A4^jc|p8x;= literal 0 HcmV?d00001 diff --git a/img/android-app/peertube.png b/img/android-app/peertube.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0e99a471fbaa380f679cbfdb19f6129a50444d GIT binary patch literal 5966 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 literal 0 HcmV?d00001 diff --git a/img/android-app/postactiv.png b/img/android-app/postactiv.png new file mode 100644 index 0000000000000000000000000000000000000000..d16212893e1f91f00fe0def07b0e545b8cbb430c GIT binary patch literal 7270 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 Hu0mjfA{u9k literal 0 HcmV?d00001 diff --git a/img/android-app/rocketchat.png b/img/android-app/rocketchat.png new file mode 100644 index 0000000000000000000000000000000000000000..c6f1e9c88f35cb1256f3cf37e28c41e3df658607 GIT binary patch literal 12562 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 Kx=PY4=>Gr>X%j;L literal 0 HcmV?d00001 diff --git a/img/android-app/syncthing.png b/img/android-app/syncthing.png new file mode 100644 index 0000000000000000000000000000000000000000..786423f2c1cd3b34d1af6245f410ea6a67f06fd5 GIT binary patch literal 20075 zcmV)tK$pLXP)EOoSgl>|D+t=gL^||?;rdz z5lRK-ISR;aYPBd~Q@v?pm%fvGN~d^CkxX3UDx0~{i}8<%Vgh2%!ZjXT2amuD@EUOM zy#X)56L1?OfeUOvqXxx0#OZ2lcS2-mH>E-ePKFdnXG( zp{$Jrly#Umi;XSwm(NdKse8H~G^sck#*^uOCIiqyRbPc+03hBCxe=NuN#bgt@ z;-H%plHL_7crQ>S-ZDOylawn0eT4&NjIplLsG_M{>j0?CgGfLb$JoKeP*AdJZl|uJ zx+|9YZl%31Ca_`9JtJ>$Y-lR!=pU0^kC68i5XV7rgZFx!6gS2<`i6Sl-XP(iStG2g zH7Q{#r!4`6G7bqSoyj!++171aRWx?_T+NPCC)x0;uUJTU2D&>P5YN$mu^@(jpdc_X zC9qHsSSSdz@8ww8oNcc5E&DXJ$X!GPsPu(MKxq#W-`cKex7xC~+gHKDPGn&WhQx;s zpYWrEK)MMbER}2-n4rYFidDg0j$KA{w8&Fb3MiEJNI+==#(NXHMx86k=5AXKr{u|` zvxVxqyspDX{|Tf!Xbd6K0VxK`RY5x)yNqmUs-PVJh0;bEJP5KXRxyWo?22)k?I+K{ zC`_X;ij_g$ zFt$D?<9$FpCTn{0k0k|GS7_Cnj~sF7H?_ApTfhZSe-4rG`;Zx(S1KGjZ@AX`;zd}5 zq%&b+W)3({A%y_0H)V6SF19LBB|o5kA0pv5pyHMC>J}LsRNZ33VbS@=VG?GcEdsfP z8j|u-=^E~3Tfco(K>Zpb;U`eN_QhrMcWq=slAn{kyu;d5a9UVgTA%1_0?~m<920SaQ|~x^*s0r?<|Zyu zLqL5Ak?;u;l&M*SB!0y8w{%bvCQ~*?`^R(eU2>Y8XAj!9=+gjDpCDa80QUH-bk-I( zIymJe9h8j8qmP9k47LWY5uvcHs{|PCU1Bx$5-~-2w!y9P5E=5Dd#|8f#=rXx=2wQ_kqH(K6 zn7GJH0HyCp&}SC8i@L~{__@OUd=B>e&;KucCf7sNsjt9a(W5C_eh|@2dXjr;s zQ(QsKpdP$N7lza_(gR&eDQR73`baJ%wF?acT;J<}m|Dtz%f}hyLJ*sSgmG>~lj_!| zZv?_XVnE#t+_eYd3TrxJv+RS$$YH2#w9&~W6q!^)5s3hwFl>B>#1>rIQ?e{HDc4HV z@@+J`&`xLl>Y#IebI^IeJL!CYpZRyEG69uS6q9GgF*00hG& z5`#nt(k%!H>PY)}#y7|<4OfzYazbMqsre*j4$u1O=7Bf>+0fX~*$~+X2?of9dPbpx zZd_SOPi?BDPfMFc-?8X;e z_N{MG(fZx&dJR98%Lw|dF z10|HV)25als_WUqhAVZ!DOo6r+IlIwx`RH0@Z7t$n$Cn6od6MLQAjAE7<`Hl1>*qf zo7gNT!h*`C&>J4T8VJD*S3%45k6ad;?QDw8as>ULG6F5!Y8X3nJdEi4-<-Y7rreqidbg;Nu3lC_W8tO5K+GTrENX_7;1>Z73G!fxmnAS8KxTLWDH zQH#ZW5kQW^lwD4yET?n$tc#}rAy^2S3mx`<=bH5M*KacARI>300|pS2h}nK= z360IP&|@2FX<2<2XX5|2C}l@$FTD$4oSA2*s08FgAO`y6py+GHlwn6mYHLMq>Ovp{ z16;|S;WIB9XUcRsOZiVf>uP`_a=$U*9d`H2w*W!z$o&E_`(HEz%35#Au(9#W88NwUwl5|FK5tu9Nrgy!c{kZB zWgGS(Jin=qPRTG+7}{2wR3i6rz+pig!c>gkM-&0@0xb2NYfQJc!}x>3@c)L6e{@3) zZ9#1B+oF`puHEzjmK7&vTZ2OgI5}8FQO|$#A`s+?Y%dG~aB(<%|%aP+3}85Rdo3u<#cwTgJ$H}Xewgp30RUGn_=PE6VMp^JPyB` zjPIuB+USe|J6(*`i<=>GkFKwwH?f27C#+=TRPUrM571 z@@pyj%>^$5K`zMVLa@{~9ZM+fhE$83I_;lv{_$yL9D4?Mw;s>V<(<2Eh2e|RCc1xZ zHMZ9}*nkmpV*R{?uQx0n0L+T~yBMHOEFlfh_L1~I@ONt9@^U!LaUF|4aV$=Fo}6x` zGa(YULtNg4(4IxZhsc;xO4;!4UR_1sn_KWGa=^AWb13urwtBu+h?u-YAf=2w0gU@Q6afHui;uyW z?kH#DM~BIUuqDOpCNFWc1z-U0Wmo>?E%kH`3_dowj1yg9Af|6qOd?;StPpWc>ON7x zHKOhK8mHyh=plG0c({pUb*al*JYR8sp_5d&9$B?na-Rs)?G3%{xl4f%NCJ9t?Cn>H z^VV%PW;kWjIT{RN7#qjVmC_AbezqRF-*{DFQkIpXVdyX<{uFue1{ZpucC{s-6XCVo zgol6T+gc@U*ItAr?{05k0f<6d%BGD{%w)`TcEJ0c282KnuoDl7(GS)AysE&IRe=VP zMaS^$bsSu@Io4Lm;`x;gUG&VxS~mJfm$5*E_<9BsFu;F$2PdYQ>GqXXgm|4-B_t@^ z&a-lD><#E;(k8}KDy>1sf-D;&Pl4pMG&3h|GFLp9eYAW6oo#y1bYxtE81y~ANLw;XzHfvIaUfqf5_qf zVG|Vj^3NXvK}sY&*|8I6pJ+(8HzNTO=mzJ(_IJ3S>oE}gY52FTsD#1u`7p>2bzKS~ zh=?zuaJ1LCSOH1K3WC3MpaC12Zd_KuA|T2^1mG2i-1OuvK#&T_PK2c22yyYYt%fvP zpc|Sy{EFY59EMjm=BWY8nem+>t?!)|KYXOe%ZBFiy7s`O|=})suugo@D<<@uo&FD zyuxpfT7O^Gj6D{`Oh7|ZtPF@twv`M~8$*ELZ@BU|;SaxmKVqDKHZ0VgXOlO#*863* z-W*E{jmt1os9$Ch1rflT;-4{N^TSKNF6kBREZ)%&8$%#PAj3)OFLL97;BWkXf?+c* z8fVO|>egfFM-RgY1R7*}qmXI-4l3`DWYT3wTB#NlQA~WXpYKIMi@pp&TTjlkP!jS3 zzAh{4yXd5pGK$1_F$C~Fjk&cH_P|>Y0KuR5_25G^vBSiLo3|QLtO09CHH=cdwAkmF z{vOv3GZE(q$E>dyr?f;bDdu*+b7dtz9OcWhrMZX3r&}lj#}AkYV8S$Jly?n3?Xqz| z@E2V9i>TMDaKoKyc+DM$gVe^sU>SKW554iFNA=f{4p)tEUpvJF*ab{Hb_SyX}OPY81a0rl_@K2zj#-+l-Lf8dvc9(DZqFnzM6LQFEVN=ps9 z{V@Kt3g6BAHQjqS3yt`bLkgTnMkwe2`i7=wTWL*Wm+wRXk77^Eu>4a5!~kH(uGu&8 zvb)a!g0JDq*Tj6BF-M>7BoRg^F))5k_)(${UBcycT{IbkAar37pF_4Nz%wi6&mYY# z�iNx0ZYi1YhFQgALJ` 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 literal 0 HcmV?d00001 diff --git a/img/android-app/turtl.png b/img/android-app/turtl.png new file mode 100644 index 0000000000000000000000000000000000000000..a389f5b98ebfee358511791564adc941243dafd5 GIT binary patch literal 25060 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 adi@`Kx4w|3%fg8O0000 "$plinth_api" echo ' "shortcuts": [' >> "$plinth_api" @@ -50,10 +53,17 @@ function android_update_apps { app_name=${APPS_INSTALLED_NAMES[$app_index]} app_filename="/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}" if [ -f "$app_filename" ]; then + # get the icon for the app + icon_filename="/usr/share/${PROJECT_NAME}/android-app/${app_name}.png" + if [ -f "$icon_filename" ]; then + cp "$icon_filename" "/var/www/${local_hostname}/htdocs/icons/${app_name}.png" + else + icon_filename= + fi + app_name_upper=$(echo "$app_name" | awk '{print toupper($0)}') SHORT_DESCRIPTION= DESCRIPTION= - ICON_URL= MOBILE_APP_URL= if ! grep -q "${app_name_upper}_SHORT_DESCRIPTION=" "$app_filename"; then @@ -67,9 +77,6 @@ function android_update_apps { if grep -q "${app_name_upper}_DESCRIPTION=" "$app_filename"; then DESCRIPTION="$(grep "${app_name_upper}_DESCRIPTION=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}')" fi - if grep -q "${app_name_upper}_ICON_URL=" "$app_filename"; then - ICON_URL="$(grep "${app_name_upper}_ICON_URL=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}')" - fi if grep -q "${app_name_upper}_MOBILE_APP_URL=" "$app_filename"; then MOBILE_APP_URL="$(grep "${app_name_upper}_MOBILE_APP_URL=" "$app_filename" | head -n 1 | sed 's|\$||g' | sed 's|\$||g' | sed "s|'||g" | sed 's|\"||g' | awk -F '=' '{print $2}')" fi @@ -82,7 +89,7 @@ function android_update_apps { echo " \"name\": \"${app_name}\","; echo " \"short_description\": \"$SHORT_DESCRIPTION\","; echo " \"description\": \"$DESCRIPTION\","; - echo " \"icon_url\": \"$ICON_URL\","; + echo " \"icon_url\": \"/icons/${app_name}.png\","; echo " \"clients\": ["; } >> "$plinth_api" read_config_param "${app_name_upper}_DOMAIN_NAME" @@ -143,6 +150,7 @@ function android_update_apps { echo '}'; } >> "$plinth_api" chown -R www-data:www-data "/var/www/${local_hostname}/htdocs/plinth" + chown -R www-data:www-data "/var/www/${local_hostname}/htdocs/icons" } # NOTE: deliberately no exit 0 From 622c47ebc8de93cd6f10fd221af98fdf48e87be8 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 25 May 2018 23:16:20 +0100 Subject: [PATCH 185/214] ControlDLNA app no longer exists in f-droid --- doc/EN/app_dlna.org | 2 - website/EN/app_dlna.html | 160 ++++++++------------------------------- 2 files changed, 33 insertions(+), 129 deletions(-) diff --git a/doc/EN/app_dlna.org b/doc/EN/app_dlna.org index d7825e88..8de472dc 100644 --- a/doc/EN/app_dlna.org +++ b/doc/EN/app_dlna.org @@ -23,6 +23,4 @@ Select *Administrator controls* then *App Settings* then *dlna*. From there you The system will scan the /Music/ directory, which could take a while if there are thousands of files, but you don't need to do anything further other than perhaps to log out by selecting *Exit* a couple of times. -If you have an Android device then go to F-Droid (if you don't already have it installed then it can be [[https://f-droid.org/][downloaded here]]) and search for *ControlDLNA*. On running the app you should see a red Debian icon which you can press on, then you may need to select "local". After a few seconds the list of albums or tracks should then appear and you can browse and play them. - The DLNA service will only work within your local home network, and isn't remotely accessible from other locations via the internet. That can be both a good and a bad thing. Another consideration is that there are /no access controls/ on DLNA services, so any music or videos on the USB drive will be playable by anyone within your home network. diff --git a/website/EN/app_dlna.html b/website/EN/app_dlna.html index 6b4ab3c0..a1e5fdf8 100644 --- a/website/EN/app_dlna.html +++ b/website/EN/app_dlna.html @@ -3,33 +3,26 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - - - - - - + + + + - + @@ -235,18 +144,16 @@ for the JavaScript code in this tag.

    -
    +

    -

    logo.png +

    logo.png

    -
    - -
    -

    DLNA

    -
    +
    +

    DLNA

    +

    An easy way to play music on any mobile device in your home is to use the DLNA service. Copy your music into a directory called "Music" on an unencrypted USB thumb drive and then insert it into a USB socket on the Freedombone system.

    @@ -256,6 +163,7 @@ ssh into the system with:

    +
    ssh myusername@mydomain.com -p 2222
     
    @@ -268,14 +176,12 @@ Select Administrator controls then App Settings then dlna. The system will scan the Music directory, which could take a while if there are thousands of files, but you don't need to do anything further other than perhaps to log out by selecting Exit a couple of times.

    -

    -If you have an Android device then go to F-Droid (if you don't already have it installed then it can be downloaded here) and search for ControlDLNA. On running the app you should see a red Debian icon which you can press on, then you may need to select "local". After a few seconds the list of albums or tracks should then appear and you can browse and play them. -

    -

    The DLNA service will only work within your local home network, and isn't remotely accessible from other locations via the internet. That can be both a good and a bad thing. Another consideration is that there are no access controls on DLNA services, so any music or videos on the USB drive will be playable by anyone within your home network.

    +
    +