#!/bin/bash

SJ_DOMAIN=""
SJ_DOMAINPATHPREFIX="/srv/mailnames"
SJ_MAILINFO="/usr/local/psa/bin/mail"

function debug()
{
	echo "$1" >&2
}

function error()
{
	debug ""
	debug "error:"
	debug "  $1" >&2
}

function help()
{
	debug "Usage: $(basename $0) [OPTION] -d domain"
	debug ""
	debug "  -d domain              set domain to crawl"
	debug "                         e.g. example.com"
	debug "  -p pathprefix          path where to find the domain directory"
	debug "                         default: /srv/mailnames"
	debug "  -m mailinfo            binary to use to collect info on email addresses"
	debug "                         default: /usr/local/psa/bin/mail"
	exit 1
	
}

if [ $# -eq 0 ]
then
	help
fi

while getopts "d:p:m:h" opt
do
	case "$opt" in
		d)
			SJ_DOMAIN="$OPTARG"
			;;
		p)
			SJ_DOMAINPATHPREFIX="${OPTARG}"
			;;
		m)
			SJ_MAILINFO="$OPTARG"
			;;
		h)
			help
			;;
		\?)
			echo "Invalid option: -$OPTARG" >&2
			;;
	esac
done

SEARCHDIR="${SJ_DOMAINPATHPREFIX}/${SJ_DOMAIN}/"

debug "domain:           ${SJ_DOMAIN}"
debug "mailinfo binary:  ${SJ_MAILINFO}"
debug "domainpathprefix: ${SJ_DOMAINPATHPREFIX}"
debug "searchdir:        ${SEARCHDIR}"
debug ""

if [ ! -d "${SEARCHDIR}" ]
then
	error "${SEARCHDIR} does not exist."
	exit 1
fi

LOCALPARTS="$(find "${SEARCHDIR}" -mindepth 1 -maxdepth 1 -type d -printf '%f ')"

echo '"Emailadresse";"Ziel";"Weiterleitung aktiviert";"Mailbox";"Plesk-Zugang"'

for localpart in $LOCALPARTS
do
	EMAIL="${localpart}@${SJ_DOMAIN}"
	IFS=":"
	export properties=""

	MAILINFO="$("$SJ_MAILINFO" -i "$EMAIL" | perl -pi -e 's/:\s*/:/')"
	REDIRECT="$(echo "$MAILINFO" | grep '^Redirect:' | cut -d: -f 2-)"
	REDIRECTADDRESS="$(echo "$MAILINFO" | grep '^Redirect address:' | cut -d: -f 2-)"
	CPACCESS="$(echo "$MAILINFO" | grep '^CP Access:' | cut -d: -f 2-)"
	MAILBOX="$(echo "$MAILINFO" | grep '^Mailbox:' | cut -d: -f 2-)"

	echo "\"${EMAIL}\";\"${REDIRECTADDRESS}\";\"${REDIRECT}\";\"${MAILBOX}\";\"${CPACCESS}\""
done
