#!/bin/bash
. /usr/share/debconf/confmodule
# Zimbra Talk - fetch domain data from ldap-host
# by Stefan Sänger <stefan.saenger@vnc.biz>
function print_usage() {
   echo "
fetch domain data from zimbra ldap
usage: fetchdomainfromldap

   "
   exit 1
}

function die_err() {
        echo "$0: $*" >&2
        exit 1
}


function initfetch() {
   [ "$(which crudini)" ] || die_err "crudini not found in path - please install crudini (apt-get install crudini)"
   [ "$(which perl)" ] || die_err "perl not found in path - please install perl (apt-get install perl)"
   [ "$(which ldapsearch)" ] || die_err "ldapsearch not found in path - please install ldap-utils (apt-get install ldap-utils)"
   db_get "ztalk-conf/ldap-host"
   ldaphost="$RET"
   [ "$ldaphost" ] || die_err "ldap hostname not configured"

   db_get "ztalk-conf/ldap-bindpass"
   ldappw="$RET"
   [ "$ldappw" ] || die_err "ldap bind password not configured"

   db_get "ztalk-conf/ldap-bind-dn"
   ldapdn="$RET"
   [ "$ldap-bind-dn" ] || die_err "ldap BIND DN not configured"

   ldapsearch -x -D "$ldap-bind-dn" -w "$ldappw" -H "ldap://$ldaphost:389" "(objectClass=zimbraGlobalConfig)" | grep "zimbraDefaultDomainName:"
   [ "$?" = "0" ] || die_err "could not connect to LDAP - aborting..."

   if [ -f "/etc/ztalk/domains.cfg" ]; then
      LastUpdateTime=$(crudini --get /etc/ztalk/domains.cfg "GLOBAL" "LastUpdate")
      CDefaultDomain=$(crudini --get /etc/ztalk/domains.cfg "GLOBAL" "DefaultDomain")
   else
      touch /etc/ztalk/domains.cfg
      crudini --set /etc/ztalk/domains.cfg "GLOBAL" "DefaultDomain" ""
      crudini --set /etc/ztalk/domains.cfg "GLOBAL" "LastUpdate" ""
   fi
}

function fetchDefaultDomain() {

   DefaultDomain=$(ldapsearch -x -D "$ldap-bind-dn" -w "$ldappw" -H "ldap://$ldaphost:389" "(objectClass=zimbraGlobalConfig)" | perl -p00e 's/\r?\n //g' | grep "zimbraDefaultDomainName:" | awk '{print $2}')
   [ "$?" = "0" ] || die_err "could not connect to LDAP - aborting..."
   if [ "$DefaultDomain" = "$CDefaultDomain" ]; then
      echo "dafult domain is still: $DefaultDomain"
   fi
   if [ -z "$CDefaultDomain" ]; then
      crudini --set /etc/ztalk/domains.cfg "GLOBAL" "DefaultDomain"
   fi
}
[ $# -gt 0 ] || print_usage
