Revision 14697fe6 dnshook

b/dnshook
19 19
  exit 0
20 20
fi
21 21

  
22
update () {
23
	local ZONE=$1
24
	local action="$2"
25
	nsupdate -k $KEYFILE > /dev/null << EOF
26
	server $SERVER
27
	zone $ZONE
28
	$action
29
	send
30
EOF
31
}
32

  
33

  
34
# ommit zone statement
35
# nsupdate  will attempt determine the correct zone to update based on the rest of the input
36
send_command () {
37

  
38
  local command="$1"
39
  hooks-log dnshook "$command"
40
  nsupdate -k $KEYFILE > /dev/null << EOF
41
  server $SERVER
42
  $command
43
  send
44
EOF
45

  
46
}
47

  
48

  
49
update_arecord () {
50

  
51
  local action=$1
52
  local command=
53
  if [ -n "$IP" ]; then
54
    command="update $action $GANETI_INSTANCE_NAME.$FZONE $TTL A $IP"
55
    send_command "$command"
56
  fi
57

  
58
}
59

  
60

  
61
update_aaaarecord () {
62

  
63
  local action=$1
64
  local command=
65
  if [ -n "$EUI64" ]; then
66
    command="update $action $GANETI_INSTANCE_NAME.$FZONE $TTL AAAA $EUI64"
67
    send_command "$command"
68
  fi
69

  
70
}
71

  
72

  
73
update_ptrrecord () {
74

  
75
  local action=$1
76
  local command=
77
  if [ -n "$IP" ]; then
78
    command="update $action $RLPART.$RZONE. $TTL PTR $GANETI_INSTANCE_NAME.$FZONE"
79
    send_command "$command"
80
  fi
81

  
82
}
83

  
84
update_ptr6record () {
85

  
86
  local action=$1
87
  local command=
88
  if [ -n "$EUI64" ]; then
89
    command="update $action $R6LPART$R6ZONE. $TTL PTR $GANETI_INSTANCE_NAME.$FZONE"
90
    send_command "$command"
91
  fi
92

  
93
}
94

  
95
update_all () {
96

  
97
  local action=$1
98
  update_arecord $action
99
  update_aaaarecord $action
100
  update_ptrrecord $action
101
  update_ptr6record $action
102

  
103
}
104

  
105

  
106
# first argument is an eui64 (IPv6)
107
# sets GLOBAL args R6REC, R6ZONE, R6LPART
108
# lets assume eui64=2001:648:2ffc:1::1
109
# the following commands produce:
110
# R6REC=1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.c.f.f.2.8.4.6.0.1.0.0.2.ip6.arpa
111
# R6ZONE=1.0.0.0.c.f.f.2.8.4.6.0.1.0.0.2.ip6.arpa
112
# R6LPART=1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
113
get_rev6_info () {
114

  
115
  local eui64=$1
116
  if [ -z "$eui64" ]; then
117
    R6REC= ; R6ZONE= ; R6LPART= ;
118
  else
119
    R6REC=$(host $eui64 | egrep -o '([[:alnum:]]\.){32}ip6.arpa' )
120
    R6ZONE=$(echo $R6REC | awk -F. 'BEGIN{rpart="";} { for (i=32;i>16;i=i-1) rpart=$i "." rpart; } END{print rpart "ip6.arpa";}')
121
    R6LPART=$(echo $R6REC | awk -F. 'BEGIN{lpart="";} { for (i=16;i>0;i=i-1) lpart=$i "." lpart; } END{print lpart;}')
122
  fi
123

  
124
}
125

  
126

  
127
# first argument is an ipv4
128
# sets args RZONE, RLPART
129
# lets assume IP=203.0.113.1
130
# RZONE="113.0.203.in-add.arpa"
131
# RLPART="1"
132
get_rev4_info () {
133

  
134
  local ip=$1
135
  if [ -z "$ip" ]; then
136
    RZONE= ; RLPART= ;
137
  else
138
    OLDIFS=$IFS
139
    IFS=". "
140
    set -- $ip
141
    a=$1 ; b=$2; c=$3; d=$4;
142
    IFS=$OLDIFS
143
    RZONE="$c.$b.$a.in-addr.arpa"
144
    RLPART="$d"
145
  fi
146

  
147
}
148

  
149

  
150 22
update_dns () {
151 23

  
152 24
  if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_CREATE" ]; then

Also available in: Unified diff