#!/usr/bin/env bash

# Author:   Zhang Huangbin (zhb _at_ iredmail.org)

#---------------------------------------------------------------------
# This file is part of iRedMail, which is an open source mail server
# solution for Red Hat(R) Enterprise Linux, CentOS, Debian and Ubuntu.
#
# iRedMail is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# iRedMail is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with iRedMail.  If not, see <http://www.gnu.org/licenses/>.
#---------------------------------------------------------------------

# Variables for OpenLDAP and related. Refer to 'dialog/ldap_config.sh'.

# OpenLDAP version number.
export OPENLDAP_VERSION='2.4'

# LDAP service info.
# LDAP_SERVER_HOST, LDAP_SERVER_PORT are defined in conf/global
export LDAP_USE_TLS='NO'
export LDAP_BIND='yes'
export LDAP_BIND_VERSION='3'

# OpenLDAP daemon user and group name.
export OPENLDAP_DAEMON_USER='ldap'
export OPENLDAP_DAEMON_GROUP='ldap'

export OPENLDAP_RC_SCRIPT_NAME='slapd'

# Configuration files.
export OPENLDAP_CONF_ROOT='/etc/openldap'

# Database backend type.
export OPENLDAP_DEFAULT_DBTYPE='hdb'

# Default LDAP data directory.
export OPENLDAP_DATA_DIR='/var/lib/ldap'    # Do *NOT* end with '/'.

export OPENLDAP_PID_FILE='/var/run/openldap/slapd.pid'
export OPENLDAP_ARGS_FILE='/var/run/openldap/slapd.args'

# Configure.
if [ X"${DISTRO}" == X'RHEL' ]; then
    export OPENLDAP_DB_CONFIG_SAMPLE="${OPENLDAP_CONF_ROOT}/DB_CONFIG.example"
    if [ X"${DISTRO_VERSION}" == X'6' ]; then
        export OPENLDAP_SYSCONFIG_CONF="${ETC_SYSCONFIG_DIR}/ldap"
    else
        export OPENLDAP_SYSCONFIG_CONF="${ETC_SYSCONFIG_DIR}/slapd"
    fi

    # Module related.
    export OPENLDAP_MODULE_PATH='/usr/lib/openldap'
    if [ X"${OS_ARCH}" == X'x86_64' ]; then
        export OPENLDAP_MODULE_PATH='/usr/lib64/openldap'
    fi

elif [ X"${DISTRO}" == X'DEBIAN' -o X"${DISTRO}" == X'UBUNTU' ]; then
    # LDAP daemon user & group.
    export OPENLDAP_DAEMON_USER='openldap'
    export OPENLDAP_DAEMON_GROUP='openldap'

    # Configuration files.
    export OPENLDAP_CONF_ROOT="/etc/ldap"
    export OPENLDAP_DB_CONFIG_SAMPLE="/usr/share/slapd/DB_CONFIG"

    export OPENLDAP_PID_FILE='/var/run/slapd/slapd.pid'
    export OPENLDAP_ARGS_FILE='/var/run/slapd/slapd.args'

    export OPENLDAP_SYSCONFIG_CONF="${ETC_SYSCONFIG_DIR}/slapd"

    # Module related.
    export OPENLDAP_MODULE_PATH='/usr/lib/ldap'

elif [ X"${DISTRO}" == X'FREEBSD' ]; then
    # Configuration files.
    export OPENLDAP_CONF_ROOT='/usr/local/etc/openldap'
    export OPENLDAP_DB_CONFIG_SAMPLE="${OPENLDAP_CONF_ROOT}/DB_CONFIG.example"

    # Module related.
    export OPENLDAP_MODULE_PATH='/usr/local/libexec/openldap'

    # Override default setting.
    export OPENLDAP_DATA_DIR='/var/db/openldap-data'    # Do *NOT* end with '/'.

elif [ X"${DISTRO}" == X'OPENBSD' ]; then
    # LDAP daemon user & group.
    export OPENLDAP_DAEMON_USER='_openldap'
    export OPENLDAP_DAEMON_GROUP='_openldap'

    export OPENLDAP_DB_CONFIG_SAMPLE="/usr/local/share/examples/openldap/DB_CONFIG"

    # Module related.
    export OPENLDAP_MODULE_PATH='/usr/local/libexec/openldap'
else
    :
fi

# RC script.
export OPENLDAP_RC_SCRIPT="${DIR_RC_SCRIPTS}/${OPENLDAP_RC_SCRIPT_NAME}"

export OPENLDAP_SCHEMA_DIR="${OPENLDAP_CONF_ROOT}/schema"
export OPENLDAP_SLAPD_CONF="${OPENLDAP_CONF_ROOT}/slapd.conf"
export OPENLDAP_LDAP_CONF="${OPENLDAP_CONF_ROOT}/ldap.conf"
export OPENLDAP_LOGFILE='/var/log/openldap.log'
export OPENLDAP_LOGROTATE_FILE="${LOGROTATE_DIR}/openldap"

# LDAP data directory.
export LDAP_DATA_DIR="${OPENLDAP_DATA_DIR}/${dn2dnsname}"

# Setting for one instance. You can edit ${OPENLDAP_SLAPD_CONF} manually to hold
# multi instances.
export LDAP_INIT_LDIF="${RUNTIME_DIR}/ldap_init.ldif"

##################################################
# iRedMail LDAP schema related
#
# Domain admin related.
export LDAP_ATTR_DOMAINADMIN_DN_NAME='domainAdmins'

# Domain related attributes.
export LDAP_ATTR_DOMAIN_RDN='domainName'

# Group related.
export LDAP_ATTR_GROUP_RDN='ou'
export LDAP_ATTR_GROUP_USERS='Users'
export LDAP_ATTR_GROUP_GROUPS='Groups'
export LDAP_ATTR_GROUP_ALIASES='Aliases'
export LDAP_ATTR_GROUP_EXTERNALS='Externals'

# Attributes of user object.
export LDAP_ATTR_USER_RDN='mail'
