#! /bin/sh
# Date: 25/05/2010
# smbprov.sh ain't at provisionning smb password db from mysql user db
# REQUIRES: samba, smab-common, libnss-mysql, libpam-mysql, and a mysql db with users
# mysql db info are stored un mysqlinfo file given as argument
# mysqlinfo MUST contain:
# USER=myuser (user to use to connect mysql db
# PASS=password (mysql password for user)
# DB=db (user db)
# UTABLE=usertable (table for users in db)

if [ ! `id -u` -eq 0 ] ;then
        echo You must be root to execute.
        exit
fi

usage()
{
        echo smbprov.sh filename :
        echo "          Where filename is mysql info to connect to db."
}

MYSQLINFO=$1

if [ -e "$MYSQLINFO" ]; then
        . $MYSQLINFO
else
        echo Missing info to connect to mysql db 1>&2
        usage
        exit
fi
###########################################################
# mysql shell request
###########################################################
request()
{
    COMD="$*"
    mysql -u $USER -p$PASS -D $DB -e "$COMD" --batch
    if [ ! "$?" -eq 0 ]; then
        echo $COMD 1>&2
        return 1
    fi
}


DB=$USERDB
listuser()
{
        LISTUSERRQ="SELECT username,password,homedir,gid FROM $UTABLE where status = \"A\";"
        request "$LISTUSERRQ" | grep -v username
        if [ ! "$?" -eq 0 ]; then
                return 1
        fi
}
blih=`listuser`
CURIFS=$IFS
IFS=$(echo -en "\n\b")
for blah in $blih; do
        set $( echo $blah | awk '
        {
                aaa = $1
                bbb = $2
                homedir = $3
                ggid = $4
        }
        END {
                print aaa
                print bbb
                print homedir
                print ggid
        }' )
        AAA=$1;BBB=$2;HOMEDIR=$3;GID=$4
        `(echo $BBB; echo $BBB;) | smbpasswd -s -a $AAA  2>&1 > /dev/null `
        if [ ! -e $HOMEDIR ]; then
                mkdir -p $HOMEDIR
                chown $AAA:$GID $HOMEDIR
        fi
done
IFS=$CURIFS


