#!/bin/sh
if [ "$1" = "--kill" ]; then
  echo Force stopping Webmin server in /opt/webmin
else
  echo Stopping Webmin server in /opt/webmin
fi
targets="stats.pl shellserver.pl"
collect_pids() {
  for s in $targets; do
    ps axww | grep "/opt/webmin/" | grep "/$s" | grep -v grep
  done | awk '{print $1}' | sort -u
}
pids=$(collect_pids)
[ -n "$pids" ] && kill $pids 2>/dev/null || true
if [ "$1" = "--kill" ]; then
  sleep 1
  pids=$(collect_pids)
  [ -n "$pids" ] && kill -KILL $pids 2>/dev/null || true
fi
pidfile=`grep "^pidfile=" /etc/webmin/miniserv.conf | sed -e 's/pidfile=//g'`
pid=`cat $pidfile 2>/dev/null`
if [ "$pid" != "" ]; then
  kill $pid || exit 1
  touch /var/log/webmin/stop-flag
  if [ "$1" = "--kill" ]; then
    sleep 1
    (ps axf | grep "/opt/webmin\/miniserv\.pl" | awk '{print "kill -9 -- -" $1}' | bash ; kill -9 -- -$pid ; kill -9 $pid) 2>/dev/null
  fi
  exit 0
else
  if [ "$1" = "--kill" ]; then
    (ps axf | grep "/opt/webmin\/miniserv\.pl" | awk '{print "kill -9 -- -" $1}' | bash ; kill -9 -- -$pid ; kill -9 $pid) 2>/dev/null
  fi
fi
