#!/bin/sh
/usr/bin/logger -t $(/usr/bin/basename $0) "custom script started [$$]"
finish() {
/usr/bin/logger -t $(/usr/bin/basename $0) "custom script ended [$$]"
}
trap finish EXIT
DEV_RTC=/dev/ttyUSB1
DEV_GPS=/dev/ttyUSB0
set_ntp_ready()
{
#/bin/sleep 1
#/usr/bin/killall ntp
#/bin/sleep 1
/usr/sbin/nvram set ntp_ready=$1
/usr/sbin/nvram unset ntp_server0
/usr/sbin/nvram unset ntp_server1
/usr/sbin/nvram unset ntp_server_tried
#/usr/sbin/nvram commit
}
# set the system clock from an external RTC
#if [ ! -e ${DEV_RTC} ]; then
# set_ntp_ready 0
# /sbin/lsmod | /bin/grep -e "ch341" > /dev/null 2>&1 || /sbin/modprobe ch341
# N=1
# while [ $N -lt 30 ]; do
# if [ -e ${DEV_RTC} ]; then
# /bin/echo R>${DEV_RTC}
# if [ $? -eq 0 ]; then
# read -t 2 RTC<${DEV_RTC}
# if [ $? -eq 0 ]; then
# RTC=${RTC%$'\r'}
# if [ $? -eq 0 ]; then
# /usr/bin/logger -t $(/usr/bin/basename $0) "custom script setting system clock to $(/bin/date -u -d $RTC)"
# /bin/date -u -s $RTC
# if [ $? -eq 0 ]; then
# set_ntp_ready 1
# fi
# fi
# fi
# fi
# break
# else
# let N++
# /bin/sleep 1
# fi
# done
#
# if [ $N -ge 30 ]; then
# /bin/touch ${DEV_RTC} #reserved
# fi
#else
# /bin/echo R>${DEV_RTC} && read -t 2 RTC<${DEV_RTC} && RTC=${RTC%$'\r'} && /usr/bin/logger -t $(/usr/bin/basename $0) "custom script RTC time is $(/bin/date -u -d $RTC)"
#fi
# start ntpd, if it's not already running
/bin/pidof ntpd > /dev/null 2>&1
if [ $? -ne 0 ]; then
# create some folders used by ntpd, otherwise it don't work
/bin/mkdir -p /tmp/etc/ntp
/bin/mkdir -p /tmp/var/spool/ntp
# copy the NTPD drift file to tmp folder
/bin/cp -p /jffs/ntp/ntp.drift /tmp/etc/ntp/.
# set the system clock from NTPD, if not already set from external RTC
if [ "$RTC" == "" ]; then
set_ntp_ready 0
# # cache some IP addresses for the NTP server
# ntp_name="pool.ntp.org"
# local_ntp_name="-$ntp_name"
# hostip_cmd="/jffs/bin/hostip"
# N=1
# /bin/grep -q -F -e "$local_ntp_name" /jffs/configs/hosts.add > /dev/null 2>&1
# if [ $? -ne 0 ]; then
# for ip in $($hostip_cmd $ntp_name) $($hostip_cmd 0.$ntp_name) $($hostip_cmd 1.$ntp_name) $($hostip_cmd 2.$ntp_name) $($hostip_cmd 3.$ntp_name) $($hostip_cmd $ntp_name) $($hostip_cmd 0.$ntp_name) $($hostip_cmd 1.$ntp_name) $($hostip_cmd 2.$ntp_name) $($hostip_cmd 3.$ntp_name) $($hostip_cmd $ntp_name) $($hostip_cmd 0.$ntp_name) $($hostip_cmd 1.$ntp_name) $($hostip_cmd 2.$ntp_name) $($hostip_cmd 3.$ntp_name)
# do
# /bin/grep -q -F -e "$ip" /jffs/configs/hosts.add > /dev/null 2>&1
# if [ $? -ne 0 ]; then
# /bin/echo "$ip $N$local_ntp_name" >> /jffs/configs/hosts.add
# let N++
# fi
# done
# fi
# # restart dnsmasq to re-load the IP addresses of the NTP servers
# /sbin/service restart_dnsmasq
# /bin/sleep 5
# setup ntpd
if [ ! -e ${DEV_GPS} ]; then
set_ntp_ready 0
/sbin/lsmod | /bin/grep -e "ftdi_sio" > /dev/null 2>&1 || /sbin/modprobe ftdi_sio
/sbin/lsmod | /bin/grep -e "pps_core" > /dev/null 2>&1 ||/sbin/ modprobe pps_core
/sbin/lsmod | /bin/grep -e "pps_ldisc" > /dev/null 2>&1 || /sbin/modprobe pps-ldisc
N=1
while [ $N -lt 30 ]; do
if [ -e ${DEV_GPS} ]; then
#stty -F ${DEV_GPS} raw ispeed 9600 ospeed 9600 cs8 -ignpar -cstopb eol 255 eof 255
/jffs/bin/setserial ${DEV_GPS} low_latency
LDATTACH_CMD="/jffs/bin/ldattach pps ${DEV_GPS}"
LDATTACH_PID=$(/bin/echo $(/bin/ps w | /bin/grep -i "$LDATTACH_CMD" | /bin/grep -v grep) | /usr/bin/cut -f1 -d' ')
[ -z "$LDATTACH_PID" ] && $LDATTACH_CMD
[ -e /dev/gps0 ] || ln -s ${DEV_GPS} /dev/gps0
[ -e /dev/gpspps0 ] || ln -s /dev/pps0 /dev/gpspps0
# block here while the router's clock is sync'd with a time source
/usr/bin/logger -t $(/usr/bin/basename $0) "custom script attempting system clock synchronization [$$]"
/jffs/bin/ntpd -d -d -d -d -d -g -q -n -c /jffs/ntp/ntp.conf # set clock and quit
/usr/bin/logger -t $(/usr/bin/basename $0) "custom script completed system clock synchronization [$$]"
set_ntp_ready 1
break
else
let N++
/bin/sleep 1
fi
done
if [ $N -ge 30 ]; then
/usr/bin/logger -t $(/usr/bin/basename $0) "custom script timed out while attempting NTPD synchronization [$$]"
fi
fi
else
/usr/bin/logger -t $(/usr/bin/basename $0) "custom script bypassing initial NTPD synchronization [$$]"
fi
# start ntpd as unstoppable daemon and carry on
if [ $(/usr/sbin/nvram get ntp_ready) -eq 1 ]; then
/jffs/bin/ntpd -c /jffs/ntp/ntp.conf
fi
fi
# start dnscrypt-proxy
/bin/pidof dnscrypt-proxy > /dev/null 2>&1
if [ $? -ne 0 ]; then
/jffs/bin/dnscrypt-proxy --local-address=127.0.0.1:65053 --ephemeral-keys --resolver-name=dnscrypt.me --resolvers-list=/jffs/bin/dnscrypt-resolvers.csv --daemonize
/jffs/bin/dnscrypt-proxy --local-address=127.0.0.1:65054 --ephemeral-keys --resolver-name=cloudns-syd --resolvers-list=/jffs/bin/dnscrypt-resolvers.csv --daemonize
/jffs/bin/dnscrypt-proxy --local-address=127.0.0.1:65055 --ephemeral-keys --resolver-name=dnscrypt.eu-dk --resolvers-list=/jffs/bin/dnscrypt-resolvers.csv --daemonize
/jffs/bin/dnscrypt-proxy --local-address=127.0.0.1:65056 --ephemeral-keys --resolver-name=dnscrypt.org-fr --resolvers-list=/jffs/bin/dnscrypt-resolvers.csv --daemonize
/jffs/bin/dnscrypt-proxy --local-address=127.0.0.1:65057 --ephemeral-keys --resolver-name=soltysiak --resolvers-list=/jffs/bin/dnscrypt-resolvers.csv --daemonize
fi