#!/bin/sh

# Synchronize Thunderbird email profile between laptop and server

# Transform named parameters to environment variables

for x ; do export ${x%=*}="${x#*=}"; done

if [ "$FIND" = "" ]; then
  export FIND=/usr/bin/find
fi

if [ "$USER" = "" ]; then
  echo "ERROR: USER is undefined!"
  echo "Press ENTER to continue..."
  read
  exit 1
fi

if [ "$HOMESERVER" = "" ]; then
  export HOMESERVER=bethel.munts.net
fi

if [ "`hostname`" = "$HOMESERVER" ]; then
  echo "ERROR: Cannot mailsync to self!"
  echo "Press ENTER to continue..."
  read
  exit 1
fi

if [ -d "$HOME/mail" ]; then
  export LOCALMAILPROFILE="$HOME/mail"
elif [ -d "$HOME/.thunderbird/Profiles/$USER" ]; then
  export LOCALMAILPROFILE="$HOME/.thunderbird/Profiles/$USER"
else
  echo "ERROR: Cannot find mail profile!"
  echo "Press ENTER to continue..."
  read
  exit 1
fi

if [ "$REMOTEMAILPROFILE" = "" ]; then
  export REMOTEMAILPROFILE=$USER@$HOMESERVER:mail
fi

if [ "$1" = "to" ]; then
  echo "scrub locks and permissions"
  $FIND "$LOCALMAILPROFILE" -name lock -exec rm -f {} ";"
  $FIND "$LOCALMAILPROFILE" -name parent.lock -exec rm -f {} ";"
  $FIND "$LOCALMAILPROFILE" -name .parentlock -exec rm -f {} ";"
  $FIND "$LOCALMAILPROFILE" -type f -exec chmod 644 {} ";"
  $FIND "$LOCALMAILPROFILE" -type d -exec chmod 755 {} ";"

  rsync -avcsz ${DRYRUN} --delete "${LOCALMAILPROFILE}/Mail/Local Folders/" "${REMOTEMAILPROFILE}/Mail/Local Folders"
  status=$?
  if [ $status -ne 0 ]; then
    echo "Press ENTER to continue..."
    read
  fi
  exit $status
fi

if [ "$1" = "from" ]; then
  rsync -avcsz ${DRYRUN} --delete "${REMOTEMAILPROFILE}/Mail/Local Folders/" "${LOCALMAILPROFILE}/Mail/Local Folders"
  status=$?
  if [ $status -ne 0 ]; then
    echo "Press ENTER to continue..."
    read
  fi

  echo "scrub locks and permissions"
  $FIND "$LOCALMAILPROFILE" -name lock -exec rm -f {} ";"
  $FIND "$LOCALMAILPROFILE" -name parent.lock -exec rm -f {} ";"
  $FIND "$LOCALMAILPROFILE" -name .parentlock -exec rm -f {} ";"
  $FIND "$LOCALMAILPROFILE" -type f -exec chmod 644 {} ";"
  $FIND "$LOCALMAILPROFILE" -type d -exec chmod 755 {} ";"

  exit $status
fi

echo Usage: mailsync to or mailsync from [USER=name] [HOMESERVER=name]
