Annotation of embedaddon/thttpd/config.h, revision 1.1

1.1     ! misho       1: /* config.h - configuration defines for thttpd and libhttpd
        !             2: **
        !             3: ** Copyright © 1995,1998,1999,2000,2001 by Jef Poskanzer <jef@mail.acme.com>.
        !             4: ** All rights reserved.
        !             5: **
        !             6: ** Redistribution and use in source and binary forms, with or without
        !             7: ** modification, are permitted provided that the following conditions
        !             8: ** are met:
        !             9: ** 1. Redistributions of source code must retain the above copyright
        !            10: **    notice, this list of conditions and the following disclaimer.
        !            11: ** 2. Redistributions in binary form must reproduce the above copyright
        !            12: **    notice, this list of conditions and the following disclaimer in the
        !            13: **    documentation and/or other materials provided with the distribution.
        !            14: **
        !            15: ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
        !            16: ** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            17: ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            18: ** ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
        !            19: ** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            20: ** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            21: ** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            22: ** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            23: ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            24: ** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            25: ** SUCH DAMAGE.
        !            26: */
        !            27: 
        !            28: #ifndef _CONFIG_H_
        !            29: #define _CONFIG_H_
        !            30: 
        !            31: 
        !            32: /* The following configuration settings are sorted in order of decreasing
        !            33: ** likelihood that you'd want to change them - most likely first, least
        !            34: ** likely last.
        !            35: **
        !            36: ** In case you're not familiar with the convention, "#ifdef notdef"
        !            37: ** is a Berkeleyism used to indicate temporarily disabled code.
        !            38: ** The idea here is that you re-enable it by just moving it outside
        !            39: ** of the ifdef.
        !            40: */
        !            41: 
        !            42: /* CONFIGURE: CGI programs must match this pattern to get executed.  It's
        !            43: ** a simple shell-style wildcard pattern, with * meaning any string not
        !            44: ** containing a slash, ** meaning any string at all, and ? meaning any
        !            45: ** single character; or multiple such patterns separated by |.  The
        !            46: ** patterns get checked against the filename part of the incoming URL.
        !            47: **
        !            48: ** Restricting CGI programs to a single directory lets the site administrator
        !            49: ** review them for security holes, and is strongly recommended.  If there
        !            50: ** are individual users that you trust, you can enable their directories too.
        !            51: **
        !            52: ** You can also specify a CGI pattern on the command line, with the -c flag.
        !            53: ** Such a pattern overrides this compiled-in default.
        !            54: **
        !            55: ** If no CGI pattern is specified, neither here nor on the command line,
        !            56: ** then CGI programs cannot be run at all.  If you want to disable CGI
        !            57: ** as a security measure that's how you do it, just don't define any
        !            58: ** pattern here and don't run with the -c flag.
        !            59: */
        !            60: #ifdef notdef
        !            61: /* Some sample patterns.  Allow programs only in one central directory: */
        !            62: #define CGI_PATTERN "/cgi-bin/*"
        !            63: /* Allow programs in a central directory, or anywhere in a trusted
        !            64: ** user's tree: */
        !            65: #define CGI_PATTERN "/cgi-bin/*|/jef/**"
        !            66: /* Allow any program ending with a .cgi: */
        !            67: #define CGI_PATTERN "**.cgi"
        !            68: /* When virtual hosting, enable the central directory on every host: */
        !            69: #define CGI_PATTERN "/*/cgi-bin/*"
        !            70: #endif
        !            71: 
        !            72: /* CONFIGURE: How many seconds to allow CGI programs to run before killing
        !            73: ** them.  This is in case someone writes a CGI program that goes into an
        !            74: ** infinite loop, or does a massive database lookup that would take hours,
        !            75: ** or whatever.  If you don't want any limit, comment this out, but that's
        !            76: ** probably a really bad idea.
        !            77: */
        !            78: #define CGI_TIMELIMIT 30
        !            79: 
        !            80: /* CONFIGURE: Maximum number of simultaneous CGI programs allowed.
        !            81: ** If this many are already running, then attempts to run more will
        !            82: ** return an HTTP 503 error.  If this is not defined then there's
        !            83: ** no limit (and you'd better have a lot of memory).  This can also be
        !            84: ** set in the runtime config file.
        !            85: */
        !            86: #ifdef notdef
        !            87: #define CGI_LIMIT 50
        !            88: #endif
        !            89: 
        !            90: /* CONFIGURE: How many seconds to allow for reading the initial request
        !            91: ** on a new connection.
        !            92: */
        !            93: #define IDLE_READ_TIMELIMIT 60
        !            94: 
        !            95: /* CONFIGURE: How many seconds before an idle connection gets closed.
        !            96: */
        !            97: #define IDLE_SEND_TIMELIMIT 300
        !            98: 
        !            99: /* CONFIGURE: The syslog facility to use.  Using this you can set up your
        !           100: ** syslog.conf so that all thttpd messages go into a separate file.  Note
        !           101: ** that even if you use the -l command line flag to send logging to a
        !           102: ** file, errors still get sent via syslog.
        !           103: */
        !           104: #define LOG_FACILITY LOG_DAEMON
        !           105: 
        !           106: /* CONFIGURE: Tilde mapping.  Many URLs use ~username to indicate a
        !           107: ** user's home directory.  thttpd provides two options for mapping
        !           108: ** this construct to an actual filename.
        !           109: **
        !           110: ** 1) Map ~username to <prefix>/username.  This is the recommended choice.
        !           111: ** Each user gets a subdirectory in the main chrootable web tree, and
        !           112: ** the tilde construct points there.  The prefix could be something
        !           113: ** like "users", or it could be empty.  See also the makeweb program
        !           114: ** for letting users create their own web subdirectories.
        !           115: **
        !           116: ** 2) Map ~username to <user's homedir>/<postfix>.  The postfix would be
        !           117: ** the name of a subdirectory off of the user's actual home dir, something
        !           118: ** like "public_html".  This is what Apache and other servers do.  The problem
        !           119: ** is, you can't do this and chroot() at the same time, so it's inherently
        !           120: ** a security hole.  This is strongly dis-recommended, but it's here because
        !           121: ** some people really want it.  Use at your own risk.
        !           122: **
        !           123: ** You can also leave both options undefined, and thttpd will not do
        !           124: ** anything special about tildes.  Enabling both options is an error.
        !           125: */
        !           126: #ifdef notdef
        !           127: #define TILDE_MAP_1 "users"
        !           128: #define TILDE_MAP_2 "public_html"
        !           129: #endif
        !           130: 
        !           131: /* CONFIGURE: The file to use for authentication.  If this is defined then
        !           132: ** thttpd checks for this file in the local directory before every fetch.
        !           133: ** If the file exists then authentication is done, otherwise the fetch
        !           134: ** proceeds as usual.
        !           135: **
        !           136: ** If you undefine this then thttpd will not implement authentication
        !           137: ** at all and will not check for auth files, which saves a bit of CPU time.
        !           138: */
        !           139: #define AUTH_FILE ".htpasswd"
        !           140: 
        !           141: /* CONFIGURE: The default character set name to use with text MIME types.
        !           142: ** This gets substituted into the MIME types where they have a "%s".
        !           143: **
        !           144: ** You can override this in the config file with the "charset" setting,
        !           145: ** or on the command like with the -T flag.
        !           146: */
        !           147: #define DEFAULT_CHARSET "iso-8859-1"
        !           148: 
        !           149: 
        !           150: /* Most people won't want to change anything below here. */
        !           151: 
        !           152: /* CONFIGURE: This controls the SERVER_NAME environment variable that gets
        !           153: ** passed to CGI programs.  By default thttpd does a gethostname(), which
        !           154: ** gives the host's canonical name.  If you want to always use some other name
        !           155: ** you can define it here.
        !           156: **
        !           157: ** Alternately, if you want to run the same thttpd binary on multiple
        !           158: ** machines, and want to build in alternate names for some or all of
        !           159: ** them, you can define a list of canonical name to altername name
        !           160: ** mappings.  thttpd seatches the list and when it finds a match on
        !           161: ** the canonical name, that alternate name gets used.  If no match
        !           162: ** is found, the canonical name gets used.
        !           163: **
        !           164: ** If both SERVER_NAME and SERVER_NAME_LIST are defined here, thttpd searches
        !           165: ** the list as above, and if no match is found then SERVER_NAME gets used.
        !           166: **
        !           167: ** In any case, if thttpd is started with the -h flag, that name always
        !           168: ** gets used.
        !           169: */
        !           170: #ifdef notdef
        !           171: #define SERVER_NAME "your.hostname.here"
        !           172: #define SERVER_NAME_LIST \
        !           173:     "canonical.name.here/alternate.name.here", \
        !           174:     "canonical.name.two/alternate.name.two"
        !           175: #endif
        !           176: 
        !           177: /* CONFIGURE: Undefine this if you want thttpd to hide its specific version
        !           178: ** when returning into to browsers.  Instead it'll just say "thttpd" with
        !           179: ** no version.
        !           180: */
        !           181: #define SHOW_SERVER_VERSION
        !           182: 
        !           183: /* CONFIGURE: Define this if you want to always chroot(), without having
        !           184: ** to give the -r command line flag.  Some people like this as a security
        !           185: ** measure, to prevent inadvertant exposure by accidentally running without -r.
        !           186: ** You can still disable it at runtime with the -nor flag.
        !           187: */
        !           188: #ifdef notdef
        !           189: #define ALWAYS_CHROOT
        !           190: #endif
        !           191: 
        !           192: /* CONFIGURE: Define this if you want to always do virtual hosting, without
        !           193: ** having to give the -v command line flag.  You can still disable it at
        !           194: ** runtime with the -nov flag.
        !           195: */
        !           196: #ifdef notdef
        !           197: #define ALWAYS_VHOST
        !           198: #endif
        !           199: 
        !           200: /* CONFIGURE: If you're using the vhost feature and you have a LOT of
        !           201: ** virtual hostnames (like, hundreds or thousands), you will want to
        !           202: ** enable this feature.  It avoids a problem with most Unix filesystems,
        !           203: ** where if there are a whole lot of items in a directory then name lookup
        !           204: ** becomes very slow.  This feature makes thttpd use subdirectories
        !           205: ** based on the first characters of each hostname.  You can set it to use
        !           206: ** from one to three characters.  If the hostname starts with "www.", that
        !           207: ** part is skipped over.  Dots are also skipped over, and if the name isn't
        !           208: ** long enough then "_"s are used.  Here are some examples of how hostnames
        !           209: ** would get turned into directory paths, for each different setting:
        !           210: ** 1: www.acme.com ->    a/www.acme.com
        !           211: ** 1: foobar.acme.com -> f/foobar.acme.com
        !           212: ** 2: www.acme.com ->    a/c/www.acme.com
        !           213: ** 2: foobar.acme.com -> f/o/foobar.acme.com
        !           214: ** 3: www.acme.com ->    a/c/m/www.acme.com
        !           215: ** 3: foobar.acme.com -> f/o/o/foobar.acme.com
        !           216: ** 3: m.tv ->            m/t/v/m.tv
        !           217: ** 4: m.tv ->            m/t/v/_/m.tv
        !           218: ** Note that if you compile this setting in but then forget to set up
        !           219: ** the corresponding subdirectories, the only error indication you'll
        !           220: ** get is a "404 Not Found" when you try to visit a site.  So be careful.
        !           221: */
        !           222: #ifdef notdef
        !           223: #define VHOST_DIRLEVELS 1
        !           224: #define VHOST_DIRLEVELS 2
        !           225: #define VHOST_DIRLEVELS 3
        !           226: #endif
        !           227: 
        !           228: /* CONFIGURE: Define this if you want to always use a global passwd file,
        !           229: ** without having to give the -P command line flag.  You can still disable
        !           230: ** it at runtime with the -noP flag.
        !           231: */
        !           232: #ifdef notdef
        !           233: #define ALWAYS_GLOBAL_PASSWD
        !           234: #endif
        !           235: 
        !           236: /* CONFIGURE: When started as root, the default username to switch to after
        !           237: ** initializing.  If this user (or the one specified by the -u flag) does
        !           238: ** not exist, the program will refuse to run.
        !           239: */
        !           240: #define DEFAULT_USER "nobody"
        !           241: 
        !           242: /* CONFIGURE: When started as root, the program can automatically chdir()
        !           243: ** to the home directory of the user specified by -u or DEFAULT_USER.
        !           244: ** An explicit -d still overrides this.
        !           245: */
        !           246: #ifdef notdef
        !           247: #define USE_USER_DIR
        !           248: #endif
        !           249: 
        !           250: /* CONFIGURE: If this is defined, some of the built-in error pages will
        !           251: ** have more explicit information about exactly what the problem is.
        !           252: ** Some sysadmins don't like this, for security reasons.
        !           253: */
        !           254: #define EXPLICIT_ERROR_PAGES
        !           255: 
        !           256: /* CONFIGURE: Subdirectory for custom error pages.  The error filenames are
        !           257: ** $WEBDIR/$ERR_DIR/err%d.html - if virtual hosting is enabled then
        !           258: ** $WEBDIR/hostname/$ERR_DIR/err%d.html is searched first.  This allows
        !           259: ** different custom error pages for each virtual hosting web server.  If
        !           260: ** no custom page for a given error can be found, the built-in error page
        !           261: ** is generated.  If ERR_DIR is not defined at all, only the built-in error
        !           262: ** pages will be generated.
        !           263: */
        !           264: #define ERR_DIR "errors"
        !           265: 
        !           266: /* CONFIGURE: Define this if you want a standard HTML tail containing
        !           267: ** $SERVER_SOFTWARE and $SERVER_ADDRESS to be appended to the custom error
        !           268: ** pages.  (It is always appended to the built-in error pages.)
        !           269: */
        !           270: #define ERR_APPEND_SERVER_INFO
        !           271: 
        !           272: /* CONFIGURE: nice(2) value to use for CGI programs.  If this is undefined,
        !           273: ** CGI programs run at normal priority.
        !           274: */
        !           275: #define CGI_NICE 10
        !           276: 
        !           277: /* CONFIGURE: $PATH to use for CGI programs.
        !           278: */
        !           279: #define CGI_PATH "/usr/local/bin:/usr/ucb:/bin:/usr/bin"
        !           280: 
        !           281: /* CONFIGURE: If defined, $LD_LIBRARY_PATH to use for CGI programs.
        !           282: */
        !           283: #ifdef notdef
        !           284: #define CGI_LD_LIBRARY_PATH "/usr/local/lib:/usr/lib"
        !           285: #endif
        !           286: 
        !           287: /* CONFIGURE: How often to run the occasional cleanup job.
        !           288: */
        !           289: #define OCCASIONAL_TIME 120
        !           290: 
        !           291: /* CONFIGURE: Seconds between stats syslogs.  If this is undefined then
        !           292: ** no stats are accumulated and no stats syslogs are done.
        !           293: */
        !           294: #define STATS_TIME 3600
        !           295: 
        !           296: /* CONFIGURE: The mmap cache tries to keep the total number of mapped
        !           297: ** files below this number, so you don't run out of kernel file descriptors.
        !           298: ** If you have reconfigured your kernel to have more descriptors, you can
        !           299: ** raise this and thttpd will keep more maps cached.  However it's not
        !           300: ** a hard limit, thttpd will go over it if you really are accessing
        !           301: ** a whole lot of files.
        !           302: */
        !           303: #define DESIRED_MAX_MAPPED_FILES 1000
        !           304: 
        !           305: /* CONFIGURE: The mmap cache also tries to keep the total mapped bytes
        !           306: ** below this number, so you don't run out of address space.  Again
        !           307: ** it's not a hard limit, thttpd will go over it if you really are
        !           308: ** accessing a bunch of large files.
        !           309: */
        !           310: #define DESIRED_MAX_MAPPED_BYTES 1000000000
        !           311: 
        !           312: /* CONFIGURE: Minimum and maximum intervals between child-process reaping,
        !           313: ** in seconds.
        !           314: */
        !           315: #define MIN_REAP_TIME 30
        !           316: #define MAX_REAP_TIME 900
        !           317: 
        !           318: 
        !           319: /* You almost certainly don't want to change anything below here. */
        !           320: 
        !           321: /* CONFIGURE: When throttling CGI programs, we don't know how many bytes
        !           322: ** they send back to the client because it would be inefficient to
        !           323: ** interpose a counter.  CGI programs are much more expensive than
        !           324: ** regular files to serve, so we set an arbitrary and high byte count
        !           325: ** that gets applied to all CGI programs for throttling purposes.
        !           326: */
        !           327: #define CGI_BYTECOUNT 25000
        !           328: 
        !           329: /* CONFIGURE: The default port to listen on.  80 is the standard HTTP port.
        !           330: */
        !           331: #define DEFAULT_PORT 80
        !           332: 
        !           333: /* CONFIGURE: A list of index filenames to check.  The files are searched
        !           334: ** for in this order.
        !           335: */
        !           336: #define INDEX_NAMES "index.html", "index.htm", "index.xhtml", "index.xht", "Default.htm", "index.cgi"
        !           337: 
        !           338: /* CONFIGURE: If this is defined then thttpd will automatically generate
        !           339: ** index pages for directories that don't have an explicit index file.
        !           340: ** If you want to disable this behavior site-wide, perhaps for security
        !           341: ** reasons, just undefine this.  Note that you can disable indexing of
        !           342: ** individual directories by merely doing a "chmod 711" on them - the
        !           343: ** standard Unix file permission to allow file access but disable "ls".
        !           344: */
        !           345: #define GENERATE_INDEXES
        !           346: 
        !           347: /* CONFIGURE: Whether to log unknown request headers.  Most sites will not
        !           348: ** want to log them, which will save them a bit of CPU time.
        !           349: */
        !           350: #ifdef notdef
        !           351: #define LOG_UNKNOWN_HEADERS
        !           352: #endif
        !           353: 
        !           354: /* CONFIGURE: Whether to fflush() the log file after each request.  If
        !           355: ** this is turned off there's a slight savings in CPU cycles.
        !           356: */
        !           357: #define FLUSH_LOG_EVERY_TIME
        !           358: 
        !           359: /* CONFIGURE: Time between updates of the throttle table's rolling averages. */
        !           360: #define THROTTLE_TIME 2
        !           361: 
        !           362: /* CONFIGURE: The listen() backlog queue length.  The 1024 doesn't actually
        !           363: ** get used, the kernel uses its maximum allowed value.  This is a config
        !           364: ** parameter only in case there's some OS where asking for too high a queue
        !           365: ** length causes an error.  Note that on many systems the maximum length is
        !           366: ** way too small - see http://www.acme.com/software/thttpd/notes.html
        !           367: */
        !           368: #define LISTEN_BACKLOG 1024
        !           369: 
        !           370: /* CONFIGURE: Maximum number of throttle patterns that any single URL can
        !           371: ** be included in.  This has nothing to do with the number of throttle
        !           372: ** patterns that you can define, which is unlimited.
        !           373: */
        !           374: #define MAXTHROTTLENUMS 10
        !           375: 
        !           376: /* CONFIGURE: Number of file descriptors to reserve for uses other than
        !           377: ** connections.  Currently this is 10, representing one for the listen fd,
        !           378: ** one for dup()ing at connection startup time, one for reading the file,
        !           379: ** one for syslog, and possibly one for the regular log file, which is
        !           380: ** five, plus a factor of two for who knows what.
        !           381: */
        !           382: #define SPARE_FDS 10
        !           383: 
        !           384: /* CONFIGURE: How many milliseconds to leave a connection open while doing a
        !           385: ** lingering close.
        !           386: */
        !           387: #define LINGER_TIME 500
        !           388: 
        !           389: /* CONFIGURE: Maximum number of symbolic links to follow before
        !           390: ** assuming there's a loop.
        !           391: */
        !           392: #define MAX_LINKS 32
        !           393: 
        !           394: /* CONFIGURE: You don't even want to know.
        !           395: */
        !           396: #define MIN_WOULDBLOCK_DELAY 100L
        !           397: 
        !           398: #define USE_SENDFILE
        !           399: 
        !           400: #endif /* _CONFIG_H_ */

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