Commit 1f512cd0 authored by Mark Andrews's avatar Mark Andrews
Browse files

2991. [contrib] contrib/zone-edit.sh: A simple zone editing tool for

			dynamic zones. [RT #22365]
parent 66b2016a
2991. [contrib] contrib/zone-edit.sh: A simple zone editing tool for
dynamic zones. [RT #22365]
2990. [bug] 'dnssec-settime -S' no longer tests prepublication
interval validity when the interval is set to 0.
[RT #22761]
......
......@@ -18,7 +18,7 @@ AC_DIVERT_PUSH(1)dnl
esyscmd([sed "s/^/# /" COPYRIGHT])dnl
AC_DIVERT_POP()dnl
AC_REVISION($Revision: 1.506 $)
AC_REVISION($Revision: 1.507 $)
AC_INIT(lib/dns/name.c)
AC_PREREQ(2.59)
......@@ -3310,6 +3310,7 @@ AC_CONFIG_FILES([
doc/doxygen/Doxyfile
doc/doxygen/Makefile
doc/doxygen/doxygen-input-filter
contrib/zone-edit.sh
])
#
......
#!/bin/sh
# Copyright
# $Id: zone-edit.sh.in,v 1.1 2010/12/21 02:19:06 marka Exp $
dir=/tmp/zone-edit.$$
mkdir ${dir} || exit 1
trap "/bin/rm -rf ${dir}" 0
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
sbindir=@sbindir@
dig=${bindir}/dig
checkzone=${sbindir}/named-checkzone
nsupdate=${bindir}/nsupdate
case $# in
0) echo "Usage: zone-edit <zone> [dig options] [ -- nsupdate options ]"; exit 0 ;;
esac
# What kind of echo are we using?
try=`echo -n ""`
if test "X$try" = "X-n "
then
echo_arg=""
bsc="\\c"
else
echo_arg="-n"
bsc=""
fi
zone="${1}"
shift
digopts=
while test $# -ne 0
do
case "${1}" in
--)
shift
break
;;
*)
digopts="$digopts $1"
shift
;;
esac
done
${dig} axfr "$zone" $digopts |
awk '$4 == "RRSIG" || $4 == "NSEC" || $4 == "NSEC3" || $4 == "NSEC3PARAM" { next; } { print; }' > ${dir}/old
if test -s ${dir}/old
then
${checkzone} -q -D "$zone" ${dir}/old > ${dir}/ooo
fi
if test -s ${dir}/ooo
then
cp ${dir}/ooo ${dir}/new
while :
do
if ${VISUAL:-${EDITOR:-/bin/ed}} ${dir}/new
then
if ${checkzone} -q -D "$zone" ${dir}/new > ${dir}/nnn
then
sort ${dir}/ooo > ${dir}/s1
sort ${dir}/nnn > ${dir}/s2
comm -23 ${dir}/s1 ${dir}/s2 |
sed 's/^/update delete /' > ${dir}/ccc
comm -13 ${dir}/s1 ${dir}/s2 |
sed 's/^/update add /' >> ${dir}/ccc
if test -s ${dir}/ccc
then
cat ${dir}/ccc | more
while :
do
echo ${echo_arg} "Update (u), Abort (a), Redo (r), Modify (m), Display (d) : $bsc"
read ans
case "$ans" in
u)
(
echo zone "$zone"
cat ${dir}/ccc
echo send
) | ${nsupdate} "$@"
break 2
;;
a)
break 2
;;
d)
cat ${dir}/ccc | more
;;
r)
cp ${dir}/ooo ${dir}/new
break
;;
m)
break
;;
esac
done
else
while :
do
echo ${echo_arg} "Abort (a), Redo (r), Modify (m) : $bsc"
read ans
case "$ans" in
a)
break 2
;;
r)
cp ${dir}/ooo ${dir}/new
break
;;
m)
break
;;
esac
done
fi
else
while :
do
echo ${echo_arg} "Abort (a), Redo (r), Modify (m) : $bsc"
read ans
case "$ans" in
a)
break 2
;;
r)
cp ${dir}/ooo ${dir}/new
break
;;
m)
break
;;
esac
done
fi
fi
done
fi
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment