home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 March / PCWELT_3_2006.ISO / base / 05_common.mo / usr / sbin / named-bootconf.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  2005-05-01  |  7.1 KB  |  309 lines

  1. #!/bin/sh
  2. #
  3. # Portions Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC")
  4. # Portions Copyright (C) 1999-2001  Internet Software Consortium.
  5. #
  6. # Permission to use, copy, modify, and distribute this software for any
  7. # purpose with or without fee is hereby granted, provided that the above
  8. # copyright notice and this permission notice appear in all copies.
  9. #
  10. # THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  11. # REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  12. # AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  13. # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  14. # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  15. # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. # PERFORMANCE OF THIS SOFTWARE.
  17.  
  18. # $Id: named-bootconf.sh,v 1.7.206.1 2004/03/06 13:16:11 marka Exp $
  19.  
  20. # $NetBSD: named-bootconf.sh,v 1.5 1998/12/15 01:00:53 tron Exp $
  21. #
  22. # Copyright (c) 1995, 1998 The NetBSD Foundation, Inc.
  23. # All rights reserved.
  24. #
  25. # This code is derived from software contributed to The NetBSD Foundation
  26. # by Matthias Scheler.
  27. #
  28. # Redistribution and use in source and binary forms, with or without
  29. # modification, are permitted provided that the following conditions
  30. # are met:
  31. # 1. Redistributions of source code must retain the above copyright
  32. #    notice, this list of conditions and the following disclaimer.
  33. # 2. Redistributions in binary form must reproduce the above copyright
  34. #    notice, this list of conditions and the following disclaimer in the
  35. #    documentation and/or other materials provided with the distribution.
  36. # 3. All advertising materials mentioning features or use of this software
  37. #    must display the following acknowledgement:
  38. #    This product includes software developed by the NetBSD
  39. #    Foundation, Inc. and its contributors.
  40. # 4. Neither the name of The NetBSD Foundation nor the names of its
  41. #    contributors may be used to endorse or promote products derived
  42. #    from this software without specific prior written permission.
  43. #
  44. # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
  45. # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  46. # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  47. # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
  48. # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  49. # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  50. # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  51. # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  52. # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  53. # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  54. # POSSIBILITY OF SUCH DAMAGE.
  55.  
  56. if [ ${OPTIONFILE-X} = X ]; then
  57.     OPTIONFILE=/tmp/.options.`date +%s`.$$
  58.     ZONEFILE=/tmp/.zones.`date +%s`.$$
  59.     COMMENTFILE=/tmp/.comments.`date +%s`.$$
  60.     export OPTIONFILE ZONEFILE COMMENTFILE
  61.     touch $OPTIONFILE $ZONEFILE $COMMENTFILE
  62.     DUMP=1
  63. else
  64.     DUMP=0
  65. fi
  66.  
  67. while read CMD ARGS; do
  68.     class=
  69.     CMD=`echo "${CMD}" | tr '[A-Z]' '[a-z]'`
  70.     case $CMD in
  71.     \; )
  72.         echo \# $ARGS >>$COMMENTFILE
  73.         ;;
  74.     cache )
  75.         set - X $ARGS
  76.         shift
  77.         if [ $# -eq 2 ]; then
  78.             (echo ""
  79.             cat $COMMENTFILE
  80.             echo "zone \"$1\" {"
  81.             echo "    type hint;"
  82.             echo "    file \"$2\";"
  83.             echo "};") >>$ZONEFILE
  84.             rm -f $COMMENTFILE
  85.             touch $COMMENTFILE
  86.         fi
  87.         ;;
  88.     directory )
  89.         set - X $ARGS
  90.         shift
  91.         if [ $# -eq 1 ]; then
  92.             (cat $COMMENTFILE
  93.             echo "    directory \"$1\";") >>$OPTIONFILE
  94.             rm -f $COMMENTFILE
  95.             touch $COMMENTFILE
  96.  
  97.             DIRECTORY=$1
  98.             export DIRECTORY
  99.         fi
  100.         ;;
  101.     forwarders )
  102.         (cat $COMMENTFILE
  103.         echo "    forwarders {"
  104.         for ARG in $ARGS; do
  105.             echo "        $ARG;"
  106.         done
  107.         echo "    };") >>$OPTIONFILE
  108.         rm -f $COMMENTFILE
  109.         touch $COMMENTFILE
  110.         ;;
  111.     include )
  112.         if [ "$ARGS" != "" ]; then
  113.             (cd ${DIRECTORY-.}; cat $ARGS) | $0
  114.         fi
  115.         ;;
  116.     limit )
  117.         ARGS=`echo "${ARGS}" | tr '[A-Z]' '[a-z]'`
  118.         set - X $ARGS
  119.         shift
  120.         if [ $# -eq 2 ]; then
  121.             cat $COMMENTFILE >>$OPTIONFILE
  122.             case $1 in
  123.             datasize | files | transfers-in | transfers-per-ns )
  124.                 echo "    $1 $2;" >>$OPTIONFILE
  125.                 ;;
  126.             esac
  127.             rm -f $COMMENTFILE
  128.             touch $COMMENTFILE
  129.         fi
  130.         ;;
  131.     options )
  132.         ARGS=`echo "${ARGS}" | tr '[A-Z]' '[a-z]'`
  133.         cat $COMMENTFILE >>$OPTIONFILE
  134.         for ARG in $ARGS; do
  135.             case $ARG in
  136.             fake-iquery )
  137.                 echo "    fake-iquery yes;" >>$OPTIONFILE
  138.                 ;;
  139.             forward-only )
  140.                 echo "    forward only;" >>$OPTIONFILE
  141.                 ;;
  142.             no-fetch-glue )
  143.                 echo "    fetch-glue no;" >>$OPTIONFILE
  144.                 ;;
  145.             no-recursion )
  146.                 echo "    recursion no;" >>$OPTIONFILE
  147.                 ;;
  148.             esac
  149.         done
  150.         rm -f $COMMENTFILE
  151.         touch $COMMENTFILE
  152.         ;;
  153.     primary|primary/* )
  154.         case $CMD in
  155.         primary/chaos )
  156.             class="chaos "
  157.             ;;
  158.         primary/hs )
  159.             class="hesiod "
  160.             ;;
  161.         esac
  162.         set - X $ARGS
  163.         shift
  164.         if [ $# -eq 2 ]; then
  165.             (echo ""
  166.             cat $COMMENTFILE
  167.             echo "zone \"$1\" ${class}{"
  168.             echo "    type master;"
  169.             echo "    file \"$2\";"
  170.             echo "};") >>$ZONEFILE
  171.             rm -f $COMMENTFILE
  172.             touch $COMMENTFILE
  173.         fi
  174.         ;;
  175.     secondary|secondary/* )
  176.         case $CMD in
  177.         secondary/chaos )
  178.             class="chaos "
  179.             ;;
  180.         secondary/hs )
  181.             class="hesiod "
  182.             ;;
  183.         esac
  184.         set - X $ARGS
  185.         shift
  186.         if [ $# -gt 2 ]; then
  187.             ZONE=$1
  188.             shift
  189.             PRIMARIES=$1
  190.             while [ $# -gt 2 ]; do
  191.                 shift
  192.                 PRIMARIES="$PRIMARIES $1"
  193.             done
  194.             (echo ""
  195.             cat $COMMENTFILE
  196.             echo "zone \"$ZONE\" ${class}{"
  197.             echo "    type slave;"
  198.             echo "    file \"$2\";"
  199.             echo "    masters {"
  200.             for PRIMARY in $PRIMARIES; do
  201.                 echo "        $PRIMARY;"
  202.             done
  203.             echo "    };"
  204.             echo "};") >>$ZONEFILE
  205.             rm -f $COMMENTFILE
  206.             touch $COMMENTFILE
  207.         fi
  208.         ;;
  209.     stub|stub/* )
  210.         case $CMD in
  211.         stub/chaos )
  212.             class="chaos "
  213.             ;;
  214.         stub/hs )
  215.             class="hesiod "
  216.             ;;
  217.         esac
  218.         set - X $ARGS
  219.         shift
  220.         if [ $# -gt 2 ]; then
  221.             ZONE=$1
  222.             shift
  223.             PRIMARIES=$1
  224.             while [ $# -gt 2 ]; do
  225.                 shift
  226.                 PRIMARIES="$PRIMARIES $1"
  227.             done
  228.             (echo ""
  229.             cat $COMMENTFILE
  230.             echo "zone \"$ZONE\" ${class}{"
  231.             echo "    type stub;"
  232.             echo "    file \"$2\";"
  233.             echo "    masters {"
  234.             for PRIMARY in $PRIMARIES; do
  235.                 echo "        $PRIMARY;"
  236.             done
  237.             echo "    };"
  238.             echo "};") >>$ZONEFILE
  239.             rm -f $COMMENTFILE
  240.             touch $COMMENTFILE
  241.         fi
  242.         ;;
  243.     slave )
  244.         cat $COMMENTFILE >>$OPTIONFILE
  245.         echo "    forward only;" >>$OPTIONFILE
  246.         rm -f $COMMENTFILE
  247.         touch $COMMENTFILE
  248.         ;;
  249.     sortlist )
  250.         (cat $COMMENTFILE
  251.         echo "    topology {"
  252.         for ARG in $ARGS; do
  253.             case $ARG in
  254.             *.0.0.0 )
  255.                 echo "        $ARG/8;"
  256.                 ;;
  257.             *.0.0 )
  258.                 echo "        $ARG/16;"
  259.                 ;;
  260.             *.0 )
  261.                 echo "        $ARG/24;"
  262.                 ;;
  263.             * )
  264.                 echo "        $ARG;"
  265.                 ;;
  266.             esac
  267.         done
  268.         echo "    };") >>$OPTIONFILE
  269.         rm -f $COMMENTFILE
  270.         touch $COMMENTFILE
  271.         ;;
  272.     tcplist | xfrnets )
  273.         (cat $COMMENTFILE
  274.         echo "    allow-transfer {"
  275.         for ARG in $ARGS; do
  276.             case $ARG in
  277.             *.0.0.0 )
  278.                 echo "        $ARG/8;"
  279.                 ;;
  280.             *.0.0 )
  281.                 echo "        $ARG/16;"
  282.                 ;;
  283.             *.0 )
  284.                 echo "        $ARG/24;"
  285.                 ;;
  286.             * )
  287.                 echo "        $ARG;"
  288.                 ;;
  289.             esac
  290.         done
  291.         echo "    };") >>$OPTIONFILE
  292.         rm -f $COMMENTFILE
  293.         touch $COMMENTFILE
  294.         ;;
  295.     esac
  296. done
  297.  
  298. if [ $DUMP -eq 1 ]; then
  299.     echo ""
  300.     echo "options {"
  301.     cat $OPTIONFILE
  302.     echo "};"
  303.     cat $ZONEFILE $COMMENTFILE
  304.  
  305.     rm -f $OPTIONFILE $ZONEFILE $COMMENTFILE
  306. fi
  307.  
  308. exit 0
  309.