#!/bin/sh

exec 1>/dev/null 2>&1

SMB_ANONY_RO_CONF=/data/config/samba/smb_anony_ro.conf
SMB_ANONY_RW_CONF=/data/config/samba/smb_anony_rw.conf
SMB_SIGNED_CONF=/data/config/samba/smb_signed_rw.conf
SAMBA_CONF=/data/config/samba/smb.conf
SMB_USER_FILE=/data/config/samba/smbusers
SIGNED_SMB_USER=signed_smb
SINGED_SMB_PASSWD=tplink
ANONY_SMB_USER=guest

VIRTUAL_SMB_NAME=`uci get storageshare.property.username`
VIRTUAL_SMB_PASSWD=`uci get storageshare.property.password`

# Ensure the daemon has been killed.
echo "stop samba"
stop_samba

# Ensure the dirs need by nmbd and smbd.
echo "mkdir need by nmbd and smbd"
busybox mkdir -p /var/locks
busybox mkdir -p /var/nmbd
busybox mkdir -p /etc/config/samba/private
busybox mkdir -p /var/log/samba

# Clean the log files.
echo "Clean the log files"
busybox rm -rf /var/log/samba/*
busybox rm -rf /var/log.smbd
busybox rm -rf /var/log.nmbd

# Produce the conf
case "$1" in
  anonro)
    echo "Produce the anony ro conf"
    cat ${SMB_ANONY_RO_CONF} > ${SAMBA_CONF}
    ;;
  anonrw)
    echo "Produce the anony rw conf"
    echo "Ensure the guest user has been add to system"
    adduser -D $ANONY_SMB_USER 2>/dev/null
    cat ${SMB_ANONY_RW_CONF} > ${SAMBA_CONF}
    ;;
  signed)
    echo "Produce the signed conf"
    cat ${SMB_SIGNED_CONF} > ${SAMBA_CONF}
    echo "Ensure the signed_smb user has been add to system"
    adduser -D $SIGNED_SMB_USER 2>/dev/null
    echo "Produce the smbuser file"
    echo "${SIGNED_SMB_USER} = ${VIRTUAL_SMB_NAME}" > ${SMB_USER_FILE}
    echo "Add smb passwd"
    (echo ${VIRTUAL_SMB_PASSWD};echo ${VIRTUAL_SMB_PASSWD})|smbpasswd -c $SAMBA_CONF -s -a $SIGNED_SMB_USER 2>/dev/null
    ;;
  *)
    echo "Err: unknown param"
    exit 1
    ;;
esac

# Start the daemons
echo "Start samba"
nmbd -D -s $SAMBA_CONF
smbd -D -s $SAMBA_CONF

exit $?
