1#!/bin/sh
2# Runserv, by Chris Atenasio
3# Upgraded to store server logs by evileye
4# Modified by mikaelh
5# Added protection of compressed previous log file on crash - C. Blue
6
7PIDFILE=lib/data/tomenet.pid
8PATH=/bin:/usr/bin:/usr/local/bin
9CRASHES=0
10CRASHES_START_TIME=`date +%s`
11
12#cd /home/$USER/tomenet
13ulimit -c unlimited
14
15crash_check () {
16	TIMESTAMP=`date +%s`
17	if [ `expr $TIMESTAMP - $CRASHES_START_TIME` -gt 60 ] ; then
18		# reset the counter
19		CRASHES=0
20		CRASHES_START_TIME=$TIMESTAMP
21	fi
22	(( CRASHES += 1 ))
23	if [ $CRASHES -gt 5 ] ; then
24		echo "More than 5 crashes within 60 seconds, exiting..."
25		exit
26	fi
27}
28
29files_check () {
30	TIME=`date +"%Y%m%d%H%M%S"`
31	if [ -f core ] ; then
32		mv core cores/core.$TIME
33	fi
34	if [ -f tomenet.server.core ] ; then
35		mv tomenet.server.core cores/core.$TIME
36	fi
37	if [ -f lib/data/tomenet.log ] ; then
38		bzip2 lib/data/tomenet.log
39		# Don't overwrite compressed log file of same timestamp,
40		# which would likely have resulted result from a crash.
41		# Instead, add seconds to time stamp to save the new file. - C. Blue
42		if [ -f lib/data/`date +"%Y%m%d%H%M.log.bz2"` ] ; then
43			mv lib/data/tomenet.log.bz2 lib/data/`date +"%Y%m%d%H%M%S.log.bz2"`
44		else
45			mv lib/data/tomenet.log.bz2 lib/data/`date +"%Y%m%d%H%M.log.bz2"`
46		fi
47	fi
48}
49
50if [ -f $PIDFILE ] ; then
51        TOMENETPID=`cat $PIDFILE`
52        if [ `ps ux | grep "\./tomenet\.server" | grep " $TOMENETPID " | grep -v -c grep` = 1 ]
53        then
54		echo "Server is already running, exiting..."
55                exit
56        fi
57fi
58
59files_check
60
61while :; do
62	killall -9 tomenet
63	killall -9 evilmeta
64
65	./tomenet.server
66	files_check
67	crash_check
68
69	sleep 1
70done
71