From 079e370defc6ed1c641104d9660c51e458f25f17 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@freedombone.net>
Date: Sun, 16 Apr 2017 16:14:53 +0100
Subject: [PATCH] Customize searx background

---
 src/freedombone-app-searx | 110 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 108 insertions(+), 2 deletions(-)

diff --git a/src/freedombone-app-searx b/src/freedombone-app-searx
index 508a33b1a..548b9b50d 100755
--- a/src/freedombone-app-searx
+++ b/src/freedombone-app-searx
@@ -40,12 +40,14 @@ SEARX_ONION_PORT=8094
 SEARX_ONION_HOSTNAME=
 SEARX_LOGIN_TEXT=$"Search engine login"
 SEARX_PASSWORD=
+SEARX_BACKGROUND_IMAGE_URL=
 
 searx_variables=(SEARX_REPO
                  SEARX_COMMIT
                  SEARX_PATH
                  SEARX_LOGIN_TEXT
                  MY_USERNAME
+                 SEARX_BACKGROUND_IMAGE_URL
                  SYSTEM_TYPE)
 
 function searx_set_default_background {
@@ -60,6 +62,102 @@ function searx_set_default_background {
     fi
 }
 
+function searx_set_background_image_from_url {
+    url="$1"
+
+    ext=
+    if [ ${#url} -gt 0 ]; then
+        if [[ "$url" == *".jpeg" || "$url" == *".jpg" ]]; then
+            ext="jpg"
+        fi
+        if [[ "$url" == *".png" ]]; then
+            ext="png"
+        fi
+        if [[ "$url" == *".gif" ]]; then
+            ext="gif"
+        fi
+    fi
+
+    if [ ${#ext} -gt 0 ]; then
+        if [ -d /etc/searx/searx/static/themes/courgette/img ]; then
+            cd /etc/searx/searx/static/themes/courgette/img
+
+
+            # remove any existing image
+            if [ -f bg-body-index.jpg ]; then
+                rm bg-body-index.jpg
+            fi
+
+            # get the new image
+            if [[ "$ext" != 'jpg' ]]; then
+                if [ -f bg-body-index.${ext} ]; then
+                    rm bg-body-index.${ext}
+                fi
+                wget "$url" -O bg-body-index.${ext}
+                convert bg-body-index.${ext} bg-body-index.jpg
+            else
+                wget "$url" -O bg-body-index.jpg
+            fi
+            if [ ! -f bg-body-index.jpg ]; then
+                echo "$url"
+                echo $'Custom background image for SearX could not be downloaded'
+                echo "1"
+                return
+            fi
+            chown -R searx:searx ${SEARX_PATH}/searx
+        fi
+    else
+        echo "2"
+        return
+    fi
+
+    echo "0"
+}
+
+function searx_set_background_image {
+    data=$(tempfile 2>/dev/null)
+    trap "rm -f $data" 0 1 2 5 15
+    dialog --title $"SearX Metasearch" \
+           --backtitle $"Freedombone Control Panel" \
+           --inputbox $'Set a background image URL' 10 60 2>$data
+    sel=$?
+    case $sel in
+        0)
+            temp_background=$(<$data)
+            if [ ${#temp_background} -gt 0 ]; then
+                SEARX_BACKGROUND_IMAGE_URL="$temp_background"
+                write_config_param "SEARX_BACKGROUND_IMAGE_URL" "$SEARX_BACKGROUND_IMAGE_URL"
+                if [[ $(searx_set_background_image_from_url "$SEARX_BACKGROUND_IMAGE_URL" | tail -n 1) == "0" ]]; then
+                    dialog --title $"Set SearX background" \
+                           --msgbox $"The background image has been set" 6 60
+                fi
+            fi
+           ;;
+    esac
+}
+
+function configure_interactive_searx {
+    while true
+    do
+        data=$(tempfile 2>/dev/null)
+        trap "rm -f $data" 0 1 2 5 15
+        dialog --backtitle $"Freedombone Control Panel" \
+               --title $"SearX Metasearch" \
+               --radiolist $"Choose an operation:" 11 70 2 \
+               1 $"Set a background image" off \
+               2 $"Exit" on 2> $data
+        sel=$?
+        case $sel in
+            1) return;;
+            255) return;;
+        esac
+        case $(cat $data) in
+            1) searx_set_background_image;;
+            2) break;;
+        esac
+    done
+}
+
 function remove_user_searx {
     remove_username="$1"
 
@@ -625,8 +723,16 @@ function create_searx_config {
 }
 
 function upgrade_searx {
+    background_image=/etc/searx/searx/static/themes/courgette/img/bg-body-index.jpg
+    if [ -f ${background_image} ]; then
+        cp ${background_image} ${background_image}.prev
+    fi
+
     set_repo_commit $SEARX_PATH/searx "searx commit" "$SEARX_COMMIT" $SEARX_REPO
-    searx_set_default_background
+    if [ -f ${background_image}.prev ]; then
+        cp ${background_image}.prev ${background_image}
+        chown -R searx:searx ${SEARX_PATH}/searx
+    fi
 }
 
 function backup_local_searx {
@@ -672,7 +778,7 @@ function install_searx {
     fi
 
     apt-get -yq install python-pip libyaml-dev python-werkzeug python-babel python-lxml apache2-utils
-    apt-get -yq install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev uwsgi uwsgi-plugin-python libapache2-mod-uwsgi
+    apt-get -yq install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev uwsgi uwsgi-plugin-python libapache2-mod-uwsgi imagemagick
 
     pip install --upgrade pip
 
-- 
GitLab