#!/bin/sh
#
####################################################################################
####                     msg2box Version 2.00
####        Nachrichten von der D-Box zu anderen D-Boxen schicken
####                                        
####################################################################################
#
# Format msg2box.conf : Userx=UserName
#                       IPx=User-IP[:port] 
#                        
#                       mit x=0..9
#                Bsp1 : User1=DemoUser1
#                       IP1=180.185.21.9      
#                Bsp2 : User2=DemoUser2
#                       IP2=180.185.21.9:12345      
#                Bsp3 : User3=DemoUser3
#                       IP3=demouser.dyndns.org      
#                Bsp3 : User4=DemoUser4
#                       IP4=demouser.dyndns.org:1234      
# 
# Das Zeichen "@" im Nachrichtentext bewirkt einen Zeilenumbruch

# Variablen
MENU="/var/plugins/shellexec"
CONF="/var/plugins/msg2box/msg2box.conf"
MCONF="/tmp/msg2box.mnu"
DEFMSG="/tmp/msg2box.def"
CM=""

send_message(){
 
    if [ `/bin/wget -O - http://$2/control/message?nmsg="$CM"` = "ok" ]; then
        echo "$1"%0A >> /tmp/msg2box.log
    else
        echo "$1"%0A >> /tmp/msg2box.fail
    fi

}

mgh=1
msgbox="/bin/msgbox"
if [ ! -e "$msgbox" ]; then
    msgbox="/var/bin/msgbox"
    if [ ! -e "$msgbox" ]; then
        mgh=0
    fi
fi

pth="/bin/input"
if [ ! -e $pth ]; then
    pth="/var/bin/input"
    if [ ! -e $pth ]; then
    	if [ "$mgh" = 1 ]; then
    		$msgbox title=Msg2Box msg="~YEingabeprogramm \"input\" ist nicht installiert.~n~YPlugin kann nicht ausgef~uhrt werden"
    	else
        	/bin/wget -Y off -O /dev/null http://localhost/control/message?nmsg=Eingabeprogramm%20input%20ist%20nicht%20installiert.%0APlugin%20kann%20nicht%20ausgef%C3%BChrt%20werden.
        fi
        exit 0
    fi
fi


store=0
rm $DEFMSG
uip=""

if [ $1 ]; then
	$pth t="HTTP-Zugangsdaten f~ur $1" l="User:@@@@@@@@@@@@@@@Pass:@@@@@@@@@@@@@@@Port:#####" c=20 d="                                 80" > /tmp/msg2box.inp
	sed -e s/" "/"#"/g /tmp/msg2box.inp > /tmp/msg2box.sha
	auth=`cat /tmp/msg2box.sha`
	if [ -z $auth ]; then
		exit 0
	fi
	usr=`expr substr $auth 1 15 | sed -e s/"#"/""/g`
	pass=`expr substr $auth 16 15 | sed -e s/"#"/""/g`
	port=`expr substr $auth 31 5 | sed -e s/"#"/""/g`
	if [ -n "$usr" ]; then
		if [ -n $port ]; then
			uip=`echo "$usr":"$pass"\@"$1":"$port"`
		else
			uip=`echo "$usr":"$pass"\@"$1"`
		fi
	else	
		if [ -n "$port" ]; then
			uip=`echo "$1":"$port"`
		else
			uip=`echo "$1"`
		fi
	fi
	if [ -z "$uip" ]; then
		exit 0
	fi
	uname="$1"
fi

if [ "$2" ]; then
	echo "$2" > $DEFMSG
