#!/bin/bash

if [ "$1" = "stop" ] 
then

  for i in `pgrep -f "/bin/bash /opt/mqtt-mpd/mqmpdj"` 
  do  
    killtree $i 9
  done

  exit 0

fi

. /opt/mqtt-mpd/mqmpd.cfg

# запускаем процессы, мониторящие состояние

i=0
while [ "x${hosts[i]}" != "x" ]
do

  /opt/mqtt-mpd/mqmpdj ${hosts[i]} ${passwd[i]} &

  i=$(( $i + 1 ))

done

# сами остаемся слушать команды

mosquitto_sub -v -h $mqhost -p $mqport -t "$mqcmd/#" -u $mquser -P $mqpassword | while read line
do

  template="s!$mqcmd/!!"
  addr=`echo $line | cut -f 1 -d " " | sed $template`
  arg=`echo $line | cut -f 2 -d " "`
  echo $addr $arg 

  host=`echo $addr | cut -f 1 -d "/"`
  cmd=`echo $addr | cut -f 2 -d "/"`

  i=0
  while [ "x${hosts[i]}" != "x" ]
  do
    if [ "${hosts[i]}" = "$host" ]
    then
      mpdpass=${passwd[i]}
      if [ "$mpdpass" = "-" ] 
      then
        mpccmd="mpc -h $host"
      else
        mpccmd="mpc -h $host -P $mpdpass"
      fi
      break
    fi
    i=$(( $i + 1 ))
  done

  arg=`printf "%q" $arg`
  if [[ "$arg" =~ [A-Za-z0-9]+ ]]
  then

    case $cmd in

    volume)
        reply=( `$mpccmd volume`)
        currvolume=`echo ${reply[1]} | sed 's/%//'`
        if [ "$currvolume" ]
        then
          if [ "$arg" -gt "$currvolume" ] 
          then
            delta=$(( $arg - $currvolume ))
    	    $mpccmd volume +$delta
    	  fi
          if [ "$arg" -lt "$currvolume" ] 
          then
            delta=$(( $currvolume - $arg ))
    	    $mpccmd volume -$delta
    	  fi
  	fi
	;;  
    status)
  	case $arg in
  		playing)
  			$mpccmd play
  			;;
  		stopped)
  			$mpccmd stop
  			;;
  		paused)
  			$mpccmd pause
  			;;
  		*)
  		;;
  	esac
  	;;
    repeat|random|single|consume)
  	$mpccmd $cmd $arg
  	;;
    *)
    	echo "Неизвестная команда $cmd"
  	;;

    esac
    
  else
  
    echo "Недопустимый аргумент $arg"
    
  fi  

done