#!/bin/bash
. /usr/lib/eole/diagnose.sh

winbind_err="/var/log/rsyslog/local/winbindd/winbindd.err.log"
smbd_err="/var/log/rsyslog/local/smbd/smbd.err.log"
eolead=$(CreoleGet activer_ad non)

EchoGras "*** Serveur de fichiers"
echo
echo "Test du fichier de configuration :"
printf ".  %${len_pf}s => " "Syntaxe"
CreoleRun "testparm -s >/dev/null 2>&1" fichier
[[ $? -eq 0 ]] && EchoVert "Ok" || EchoRouge "Erreur"
echo

if [[ "$(CreoleGet activer_winbind 'non')" == "oui" ]]
then
    echo "Statut du service winbindd :"
    printf ".  %${len_pf}s => " "Service winbindd"
    wbinfo -p >/dev/null 2>&1
    if [[ $? -eq 0 ]]
    then
        EchoVert "Ok"
    else
        EchoRouge "Erreur"
    fi
    printf ".  %${len_pf}s => " "uid/gid disponibles"
    if [[ -e $winbind_err ]]
    then
        [[ -z $(awk '/range full/ {print "erreur"}' $winbind_err) ]] && EchoVert "Ok" || EchoRouge "Erreur"
    else
        EchoOrange "N/A"
    fi
    printf ".  %${len_pf}s => " "Etat du cache"
    if [[ -e $winbind_err ]]
    then
        [[ -z $(awk '/(bad magic)|(beyond eof)/ {print "erreur"}' $winbind_err) ]] && EchoVert "Ok" || EchoRouge "Erreur"
    else
        EchoOrange "N/A"
    fi
    echo
fi

echo "Partages :"
printf ".  %${len_pf}s => " "Partage (SMB/TCP)"
CreoleRun "smbclient -L localhost -U=admin% > /dev/null 2>&1" fichier
[ $? = 0 ] && EchoVert "Ok" || EchoRouge "Erreur"

printf ".  %${len_pf}s => " "Partage (NMB/UDP)"
if [ $eolead == "oui" ]; then
    workgroup=$(CreoleGet ad_workgroup)
else
    workgroup=$(CreoleGet smb_workgroup)
fi
CreoleRun "nmblookup -U 127.0.0.1 $workgroup |grep -q 'name_query failed to find name '" fichier
[ $? = 1 ] && EchoVert "Ok" || EchoRouge "Erreur"

printf ".  %${len_pf}s => " "Connexions samba"
EchoVert `/usr/share/eole/sbin/connexions.sh`

# test non fonctionnel, cf. #12910
#printf ".  %${len_pf}s => " "Encodage des noms de fichier"
#if [[ -e $smbd_err ]]
#then
#    [[ -z $(awk '/Conversion error/ {print "erreur"}' $smbd_err 2>/dev/null) ]] && EchoVert "Ok" || EchoRouge "Erreur"
#else
#    EchoOrange "N/A"
#fi
echo

if [ $(CreoleGet smb_activer_partages) == "oui" ]; then
    set_title=0
    for dirname in $(CreoleGet smb_partage_path); do
        [ -d $dirname ] && continue
        if [ $set_title = 0 ]; then
            echo "Répertoires de partage supplémentaire inexistants"
            set_title=1
        fi
        EchoRouge "- $dirname"
    done
    [ $set_title = 1 ] && echo
fi

# Test spécifique aux modules MEN (#12823)
if [[ -f /usr/share/eole/creole/dicos/29_scribehorus.xml ]] && [[ $eolead != 'oui' ]]
then
    SID=`$CHROOT ldapsearch -x sambaDomainName=* sambaSID 2>/dev/null | grep ^sambaSID | awk -F ' ' '{print $2}'`
    echo $SID | grep -q ' '
    if [ $? -eq 0 ];then
        EchoOrange "ATTENTION : plusieurs sambaDomainName détectés !"
        EchoOrange "Des dysfonctionnements sont possibles sur ce serveur"
        echo
    fi
fi
ls /home/netlogon/profil*/ntuser.dat &> /dev/null
if [ $? -eq 0 ];then
    EchoOrange "ATTENTION : fichier ntuser.dat présent dans un profil obligatoire !"
    EchoOrange "Des dysfonctionnements sont possibles sur ce serveur"
    echo
fi

exit 0
