Annotation of ze/zefwd, revision 1.1.1.1
1.1 snw 1: #!/usr/bin/env bash
2:
3: #
4: # $Id$
5: # ChivaNet BIND zone edit script
6: #
7: #
8: # Author: Serena Willis <snw@coherent-logic.com>
9: # Copyright (C) 2013, 2025 Coherent Logic Development LLC
10: #
11: #
12: # This file is part of ze.
13: #
14: # ze is free software: you can redistribute it and/or modify
15: # it under the terms of the GNU Affero General Public License as published by
16: # the Free Software Foundation, either version 3 of the License, or
17: # (at your option) any later version.
18: #
19: # ze is distributed in the hope that it will be useful,
20: # but WITHOUT ANY WARRANTY; without even the implied warranty of
21: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22: # GNU Affero Public License for more details.
23: #
24: # You should have received a copy of the GNU Affero General Public License
25: # along with ze. If not, see <https://www.gnu.org/licenses/>.
26: #
27: # $Log$
28: #
29: # SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC
30: # SPDX-License-Identifier: AGPL-3.0-or-later
31: #
32:
33: source /etc/defaults/ze.conf
34:
35: [[ -z "${EDITOR}" ]] && EDITOR="emacs -nw"
36:
37: SHNAME=`basename $0`
38:
39: if [ ${EUID} -ne 0 ]
40: then
41: echo "${SHNAME} must be run as root."
42: exit
43: fi
44:
45: if [ $1 = "" ]
46: then
47: echo "usage: $0 zone"
48: exit
49: fi
50:
51:
52: if [ ${SHNAME} = "zefwd" ]
53: then
54: ZONEFILE="/etc/namedb/$1.db"
55: ZONEBASE="$1.db"
56: RNDC_DOMAIN=$1
57: elif [ ${SHNAME} = "zerev" ]
58: then
59: ZONEFILE="/etc/namedb/rev.${1}.in-addr.arpa"
60: ZONEBASE="rev.${1}.in-addr.arpa"
61: RNDC_DOMAIN="${1}.IN-ADDR.ARPA"
62: fi
63:
64: TMPFILE="/tmp/${ZONEBASE}"
65:
66: if [ ! -f ${ZONEFILE} ]
67: then
68: echo "${ZONEFILE} does not exist."
69: exit
70: fi
71:
72: if [ -f ${TMPFILE} ]
73: then
74: echo "${ZONEFILE} already being edited."
75: exit
76: fi
77:
78: ORIG_SERIAL=`cat ${ZONEFILE} | sed '3q;d' | tr -d '[[:space:]]'`
79: cp ${ZONEFILE} ${TMPFILE}
80: cd /etc/namedb
81: ${EDITOR} ${TMPFILE}
82:
83: NEW_SERIAL=`cat ${TMPFILE} | sed '3q;d' | tr -d '[[:space:]]'`
84:
85: if [ ${NEW_SERIAL} -le ${ORIG_SERIAL} ]
86: then
87: echo "Serial number in zonefile ${ZONEFILE} must be greater than ${ORIG_SERIAL}."
88: rm -f ${TMPFILE}
89: exit
90: else
91: echo "Serial number changed: ${ORIG_SERIAL} -> ${NEW_SERIAL}"
92: fi
93:
94: mv ${TMPFILE} ${ZONEFILE}
95: rm -f ${TMPFILE}
96:
97: git add ${ZONEFILE}
98: read -p "Enter a comment explaining this edit: " COMMIT_CMNT
99: LOGIN_NAME=`logname`
100: echo "Committing to version control..."
101: git commit -m "${LOGIN_NAME}: ${COMMIT_CMNT}"
102: git push origin master
103: echo "Reloading BIND configuration..."
104: /etc/rc.d/named reload
105: echo "Requesting retransfer from ${SLAVE_SERVER}..."
106: ssh ${SLAVE_USER}@${SLAVE_SERVER} "sudo /usr/sbin/rndc retransfer ${RNDC_DOMAIN}"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>