Mainly add external monitoring of mail server
[distro-setup] / primary-setup
index 4786827cfc00117b24ead84064a21b28310e153e..df30f294662019352acd32ac79d9251a7f391b87 100755 (executable)
@@ -1,28 +1,42 @@
 #!/bin/bash
 
 # usage $0 [MAIL_HOST]
+# setup things which involve being the primary host or not
 
-set -eE -o pipefail
-trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+source /usr/local/lib/err
 
-# setup things which involve being the primary host or not
+pre="${0##*/}:"
+m() { printf "$pre %s\n"  "$*"; "$@"; }
+e() { printf "$pre %s\n"  "$*"; }
+err() { echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: $0: $*" >&2; }
+
+
+if [[ $EUID == 0 && ! $SUDO_USER ]]; then
+  err "requires running as nonroot or sudo"
+  exit 1
+fi
 
 if [[ $1 ]]; then
   new_host=$1
-  sed -ri "s/MAIL_HOST=.*/MAIL_HOST=$new_host/" /a/bin/bash_unpublished/source-semi-priv
-  source /a/bin/bash_unpublished/source-semi-priv
+  if [[ $new_host == localhost ]]; then
+    new_host=$HOSTNAME
+  fi
+  m sed -ri "s/MAIL_HOST=.*/MAIL_HOST=$new_host/" /a/bin/bash_unpublished/source-state
+  source /a/bin/bash_unpublished/source-state
 fi
 
-if [[ $HOSTNAME == $MAIL_HOST ]]; then
+if [[ $HOSTNAME == "$MAIL_HOST" ]]; then
   # arbtt disabled for now
   #DISPLAY=:0 arbtt-capture --sample-rate=10 &
-  sudo systemctl start rss2email.timer
-  sudo systemctl enable rss2email.timer
+  m sudo systemctl start rss2email.timer
+  m sudo systemctl enable rss2email.timer
+  m sudo systemctl start btrbk.timer
+  m sudo systemctl enable btrbk.timer
 
 else
-  sudo systemctl stop rss2email.timer
-  sudo systemctl stop rss2email.service
-  sudo systemctl disable rss2email.timer
+  sudo systemctl stop rss2email.timer
+  sudo systemctl stop rss2email.service
+  sudo systemctl disable rss2email.timer
   # arbtt disabled for now
   # for ((i=0; i<10; i++)); do
   #   killall arbtt-capture || break
@@ -33,6 +47,23 @@ else
   # done
 fi
 
-mail-setup exim4
+if dpkg -s radicale &>/dev/null; then
+  if [[ $HOSTNAME == "$MAIL_HOST" ]]; then
+    m sudo systemctl restart radicale
+    m sudo systemctl enable radicale
+    if [[ -e /etc/logrotate.d/radicale.disabled ]]; then
+      m sudo mv /etc/logrotate.d/radicale{.disabled,}
+    fi
+  else
+    m sudo systemctl stop radicale
+    m sudo systemctl disable radicale
+    # weekly logrotate tries to restart radicale even if it's a disabled service in flidas.
+    if [[ -e /etc/logrotate.d/radicale ]]; then
+      m sudo mv /etc/logrotate.d/radicale{,.disabled}
+    fi
+  fi
+fi
+
+m /a/exe/mail-setup
 exit 0
 :