#! /bin/sh
#
# Configure script for Avahi
# Author: Walter Guerra

if [ "$OSSO_PRODUCT_RELEASE_NAME" = '<unknown>' ] || 
   [ "$OSSO_PRODUCT_RELEASE_VERSION" = '<unknown>' ] 
then 
    MAEMO_INF="${OSSO_PRODUCT_NAME}_unknown_unknown"
else
    MAEMO_INF="${OSSO_PRODUCT_NAME}_${OSSO_PRODUCT_RELEASE_NAME}_${OSSO_PRODUCT_RELEASE_VERSION}"
fi
MAEMO_MAC=`ifconfig wlan0 | grep HWaddr | cut -d" " -f 10`

AVAHI_SERVICE_DIR="/etc/avahi/services"

SAMBA_SERVICE_FILE="${AVAHI_SERVICE_DIR}/smb.service"
NFS_SERVICE_FILE="${AVAHI_SERVICE_DIR}/nfs.service"
VNC_SERVICE_FILE="${AVAHI_SERVICE_DIR}/vnc.service"
SSH_SERVICE_FILE="${AVAHI_SERVICE_DIR}/ssh.service"
SBRSH_SERVICE_FILE="${AVAHI_SERVICE_DIR}/sbrsh.service"
MAEMO_INF_SERVICE_FILE="${AVAHI_SERVICE_DIR}/maemo_inf.service"

start_avahi() {
    /etc/init.d/avahi-daemon start
}

stop_avahi() {
    /etc/init.d/avahi-daemon stop
}

stop_samba() {
    if [ -e $SAMBA_SERVICE_FILE ]
    then
        rm $SAMBA_SERVICE_FILE
    fi
}

start_samba() {
    # Usage: samba port (default: 139)
    cat <<EOF > $SAMBA_SERVICE_FILE
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">$OSSO_PRODUCT_NAME</name> ## Name
    <service>
        <type>_smb._tcp</type>
        <port>$1</port>
    </service>
</service-group>
EOF
}

stop_nfs() {
    if [ -e $NFS_SERVICE_FILE ]
    then
        rm $NFS_SERVICE_FILE
    fi
}

start_nfs() {
    # Usage: nfs port
    cat <<EOF > $NFS_SERVICE_FILE
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">$OSSO_PRODUCT_NAME</name> ## Name
    <service>
        <type>_nfs._tcp</type>
        <port>$1</port>
    </service>
</service-group>
EOF
}

stop_vnc() {
    if [ -e $VNC_SERVICE_FILE ]
    then
        rm $VNC_SERVICE_FILE
    fi    
}

start_vnc() {
    # Usage: vnc port
    cat <<EOF > $VNC_SERVICE_FILE
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">$OSSO_PRODUCT_NAME</name> ## Name
    <service>
        <type>_rfb._tcp</type>
        <port>$1</port>
    </service>
</service-group>
EOF
}

stop_sbrsh() {
    if [ -e $SBRSH_SERVICE_FILE ]
    then
        rm $SBRSH_SERVICE_FILE
    fi    
}

start_sbrsh() {
    # Usage: sbrsh port
    cat <<EOF > $SBRSH_SERVICE_FILE
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">$OSSO_PRODUCT_NAME</name> ## Name
    <service>
        <type>_sbrsh._tcp</type>
        <port>$1</port>
    </service>
</service-group>
EOF
}

start_ssh() {
    # Usage: ssh port
    cat <<EOF > $SSH_SERVICE_FILE
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">$OSSO_PRODUCT_NAME</name> ## Name
    <service>
        <type>_ssh._tcp</type>
        <port>$1</port>
    </service>
</service-group>
EOF
}

start_maemo_inf() {
    cat <<EOF > $MAEMO_INF_SERVICE_FILE
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">$MAEMO_INF</name> ## Name
    <service>
        <type>_maemo-inf._tcp</type>
        <txt-record>hw_id=${MAEMO_MAC}</txt-record>
        <txt-record>hw=${OSSO_PRODUCT_NAME}</txt-record>
        <txt-record>os_release=${OSSO_PRODUCT_RELEASE_NAME}</txt-record>
        <txt-record>os_version=${OSSO_PRODUCT_RELEASE_VERSION}</txt-record>
    </service>
</service-group>
EOF
}

case $1 in
start_samba)
    shift
    start_samba $@
    ;;
stop_samba)
    stop_samba
    ;;
start_nfs)
    shift
    start_nfs $@
    ;;
stop_nfs)
    stop_nfs
    ;;
start_sbrsh)
    shift
    start_sbrsh $@
    ;;
stop_sbrsh)
    stop_sbrsh
    ;;
start_vnc)
    shift
    start_vnc $@
    ;;
stop_vnc)
    stop_vnc
    ;;
esac

# start ssh annoucement
start_ssh 22

# announces informantion about maemo device 
start_maemo_inf

# after the files are created, start the avahi deamon
start_avahi

