#!/bin/bash

# BT-82842
shopt -s expand_aliases
alias GETTEXT="gettext ${0##*/}"

order=first_domain
#order=first_username

get_domains() {
count=0
while ! pgrep "^winbindd$" 2>&1 >/dev/null
#systemctl is-active --quiet winbind
do
    if [ "$count" -gt "5" ] ; then
        exit 1
    fi
    count=$((count+1))
    sleep 1
done

#domains=$(wbinfo --own-domain 2>/dev/null) || exit 1  # свой домен
domains=

for dm in $(wbinfo --trusted-domains 2>/dev/null)
do
    d1=$(wbinfo --domain-info=$dm 2>/dev/null)
    if echo $d1 | grep -q -E "Active Directory.*:.*Yes" ; then
        if [ 2$1 == 2name ] ; then
            domains="$domains $dm"
        else
            altname="$(wbinfo --domain-info=$dm 2>/dev/null | grep "Alt_Name" | sed -e "s/Alt_Name.*: //")"
            domains="$domains ${altname,,}"
        fi
    fi
done

echo -e $domains | sed -e "s| |\n|g" | uniq
}
usage() {
printf "$(GETTEXT "<Использование: %s [<ключи>]")" ${0##*/}
printf "$(GETTEXT "Ключи:")\n"
echo "-h, --help    $(GETTEXT "Вывести эту справку")."
echo "-i   $(GETTEXT "Вывести информацию о подключенных доменах. То же самое при запуске без ключей")."
echo "-o   $(GETTEXT "Возвратить порядок следования логина и домена, т.е. значение \"first_username\" или \"first_domain\" <по умолчанию>. Задается в переменной order этого сценария")."
echo "-s   $(GETTEXT "Возвратить символ сепаратора @ или \\")."
echo "-l   $(GETTEXT "<логин> <имя домена>. Возвратить строку сцепленных логина и имени домена с учетом установленного порядка следования и символа сепаратора")."
}
#----------
if [ 2$order == 2first_username ] ; then
    separator="@"
else
    separator="\\"
fi

case "${1}" in
    --help | -h) usage
        exit 0
        ;;
    -s)
        echo ${separator}
        exit 0
        ;;
    -o)
        echo ${order}
        exit 0
        ;;
    -l)
        username=${2}
        domain=${3}
        if [ 2$order == 2first_username ] ; then
            echo ${username}${separator}${domain}
        else
            echo ${domain}${separator}${username}
        fi
        exit 0
        ;;
    *)
        if [ 2$order == 2first_username ] ; then
            get_domains
        else
            get_domains name
        fi
        exit 0
        ;;
esac
