Server IP : 85.214.239.14 / Your IP : 3.147.78.249 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /sbin/ |
Upload File : |
#!/bin/bash set -e CONFDIR="${CONFDIR:-/etc/exim4}" DONOTRUN='true' UPEX4CT_outputfile="${CONFDIR}/exim4.conf.template" usage() { cat <<EOF $0 - Generate exim4 configuration file template Options: -n|--nobackup - Overwrite old template, do not take backup. -o|--output file - write output to file instead of ${UPEX4CT_outputfile} -h|--help - This message. -r|--run - Actually do something EOF } ## Parse commandline TEMP=$(getopt -n update-exim4.conf.template \ -l nobackup,output:,help,run -- \ +no:hr "$@") if test "$?" != 0; then echo "Terminating..." >&2 exit 1 fi eval set -- ${TEMP} while test "$1" != "--"; do case $1 in -h|--help) usage exit 0 ;; -o|--output) shift UPEX4CT_outputfile="$1" ;; -n|--nobackup) NOBACKUP=1 ;; -r|--run) DONOTRUN='false' ;; esac shift done shift # No non-option arguments allowed. if [ "$#" -ne 0 ]; then echo "No non option arguments ($@) allowed" >&2 usage >&2 exit 1 fi # run-parts emulation, stolen from Branden's /etc/X11/Xsession # Addition: Use file.rul instead if file if it exists. run_parts () { # reset LC_COLLATE unset LANG LC_COLLATE LC_ALL if [ -z "$1" ]; then errormessage "$0: internal run_parts called without an argument" fi if [ ! -d "$1" ]; then errormessage "$0: internal run_parts called, but $1 does not exist or is not a directory." fi for F in $(ls $1 | grep -v /.svn); do if expr "$F" : '[[:alnum:]_-]\+$' > /dev/null 2>&1; then if [ -f "$1/$F" ] ; then if [ -f "$1/${F}.rul" ] ; then echo "$1/${F}.rul" else echo "$1/$F" fi fi fi done; } # also from Branden errormessage () { # pretty-print messages of arbitrary length (no trailing newline) echo "$*" | fold -s -w ${COLUMNS:-80} >&2; } cat_parts() { if [ -z "$1" ]; then errormessage "$0: internal cat_parts called without an argument" fi if [ ! -d "$1" ]; then errormessage "$0: internal cat_parts called, but $1 does not exist or is not a directory." fi for file in $(run_parts $1); do echo "#####################################################" echo "### $file" echo "#####################################################" cat $file echo "#####################################################" echo "### end $file" echo "#####################################################" done } if [ "$DONOTRUN" = "true" ]; then errormessage "This program overwrites conffiles. Do not run unless you have consulted the manpage." >&2 echo "Terminating..." >&2 exit 1 fi if [ -e "${UPEX4CT_outputfile}" ] && [ -z "$NOBACKUP" ]; then if [ -e "${UPEX4CT_outputfile}.bak.$$" ]; then echo >&2 "ERR: ${UPEX4CT_outputfile}.bak.$$ already exists, aborting" exit 1 fi fi NEWTEMPLATE=$(mktemp) if [ -f "${UPEX4CT_outputfile}" ] ; then chmod --reference="${UPEX4CT_outputfile}" "$NEWTEMPLATE" else chmod 0644 "$NEWTEMPLATE" fi # generate .template. Ugly - better alternative? SAVEWD="$(pwd)" cd ${CONFDIR}/conf.d for i in main acl router transport retry rewrite auth ; do cat_parts $i done > "$NEWTEMPLATE" cd "$SAVEWD" if [ -e "${UPEX4CT_outputfile}" ] && [ -z "$NOBACKUP" ] ; then mv "${UPEX4CT_outputfile}" \ "${UPEX4CT_outputfile}.bak.$$" fi mv "$NEWTEMPLATE" "${UPEX4CT_outputfile}"