]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blob - chrony/chrony-helper
kernel: Update to 3.13.2.
[people/ms/ipfire-3.x.git] / chrony / chrony-helper
1 #!/bin/bash
2
3 config=/etc/chrony.conf
4 keyfile=/etc/chrony.keys
5 chronyc=/usr/bin/chronyc
6 dhclient_servers=/var/lib/dhclient/chrony.servers.*
7 service_name=chronyd.service
8
9 get_key() {
10 awk '/^[ \t]*'$1'\>/ { print $2; exit }' < $keyfile
11 }
12
13 get_commandkeyid() {
14 awk '/^[ \t]*commandkey\>/ { keyid=$2 } END { print keyid }' < $config
15 }
16
17 chrony_command() {
18 commandkeyid=$(get_commandkeyid)
19 [ -z "$commandkeyid" ] && return 1
20 commandkey=$(get_key $commandkeyid)
21 [ -z "$commandkey" ] && return 2
22
23 $chronyc <<EOF
24 password $commandkey
25 $1
26 EOF
27 }
28
29 generate_commandkey() {
30 commandkeyid=$(get_commandkeyid)
31 [ -z "$commandkeyid" ] && return 1
32 commandkey=$(get_key $commandkeyid)
33 [ -z "$commandkey" ] || return 0
34
35 commandkey=$(tr -c -d '[\041-\176]' < /dev/urandom | head -c 16)
36 [ -n "$commandkey" ] && echo "$commandkeyid $commandkey" >> $keyfile
37 }
38
39 add_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
49 is_running() {
50 systemctl status chronyd.service &> /dev/null
51 }
52
53 case "$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
66 esac
67 exit $?
68