Server IP : 127.0.0.2 / Your IP : 3.129.128.179 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/resolvconf/ |
Upload File : |
#!/bin/bash # Need bash because we use ${foo//bar/baz} # # Example script illustrating how to write a dynamic BIND named # options file containing an up-to-date fowarders list. # # To use the dynamically generated file, include it from named.conf. # # This example was prepared for BIND version 8. For use with BIND 9 # the script should first be modified so that it generates only the # forwarders{} substatement, not the whole options{} statement. # Much safer. See http://bugs.debian.org/483098 for the request that # such a file be included in the bind9 package. # # Resolvconf may run this script even if named is not running. # If a bind package is installed then we go ahead and update # the named configuration in case named is started later. # # Assumption: On entry, PWD contains the resolv.conf-type files. # # Written by Thomas Hood <jdthood@gmail.com> # # Licensed under the GNU GPL. See /usr/share/doc/resolvconf/copyright. set -e PATH=/sbin:/bin [ -x /usr/sbin/named ] || exit 0 [ -x /lib/resolvconf/list-records ] || exit 1 [ -f /etc/bind/named.conf.options ] || exit 0 # Defaults NAMED_RUN_DIR=/var/run/bind # Defaults overrides [ -r /etc/default/resolvconf ] && . /etc/default/resolvconf [ "$NAMED_RUN_DIR" ] || exit 0 [ -d "$NAMED_RUN_DIR" ] || mkdir --parents --mode=0755 "$NAMED_RUN_DIR" DYNAMIC_OPTS_FILE=named.options # Stores arguments (minus duplicates) in RSLT, separated by spaces # Doesn't work properly if an argument itself contains whitespace uniquify() { RSLT="" while [ "$1" ] ; do for E in $RSLT ; do [ "$1" = "$E" ] && { shift ; continue 2 ; } done RSLT="${RSLT:+$RSLT }$1" shift done } # Get list of records, excluding all those for the loopback interface RSLVCNFFILES="$(/lib/resolvconf/list-records | sed -e '/^lo$/d' -e '/^lo[.]/d')" ### Compile semicolon-separated list nameservers ### NMSRVRS="" if [ "$RSLVCNFFILES" ] ; then uniquify $(sed -n -e 's/^[[:space:]]*nameserver[[:space:]]\+//p' $RSLVCNFFILES) [ "$RSLT" ] && NMSRVRS="${RSLT// /; }; " fi # N.B.: After changing directory we no longer have access to the resolv.conf-type files cd "$NAMED_RUN_DIR" TMP_FILE="${DYNAMIC_OPTS_FILE}_new.$$" clean_up() { rm -f "${NAMED_RUN_DIR}/$TMP_FILE" ; } trap clean_up EXIT rm -f "$TMP_FILE" # We want to process named.conf.options such that the new forwarders # statement gets inserted but nothing else is corrupted in the process. # We want to do this using only commands available in /bin and /sbin, i.e., # with sh, sed and/or grep. Sed can be made to work -- with difficulty. # Even so, the following script does not work properly if comment # delimiters of one style of commenting appear inside another kind of # comment. (Named supports C, C++ and sh comment styles.) # # First, we do our best to delete all and only comments. # Then we delete any existing forwarders statement, taking into account # the fact that these can span several lines. Then we add a new # forwarders statement at the beginning of the options statement. # echo "// named.conf fragment automatically generated by $0" > "$TMP_FILE" echo "// DO NOT EDIT THIS FILE. Instead edit /etc/bind/named.conf.options ." >> "$TMP_FILE" cat /etc/bind/named.conf.options \ | sed -e 's%\*/%\*/\ %g' \ | sed -e '\%/\*%{ :x ; s%\*/%\*/% ; t y ; N ; b x ; :y ; s%/\*.*\*/%% ; }' \ | sed -e 's%//.*%%' -e 's%#.*%%' \ | sed -e '/forwarders/{ :x ; s/}/}/ ; t y ; N ; b x ; :y ; s/}[[:space:]]*;/};/ ; t z ; N ; b y ; :z s/forwarders[[:space:]]*{[^}]*};// ; }' \ | sed -e 's/options[[:space:]]*{/options {\ forwarders { '"${NMSRVRS}"'};/' | sed -e '/^[[:space:]]*$/{ d ; }' \ >> "$TMP_FILE" chown root:bind "$TMP_FILE" # Reload named unless we know its options haven't changed if [ -x /usr/bin/diff ] && [ -f "$DYNAMIC_OPTS_FILE" ] && /usr/bin/diff -q "$DYNAMIC_OPTS_FILE" "$TMP_FILE" > /dev/null ; then # No change rm -f "$TMP_FILE" else mv -f "$TMP_FILE" "$DYNAMIC_OPTS_FILE" [ -x /etc/init.d/bind9 ] && /etc/init.d/bind9 reload > /dev/null 2>&1 || : fi