blob: ed902567fa53699476179b49de4ac48fd1e4932c [file] [log] [blame]
# Copyright 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
description "Start servod"
author "chromium-os-dev@chromium.org"
start on started system-services
stop on stopping system-services
respawn
# If you change the respawn limit, change the log rotation, below.
respawn limit 3 10
env PORT=9999
pre-start script
mkdir -p /var/lib/servod
for CMD in iptables ip6tables ; do
$CMD -A INPUT -p tcp --dport $PORT -j ACCEPT ||
logger -t "${UPSTART_JOB}" "Failed to configure $CMD."
done
if [ -n "$BOARD" ]; then
echo "BOARD=$BOARD" >/var/lib/servod/config
fi
end script
script
LOG=/var/log/servod.log
# We set OLD to ".4" to correspond to the respawn limit of 3
# above. That way, if we die from the respawn limit, we'll have
# logs from all failed respawns, plus the original log that
# presumably contains the first failure.
OLD=.4
for NEW in .3 .2 .1 ''; do
if [ -f $LOG$NEW ]; then
mv -f $LOG$NEW $LOG$OLD
fi
OLD=$NEW
done
exec >$LOG 2>&1
if [ ! -f /var/lib/servod/config ]; then
logger -t "$UPSTART_JOB" "No configuration; terminating"
stop
exit 0
fi
. /var/lib/servod/config
if [ -z "$BOARD" ]; then
logger -t "$UPSTART_JOB" "No board specified; terminating"
stop
exit 0
fi
logger -t "$UPSTART_JOB" "Launching servod for $BOARD"
BOARD_FLAG="--board ${BOARD}"
exec servod --host 0.0.0.0 $BOARD_FLAG --port $PORT
end script
post-stop script
for CMD in iptables ip6tables ; do
$CMD -D INPUT -p tcp --dport $PORT -j ACCEPT || true
done
end script