#!/bin/sh
# The path to your config file
CONFIGFILE="@trackerddir@/etc/trackerd.conf"
# The path to your pid file, should be the same as in your trackerd.conf
PIDFILE="@trackerddir@/trackerd.pid"
# The path to your status file, should be the same as in your trackerd.conf
STATUSFILE="@trackerddir@/trackerd.status"
# The path to your certificate, should be the same as in your trackerd.conf
CERTIFICATE="@trackerddir@/etc/certificate.pem"
# The path to your trackerd binary
TRACKERD="@prefix@/sbin/trackerd"
# Flags to pass to trackerd
TRACKERDFLAGS="-d @trackerddir@ -ll -u"
# Begin script
PROG=$(basename $0)
CMD=$1
if [ "$CMD" ]; then
shift
TRACKERDFLAGS="$TRACKERDFLAGS $*"
fi
if [ -f "@trackerddir@/etc/trackerd.flags" ]; then
STARTUPFLAGS=$(cat "@trackerddir@/etc/trackerd.flags")
TRACKERDFLAGS="$TRACKERDFLAGS $STARTUPFLAGS"
fi
checkpid() {
RUNNING=0
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
if [ "x$PID" != "x" ]; then
if kill -0 $PID 2>/dev/null ; then
RUNNING=1
fi
fi
fi
}
checkrunning() {
checkpid
if [ $RUNNING -eq 0 ]; then
echo "$PROG: $CMD: trackerd is not running"
exit 1
fi
}
case $CMD in
start)
checkpid
if [ $RUNNING -eq 1 ]; then
echo "$PROG: $CMD: trackerd (pid $PID) already running"
exit 1
fi
if [ ! -f "$CERTIFICATE" ]; then
$0 certificate
fi
if $TRACKERD $TRACKERDFLAGS; then
echo "$PROG: $CMD: trackerd started"
else
echo "$PROG: $CMD: trackerd could not be started"
fi
;;
stop)
checkrunning
if kill $PID; then
echo "$PROG: $CMD: trackerd stopped"
else
echo "$PROG: $CMD: trackerd could not be stopped"
exit 1
fi
;;
restart)
checkpid
if [ $RUNNING -eq 1 ]; then
if kill $PID; then
echo "$PROG: $CMD: trackerd stopped"
else
echo "$PROG: $CMD: trackerd could not be stopped"
exit 1
fi
fi
if $TRACKERD $TRACKERDFLAGS; then
echo "$PROG: $CMD: trackerd started"
else
echo "$PROG: $CMD: trackerd could not be started"
fi
;;
reload)
checkrunning
if kill -HUP $PID; then
echo "$PROG: $CMD: trackerd reloaded"
else
echo "$PROG: $CMD: trackerd could not be reloaded"
fi
;;
config)
grep -v "^#" $CONFIGFILE | grep -v "^$" | sort
;;
configtest)
$TRACKERD -t
;;
certificate)
HOSTNAME=$(hostname)
openssl req -x509 -newkey rsa:1024 -subj "/CN=$HOSTNAME" -days 365 -nodes -keyout "$CERTIFICATE" -out "$CERTIFICATE"
;;
status)
if [ -f $STATUSFILE ]; then
$TRACKERD -v
awk '
function pad(number) {
if(number < 10)
return "0" number
else
return number
}
function ftime(time) {
days = int(time / 86400)
time = time % 86400
hours = int(time / 3600)
time = time % 3600
minutes = int(time / 60)
time = time % 60
seconds = time
if(days > 0)
return pad(days) ":" pad(hours) ":" \
pad(minutes) ":" pad(seconds) \
" days"
else if(hours > 0)
return pad(hours) ":" pad(minutes) ":" \
pad(seconds) " hours"
else if(minutes > 0)
return pad(minutes) ":" pad(seconds) \
" minutes"
else
return seconds " seconds"
}
function fbytes(bytes) {
power = 0
while(bytes > (1024 ^ ++power))
;
value = sprintf("%.2f", bytes / (1024 ^ --power))
if(power == 4)
return value " TB"
else if(power == 3)
return value " GB"
else if(power == 2)
return value " MB"
else if(power == 1)
return value " KB"
else if(power == 0)
if(bytes == 1)
return bytes " byte"
else
return bytes " bytes"
}
{
"date +%s" | getline now
print "Up " ftime(now - $1)
print ""
print "Current servers: " $2
print "Total clients: " $3
print "Current users: " $4
print "Current files: " $5
print "Current size: " fbytes($6)
}
' $STATUSFILE
else
echo "$PROG: $CMD: $STATUSFILE could not be found"
fi
;;
*)
echo "Usage: $PROG [start | stop | restart | reload | config | configtest | certificate | status | help]"
cat <<EOF
start start trackerd
stop stop trackerd
restart restart trackerd
reload send trackerd a SIGHUP, causing it to reload its configuration
config show the configuration
configtest run a configuration syntax test
certificate generate a new OpenSSL certificate
status show a status screen
help display this information
By Axel Andersson <axel@zankasoftware.com>
EOF
;;
esac
syntax highlighted by Code2HTML, v. 0.9.1