From 2b5fc2a966667aed1c21790319ea966711cb43a0 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@robotics.uk.to>
Date: Mon, 7 Jan 2019 23:36:17 +0000
Subject: [PATCH] Only restart rsync if needed

---
 src/freedombone-app-rsync      |  6 ++++--
 src/freedombone-utils-webadmin | 21 +++++++++++++++++----
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/src/freedombone-app-rsync b/src/freedombone-app-rsync
index 19583709e..8b51f69a3 100755
--- a/src/freedombone-app-rsync
+++ b/src/freedombone-app-rsync
@@ -66,8 +66,10 @@ function rsync_setting_remote {
         return
     fi
 
-    sed -i 's|read only =.*|read only = true|g' /etc/rsync/rsyncd.conf
-    systemctl restart rsync
+    if ! grep -q 'read only = true' /etc/rsync/rsyncd.conf; then
+        sed -i 's|read only =.*|read only = true|g' /etc/rsync/rsyncd.conf
+        systemctl restart rsync
+    fi
 
     { echo '#!/bin/bash';
       echo "cd $RSYNC_DATA || exit 1";
diff --git a/src/freedombone-utils-webadmin b/src/freedombone-utils-webadmin
index 259ce6ec7..63e2e9f18 100755
--- a/src/freedombone-utils-webadmin
+++ b/src/freedombone-utils-webadmin
@@ -862,7 +862,12 @@ function web_admin_create_installed_apps_category {
                     # special case for rsync
                     if [[ "$app_name" == 'rsync' ]]; then
                         RSYNC_HOSTNAME_ONION=$(cat /var/lib/tor/hidden_service_rsync/hostname)
-                        domain_name="torsocks rsync -avmr --delete $RSYNC_HOSTNAME_ONION::files ~/your_directory/ \&\& torsocks rsync -avmr --delete ~/your_directory/ $RSYNC_HOSTNAME_ONION::files<br><br>rsync -avmr --delete ${PROJECT_NAME}::files ~/your_directory/ \&\& rsync -avmr --delete ~/your_directory/ ${PROJECT_NAME}::files"
+
+                        if grep -q 'read only = true' /etc/rsync/rsyncd.conf; then
+                            domain_name="torsocks rsync -avmr --delete $RSYNC_HOSTNAME_ONION::files ~/your_directory/<br><br>rsync -avmr --delete ${PROJECT_NAME}::files ~/your_directory/"
+                        else
+                            domain_name="torsocks rsync -avmr --delete $RSYNC_HOSTNAME_ONION::files ~/your_directory/ \&\& torsocks rsync -avmr --delete ~/your_directory/ $RSYNC_HOSTNAME_ONION::files<br><br>rsync -avmr --delete ${PROJECT_NAME}::files ~/your_directory/ \&\& rsync -avmr --delete ~/your_directory/ ${PROJECT_NAME}::files"
+                        fi
                     fi
 
                     if [ $installed_apps_ctr -eq 0 ]; then
@@ -910,10 +915,18 @@ function web_admin_create_installed_apps_category {
                             else
                                 # do something different for rsync: show the commands to sync
                                 RSYNC_HOSTNAME_ONION=$(cat /var/lib/tor/hidden_service_rsync/hostname)
-                                if [ ! -f /usr/local/bin/myqr ]; then
-                                    echo -n "torsocks rsync -avmr --delete $RSYNC_HOSTNAME_ONION::files ~/your_directory/ && torsocks rsync -avmr --delete ~/your_directory/ $RSYNC_HOSTNAME_ONION::files" | qrencode -t PNG -o "$webadmin_install_dir/app_qrcode_${app_name}.png"
+                                if grep -q 'read only = true' /etc/rsync/rsyncd.conf; then
+                                    if [ ! -f /usr/local/bin/myqr ]; then
+                                        echo -n "torsocks rsync -avmr --delete $RSYNC_HOSTNAME_ONION::files ~/your_directory/" | qrencode -t PNG -o "$webadmin_install_dir/app_qrcode_${app_name}.png"
+                                    else
+                                        myqr "torsocks rsync -avmr $RSYNC_HOSTNAME_ONION::files ~/your_directory/" -p /root/freedombone/img/onion.png -c -n "$webadmin_install_dir/app_qrcode_${app_name}.png"
+                                    fi
                                 else
-                                    myqr "torsocks rsync -avmr $RSYNC_HOSTNAME_ONION::files ~/your_directory/ && torsocks rsync -avmr ~/your_directory/ $RSYNC_HOSTNAME_ONION::files" -p /root/freedombone/img/onion.png -c -n "$webadmin_install_dir/app_qrcode_${app_name}.png"
+                                    if [ ! -f /usr/local/bin/myqr ]; then
+                                        echo -n "torsocks rsync -avmr --delete $RSYNC_HOSTNAME_ONION::files ~/your_directory/ && torsocks rsync -avmr --delete ~/your_directory/ $RSYNC_HOSTNAME_ONION::files" | qrencode -t PNG -o "$webadmin_install_dir/app_qrcode_${app_name}.png"
+                                    else
+                                        myqr "torsocks rsync -avmr $RSYNC_HOSTNAME_ONION::files ~/your_directory/ && torsocks rsync -avmr ~/your_directory/ $RSYNC_HOSTNAME_ONION::files" -p /root/freedombone/img/onion.png -c -n "$webadmin_install_dir/app_qrcode_${app_name}.png"
+                                    fi
                                 fi
                             fi
                         fi
-- 
GitLab