#!/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"

EchoGras "*** Serveur de fichiers"
echo
echo "Test du fichier de configuration :"
printf ".  %${len_pf}s => " "Syntaxe"
testparm -s >/dev/null 2>&1
[[ $? -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

fi
echo

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)"
CreoleRun "nmblookup -U 127.0.0.1 $(CreoleGet smb_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`

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"
fi

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

exit 0