else
	echo "MENU=Msg2Box: Nachricht ausw~ahlen" > $MCONF
	echo "ACTION=Neue Nachricht,echo _ > $DEFMSG" >> $MCONF
	for i in 0 1 2 3 4 5 6 7 8 9; do
    	if [ -e /var/plugins/msg2box/$i.* ]; then
        	file=`ls /var/plugins/msg2box/$i.* | sed -e s/"\/var\/plugins\/msg2box\/$i."/""/g`
        	if [ $file ]; then
            	store=1
            	echo "ACTION=$file,cp /var/plugins/msg2box/$i.$file $DEFMSG" >> $MCONF
        	fi
    	fi
	done
	echo "ENDMENU" >> $MCONF

	if [ $store = 1 ]; then
    	$MENU $MCONF
	else
		echo _ > $DEFMSG
	fi
fi

if [ ! -e $DEFMSG ]; then
    exit 0
fi

dmsg=`cat $DEFMSG`
RM=`$pth t='Msg2Box: Bitte zu sendende Nachricht eingeben' d="$dmsg" k=1 l='@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'`
if [ -z "$RM" ]; then
    exit 0
fi

store=0
if [ -z "$1" ]; then
	echo "MENU=Msg2Box: Adressaten ausw~ahlen" > $MCONF
	for i in 0 1 2 3 4 5 6 7 8 9; do
    	name=`grep User$i $CONF | sed -e s/"User$i="/""/g`
    	ip=`grep IP$i $CONF | sed -e s/"IP$i="/""/g`
    	if [ $name ]; then
    		store=`expr "$store" + "1"`
    		uname=$name
    		uip=$ip
        	echo "DEPENDON=&> ~Y$name,rm /tmp/msg2box.u$i,/tmp/msg2box.u$i" >> $MCONF
        	echo "DEPENDOFF=&$name,echo $name $ip > /tmp/msg2box.u$i,/tmp/msg2box.u$i" >> $MCONF
    	fi
	done
	echo "ENDMENU" >> $MCONF

	if [ $store -gt 1 ]; then
		$MENU $MCONF
	else
		echo "$uname $uip" > /tmp/msg2box.u0
	fi
else
	echo "$uname $uip" > /tmp/msg2box.u0
fi

CM=`echo "$RM" | sed -e s/" *"/" "/g -e s/~z/"%C3%9F"/g -e s/"\~A"/"%C3%84"/g -e s/"\~O"/"%C3%96"/g -e s/"\~U"/"%C3%9C"/g -e s/"\~a"/"%C3%A4"/g -e s/"\~o"/"%C3%B6"/g -e s/"\~u"/"%C3%BC"/g -e s/' '/%20/g -e s/'@'/%0A/g`
rm /tmp/msg2box.log
send=0
for i in 0 1 2 3 4 5 6 7 8 9; do
    if [ -e /tmp/msg2box.u$i ]; then
        UN=`cat /tmp/msg2box.u$i`
        send_message $UN
        send=1
    fi
done

if [ $send = 1 ]; then
   	if [ "$mgh" = 1 ]; then
		CM=""
    	if [ -e /tmp/msg2box.log ]; then
	    	CM=$(echo "$CM" "~n~YNachricht wurde an folgende User verschickt:~n"$(cat /tmp/msg2box.log | sed -e s/%0A/~n/g))
		fi
    	if [ -e /tmp/msg2box.fail ]; then
    		CM=$(echo "$CM" "~n~YFolgende User konnten nicht erreicht werden:~n"$(cat /tmp/msg2box.fail | sed -e s/%0A/~n/g))
    	fi
    	$msgbox title=Msg2Box msg="$CM"
    else
		CM="Msg2Box"
    	if [ -e /tmp/msg2box.log ]; then
	    	CM=$(echo "$CM"%0A%20%0ANachricht%20wurde%20an%20folgende%20User%20verschickt:%0A$(cat /tmp/msg2box.log))
		fi
    	if [ -e /tmp/msg2box.fail ]; then
    		CM=$(echo "$CM"%0A%20%0AFolgende%20User%20konnten%20nicht%20erreicht%20werden:%0A$(cat /tmp/msg2box.fail))
    	fi
    	/bin/wget -Y off -O /dev/null http://localhost/control/message?nmsg="$CM"
    fi
fi
rm /tmp/msg2box*
