aa75a7da7f
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
66 lines
1.3 KiB
Bash
Executable File
66 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# (using bashism (arrays) in dhcp config)
|
|
|
|
#exec >/dev/null
|
|
exec 2>&1
|
|
exec </dev/null
|
|
|
|
user=root
|
|
start_delay=15
|
|
net_down_delay=5
|
|
pool="us.pool.ntp.org" # replace "us" with your country code
|
|
|
|
service="${PWD##*/}"
|
|
rundir="/var/run/service/$service"
|
|
default_p_opt="-p 0.$pool -p 1.$pool -p 2.$pool -p 3.$pool"
|
|
|
|
echo "* Checking network"
|
|
test -f /var/run/service/fw/up || exec sleep $net_down_delay
|
|
|
|
# With multiple interfaces (e.g. wired+wireless) going up,
|
|
# networking scripts may restart ntpd service several times
|
|
# in quick succession. Do not be too eager to start sending
|
|
# NTP requests:
|
|
sleep $start_delay
|
|
|
|
# Make sure rundir/ exists
|
|
mkdir -p "$rundir" 2>/dev/null
|
|
chown -R "$user": "$rundir"
|
|
chmod -R a=rX "$rundir"
|
|
rm -rf rundir 2>/dev/null
|
|
ln -s "$rundir" rundir
|
|
|
|
# Grab config from dhcp
|
|
cfg=-1
|
|
for f in rundir/*.ntpconf; do
|
|
test -f "$f" || continue
|
|
. "$f"
|
|
done
|
|
|
|
# Select peers
|
|
p_opt=""
|
|
cfg=0
|
|
while test x"${ntpip[$cfg]}" != x""; do
|
|
p_opt="$p_opt -p ${ntpip[$cfg]}"
|
|
let cfg=cfg+1
|
|
done
|
|
test x"$p_opt" == x"" && p_opt="$default_p_opt"
|
|
|
|
if test x"$p_opt" == x""; then
|
|
echo "* No NTP peers configured, stopping"
|
|
svc -o .
|
|
exec sleep 1
|
|
fi
|
|
|
|
|
|
# Let others know that we are up
|
|
date '+%Y-%m-%d %H:%M:%S %Z' >rundir/up
|
|
|
|
# Go go go
|
|
echo "* Starting ntpd[$$]"
|
|
exec \
|
|
env - PATH="$PATH" \
|
|
softlimit \
|
|
setuidgid "$user" \
|
|
ntpd -ddnNl -S ./ntp.script $p_opt
|