Mainly add external monitoring of mail server
[distro-setup] / primary-setup
index 30c4222a7bc9c3cdfb6885546a147c4b8225438f..df30f294662019352acd32ac79d9251a7f391b87 100755 (executable)
@@ -3,31 +3,40 @@
 # 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
 
+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 [[ ! $SUDO_USER || $EUID == 0 ]]; then
-  echo "$0: error: requires running as nonroot or sudo"
+
+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-state
+  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
@@ -38,6 +47,23 @@ else
   # done
 fi
 
-/a/exe/mail-setup
+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
 :