]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blame - chrony/chrony-helper
kernel: Update to 3.13.2.
[people/ms/ipfire-3.x.git] / chrony / chrony-helper
CommitLineData
164c0d73
MT
1#!/bin/bash
2
3config=/etc/chrony.conf
4keyfile=/etc/chrony.keys
5chronyc=/usr/bin/chronyc
6dhclient_servers=/var/lib/dhclient/chrony.servers.*
7service_name=chronyd.service
8
9get_key() {
10 awk '/^[ \t]*'$1'\>/ { print $2; exit }' < $keyfile
11}
12
13get_commandkeyid() {
14 awk '/^[ \t]*commandkey\>/ { keyid=$2 } END { print keyid }' < $config
15}
16
17chrony_command() {
18 commandkeyid=$(get_commandkeyid)
19 [ -z "$commandkeyid" ] && return 1
20 commandkey=$(get_key $commandkeyid)
21 [ -z "$commandkey" ] && return 2
22
23 $chronyc <<EOF
24password $commandkey
25$1
26EOF
27}
28
29generate_commandkey() {
30 commandkeyid=$(get_commandkeyid)
31 [ -z "$commandkeyid" ] && return 1
32 commandkey=$(get_key $commandkeyid)
33 [ -z "$commandkey" ] || return 0
34
eef76e84 35 commandkey=$(tr -c -d '[\041-\176]' < /dev/urandom | head -c 16)
164c0d73
MT
36 [ -n "$commandkey" ] && echo "$commandkeyid $commandkey" >> $keyfile
37}
38
39add_dhclient_servers() {
40 command=$(cat $dhclient_servers 2> /dev/null |
41 while read server serverargs; do
42 echo "add server $server $serverargs"
43 done)
44 if [ -n "$command" ]; then
45 chrony_command "$command" &> /dev/null
46 fi
47}
48
49is_running() {
50 systemctl status chronyd.service &> /dev/null
51}
52
53case "$1" in
54 generate-commandkey)
55 generate_commandkey
56 ;;
57 add-dhclient-servers)
58 add_dhclient_servers
59 ;;
60 command)
61 is_running && chrony_command "$2"
62 ;;
63 *)
64 echo $"Usage: $0 {generate-commandkey|add-dhclient-servers|command}"
65 exit 2
66esac
67exit $?
68