Annotation of embedaddon/miniupnpd/genconfig.sh, revision 1.1

1.1     ! misho       1: #! /bin/sh
        !             2: # $Id: genconfig.sh,v 1.39 2010/09/21 15:36:12 nanard Exp $
        !             3: # miniupnp daemon
        !             4: # http://miniupnp.free.fr or http://miniupnp.tuxfamily.org/
        !             5: # (c) 2006-2010 Thomas Bernard
        !             6: # This software is subject to the conditions detailed in the
        !             7: # LICENCE file provided within the distribution
        !             8: 
        !             9: RM="rm -f"
        !            10: CONFIGFILE="config.h"
        !            11: CONFIGMACRO="__CONFIG_H__"
        !            12: 
        !            13: # version reported in XML descriptions
        !            14: #UPNP_VERSION=20070827
        !            15: UPNP_VERSION=`date +"%Y%m%d"`
        !            16: # Facility to syslog
        !            17: LOG_MINIUPNPD="LOG_DAEMON"
        !            18: 
        !            19: # detecting the OS name and version
        !            20: OS_NAME=`uname -s`
        !            21: OS_VERSION=`uname -r`
        !            22: 
        !            23: # pfSense special case
        !            24: if [ -f /etc/platform ]; then
        !            25:        if [ `cat /etc/platform` = "pfSense" ]; then
        !            26:                OS_NAME=pfSense
        !            27:                OS_VERSION=`cat /etc/version`
        !            28:        fi
        !            29: fi
        !            30: 
        !            31: ${RM} ${CONFIGFILE}
        !            32: 
        !            33: echo "/* MiniUPnP Project" >> ${CONFIGFILE}
        !            34: echo " * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/" >> ${CONFIGFILE}
        !            35: echo " * (c) 2006-2010 Thomas Bernard" >> ${CONFIGFILE}
        !            36: echo " * generated by $0 on `date` */" >> ${CONFIGFILE}
        !            37: echo "#ifndef $CONFIGMACRO" >> ${CONFIGFILE}
        !            38: echo "#define $CONFIGMACRO" >> ${CONFIGFILE}
        !            39: echo "" >> ${CONFIGFILE}
        !            40: echo "#include <inttypes.h>" >> ${CONFIGFILE}
        !            41: echo "" >> ${CONFIGFILE}
        !            42: echo "#define UPNP_VERSION     \"$UPNP_VERSION\"" >> ${CONFIGFILE}
        !            43: 
        !            44: # OS Specific stuff
        !            45: case $OS_NAME in
        !            46:        OpenBSD)
        !            47:                MAJORVER=`echo $OS_VERSION | cut -d. -f1`
        !            48:                MINORVER=`echo $OS_VERSION | cut -d. -f2`
        !            49:                #echo "OpenBSD majorversion=$MAJORVER minorversion=$MINORVER"
        !            50:                # rtableid was introduced in OpenBSD 4.0
        !            51:                if [ $MAJORVER -ge 4 ]; then
        !            52:                        echo "#define PFRULE_HAS_RTABLEID" >> ${CONFIGFILE}
        !            53:                fi
        !            54:                # from the 3.8 version, packets and bytes counters are double : in/out
        !            55:                if [ \( $MAJORVER -ge 4 \) -o \( $MAJORVER -eq 3 -a $MINORVER -ge 8 \) ]; then
        !            56:                        echo "#define PFRULE_INOUT_COUNTS" >> ${CONFIGFILE}
        !            57:                fi
        !            58:                # from the 4.7 version, new pf
        !            59:                if [ \( $MAJORVER -ge 5 \) -o \( $MAJORVER -eq 4 -a $MINORVER -ge 7 \) ]; then
        !            60:                        echo "#define PF_NEWSTYLE" >> ${CONFIGFILE}
        !            61:                fi
        !            62:                echo "#define USE_PF 1" >> ${CONFIGFILE}
        !            63:                FW=pf
        !            64:                OS_URL=http://www.openbsd.org/
        !            65:                ;;
        !            66:        FreeBSD)
        !            67:                VER=`grep '#define __FreeBSD_version' /usr/include/sys/param.h | awk '{print $3}'`
        !            68:                if [ $VER -ge 700049 ]; then
        !            69:                        echo "#define PFRULE_INOUT_COUNTS" >> ${CONFIGFILE}
        !            70:                fi
        !            71:                # new way to see which one to use PF or IPF.
        !            72:                # see http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=957
        !            73:                # source file with handy subroutines like checkyesno
        !            74:                . /etc/rc.subr
        !            75:                # source config file so we can probe vars
        !            76:                . /etc/rc.conf
        !            77:                if checkyesno ipfilter_enable; then
        !            78:                        echo "Using ipf"
        !            79:                        FW=ipf
        !            80:                        echo "#define USE_IPF 1" >> ${CONFIGFILE}
        !            81:                elif checkyesno pf_enable; then
        !            82:                        echo "Using pf"
        !            83:                        FW=pf
        !            84:                        echo "#define USE_PF 1" >> ${CONFIGFILE}
        !            85:                # TODO : Add support for IPFW
        !            86:                # echo "#define USE_IPFW 1" >> ${CONFIGFILE}
        !            87:                # FW=ipfw
        !            88:                else
        !            89:                        echo "Could not detect usage of ipf or pf. Compiling for pf by default"
        !            90:                        FW=pf
        !            91:                        echo "#define USE_PF 1" >> ${CONFIGFILE}
        !            92:                fi
        !            93:                OS_URL=http://www.freebsd.org/
        !            94:                ;;
        !            95:        pfSense)
        !            96:                # we need to detect if PFRULE_INOUT_COUNTS macro is needed
        !            97:                echo "#define USE_PF 1" >> ${CONFIGFILE}
        !            98:                FW=pf
        !            99:                OS_URL=http://www.pfsense.com/
        !           100:                ;;
        !           101:        NetBSD)
        !           102:                # source file with handy subroutines like checkyesno
        !           103:                . /etc/rc.subr
        !           104:                # source config file so we can probe vars
        !           105:                . /etc/rc.conf
        !           106:                if checkyesno pf; then
        !           107:                        echo "#define USE_PF 1" >> ${CONFIGFILE}
        !           108:                        FW=pf
        !           109:                elif checkyesno ipfilter; then
        !           110:                        echo "#define USE_IPF 1" >> ${CONFIGFILE}
        !           111:                        FW=ipf
        !           112:                else
        !           113:                        echo "Could not detect ipf nor pf, defaulting to pf."
        !           114:                        echo "#define USE_PF 1" >> ${CONFIGFILE}
        !           115:                        FW=pf
        !           116:                fi
        !           117:                OS_URL=http://www.netbsd.org/
        !           118:                ;;
        !           119:        DragonFly)
        !           120:                # source file with handy subroutines like checkyesno
        !           121:                . /etc/rc.subr
        !           122:                # source config file so we can probe vars
        !           123:                . /etc/rc.conf
        !           124:                if checkyesno pf; then
        !           125:                        echo "#define USE_PF 1" >> ${CONFIGFILE}
        !           126:                        FW=pf
        !           127:                elif checkyesno ipfilter; then
        !           128:                        echo "#define USE_IPF 1" >> ${CONFIGFILE}
        !           129:                        FW=ipf
        !           130:                else
        !           131:                        echo "Could not detect ipf nor pf, defaulting to pf."
        !           132:                        echo "#define USE_PF 1" >> ${CONFIGFILE}
        !           133:                        FW=pf
        !           134:                fi
        !           135:                echo "#define USE_PF 1" >> ${CONFIGFILE}
        !           136:                OS_URL=http://www.dragonflybsd.org/
        !           137:                ;;
        !           138:        SunOS)
        !           139:                echo "#define USE_IPF 1" >> ${CONFIGFILE}
        !           140:                FW=ipf
        !           141:                echo "#define LOG_PERROR 0" >> ${CONFIGFILE}
        !           142:                echo "#define SOLARIS_KSTATS 1" >> ${CONFIGFILE}
        !           143:                OS_URL=http://www.sun.com/solaris/
        !           144:                ;;
        !           145:        Linux)
        !           146:                OS_URL=http://www.kernel.org/
        !           147:                KERNVERA=`echo $OS_VERSION | awk -F. '{print $1}'`
        !           148:                KERNVERB=`echo $OS_VERSION | awk -F. '{print $2}'`
        !           149:                KERNVERC=`echo $OS_VERSION | awk -F. '{print $3}'`
        !           150:                KERNVERD=`echo $OS_VERSION | awk -F. '{print $4}'`
        !           151:                #echo "$KERNVERA.$KERNVERB.$KERNVERC.$KERNVERD"
        !           152:                # Debian GNU/Linux special case
        !           153:                if [ -f /etc/debian_version ]; then
        !           154:                        OS_NAME=Debian
        !           155:                        OS_VERSION=`cat /etc/debian_version`
        !           156:                        OS_URL=http://www.debian.org/
        !           157:                fi
        !           158:                # use lsb_release (Linux Standard Base) when available
        !           159:                LSB_RELEASE=`which lsb_release`
        !           160:                if [ 0 -eq $? ]; then
        !           161:                        OS_NAME=`${LSB_RELEASE} -i -s`
        !           162:                        OS_VERSION=`${LSB_RELEASE} -r -s`
        !           163:                        case $OS_NAME in
        !           164:                                Debian)
        !           165:                                        OS_URL=http://www.debian.org/
        !           166:                                        OS_VERSION=`${LSB_RELEASE} -c -s`
        !           167:                                        ;;
        !           168:                                Ubuntu)
        !           169:                                        OS_URL=http://www.ubuntu.com/
        !           170:                                        OS_VERSION=`${LSB_RELEASE} -c -s`
        !           171:                                        ;;
        !           172:                        esac
        !           173:                fi
        !           174:                echo "#define USE_NETFILTER 1" >> ${CONFIGFILE}
        !           175:                FW=netfilter
        !           176:                ;;
        !           177:        Darwin)
        !           178:                echo "#define USE_IPFW 1" >> ${CONFIGFILE}
        !           179:                FW=ipfw
        !           180:                OS_URL=http://developer.apple.com/macosx
        !           181:                ;;
        !           182:        *)
        !           183:                echo "Unknown OS : $OS_NAME"
        !           184:                echo "Please contact the author at http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/."
        !           185:                exit 1
        !           186:                ;;
        !           187: esac
        !           188: 
        !           189: echo "Configuring compilation for [$OS_NAME] [$OS_VERSION] with [$FW] firewall software."
        !           190: echo "Please edit config.h for more compilation options."
        !           191: 
        !           192: echo "#define OS_NAME          \"$OS_NAME\"" >> ${CONFIGFILE}
        !           193: echo "#define OS_VERSION       \"$OS_NAME/$OS_VERSION\"" >> ${CONFIGFILE}
        !           194: echo "#define OS_URL           \"${OS_URL}\"" >> ${CONFIGFILE}
        !           195: echo "" >> ${CONFIGFILE}
        !           196: 
        !           197: echo "/* syslog facility to be used by miniupnpd */" >> ${CONFIGFILE}
        !           198: echo "#define LOG_MINIUPNPD             ${LOG_MINIUPNPD}" >> ${CONFIGFILE}
        !           199: echo "" >> ${CONFIGFILE}
        !           200: 
        !           201: echo "/* Uncomment the following line to allow miniupnpd to be" >> ${CONFIGFILE}
        !           202: echo " * controlled by miniupnpdctl */" >> ${CONFIGFILE}
        !           203: echo "/*#define USE_MINIUPNPDCTL*/" >> ${CONFIGFILE}
        !           204: echo "" >> ${CONFIGFILE}
        !           205: 
        !           206: echo "/* Comment the following line to disable NAT-PMP operations */" >> ${CONFIGFILE}
        !           207: echo "#define ENABLE_NATPMP" >> ${CONFIGFILE}
        !           208: echo "" >> ${CONFIGFILE}
        !           209: 
        !           210: echo "/* Uncomment the following line to enable generation of" >> ${CONFIGFILE}
        !           211: echo " * filter rules with pf */" >> ${CONFIGFILE}
        !           212: echo "/*#define PF_ENABLE_FILTER_RULES*/">> ${CONFIGFILE}
        !           213: echo "" >> ${CONFIGFILE}
        !           214: 
        !           215: echo "/* Uncomment the following line to enable caching of results of" >> ${CONFIGFILE}
        !           216: echo " * the getifstats() function */" >> ${CONFIGFILE}
        !           217: echo "/*#define ENABLE_GETIFSTATS_CACHING*/" >> ${CONFIGFILE}
        !           218: echo "/* The cache duration is indicated in seconds */" >> ${CONFIGFILE}
        !           219: echo "#define GETIFSTATS_CACHING_DURATION 2" >> ${CONFIGFILE}
        !           220: echo "" >> ${CONFIGFILE}
        !           221: 
        !           222: echo "/* Uncomment the following line to enable multiple external ip support */" >> ${CONFIGFILE}
        !           223: echo "/* note : That is EXPERIMENTAL, do not use that unless you know perfectly what you are doing */" >> ${CONFIGFILE}
        !           224: echo "/* Dynamic external ip adresses are not supported when this option is enabled." >> ${CONFIGFILE}
        !           225: echo " * Also note that you would need to configure your .conf file accordingly. */" >> ${CONFIGFILE}
        !           226: echo "/*#define MULTIPLE_EXTERNAL_IP*/" >> ${CONFIGFILE}
        !           227: echo "" >> ${CONFIGFILE}
        !           228: 
        !           229: echo "/* Comment the following line to use home made daemonize() func instead" >> ${CONFIGFILE}
        !           230: echo " * of BSD daemon() */" >> ${CONFIGFILE}
        !           231: echo "#define USE_DAEMON" >> ${CONFIGFILE}
        !           232: echo "" >> ${CONFIGFILE}
        !           233: 
        !           234: echo "/* Uncomment the following line to enable lease file support */" >> ${CONFIGFILE}
        !           235: echo "/*#define ENABLE_LEASEFILE*/" >> ${CONFIGFILE}
        !           236: echo "" >> ${CONFIGFILE}
        !           237: 
        !           238: echo "/* Define one or none of the two following macros in order to make some" >> ${CONFIGFILE}
        !           239: echo " * clients happy. It will change the XML Root Description of the IGD." >> ${CONFIGFILE}
        !           240: echo " * Enabling the Layer3Forwarding Service seems to be the more compatible" >> ${CONFIGFILE}
        !           241: echo " * option. */" >> ${CONFIGFILE}
        !           242: echo "/*#define HAS_DUMMY_SERVICE*/" >> ${CONFIGFILE}
        !           243: echo "#define ENABLE_L3F_SERVICE" >> ${CONFIGFILE}
        !           244: echo "" >> ${CONFIGFILE}
        !           245: 
        !           246: echo "/* Experimental UPnP Events support. */" >> ${CONFIGFILE}
        !           247: echo "/*#define ENABLE_EVENTS*/" >> ${CONFIGFILE}
        !           248: echo "" >> ${CONFIGFILE}
        !           249: 
        !           250: echo "/* include interface name in pf and ipf rules */" >> ${CONFIGFILE}
        !           251: echo "#define USE_IFNAME_IN_RULES" >> ${CONFIGFILE}
        !           252: echo "" >> ${CONFIGFILE}
        !           253: 
        !           254: echo "/* Experimental NFQUEUE support. */" >> ${CONFIGFILE}
        !           255: echo "/*#define ENABLE_NFQUEUE*/" >> ${CONFIGFILE}
        !           256: echo "" >> ${CONFIGFILE}
        !           257: 
        !           258: echo "#endif" >> ${CONFIGFILE}
        !           259: 
        !           260: exit 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>