#!/bin/sh
#
# Start, stop or restart MLDonkey
#


. /etc/mldonkey.conf

mldonkey_start() {
  if [ -e "$MLNET_DIR/mlnet.pid" ]; then
    echo "MLDonkey already started!"
    exit 1
  fi
  echo -n "Starting MLDonkey... "
  /bin/su $MLNET_USER -c "/usr/bin/nice -n $MLNET_NICE /usr/bin/mlnet > /dev/null 2>&1 &"
  /bin/sleep 1
  if [ -z "`/bin/ps U $MLNET_USER | /bin/grep mlnet`" ]; then
    echo "Failed!"
    exit 1
  fi
  echo "Done."
  return 0
}

mldonkey_stop() {
  if [ ! -e "$MLNET_DIR/mlnet.pid" ]; then
    echo "MLDonkey is not running!"
    exit 1
  fi
  echo -n "Stopping MLDonkey... "
  if [ -z $MLNET_ADMIN_PASSWORD ]; then
    /bin/su $MLNET_USER -c "(echo kill; echo q) | /usr/bin/nc 127.0.0.1 4000 > /dev/null 2>&1"
  else
    /bin/su $MLNET_USER -c "(echo auth admin $MLNET_ADMIN_PASSWORD; echo kill; echo q) | /usr/bin/nc 127.0.0.1 4000 > /dev/null 2>&1"
  fi
  /bin/sleep 1
  if [ -n "`/bin/ps U $MLNET_USER | /bin/grep mlnet`" ]; then
    echo "Failed!"
    exit 1
  fi
  echo "Done."
  return 0
}

mldonkey_restart() {
  mldonkey_stop && mldonkey_start
}

if [ -z $MLNET_USER ]; then
  echo "Check the file /etc/mldonkey.conf"
  exit 1
fi

if [ -z $MLNET_DIR ]; then
  MLNET_DIR="`/bin/cat /etc/passwd | /bin/grep $MLNET_USER | /bin/cut -d : -f 6`/.mldonkey"
fi

if [ -z $MLNET_NICE ]; then
  MLNET_NICE="19"
fi

case "$1" in
  'start')
    mldonkey_start
    ;;
  'stop')
    mldonkey_stop
    ;;
  'restart')
    mldonkey_restart
    ;;
  *)
    echo "Usage: $0 (start|stop|restart)"
esac


