Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37045611
en ru br
Репозитории ALT
S:1.44.0-alt2
5.1: 0.7.3-alt2.git20101007.M51.1
4.1: 0.7.1-alt5.M41.5
www.altlinux.org/Changes

Группа :: Система/Настройка/Сеть
Пакет: NetworkManager

 Главная   Изменения   Спек   Патчи   Исходники   Загрузить   Gear   Bugs and FR  Repocop 

#!/bin/sh
# Build ntp.conf or ntpd.conf and restart ntpd
# Based on dhcpcd hook script
# (C) Copyright 2009 Mikhail Efremov

if [ -x /etc/init.d/ntpd ]; then
ntpd_restart_cmd="/sbin/service ntpd condrestart >/dev/null 2>&1"
fi

signature_begin="# Generated by NetworkManager from"
signature_end="# End of NetworkManager from"

remove_generated()
{
local interface="$1";shift
local ntp_conf="$1";shift

[ -n "${interface}" -a -w "${ntp_conf}" ] || return 1

grep -qs "^${signature_begin} ${interface}" "${ntp_conf}" || return 1

sed -i "/^${signature_begin} ${interface}/,/^${signature_end} ${interface}/d" "${ntp_conf}"
}

build_ntp_conf()
{
local interface="$1";shift
local ntp_conf="$1";shift
local server_keyword=${1:-server}
local header= srvs= servers= x= i=

[ -n "${interface}" -a -w "${ntp_conf}" ] || return 1

for x in ${DHCP4_NTP_SERVERS}; do
egrep -qs "^server[s]?[[:space:]]+${x}" "${ntp_conf}" ||
servers="${servers}${server_keyword} ${x}\n"
done

[ -n "${servers}" ] || return 1

local cf="$(mktemp -t "nm-${ntp_conf##*/}.XXXXXX")"
remove_generated "${interface}" "${ntp_conf}"
cat "${ntp_conf}" > "${cf}"
echo "${signature_begin} ${interface}" >> "${cf}"
printf "${servers}" >> "${cf}"
echo "${signature_end} ${interface}" >> "${cf}"
mv -f "${cf}" "${ntp_conf}"
chmod 644 "${ntp_conf}"
}

remove_all_generated()
{
local ret=1

remove_generated "$1" "/etc/ntpd.conf" && ret=0
remove_generated "$1" "/etc/ntp.conf" && ret=0

return ${ret}
}

build_all_ntp_conf()
{
local ret=1

[ -n "${DHCP4_NTP_SERVERS}" ] || return 1
#for openntpd will be used "servers" keyword instead "server"
build_ntp_conf "$1" "/etc/ntpd.conf" "servers" && ret=0

build_ntp_conf "$1" "/etc/ntp.conf" && ret=0

return ${ret}
}

restart_ntpd()
{
[ -n "${ntpd_restart_cmd}" ] && eval ${ntpd_restart_cmd}
}

case "$2" in
up)
if build_all_ntp_conf "$1"; then
restart_ntpd
else
exit 0
fi
;;
down)
if remove_all_generated "$1"; then
restart_ntpd
else
exit 0
fi
;;
esac
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin