123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- #!/bin/sh
-
-
-
-
-
-
-
-
-
-
-
- DTND=/usr/sbin/dtnd
- TMPCONF=/tmp/ibrdtn.config
- UCI=/sbin/uci
-
- getstate() {
- $UCI -P/var/state -q get ibrdtn.$1
- return $?
- }
-
- setstate() {
- $UCI -P/var/state -q set ibrdtn.$1=$2
- return $?
- }
-
- getconfig() {
- $UCI -q get ibrdtn.$1
- return $?
- }
-
- setconfig() {
- $UCI -q set ibrdtn.$1=$2
- return $?
- }
-
-
- /bin/rm /var/state/ibrdtn
-
-
- BLOB_PATH=`getconfig storage.blobs`
- BUNDLE_PATH=`getconfig storage.bundles`
- CONTAINER_PATH=`getconfig storage.path`
- CONTAINER_FILE=`getconfig storage.container`
- LOG_FILE=`getconfig main.logfile`
- ERR_FILE=`getconfig main.errfile`
- DEBUG_LEVEL=`getconfig main.debug`
- SAFEMODE=no
-
-
- /bin/sh /usr/share/ibrdtn/systemcheck.sh
-
- if [ $? -eq 0 ]; then
-
- if [ -n "$CONTAINER_FILE" ] && [ -n "$CONTAINER_PATH" ]; then
- /bin/sh /usr/share/ibrdtn/mountcontainer.sh
-
-
-
- if [ $? -gt 0 ]; then
- SAFEMODE=yes
- fi
- fi
- else
- SAFEMODE=yes
- fi
-
-
- if [ -n "$BLOB_PATH" ]; then
- /bin/mkdir -p $BLOB_PATH
-
-
- /bin/rm -f $BLOB_PATH/file*
- fi
-
- if [ -n "$BUNDLE_PATH" ]; then
- /bin/mkdir -p $BUNDLE_PATH
- fi
-
- LOGGING=""
- if [ -n "$LOG_FILE" ]; then
- LOGGING="$LOGGING > $LOG_FILE"
- else
- LOGGING="$LOGGING > /dev/null"
- fi
-
- if [ -n "$ERR_FILE" ]; then
- LOGGING="$LOGGING 2> $ERR_FILE"
- else
- LOGGING="$LOGGING 2> /dev/null"
- fi
-
- if [ -z "$LOG_FILE" ] && [ -z "$ERR_FILE" ]; then
- LOGGING="-q"
- fi
-
-
- if [ -n "$DEBUG_LEVEL" ]; then
- DEBUG_ARGS="-v -d ${DEBUG_LEVEL}"
- else
- DEBUG_ARGS=""
- fi
-
-
- if [ "$SAFEMODE" == "yes" ]; then
- /bin/sh /usr/share/ibrdtn/build-config.sh --safe-mode $TMPCONF
- else
- /bin/sh /usr/share/ibrdtn/build-config.sh $TMPCONF
- fi
-
-
- CRASH=0
-
-
- setstate state running
-
- while [ "`getstate state`" == "running" ]; do
-
- /bin/sh /usr/share/ibrdtn/systemcheck.sh
-
-
- if [ $? -gt 0 ] && [ "$SAFEMODE" == "no" ]; then
- SAFEMODE=yes
- /usr/bin/logger -t "ibrdtn-safe-wrapper" -p 2 "system check failed! Switch to safe-mode settings."
- /bin/sh /usr/share/ibrdtn/build-config.sh --safe-mode $TMPCONF
- fi
-
-
- TIMESTART=`/bin/date +%s`
-
-
- echo "${DTND} ${DEBUG_ARGS} -c ${TMPCONF} ${LOGGING}" | /bin/sh
-
-
- TIMESTOP=`/bin/date +%s`
-
-
- let TIMERUN=$TIMESTOP-$TIMESTART
-
-
- if [ $TIMERUN -ge 3600 ]; then
- CRASH=0
- fi
-
-
- if [ "`getstate state`" == "running" ]; then
-
- if [ $CRASH -eq 20 ] && [ "$SAFEMODE" == "no" ]; then
- SAFEMODE=yes
- /usr/bin/logger -t "ibrdtn-safe-wrapper" -p 2 "IBR-DTN daemon crashed 20 times! Switch to safe-mode settings."
- /bin/sh /usr/share/ibrdtn/build-config.sh --safe-mode $TMPCONF
- fi
-
-
- let CRASH=$CRASH+1
-
-
- let WAIT=2**$CRASH
-
-
- if [ $WAIT -ge 1800 ]; then
- WAIT=1800
- fi
-
-
- /usr/bin/logger -t "ibrdtn-safe-wrapper" -p 2 "IBR-DTN daemon crashed $CRASH times! Wait $WAIT seconds."
-
-
- /bin/sleep $WAIT
- fi
- done
|