From ca08ef487d02bb0207db0ae42df9796a621bc3eb Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@freedombone.net>
Date: Sun, 7 May 2017 18:19:45 +0100
Subject: [PATCH] Add armadillo UI

---
 src/freedombone-app-gnusocial        |   8 +-
 src/freedombone-app-postactiv        |  10 +-
 src/freedombone-utils-gnusocialtools | 235 +++++++++++++++++++++------
 3 files changed, 197 insertions(+), 56 deletions(-)

diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial
index c1205d7c8..f4c7255e1 100755
--- a/src/freedombone-app-gnusocial
+++ b/src/freedombone-app-gnusocial
@@ -311,14 +311,15 @@ function configure_interactive_gnusocial {
         trap "rm -f $data" 0 1 2 5 15
         dialog --backtitle $"Freedombone Control Panel" \
                --title $"GNU Social" \
-               --radiolist $"Choose an operation:" 16 70 7 \
+               --radiolist $"Choose an operation:" 17 70 8 \
                1 $"Set a background image" off \
                2 $"Set the title" off \
                3 $"Set post expiry period (currently $GNUSOCIAL_EXPIRE_MONTHS months)" off \
                4 $"Select Qvitter user interface" off \
                5 $"Select Pleroma user interface" off \
                6 $"Select Classic user interface" off \
-               7 $"Exit" on 2> $data
+               7 $"Select Armadillo user interface" off \
+               8 $"Exit" on 2> $data
         sel=$?
         case $sel in
             1) return;;
@@ -331,7 +332,8 @@ function configure_interactive_gnusocial {
             4) gnusocial_use_qvitter gnusocial;;
             5) gnusocial_use_pleroma gnusocial;;
             6) gnusocial_use_classic gnusocial;;
-            7) break;;
+            7) gnusocial_use_armadillo gnusocial;;
+            8) break;;
         esac
     done
 }
diff --git a/src/freedombone-app-postactiv b/src/freedombone-app-postactiv
index cf555358c..896b9fc52 100755
--- a/src/freedombone-app-postactiv
+++ b/src/freedombone-app-postactiv
@@ -313,14 +313,15 @@ function configure_interactive_postactiv {
         trap "rm -f $data" 0 1 2 5 15
         dialog --backtitle $"Freedombone Control Panel" \
                --title $"PostActiv" \
-               --radiolist $"Choose an operation:" 16 70 7 \
+               --radiolist $"Choose an operation:" 17 70 8 \
                1 $"Set a background image" off \
                2 $"Set the title" off \
                3 $"Set post expiry period (currently $POSTACTIV_EXPIRE_MONTHS months)" off \
                4 $"Select Qvitter user interface" off \
                5 $"Select Pleroma user interface" off \
                6 $"Select Classic user interface" off \
-               7 $"Exit" on 2> $data
+               7 $"Select Armadillo user interface" off \
+               8 $"Exit" on 2> $data
         sel=$?
         case $sel in
             1) return;;
@@ -333,7 +334,8 @@ function configure_interactive_postactiv {
             4) gnusocial_use_qvitter postactiv;;
             5) gnusocial_use_pleroma postactiv;;
             6) gnusocial_use_classic postactiv;;
-            7) break;;
+            7) gnusocial_use_armadillo postactiv;;
+            8) break;;
         esac
     done
 }
