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>