Add script 'create_zone_file.sh'.
This commit is contained in:
parent
a47334975c
commit
2c9250fd53
80
conf/create_zone_file.conf.sample
Normal file
80
conf/create_zone_file.conf.sample
Normal file
@ -0,0 +1,80 @@
|
||||
# ------------------------------------------------------
|
||||
# - Parameter Settings for script 'create_zone_file.sh'.
|
||||
# ------------------------------------------------------
|
||||
|
||||
# - ZONE_FILE_MASTER_DIR
|
||||
# -
|
||||
# - Directory where all the zonefile love
|
||||
# -
|
||||
# - Defaults to:
|
||||
# - ZONE_FILE_MASTER_DIR=/etc/bind/master
|
||||
# -
|
||||
#ZONE_FILE_MASTER_DIR
|
||||
|
||||
|
||||
# - NS_HOST_1
|
||||
#
|
||||
# - First Nameserver
|
||||
# -
|
||||
# - Example:
|
||||
# - NS_HOST_1="a.ns.oopen.de"
|
||||
# -
|
||||
# - This option is required and has no default value. But
|
||||
# - option can also set using commandline parameter '--ns-host-1''
|
||||
# -
|
||||
#NS_HOST_1=""
|
||||
|
||||
|
||||
# - NS_HOST_2
|
||||
#
|
||||
# - Second Nameserver
|
||||
# -
|
||||
# - Example:
|
||||
# - NS_HOST_2="b.ns.oopen.de"
|
||||
# -
|
||||
# - This option is required and has no default value. But
|
||||
# - option can also set using commandline parameter '--ns-host-2'
|
||||
# -
|
||||
#NS_HOST_2=""
|
||||
|
||||
|
||||
# - MX_HOST_1
|
||||
# -
|
||||
# - Example:
|
||||
# - MX_HOST_1="a.mx.oopen.de"
|
||||
# -
|
||||
# - This option is required and has no default value. But
|
||||
# - option can also set using commandline parameter '--mx-host-1'
|
||||
# -
|
||||
#MX_HOST_1=""
|
||||
|
||||
|
||||
# - MX_HOST_2
|
||||
# -
|
||||
# - Example:
|
||||
# - MX_HOST_1="b.mx.oopen.de"
|
||||
# -
|
||||
# - This option is optinal and has no default value. But
|
||||
# - option can also set by using commandline parameter '--mx-host-2'
|
||||
# -
|
||||
#MX_HOST_2=""
|
||||
|
||||
|
||||
# - WEB_SERVER_IP_4
|
||||
# -
|
||||
# - The webservers IPv4 Address
|
||||
# -
|
||||
# - Example:
|
||||
# - WEB_SERVER_IP_4="162.55.82.78"
|
||||
# -
|
||||
#WEB_SERVER_IP_4=""
|
||||
|
||||
|
||||
# - WEB_SERVER_IP_6
|
||||
# -
|
||||
# - The webservers IPv6 Address
|
||||
# -
|
||||
# - Example:
|
||||
# - WEB_SERVER_IP_6="2a01:4f8:271:1266::78"
|
||||
# -
|
||||
#WEB_SERVER_IP_6=""
|
761
create_zone_file.sh
Executable file
761
create_zone_file.sh
Executable file
@ -0,0 +1,761 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CUR_IFS=$IFS
|
||||
|
||||
script_name="$(basename $(realpath $0))"
|
||||
script_dir="$(dirname $(realpath $0))"
|
||||
|
||||
conf_dir="${script_dir}/conf"
|
||||
conf_file="${conf_dir}/${script_name%%.*}.conf"
|
||||
|
||||
|
||||
log_file="$(mktemp)"
|
||||
|
||||
backup_date=$(date +%Y-%m-%d-%H%M)
|
||||
|
||||
|
||||
|
||||
# =============
|
||||
# --- Some functions
|
||||
# =============
|
||||
|
||||
usage() {
|
||||
|
||||
[[ -n "$1" ]] && error "$1"
|
||||
|
||||
[[ $terminal ]] && echo -e "
|
||||
|
||||
\033[1mUsage:\033[m
|
||||
|
||||
\033[1m$(basename $0)\033[m [-a|--enable-email] [-d|--domain <domain>] [-h|--help] [--mx-host-1 <MX Host 1>]
|
||||
[--mx-host-1 <MX Host 2>] [--ns-host-1 <Nameserver-1>] [--ns-host-2 <Nameserver-2>]
|
||||
[-q|--quiet ] [--webserver-ipv4 <Webserver_IPv4>] [--webserver-ipv6 <Webserver_IPv6>]
|
||||
[-a|--disable-email]
|
||||
|
||||
|
||||
\033[1mDescription\033[m
|
||||
|
||||
Script a new zone file for local bind nameservice.
|
||||
|
||||
If running in a terminal and NOT '-q' is used, script acts in
|
||||
interactive mode. You will then be asked to confirm or override
|
||||
the default setting.
|
||||
|
||||
Script uses defaults by reading from file
|
||||
${conf_file}.
|
||||
|
||||
It is also possible to specify command line parameters. These parameters
|
||||
take precedence over those from the configuration file.
|
||||
|
||||
You will be asked to confirm or override the default setting.
|
||||
|
||||
|
||||
\033[1mOptions\033[m
|
||||
|
||||
-a | --enable-email
|
||||
creates zone file with MX Record. This is the default
|
||||
|
||||
-d | --domain <domain>
|
||||
The name of the domain, for which is a zonefile should be created.
|
||||
|
||||
-h | --help
|
||||
Prints this help.
|
||||
|
||||
--mx-host-1 <MX Host 1>
|
||||
Hostname for the (first) MX Record.
|
||||
Defaults to: \033[1m${MX_HOST_1}\033[m
|
||||
|
||||
--mx-host-2 <MX Host 2>
|
||||
Hostname for a further (second) MX Record."
|
||||
|
||||
if [[ -n "${MX_HOST_2}" ]] ; then
|
||||
echo -e " Defaults to: \033[1m${MX_HOST_2}\033[m"
|
||||
else
|
||||
echo " Default is only one MX Record (MX Hosst)."
|
||||
fi
|
||||
echo -e "
|
||||
|
||||
--ns-host-1 <Nameserver 1>
|
||||
Hostname of the master DNS Server.
|
||||
Defaults to: \033[1m${NS_HOST_1}\033[m
|
||||
|
||||
--ns-host-2 <Nameserver 2>
|
||||
Hostname of the second (slave) DNS Server.
|
||||
Defaults to: \033[1m${NS_HOST_2}\033[m
|
||||
|
||||
-q | --quite
|
||||
Be quiet. If '-q' is used, also a domain must be given using
|
||||
parameter '-d'.
|
||||
|
||||
--webserver-ipv4 <Webservers IPv4 Address>
|
||||
Webservers IPv4 Address."
|
||||
|
||||
if [[ -n "${WEB_SERVER_IP_4}" ]] ; then
|
||||
echo -e " Defaults to: \033[1m${WEB_SERVER_IP_4}\033[m"
|
||||
fi
|
||||
echo -e "
|
||||
|
||||
--webserver-ipv6 <Webservers IPv6 Address>
|
||||
Webservers IPv6 Address."
|
||||
|
||||
if [[ -n "${WEB_SERVER_IP_6}" ]] ; then
|
||||
echo -e " Defaults to: \033[1m${WEB_SERVER_IP_6}\033[m"
|
||||
fi
|
||||
echo -e "
|
||||
|
||||
-x | --disable-email
|
||||
creates zone file without MX Record.
|
||||
|
||||
|
||||
\033[1mFiles\033[m
|
||||
|
||||
$conf_file: Configuration file
|
||||
|
||||
|
||||
\033[1mExample:\033[m
|
||||
|
||||
Create zone file for domain \033[1mjanine-wissler.de\033[m with E-Mail support (MX Record).
|
||||
Interactive mod: ask for further settings
|
||||
|
||||
|
||||
\033[1m$(basename $0) -d janine-wissler.de -a\033[m
|
||||
|
||||
|
||||
Create zone file for domain \033[1mjaninewissler.de\033[m without E-Mail support (MX Record).
|
||||
Non-interactive mode (-q): Don't ask for further settings, use the default ones.
|
||||
|
||||
\033[1m$(basename $0) -d janinewissler.de -x -q\033[m
|
||||
|
||||
|
||||
Complete interactive mode. All values will be ask for.
|
||||
|
||||
\033[1m$(basename $0)\033[m
|
||||
|
||||
|
||||
"
|
||||
clean_up 1
|
||||
|
||||
}
|
||||
|
||||
|
||||
clean_up() {
|
||||
|
||||
# Perform program exit housekeeping
|
||||
rm -f $log_file
|
||||
blank_line
|
||||
exit $1
|
||||
}
|
||||
echononl(){
|
||||
if $terminal ; then
|
||||
echo X\\c > /tmp/shprompt$$
|
||||
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
|
||||
echo -e -n "$*\\c" 1>&2
|
||||
else
|
||||
echo -e -n "$*" 1>&2
|
||||
fi
|
||||
rm /tmp/shprompt$$
|
||||
fi
|
||||
}
|
||||
echo_done() {
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[32mdone\033[m ]"
|
||||
fi
|
||||
}
|
||||
echo_ok() {
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[32mok\033[m ]"
|
||||
fi
|
||||
}
|
||||
echo_warning() {
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[33m\033[1mwarn\033[m ]"
|
||||
fi
|
||||
}
|
||||
echo_failed(){
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
|
||||
fi
|
||||
}
|
||||
echo_skipped() {
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[37mskipped\033[m ]"
|
||||
fi
|
||||
}
|
||||
fatal (){
|
||||
echo ""
|
||||
echo ""
|
||||
if $terminal ; then
|
||||
echo -e "\t[ \033[31m\033[1mFatal\033[m ]: \033[37m\033[1m$*\033[m"
|
||||
echo ""
|
||||
echo -e "\t\033[31m\033[1m Script will be interrupted..\033[m\033[m"
|
||||
else
|
||||
echo ""
|
||||
echo " [ Fatal ]: $*"
|
||||
echo " Script will be interrupted.."
|
||||
echo ""
|
||||
fi
|
||||
clean_up 1
|
||||
}
|
||||
|
||||
error(){
|
||||
echo ""
|
||||
if $terminal ; then
|
||||
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
|
||||
else
|
||||
echo "Error: $*"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
warn (){
|
||||
echo ""
|
||||
if $terminal ; then
|
||||
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
|
||||
else
|
||||
echo "Warning: $*"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
info (){
|
||||
if $terminal ; then
|
||||
echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*"
|
||||
fi
|
||||
}
|
||||
|
||||
## - Check if a given array (parameter 2) contains a given string (parameter 1)
|
||||
## -
|
||||
containsElement () {
|
||||
local e
|
||||
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
|
||||
return 1
|
||||
}
|
||||
|
||||
is_number() {
|
||||
|
||||
return $(test ! -z "${1##*[!0-9]*}" > /dev/null 2>&1);
|
||||
|
||||
# - also possible
|
||||
# -
|
||||
#[[ ! -z "${1##*[!0-9]*}" ]] && return 0 || return 1
|
||||
#return $([[ ! -z "${1##*[!0-9]*}" ]])
|
||||
}
|
||||
|
||||
trim() {
|
||||
local var="$*"
|
||||
var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters
|
||||
var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters
|
||||
echo -n "$var"
|
||||
}
|
||||
|
||||
blank_line() {
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
# ----------
|
||||
# - Jobhandling
|
||||
# ----------
|
||||
|
||||
# - Run 'clean_up' for signals SIGHUP SIGINT SIGTERM
|
||||
# -
|
||||
trap clean_up SIGHUP SIGINT SIGTERM
|
||||
|
||||
|
||||
|
||||
# =============
|
||||
# --- Some checks
|
||||
# =============
|
||||
|
||||
# - Running in a terminal?
|
||||
# -
|
||||
if [[ -t 1 ]] ; then
|
||||
terminal=true
|
||||
else
|
||||
terminal=false
|
||||
fi
|
||||
|
||||
|
||||
DEFAULT_ENABLE_E_MAILS=yes
|
||||
|
||||
# - Read Configuration
|
||||
# -
|
||||
blank_line
|
||||
echononl " Include Configuration file.."
|
||||
if [[ ! -f $conf_file ]]; then
|
||||
echo_failed
|
||||
fatal "Missing configuration file '$conf_file'"
|
||||
else
|
||||
source $conf_file
|
||||
echo_ok
|
||||
fi
|
||||
blank_line
|
||||
|
||||
|
||||
TEMP=$(getopt -o ad:hqx --long domain:,ns-host-1:,ns-host-2:,mx-host-1:,mx-host-2:,--webserver-ipv4:,--webserver-ipv6: -n "$script_name" -- "$@")
|
||||
|
||||
if [ $? != 0 ] ;
|
||||
then fatal "Terminating..." >&2
|
||||
fi
|
||||
|
||||
# Note the quotes around '$TEMP': they are essential!
|
||||
eval set -- "$TEMP"
|
||||
while true; do
|
||||
|
||||
case "$1" in
|
||||
-a | --enable-email ) ENABLE_E_MAILS=true; shift ;;
|
||||
-h | --help ) usage ;;
|
||||
-d | --domain ) DOMAIN="$2"; shift 2 ;;
|
||||
-q | --qiet ) terminal=false; shift ;;
|
||||
--mx-host-1 ) MX_HOST_1="$2"; shift 2 ;;
|
||||
--mx-host-2 ) MX_HOST_2="$2"; shift 2 ;;
|
||||
--ns-host-1 ) NS_HOST_1="$2"; shift 2 ;;
|
||||
--ns-host-2 ) NS_HOST_2="$2"; shift 2 ;;
|
||||
--webserver-ipv4 ) WEB_SERVER_IP_4="$2"; shift 2 ;;
|
||||
--webserver-ipv6 ) WEB_SERVER_IP_6="$2"; shift 2 ;;
|
||||
-x | --disable-email ) ENABLE_E_MAILS=false; shift ;;
|
||||
-- ) shift; break ;;
|
||||
* ) break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -z "$ZONE_FILE_MASTER_DIR" ]] && ZONE_FILE_MASTER_DIR=/etc/bind/master
|
||||
|
||||
[[ -n "${NS_HOST_1}" ]] && DEFAULT_NS_HOST_1="${NS_HOST_1}"
|
||||
[[ -n "${NS_HOST_2}" ]] && DEFAULT_NS_HOST_2="${NS_HOST_2}"
|
||||
|
||||
[[ -n "${MX_HOST_1}" ]] && DEFAULT_MX_HOST_1="${MX_HOST_1}"
|
||||
if [[ -n "${MX_HOST_2}" ]]; then
|
||||
DEFAULT_MX_HOST_2="${MX_HOST_2}"
|
||||
else
|
||||
DEFAULT_MX_HOST_2="None"
|
||||
fi
|
||||
|
||||
[[ -n "${WEB_SERVER_IP_4}" ]] && DEFAULT_WEB_SERVER_IP_4="${WEB_SERVER_IP_4}"
|
||||
[[ -n "${WEB_SERVER_IP_6}" ]] && DEFAULT_WEB_SERVER_IP_6="${WEB_SERVER_IP_6}"
|
||||
|
||||
|
||||
|
||||
if $terminal ; then
|
||||
clear
|
||||
fi
|
||||
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
echo -e "\033[32m-----\033[m"
|
||||
echo "Create Zone file for a given domain"
|
||||
echo -e "\033[32m-----\033[m"
|
||||
fi
|
||||
|
||||
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
if [[ -z "$DOMAIN" ]]; then
|
||||
_OK=false
|
||||
echo ""
|
||||
echo "Insert Domain for which a zone file should be created?"
|
||||
echo ""
|
||||
while [ "X$DOMAIN" = "X" ]
|
||||
do
|
||||
echononl " Domain for which a zone file is to be created: "
|
||||
read DOMAIN
|
||||
if [ "X$DOMAIN" = "X" ]; then
|
||||
echo ""
|
||||
echo -e "Eingabe erforderlich"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ -f "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone" ]]; then
|
||||
warn "Zonefile for domain \033[1m${DOMAIN}\033[m already exists."
|
||||
|
||||
echo
|
||||
echononl "Continue with overwriting zone file? [\033[1myes/no\033[m]: "
|
||||
read OK
|
||||
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||
echononl "\033[33mWrong entry!\033[m [\033[1myes/no\033[m]: "
|
||||
read OK
|
||||
done
|
||||
[[ "${OK,,}" = "yes" ]] || fatal "Canceled by user input."
|
||||
fi
|
||||
|
||||
NS_HOST_1=
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo " Give Hostname for the first (Master) Nameserver"
|
||||
echo ""
|
||||
if [[ -n "$DEFAULT_NS_HOST_1" ]]; then
|
||||
echo ""
|
||||
echo -e " Type \033[33m<return>\033[m to accept the default."
|
||||
echo ""
|
||||
echo -en "First (Master) Nameserver [${DEFAULT_NS_HOST_1}]: "
|
||||
read NS_HOST_1
|
||||
if [[ -z "$(trim ${NS_HOST_1})" ]] ; then
|
||||
NS_HOST_1="${DEFAULT_NS_HOST_1}"
|
||||
fi
|
||||
else
|
||||
declare -i index=0
|
||||
while [[ -z "$(trim "${NS_HOST_1}")" ]]; do
|
||||
((index++))
|
||||
if [[ $index -lt 2 ]] ; then
|
||||
echo -en "First (master) Nameserver: "
|
||||
else
|
||||
echo ""
|
||||
echo -e " \033[33mA Master Nameserver is mandatiory!\033[m"
|
||||
echo ""
|
||||
echo -en "First (master) Nameserver: "
|
||||
fi
|
||||
read NS_HOST_1
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
NS_HOST_2=
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo " Give the Hostname for the second Nameserver"
|
||||
echo ""
|
||||
if [[ -n "$DEFAULT_NS_HOST_2" ]]; then
|
||||
echo ""
|
||||
echo -e " Type \033[33m<return>\033[m to accept the default."
|
||||
echo ""
|
||||
echo -en "Second Nameserver [${DEFAULT_NS_HOST_2}]: "
|
||||
read NS_HOST_2
|
||||
if [[ -z "$(trim ${NS_HOST_2})" ]] ; then
|
||||
NS_HOST_2="${DEFAULT_NS_HOST_2}"
|
||||
fi
|
||||
else
|
||||
declare -i index=0
|
||||
while [[ -z "$(trim "${NS_HOST_2}")" ]]; do
|
||||
((index++))
|
||||
if [[ $index -lt 2 ]] ; then
|
||||
echo -en "Second Nameserver: "
|
||||
else
|
||||
echo ""
|
||||
echo -e " \033[33mA Second Nameserver is mandatiory!\033[m"
|
||||
echo ""
|
||||
echo -en "Second Nameserver: "
|
||||
fi
|
||||
read NS_HOST_2
|
||||
done
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo " Should e-mails be activated for domain '$DOMAIN'? [yes/no]"
|
||||
echo ""
|
||||
echo -e " Type \033[33m<return>\033[m to accept the default."
|
||||
echo ""
|
||||
YES_NO=""
|
||||
if [[ -z "$ENABLE_E_MAILS" ]] ; then
|
||||
ENABLE_E_MAILS=false
|
||||
elif [[ "${ENABLE_E_MAILS,,}" = "false" ]] || [[ "${ENABLE_E_MAILS,,}" = "no" ]] ; then
|
||||
DEFAULT_ENABLE_E_MAILS="no"
|
||||
ENABLE_E_MAILS=false
|
||||
fi
|
||||
echononl "\033[1mAdd MX Record to zone file for domain '$DOMAIN'?\033[m [$DEFAULT_ENABLE_E_MAILS]: "
|
||||
read YES_NO
|
||||
if [[ -z "$(trim "$YES_NO")" ]]; then
|
||||
YES_NO="$DEFAULT_ENABLE_E_MAILS"
|
||||
fi
|
||||
while [[ "${YES_NO,,}" != "yes" ]] && [[ "${YES_NO,,}" != "no" ]] ; do
|
||||
echo -e " Wrong entry. try again.."
|
||||
echononl "\033[1mActivated for domain '$DOMAIN'?\033[m [yes/no]: "
|
||||
read YES_NO
|
||||
done
|
||||
[[ "${YES_NO,,}" = "yes" ]] && ENABLE_E_MAILS=true
|
||||
|
||||
|
||||
if $ENABLE_E_MAILS ; then
|
||||
|
||||
MX_HOST_1=
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo " Give Hostname for the first (Master) Mailserver"
|
||||
echo ""
|
||||
if [[ -n "$DEFAULT_MX_HOST_1" ]]; then
|
||||
echo ""
|
||||
echo -e " Type \033[33m<return>\033[m to accept the default."
|
||||
echo ""
|
||||
echo -en "First (Master) Mailserver [${DEFAULT_MX_HOST_1}]: "
|
||||
read MX_HOST_1
|
||||
if [[ -z "$(trim ${MX_HOST_1})" ]] ; then
|
||||
MX_HOST_1="${DEFAULT_MX_HOST_1}"
|
||||
fi
|
||||
else
|
||||
declare -i index=0
|
||||
while [[ -z "$(trim "${MX_HOST_1}")" ]]; do
|
||||
((index++))
|
||||
if [[ $index -lt 2 ]] ; then
|
||||
echo -en "First (master) Mailserver: "
|
||||
else
|
||||
echo ""
|
||||
echo -e " \033[33mA Master Mailserver is mandatiory!\033[m"
|
||||
echo ""
|
||||
echo -en "First (master) Mailserver: "
|
||||
fi
|
||||
read MX_HOST_1
|
||||
done
|
||||
fi
|
||||
|
||||
MX_HOST_2=
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo " Give the Hostname for the second Mailserver"
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e " Type \033[33mNone\033[m if no second Mailserver is present."
|
||||
echo -e " Type \033[33m<return>\033[m to accept the default."
|
||||
echo ""
|
||||
echo -en "Second Mailserver [${DEFAULT_MX_HOST_2}]: "
|
||||
read MX_HOST_2
|
||||
if [[ -z "$(trim ${MX_HOST_2})" ]] ; then
|
||||
MX_HOST_2="${DEFAULT_MX_HOST_2}"
|
||||
fi
|
||||
[[ "$(trim ${MX_HOST_2,,})" = "none" ]] && MX_HOST_2=""
|
||||
|
||||
fi
|
||||
|
||||
|
||||
WEB_SERVER_IP_4=
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo " Give IPv4 Address og the Webserver"
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e " Type \033[33mNone\033[m if no IPv4 Adress of the Webserver is present."
|
||||
if [[ -n "$DEFAULT_WEB_SERVER_IP_4" ]]; then
|
||||
echo -e " Type \033[33m<return>\033[m to accept the default."
|
||||
echo ""
|
||||
echo -en "Webservers IPv4 Address [${DEFAULT_WEB_SERVER_IP_4}]: "
|
||||
read WEB_SERVER_IP_4
|
||||
if [[ -z "$(trim ${WEB_SERVER_IP_4})" ]] ; then
|
||||
WEB_SERVER_IP_4="${DEFAULT_WEB_SERVER_IP_4}"
|
||||
fi
|
||||
else
|
||||
declare -i index=0
|
||||
while [[ -z "$(trim "${WEB_SERVER_IP_4}")" ]]; do
|
||||
((index++))
|
||||
if [[ $index -lt 2 ]] ; then
|
||||
echo -en "IPv4 Address of th Webserver: "
|
||||
else
|
||||
echo ""
|
||||
echo -e " \033[33mIf no IPv4 Address is present, type 'None'!\033[m"
|
||||
echo ""
|
||||
echo -en "IPv4 Address of th Webserver: : "
|
||||
fi
|
||||
read WEB_SERVER_IP_4
|
||||
done
|
||||
fi
|
||||
[[ "$(trim ${WEB_SERVER_IP_4,,})" = "none" ]] && WEB_SERVER_IP_4=""
|
||||
|
||||
WEB_SERVER_IP_6=
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo " Give IPv6 Address og the Webserver"
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e " Type \033[33mNone\033[m if no IPv6 Adress of the Webserver is present."
|
||||
if [[ -n "$DEFAULT_WEB_SERVER_IP_6" ]]; then
|
||||
echo -e " Type \033[33m<return>\033[m to accept the default."
|
||||
echo ""
|
||||
echo -en "Webservers IPv6 Address [${DEFAULT_WEB_SERVER_IP_6}]: "
|
||||
read WEB_SERVER_IP_6
|
||||
if [[ -z "$(trim ${WEB_SERVER_IP_6})" ]] ; then
|
||||
WEB_SERVER_IP_6="${DEFAULT_WEB_SERVER_IP_6}"
|
||||
fi
|
||||
else
|
||||
declare -i index=0
|
||||
while [[ -z "$(trim "${WEB_SERVER_IP_6}")" ]]; do
|
||||
((index++))
|
||||
if [[ $index -lt 2 ]] ; then
|
||||
echo -en "IPv6 Address of th Webserver: "
|
||||
else
|
||||
echo ""
|
||||
echo -e " \033[33mIf no IPv6 Address is present, type 'None'!\033[m"
|
||||
echo ""
|
||||
echo -en "IPv6 Address of th Webserver: : "
|
||||
fi
|
||||
read WEB_SERVER_IP_6
|
||||
done
|
||||
fi
|
||||
[[ "$(trim ${WEB_SERVER_IP_6,,})" = "none" ]] && WEB_SERVER_IP_6=""
|
||||
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e " \033[32m\033[1mParameter Summary:\033[m"
|
||||
echo ""
|
||||
|
||||
echo " New Domain........................: $DOMAIN"
|
||||
echo ""
|
||||
echo " Directory for master zone files...: $ZONE_FILE_MASTER_DIR"
|
||||
echo ""
|
||||
echo " First Nameserver..................: $NS_HOST_1"
|
||||
echo " Second Nameserver.................: $NS_HOST_2"
|
||||
echo ""
|
||||
if [[ -n "${WEB_SERVER_IP_4}" ]] ; then
|
||||
echo " IPv4 Address of the webserver.....: $WEB_SERVER_IP_4"
|
||||
else
|
||||
echo -e " IPv4 Address of the webserver.....: \033[33mNot present\033[m"
|
||||
fi
|
||||
if [[ -n "${WEB_SERVER_IP_6}" ]] ; then
|
||||
echo " IPv6 Address of the webserver.....: $WEB_SERVER_IP_6"
|
||||
else
|
||||
echo -e " IPv6 Address of the webserver.....: \033[33mNot present\033[m"
|
||||
fi
|
||||
echo ""
|
||||
echo " Add MX entry to zone file.........: $ENABLE_E_MAILS"
|
||||
if $ENABLE_E_MAILS ; then
|
||||
if [[ -n "$MX_HOST_2" ]] ; then
|
||||
echo " MX Hoste 1........................: $MX_HOST_1"
|
||||
echo " MX Hoste 2........................: $MX_HOST_2"
|
||||
else
|
||||
echo " MX Hoste..........................: $MX_HOST_1"
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
echo " Webserver's IPv4 address..........: $WEB_SERVER_IP_4"
|
||||
echo " Webserver's IPv6 address..........: $WEB_SERVER_IP_6"
|
||||
echo ""
|
||||
|
||||
echononl "Continue with this parameters? [\033[1myes/no\033[m]: "
|
||||
read OK
|
||||
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||
echononl "\033[33mWrong entry!\033[m [\033[1myes/no\033[m]: "
|
||||
read OK
|
||||
done
|
||||
[[ "${OK,,}" = "yes" ]] || fatal "Canceled by user input."
|
||||
|
||||
else
|
||||
|
||||
if [[ -z "$DOMAIN" ]] ; then
|
||||
fatal "No Domain was given."
|
||||
fi
|
||||
|
||||
if [[ -z "$NS_HOST_1" ]]; then
|
||||
if [[ -z "$NS_HOST_2" ]]; then
|
||||
fatal "No Nameserver was given. Both, firts and secind are madatory."
|
||||
else
|
||||
fatal "No first (master) nameserver was given"
|
||||
fi
|
||||
elif [[ -z "$NS_HOST_2" ]]; then
|
||||
fatal "No second nameserver was given!"
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
blank_line
|
||||
|
||||
echononl " Backup directory '${ZONE_FILE_MASTER_DIR}'.."
|
||||
if [[ -d ${ZONE_FILE_MASTER_DIR}.${backup_date} ]] ; then
|
||||
echo_skipped
|
||||
else
|
||||
cp -a "${ZONE_FILE_MASTER_DIR}" "${ZONE_FILE_MASTER_DIR}.${backup_date}" > $log_file 2>&1
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
fatal "$(cat $log_file)"
|
||||
fi
|
||||
fi
|
||||
|
||||
echononl " Write new zone file \033[1m${DOMAIN}.zone\033[m .."
|
||||
cat << EOF > "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone"
|
||||
; - domain: ${DOMAIN}
|
||||
; -
|
||||
\$TTL 43200
|
||||
@ 86400 IN SOA ${NS_HOST_1}. admin.warenform.net. (
|
||||
$(date +%Y%m%d01) ; serial
|
||||
14400 ; refresh
|
||||
3600 ; retry
|
||||
604800 ; expire
|
||||
86400 ; minimum
|
||||
)
|
||||
|
||||
;
|
||||
; NS Records
|
||||
;
|
||||
|
||||
@ IN NS ${NS_HOST_1}.
|
||||
@ IN NS ${NS_HOST_2}.
|
||||
EOF
|
||||
|
||||
if $ENABLE_E_MAILS ; then
|
||||
cat << EOF >> "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone"
|
||||
|
||||
;
|
||||
; MX Records
|
||||
;
|
||||
|
||||
@ IN MX 10 ${MX_HOST_1}.
|
||||
EOF
|
||||
|
||||
if [[ -n "$MX_HOST_2" ]] ; then
|
||||
cat << EOF >> "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone"
|
||||
@ IN MX 10 ${MX_HOST_2}.
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
|
||||
cat << EOF >> "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone"
|
||||
|
||||
;
|
||||
; IPv4 Hostaddresses
|
||||
;
|
||||
EOF
|
||||
if [[ -n "${WEB_SERVER_IP_4}" ]] ; then
|
||||
cat << EOF >> "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone"
|
||||
|
||||
@ IN A ${WEB_SERVER_IP_4}
|
||||
www IN A ${WEB_SERVER_IP_4}
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat << EOF >> "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone"
|
||||
|
||||
;
|
||||
; IPv6 Hostaddresses
|
||||
;
|
||||
EOF
|
||||
|
||||
if [[ -n "${WEB_SERVER_IP_6}" ]] ; then
|
||||
cat << EOF >> "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone"
|
||||
|
||||
@ IN AAAA ${WEB_SERVER_IP_6}
|
||||
www IN AAAA ${WEB_SERVER_IP_6}
|
||||
|
||||
EOF
|
||||
else
|
||||
cat << EOF >> "${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone"
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
||||
echo_done
|
||||
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
echo ""
|
||||
info "New Zone File '${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone' written."
|
||||
else
|
||||
echo ""
|
||||
echo " [ Info ]: New Zone File '${ZONE_FILE_MASTER_DIR}/${DOMAIN}.zone' written."
|
||||
echo ""
|
||||
fi
|
||||
|
||||
blank_line
|
||||
clean_up 0
|
Loading…
Reference in New Issue
Block a user