mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
timemngr: use NTP servers from dhcp option 42
This commit is contained in:
parent
4b8d721af8
commit
d80d41a6f6
4 changed files with 102 additions and 103 deletions
|
|
@ -5,13 +5,13 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=timemngr
|
||||
PKG_VERSION:=1.1.6
|
||||
PKG_VERSION:=1.1.7
|
||||
|
||||
LOCAL_DEV:=0
|
||||
ifneq ($(LOCAL_DEV),1)
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/timemngr.git
|
||||
PKG_SOURCE_VERSION:=98d41d8fc575a0c112bab4534122aacfc3364981
|
||||
PKG_SOURCE_VERSION:=a4d21010d4070136656d3e68423504175bc871c4
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
PKG_MIRROR_HASH:=skip
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -2,25 +2,3 @@ config global 'global'
|
|||
option enable '1'
|
||||
option dst '1'
|
||||
option loglevel '2'
|
||||
|
||||
config client 'client'
|
||||
option enable '1'
|
||||
option iburst '1'
|
||||
option version '4'
|
||||
option peer '0'
|
||||
option minpoll '6'
|
||||
option maxpoll '10'
|
||||
option mode 'Unicast'
|
||||
option interface 'wan'
|
||||
list server 'ntp1.sth.netnod.se'
|
||||
list server 'ntp1.gbg.netnod.se'
|
||||
|
||||
config client 'dhcp_driven'
|
||||
option enable '0'
|
||||
option interface 'wan'
|
||||
option iburst '1'
|
||||
option version '4'
|
||||
option peer '0'
|
||||
option minpoll '6'
|
||||
option maxpoll '10'
|
||||
option mode 'Unicast'
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
. /lib/functions.sh
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
log() {
|
||||
|
|
@ -8,25 +9,42 @@ log() {
|
|||
|
||||
configure_ntp_servers()
|
||||
{
|
||||
local ntp_interface
|
||||
uci_changed=0
|
||||
servers=""
|
||||
|
||||
# Only change the ntp servers if interface matches with the defined interface
|
||||
ntp_interface="$(uci -q get time.dhcp_driven.interface)"
|
||||
|
||||
if [ "${ntp_interface}" != "${1}" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
json_load "$(ifstatus $ntp_interface)"
|
||||
json_load "$(ifstatus ${1})"
|
||||
json_select data
|
||||
json_get_var servers ntpserver ""
|
||||
|
||||
exist_dhcp_ntp_server="$(uci -q get time.dhcp_driven.server)"
|
||||
if [ "${servers}" != "${exist_dhcp_ntp_server}" ]; then
|
||||
uci -q del time.dhcp_driven.server
|
||||
for server in ${servers}; do
|
||||
uci -q add_list time.dhcp_driven.server="${server}"
|
||||
done
|
||||
if [ -z "${servers}" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
# Find the dhcp discovery enabled section
|
||||
config_load time
|
||||
|
||||
client_sec="$(uci -q show time | grep "=client" | cut -d'=' -f 1 | cut -d'.' -f2)"
|
||||
for client in $client_sec; do
|
||||
config_get_bool enable $client enable "1"
|
||||
config_get_bool discovery $client dhcp_discovery "1"
|
||||
config_get intf $client interface ""
|
||||
|
||||
if [ "${intf}" == "${1}" ] && [ "${discovery}" -eq 1 ]; then
|
||||
config_get cur_servers $client server ""
|
||||
if [ "${servers}" != "${cur_servers}" ]; then
|
||||
uci -q del time.$client.server
|
||||
for server in ${servers}; do
|
||||
uci -q add_list time.$client.server="${server}"
|
||||
done
|
||||
|
||||
if [ "${enable}" -eq 1 ]; then
|
||||
uci_changed=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${uci_changed}" -eq 1 ]; then
|
||||
log "Restarting timemngr"
|
||||
ubus call uci commit '{"config":"time"}'
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -8,80 +8,83 @@ function get_system_ntp_option()
|
|||
echo "${val}"
|
||||
}
|
||||
|
||||
# migrate system ntp servers to time
|
||||
if uci -q get system.ntp >/dev/null 2>&1; then
|
||||
function add_default_config()
|
||||
{
|
||||
uci -q set time.client_default="client"
|
||||
|
||||
enabled="$(get_system_ntp_option enabled)"
|
||||
if [ -z "${enabled}" ]; then
|
||||
enabled="1"
|
||||
fi
|
||||
|
||||
uci -q set time.client_default.enable="$enabled"
|
||||
uci -q set time.client_default.dhcp_discovery="1"
|
||||
uci -q set time.client_default.iburst="1"
|
||||
uci -q set time.client_default.version="4"
|
||||
uci -q set time.client_default.peer="0"
|
||||
uci -q set time.client_default.minpoll="6"
|
||||
uci -q set time.client_default.maxpoll="10"
|
||||
uci -q set time.client_default.mode="Unicast"
|
||||
|
||||
interface="$(get_system_ntp_option interface)"
|
||||
if [ -n "${interface}" ]; then
|
||||
uci -q set time.client_default.interface="${interface}"
|
||||
else
|
||||
uci -q set time.client_default.interface="wan"
|
||||
fi
|
||||
|
||||
servers="$(get_system_ntp_option server)"
|
||||
if [ -z "${servers}" ]; then
|
||||
servers="ntp1.sth.netnod.se ntp1.gbg.netnod.se"
|
||||
fi
|
||||
|
||||
for server in $servers; do
|
||||
uci -q add_list time.client_default.server="${server}"
|
||||
done
|
||||
}
|
||||
|
||||
migrate_timemngr_config() {
|
||||
if [ ! -f "/etc/config/time" ]; then
|
||||
# Time manager UCI is not present
|
||||
touch /etc/config/time
|
||||
|
||||
uci -q set time.global="global"
|
||||
uci -q set time.global.enable="1"
|
||||
uci -q set time.global.dst="1"
|
||||
|
||||
uci -q set time.client="client"
|
||||
|
||||
enabled="$(get_system_ntp_option enabled)"
|
||||
if [ -z "${enabled}" ]; then
|
||||
enabled="1"
|
||||
fi
|
||||
|
||||
uci -q set time.client.enable="$enabled"
|
||||
uci -q set time.client.iburst="1"
|
||||
uci -q set time.client.version="4"
|
||||
uci -q set time.client.peer="0"
|
||||
uci -q set time.client.minpoll="6"
|
||||
uci -q set time.client.maxpoll="10"
|
||||
uci -q set time.client.mode="Unicast"
|
||||
uci -q set time.client.interface="wan"
|
||||
|
||||
servers="$(get_system_ntp_option server)"
|
||||
if [ -z "${servers}" ]; then
|
||||
servers="ntp1.sth.netnod.se ntp1.gbg.netnod.se"
|
||||
fi
|
||||
|
||||
for server in $servers; do
|
||||
uci -q add_list time.client.server="${server}"
|
||||
done
|
||||
|
||||
# DHCP client instance
|
||||
uci -q set time.dhcp_driven="client"
|
||||
uci -q set time.dhcp_driven.enable="0"
|
||||
|
||||
interface="$(get_system_ntp_option interface)"
|
||||
if [ -n "${interface}" ]; then
|
||||
uci -q set time.dhcp_driven.interface="${interface}"
|
||||
else
|
||||
uci -q set time.dhcp_driven.interface="wan"
|
||||
fi
|
||||
|
||||
uci -q set time.dhcp_driven.iburst="1"
|
||||
uci -q set time.dhcp_driven.version="4"
|
||||
uci -q set time.dhcp_driven.peer="0"
|
||||
uci -q set time.dhcp_driven.minpoll="6"
|
||||
uci -q set time.dhcp_driven.maxpoll="10"
|
||||
uci -q set time.dhcp_driven.mode="Unicast"
|
||||
|
||||
# Add timeserver
|
||||
uci -q set time.server="server"
|
||||
uci -q set time.server.enable="$(get_system_ntp_option enable_server)"
|
||||
uci -q set time.server.mode="Unicast"
|
||||
uci -q set time.server.ttl="255"
|
||||
# Do default settings since nothing configured
|
||||
add_default_config
|
||||
else
|
||||
servers="$(get_system_ntp_option server)"
|
||||
if [ -n "${servers}" ]; then
|
||||
uci set time.client.server=""
|
||||
for server in $servers; do
|
||||
uci -q add_list time.client.server="${server}"
|
||||
# Time manager UCI is present, check if clients are already configured
|
||||
client_list="$(uci -q show time | grep "=client" | cut -d'=' -f1 | cut -d'.' -f2)"
|
||||
if [ -z "${client_list}" ]; then
|
||||
# Do default settings since nothing configured
|
||||
add_default_config
|
||||
else
|
||||
# migrate dhcp_discovery option
|
||||
for client in $client_list; do
|
||||
discovery="$(uci -q get time.$client.dhcp_discovery)"
|
||||
if [ -n "${discovery}" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "${client}" == "dhcp_driven" ]; then
|
||||
uci -q set time.$client.dhcp_discovery="1"
|
||||
else
|
||||
serv="$(uci -q get time.$client.server)"
|
||||
if [ -z "${serv}" ]; then
|
||||
# No servers for this client configured
|
||||
uci -q set time.$client.dhcp_discovery="1"
|
||||
else
|
||||
# Servers for this client is configured
|
||||
uci -q set time.$client.dhcp_discovery="0"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
interface="$(get_system_ntp_option interface)"
|
||||
if [ -n "${interface}" ]; then
|
||||
uci -q set time.dhcp_driven.interface="${interface}"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
uci -q delete system.ntp
|
||||
}
|
||||
|
||||
uci commit time
|
||||
uci commit system
|
||||
fi
|
||||
migrate_timemngr_config
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue