#!/bin/sh # # For use with bluespam-1.2 # simon@v2.nl (c)2005 V2_lab # #general defines HCICONF_FILE=hcid.conf BTCONF_DIR=/etc/bluetooth PENDING_DIR=/mnt/mmc/pending CONTENT_DIR=/mnt/mmc/content DB_DIR=/mnt/mmc/db DB_FILE=${DB_DIR}/btaddr.db HCICONFIG=/usr/sbin/hciconfig BLUESPAM=/usr/bin/bluespam OPD=/usr/sbin/opd OPD_CHANNEL=10 #lock files OPD_LOCK=/tmp/opd.lock SPAM_LOCK=/tmp/spam.lock SPAM_STATE=1 execute() { echo "executing $1" action=${1%.cmd} case $action in remove) echo "remove `cat $PENDING_DIR/$1`" dev=`cat $PENDING_DIR/$1` $BLUESPAM $dev ;; name) echo "changing device name to `cat $PENDING_DIR/$1`" name=`cat $PENDING_DIR/$1` if [ -n $name ] then cat $BTCONF_DIR/$HCICONF_FILE | sed -e "s/[ \t]*name[ \t]*.*/name \"$name\"/g" > /tmp/$HCICONF_FILE mv /tmp/$HCICONF_FILE $BTCONF_DIR $HCICONFIG hci0 name "$name" $HCICONFIG hci0 name fi ;; stop) echo "stop spamming" SPAM_STATE=0 ;; start) echo "start spamming" SPAM_STATE=1 ;; *) echo "unkown command" esac } acquire_lock() { #cannot scan wile opd holds lock count=0 echo "is lock there" while [ -e $OPD_LOCK ] do echo "locks there" if [ $count -eq 10 ] then return 1 fi count=$((count+1)) sleep 1 done echo "no, creating spam lock" touch $SPAM_LOCK return 0 } release_lock() { echo "removing spam lock" rm $SPAM_LOCK } sig_handle() { release_lock exit 0 } trap sig_handle INT QUIT TSTP while true do #check for opd if ! ps ax | grep -q [o]pd then $OPD --sdp --channel $OPD_CHANNEL --path $PENDING_DIR --daemonize fi for cmd in `ls $PENDING_DIR` do type=`echo $cmd | sed -e 's/^.*\.//'` case $type in cmd) execute $cmd rm $PENDING_DIR/$cmd ;; *) echo "it's content: $cmd" rm $CONTENT_DIR/* mv $PENDING_DIR/$cmd $CONTENT_DIR rm $DB_FILE esac done if [ $SPAM_STATE -eq 1 ] then acquire_lock $BLUESPAM release_lock sleep 5 else sleep 1 fi done