#! /bin/bash

# pre-install checks for slave (replica) IPA-server 

failexit()
{
    echo -e "$1"
    exit 1
}


# First check rpms

[ ! $(which ipa-client-install 2> /dev/null) ] && failexit "Не найден файл ipa-client-install, \nне установлен пакет freeipa-client"
[ ! $(which ipa-dns-install 2> /dev/null) ] && failexit "Не найден файл ipa-dns-install, \nне установлен пакет freeipa-server-dns"
[ ! $(which ipa-getcert 2> /dev/null) ] && failexit "Не найден файл ipa-getcert, \nне установлен пакет certmonger"

# Is /dev/urandom exists
[[ ! -c /dev/urandom ]] && failexit "Не найдено устройство /dev/urandom\nвероятная причина - не отключенный SELinux во время установки rpm, обратитесь к руководству"

# Check ddns in bind conf
CONFF=/etc/bind/local.conf
cat "$CONFF" | sed '/^ *#/d; /^ *$/d; /^ *\/\//d' | grep -q '/etc/bind/ddns.conf' \
&& failexit "Файл $CONFF содержит ссылку на файл /etc/bind/ddns.conf, \nобычно это означает наличие сконфигурированных прямой и обратной зон средствами ddns, что не допустимо"

# FQDN - hostnamectl
HNAME=$(hostnamectl |grep "Static hostname")
HNAME=${HNAME#*: }

echo "Имя хоста, выдаваемое командой hostnamectl \"$HNAME\""
echo "Имя хоста \$HOSTNAME \"$HOSTNAME\""
[[ "$HNAME" != "$HOSTNAME" ]] && failexit "Имена не совпадают, обычно достаточно выполнить перезагрузку"

# name and reverse zone check
HADDR=`host $HNAME|grep 'address'` ; HADDR=${HADDR##* }
[ -z $HADDR ] && failexit "Хост $HNAME не найден в прямой зоне"
host $HADDR |grep -vq 'pointer' && failexit "Запись $HADDR для хоста $HNAME не найдена в обратной зоне"

if [ -n "$(cat /etc/hosts |grep -Ev '^\s*(;|$|#)' | grep "${HOSTNAME%%.*}" |grep "127.0.0.1")" ]; then
    failexit "Имя $HOSTNAME назначено на адрес 127.0.0.1 \nВнесите изменения"
fi

