]> pere.pagekite.me Git - exim4-smtorp.git/commitdiff
Adjust setup script to make tor setup more robust.
authorPetter Reinholdtsen <pere@hungry.com>
Sun, 9 Aug 2020 20:20:08 +0000 (22:20 +0200)
committerPetter Reinholdtsen <pere@hungry.com>
Sun, 9 Aug 2020 20:20:08 +0000 (22:20 +0200)
Only set up tor once if already configured.

setup-exim-hidden-service

index e0ab869af6f181cee4e15299586045604d44257f..48af3e2512a5c41c0ee63d679c43bb318de3563c 100644 (file)
@@ -12,22 +12,41 @@ if dpkg -l exim4-config > /dev/null ; then
     exit 1
 fi
 
+append_if_missing() {
+    file="$1"
+    string="$2"
+    if [ -f "$file" ] && grep -xq "$string" "$file" ; then
+        :
+    else
+        (
+            if [ -f "$file" ] ; then cat "$file" ; fi
+            echo "$string"
+        ) > "$file.new" && mv "$file.new" "$file"
+    fi
+}
+
 DEBIAN_FRONTEND=noninteractive apt-get install -y tor
 torhsdir=$(awk '/^HiddenServiceDir (.*) *$/ { print $2 }' /etc/tor/torrc)
 if [ -e "$torhsdir/hostname" ] ; then
    torhsname=$(cat "$torhsdir/hostname")
 else
     echo "*******************************************************************"
-    echo "* Unable to set up SMTP over TOR.  There is no Tor hidden service *"
-    echo "* name in $torhsdir           *"
+    echo "* Added Tor hidden service for SMTP (port 25)                     *"
     echo "*******************************************************************"
-    echo "Please add lines like this to /etc/tor/torrc:"
-    echo
-    echo "HiddenServiceDir /var/lib/tor/hidden_service/"
-    echo "HiddenServicePort 25 127.0.0.1:25"
-    mkdir /var/lib/tor/hidden_service
+    append_if_missing /etc/tor/torrc \
+       "HiddenServiceDir /var/lib/tor/hidden_service/"
+    append_if_missing /etc/tor/torrc \
+       "HiddenServicePort 25 127.0.0.1:25"
+    mkdir -p /var/lib/tor/hidden_service
     chown debian-tor:debian-tor /var/lib/tor/hidden_service
-    exit 1
+    chmod og-rwx /var/lib/tor/hidden_service
+    service tor restart
+    if [ -e "$torhsdir/hostname" ] ; then
+       torhsname=$(cat "$torhsdir/hostname")
+    else
+       echo "error: unable to set up Tor hidden service"
+       exit 1
+    fi
 fi
 
 cat <<EOF | debconf-set-selections