@@ -789,6 +791,8 @@ function install_postactiv {
     #function_check install_nodejs
     #install_nodejs pleroma-postactiv
 
+    install_armadillo_front_end "postactiv" "$POSTACTIV_DOMAIN_NAME" "$POSTACTIV_BACKGROUND_IMAGE_URL"
+
     # Currently Pleroma won't install on ARM systems
     # because it uses node-sass which doesn't support ARM
     if [[ "$(arch)" == "arm"* ]]; then
diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools
index 89a068f91..efe4da33f 100755
--- a/src/freedombone-utils-gnusocialtools
+++ b/src/freedombone-utils-gnusocialtools
@@ -34,6 +34,24 @@ QVITTER_THEME_COMMIT='a7f82628402db3a7579bb9b2877da3c5737da77b'
 PLEROMA_REPO="https://gitgud.io/lambadalambda/pleroma-fe"
 PLEROMA_COMMIT='1f8d30386388f8b91aa84fdbd7861e588aa0d935'
 
+ARMADILLO_REPO="https://git.postactiv.com/maiya/Armadillo"
+ARMADILLO_COMMIT='ec3938a678f373156c4cbf37926c9a5ab68222c4'
+
+function qvitter_update_background {
+    domain_name="$1"
+    ext=$2
+
+    if [ -d /var/www/${domain_name}/htdocs/local/plugins/Qvitter/img ]; then
+        cp bg_custom.${ext} /var/www/${domain_name}/htdocs/local/plugins/Qvitter/img
+        if ! grep -q "bg_custom.${ext}" /var/www/${domain_name}/htdocs/config.php; then
+            if grep -q 'sitebackground' /var/www/${domain_name}/htdocs/config.php; then
+                sed -i '/sitebackground/d' /var/www/${domain_name}/htdocs/config.php
+            fi
+            echo "\$config['site']['qvitter']['sitebackground'] = 'img/bg_custom.${ext}';" >> /var/www/${domain_name}/htdocs/config.php
+        fi
+    fi
+}
+
 function pleroma_set_background_image_from_url {
     domain_name="$1"
     url="$2"
@@ -58,61 +76,31 @@ function pleroma_set_background_image_from_url {
     fi
 
     if [ ${#ext} -gt 0 ]; then
-        if [ -d /var/www/${domain_name}/htdocs/static ]; then
-            cd /var/www/${domain_name}/htdocs/static
+        cd /var/www/${domain_name}/htdocs
 
-            # remove any existing image
-            if [ -f bg_custom.${ext} ]; then
-                rm bg_custom.${ext}
-            fi
+        # remove any existing image
+        if [ -f bg_custom.${ext} ]; then
+            rm bg_custom.${ext}
+        fi
 
-            # get the new image
-            wget "$url" -O bg_custom.${ext}
-            if [ ! -f bg_custom.${ext} ]; then
-                echo "$url"
-                echo $'Custom background image for pleroma could not be downloaded'
-                echo "1"
-                return
-            fi
+        # get the new image
+        wget "$url" -O bg_custom.${ext}
+        if [ ! -f bg_custom.${ext} ]; then
+            echo "$url"
+            echo $'Custom background image for pleroma could not be downloaded'
+            echo "1"
+            return
+        fi
 
+        if [ -d /var/www/${domain_name}/htdocs/static ]; then
+            cd /var/www/${domain_name}/htdocs/static
+            cp ../bg_custom.${ext} bg_custom.${ext}
             sed -i "s|\"background\":.*|\"background\": \"/static/bg_custom.${ext}\",|g" config.json
-
-            # update the qvitter background
-            if [ -d /var/www/${domain_name}/htdocs/local/plugins/Qvitter/img ]; then
-                cp bg_custom.${ext} /var/www/${domain_name}/htdocs/local/plugins/Qvitter/img
-                if ! grep -q "bg_custom.${ext}" /var/www/${domain_name}/htdocs/config.php; then
-                    if grep -q 'sitebackground' /var/www/${domain_name}/htdocs/config.php; then
-                        sed -i '/sitebackground/d' /var/www/${domain_name}/htdocs/config.php
-                    fi
-                    echo "\$config['site']['qvitter']['sitebackground'] = 'img/bg_custom.${ext}';" >> /var/www/${domain_name}/htdocs/config.php
-                fi
-            fi
-        else
-            # qvitter background
-            if [ -d /var/www/${domain_name}/htdocs/local/plugins/Qvitter/img ]; then
-                cd /var/www/${domain_name}/htdocs/local/plugins/Qvitter/img
-
-                # remove any existing image
-                if [ -f bg_custom.${ext} ]; then
-                    rm bg_custom.${ext}
-                fi
-
-                # get the new image
-                wget "$url" -O bg_custom.${ext}
-                if [ ! -f bg_custom.${ext} ]; then
-                    echo "$url"
-                    echo $'Custom background image for Qvitter could not be downloaded'
-                    echo "3"
-                    return
-                fi
-                if ! grep -q "bg_custom.${ext}" /var/www/${domain_name}/htdocs/config.php; then
-                    if grep -q 'sitebackground' /var/www/${domain_name}/htdocs/config.php; then
-                        sed -i '/sitebackground/d' /var/www/${domain_name}/htdocs/config.php
-                    fi
-                    echo "\$config['site']['qvitter']['sitebackground'] = 'img/bg_custom.${ext}';" >> /var/www/${domain_name}/htdocs/config.php
-                fi
-            fi
         fi
+
+        qvitter_update_background ${domain_name} ${ext}
+
+        rm bg_custom.${ext}
     else
         echo "2"
         return
@@ -137,6 +125,62 @@ function pleroma_set_background_image_from_url {
     echo "0"
 }
 
+function armadillo_set_background_image_from_url {
+    domain_name="$1"
+    url="$2"
+
+    if [ ${#domain_name} -eq 0 ]; then
+        echo "1"
+        return
+    fi
+
+    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
+        cd /var/www/${domain_name}/htdocs
+
+        # remove any existing image
+        if [ -f bg_custom.${ext} ]; then
+            rm bg_custom.${ext}
+        fi
+
+        # get the new image
+        wget "$url" -O bg_custom.${ext}
+        if [ ! -f bg_custom.${ext} ]; then
+            echo "$url"
+            echo $'Custom background image for armadillo could not be downloaded'
+            echo "1"
+            return
+        fi
+
+        if [ -d /var/www/${domain_name}/htdocs/armadillo ]; then
+            cd /var/www/${domain_name}/htdocs/armadillo
+            cp ../bg_custom.${ext} media/img/bg_custom.${ext}
+            sed -i "s|\"background\":.*|\"background\": \"armadillo/media/img/background.jpeg\"," config.json
+        fi
+
+        qvitter_update_background ${domain_name} ${ext}
+
+        rm bg_custom.${ext}
+    else
+        echo "2"
+        return
+    fi
+
+    echo "0"
+}
+
 function install_qvitter {
     domain_name=$1
     app_name=$2
@@ -238,6 +282,43 @@ function install_gnusocial_default_background {
     fi
 }
 
+function install_armadillo_front_end {
+    app_name="$1"
+    armadillo_domain="$2"
+    background_url="$3"
+
+    if [ ! -d $INSTALL_DIR/armadillo ]; then
+        function_check git_clone
+        git_clone $ARMADILLO_REPO $INSTALL_DIR/armadillo
+        if [ ! -d $INSTALL_DIR/armadillo ]; then
+            echo $'Unable to clone armadillo repo'
+            exit 35722
+        fi
+    fi
+
+    cd $INSTALL_DIR/armadillo
+    git checkout $ARMADILLO_COMMIT -b $ARMADILLO_COMMIT
+    set_completion_param "${app_name} armadillo commit" "$ARMADILLO_COMMIT"
+
+    cp armadillo/config.json.example armadillo/config.json
+    sed -i "s|\"server\".*|\"server\": \"${armadillo_domain}\",|g" armadillo/config.json
+    cp -r $INSTALL_DIR/armadillo/armadillo /var/www/${armadillo_domain}/htdocs/
+    cp $INSTALL_DIR/armadillo/armadillo.html /var/www/${armadillo_domain}/htdocs/index.html
+    cp $INSTALL_DIR/armadillo/dash.html /var/www/${armadillo_domain}/htdocs/dash.html
+
+    armadillo_set_background_image_from_url "$armadillo_domain" "$background_url"
+
+    nginx_site=/etc/nginx/sites-available/${armadillo_domain}
+    sed -i 's|index index.php;|index index.html;|g' $nginx_site
+
+    if [ -f /var/www/${armadillo_domain}/htdocs/index.php ]; then
+        mv /var/www/${armadillo_domain}/htdocs/index.php /var/www/${armadillo_domain}/htdocs/index_qvitter.php
+    fi
+    sed -i 's|index.php|index_qvitter.php|g' $nginx_site
+
+    chown -R www-data:www-data /var/www/${armadillo_domain}/htdocs
+}
+
 function install_pleroma_front_end {
     app_name="$1"
     pleroma_domain="$2"
@@ -344,6 +425,27 @@ function upgrade_pleroma {
     fi
 }
 
+function upgrade_armadillo {
+    domain_name="$1"
+    app_name="$2"
+    background_url="$3"
+
+    if [ -d $INSTALL_DIR/armadillo ]; then
+        set_repo_commit $INSTALL_DIR/armadillo "${app_name} armadillo commit" "$ARMADILLO_COMMIT" $ARMADILLO_REPO
+        cd $INSTALL_DIR/armadillo
+
+        if [ -f $INSTALL_DIR/armadillo/armadillo/config.json ]; then
+            rm $INSTALL_DIR/armadillo/armadillo/config.json
+        fi
+        cp -r $INSTALL_DIR/armadillo/armadillo /var/www/${armadillo_domain}/htdocs/
+        cp $INSTALL_DIR/armadillo/armadillo.html /var/www/${armadillo_domain}/htdocs/index.html
+        cp $INSTALL_DIR/armadillo/dash.html /var/www/${armadillo_domain}/htdocs/dash.html
+        chown -R www-data:www-data /var/www/${domain_name}/htdocs
+    else
+        install_armadillo_front_end "${app_name}" "${domain_name}" "${background_url}"
+    fi
+}
+
 function gnusocial_hourly_script {
     gnusocial_type=$1
     domain_name=$2
@@ -711,6 +813,39 @@ function gnusocial_use_pleroma {
         sed -i "s|// addPlugin('Qvitter')|addPlugin('Qvitter')|g" /var/www/$domain_name/htdocs/config.php
     fi
 
+    cp $INSTALL_DIR/pleroma/dist/index.html /var/www/${domain_name}/htdocs/index.html
+
+    systemctl restart nginx
+}
+
+function gnusocial_use_armadillo {
+    database_name=$1
+
+    domain_name=$(get_completion_param "$database_name domain")
+
+    if [ ! -d /var/www/$domain_name/htdocs/armadillo ]; then
+        return
+    fi
+
+    if [ -f /var/www/$domain_name/htdocs/index.php ]; then
+        mv /var/www/$domain_name/htdocs/index.php /var/www/$domain_name/htdocs/index_qvitter.php
+    fi
+
+    if [ -f /etc/nginx/sites-available/$domain_name ]; then
+        sed -i 's|index.php|index_qvitter.php|g' /etc/nginx/sites-available/$domain_name
+        sed -i 's|index index_qvitter.php|index index.html|g' /etc/nginx/sites-available/$domain_name
+    fi
+
+    if grep -q "//addPlugin('Qvitter')" /var/www/$domain_name/htdocs/config.php; then
+        sed -i "s|//addPlugin('Qvitter')|addPlugin('Qvitter')|g" /var/www/$domain_name/htdocs/config.php
+    fi
+    if grep -q "// addPlugin('Qvitter')" /var/www/$domain_name/htdocs/config.php; then
+        sed -i "s|// addPlugin('Qvitter')|addPlugin('Qvitter')|g" /var/www/$domain_name/htdocs/config.php
+    fi
+
+    cp $INSTALL_DIR/armadillo/armadillo.html /var/www/${domain_name}/htdocs/index.html
+    cp $INSTALL_DIR/armadillo/dash.html /var/www/${domain_name}/htdocs/dash.html
+
     systemctl restart nginx
 }
 
-- 
GitLab