#----------------------------------------------------- # this .ini file is loaded by all web servers - # a property that is defined in their server.ini # will override one defined here. #----------------------------------------------------- # # PORTS # For the PORT and SSLPORT entry, specify a comma-delimited set of ports to listen on for # normal http (PORT) and ssl/https (SSLPORT). The server will attempt to listen on as # many of the ports in your list as it can. If it can not listen on any, it will give up # and die. # #PORT=80,8080 #SSLPORT=443 #BIND=127.0.0.1 # # DEBUGGING # Set DEBUGFLAG to OFF to turn off any debugging. # Set DEBUGFLAG to ON to turn on debugging to standard out # Set DEBUGFLAG to FILE to turn on debugging only to the web.log file # Set DEBUGFLAG to BOTH to turn on debugging both to standard out and the web.log file # DEBUGFLAG=OFF # # ACCESSLOGS # Set ACCESSLOGS to OFF to turn off any access logs. # Set ACCESSLOGS to ON to turn on access logging to standard out # Set ACCESSLOGS to FILE to turn on access logging only to the web.log file # Set ACCESSLOGS to BOTH to turn on access logging both to standard out and the web.log file # Set ACCESSLOGS to OWNFILE to turn on access logging both to its own file # Append <[NUMBER]L to roll logs that reach [NUMBER] lines, for example: OWNFILE<9999L # Append <[NUMBER]B to roll logs that reach [NUMBER] bytes, for example: OWNFILE<9999999B # Use B for bytes, K for kilobytes, M for megabytes, G for gigabytes # Prefix with a number to change the number of logs kept during rolling. # For example: 55OWNFILE<999L means keep 55 log files, that roll up when 999 lines reached. ACCESSLOGS=OFF # # DEFAULT PAGE # When a browser requests a directory name, what page from that directory should be served? # You can specify it here! # DEFAULTPAGE=index.cmvp # # ERROR PAGE # When an error or exception is generated, which page is displayed. This is a LOCAL PATH, # either relative or absolute. # # *** Handled by pub.ini and admin.ini *** # # BROWSE PAGE # When a directory is encountered which is permitted to be browsed (see BROWSE below), this # is the local path, relative or absolute, of the page to display. If the page is kept at # cwhtml or another Convertable type, then the page will correctly fill in directory # entries. # # *** Handled by pub.ini and admin.ini *** # # MOUNT LISTS # This is where you specify how requested hosts and contexts will map to actual directories on # your local hard drive. The way it works is that you specify the word MOUNT followed by a # forward slash character / and the optional host name and optional port, and the context, then # set that equal to the local (or relative!) hard drive path that the given context should map to. # Be sure to end your hard drive path with a path separator -- in windows, it would be \\ # The example (MOUNT/mydomain.com:80/remote=root\\local\\) maps the context /remote on the host # "mydomain.com" on port 80 to the relative local path "root\\local\\" # The example (MOUNT/=root\\) maps the root context / to the relative local path "root\\" for all # hosts and ports. # *** Handled by pub.ini and admin.ini *** # # CGI MOUNT LISTS # This is where you specify how requested hosts and contexts will map to actual directories on # your local hard drive containing CGI (Common Gateway Interface) programs that the server is # permitted to execute. Any URL path parts after the mount directory is passed to the cgi-program. # The mount path can also be an executeable file name. The way it works is that you specify the word # CGIMOUNT followed by a forward slash character / and the optional host name and optional # port, and the context, then set that equal to the local (or relative!) hard drive path that the # given context should map to. If the local path is a directory, any cgi-programs in it may be executed, # and if it is a program file, it will be executed against the referenced path. The URI context may # also contain a "*" character for filtering purposes. # Be sure to end your hard drive path with a path separator -- in windows, it would be \\ # The example (CGIMOUNT/mydomain.com:80/cgi-bin=root\\cgi-bin\\) maps the context /cgi-bin on the host # "mydomain.com" on port 80 to the relative local path "root\\cgi-bin\\" # The example (CGIMOUNT/*.php=cgi-bin\\php-cgi.exe) executes the given cgi program against any .php files for # all hosts and ports. # CGIMOUNT/cgi-bin=cgi-bin\\ # # BROWSE LISTS # This is where you specify which virtual paths which, after going through mount processing, # resolve to directories that you will permit browsing of. Specify the word BROWSE followed by a # forward slash character / and the optional host name and optional port, and the context, then # set that equal to anything you like (the value is reserved for future use at this point). # The example (BROWSE/mydomain.com:80/mysubdir=OK) allows the context /mysubdir on the host # "mydomain.com" on port 80 to be browsed. # The example (MOUNT/=YES) allows all directories, all hosts, all ports, to be browseable # BROWSE/=FINE! # *** Handled by pub.ini and admin.ini *** # MIME TYPES # CoffeeWebServer already defines all the standard and most common mime types. However, if you # require any special ones, or for some bizarre reason want to override an existing one, this # is the place. Specify the word MIME followed by a period character . and the extension to # use with this mime type, then set that equal to the full mime type string, which must include # a forward slash. # For example: MIME.boo=text/plain # # # SSL CONFIGURATION # CoffeeWebServer supports SSLv3 via a java keystore file (SSLKEYSTOREPATH), but you can # specify any key file format that java supports, so long as you also specify its type # (SSLKEYSTORETYPE). If the keystore/file has a password, specify it also (SSLKEYSTOREPASSWORD). # If any of this stuff is invalid, the web server will not attempt to listen on your SSL ports. #SSLKEYSTOREPATH=keys/keystore.jks #SSLKEYSTOREPASSWORD=passphrase #SSLKEYSTORETYPE=JKS #SSLKEYMANAGERENCODING=SunX509 # # FILE CACHING AND HANDLING # The data for your web site can be cached in memory for better performance. # To tune this feature, you can specify the amount of time a cache entry lives # in memory (FILECACHEEXPIREMS), how much TOTAL file data will be stored # in the cache before it starts forcing entries out of the cache to make more # room (FILECACHEMAXBYTES), and the maximum size of any one file stored in the # cache (FILECACHEMAXFILEBYTES). # The maximum size of any file that can be compressed is FILECOMPMAXBYTES. # To turn off caching, set FILECACHEEXPIREMS and/or FILECACHEMAXBYTES to 0 # To allow caching of files of any size, set FILECACHEMAXFILEBYTES to 0 FILECACHEEXPIREMS=0 FILECACHEMAXBYTES=0 FILECACHEMAXFILEBYTES=8192 FILECOMPMAXBYTES=16485760 # # REQUEST LIMITS # This is some fine tuning regarding constraints on http requests. You can # specify the maximum size of any request body (REQUESTMAXBODYBYTES), the # number of milliseconds a connection can sit idle between requests (REQUESTMAXIDLEMS), # The maximum size of any one line of request data, such individual headers, url length, # etc (REQUESTLINEBUFBYTES), the longest amount of time a connection can hang around # sending requests to the web server and receiving data (REQUESTMAXALIVESECS), and the # maximum number of requests that can be made on a single connection (REQUESTMAXPERCONN). REQUESTMAXBODYBYTES=2097152 #REQUESTMAXIDLEMS=5000 REQUESTLINEBUFBYTES=65535 #REQUESTMAXALIVESECS=15 REQUESTMAXPERCONN=20 # # FORWARDING LISTS # This is where you specify how requested hosts, ports, or contexts will be forwarded # to other web servers and ports and contexts. The way it works is that you specify # the word FORWARD followed by a forward slash character / and the optional host name # and optional port and the context (or just /), and then set that equal to # the host name of the remote web server, followed by a colon and the remote port number. # You can specify as many mappings as you like .. coffeewebserver will be pretty smart about # which is the proper one to use for any particular url. # Remember to escape your colons and backslashes (if you use them)!! # Some examples: #FORWARD/mydomain.net\:80/contextname=www.google.com\:80 #FORWARD/localhost\:8080/zimmers=www.zimmers.net\:80 #FORWARD/localhost\:8080/zhome=www.zimmers.net/home #FORWARD/*\:8080/zcommie=www.zimmers.net\:80/commie #FORWARD/gallery.localhost\:80/=www.zimmers.net\:80/cbmpics #FORWARD/texas.localhost\:*/=www.zimmers.net/texas # # OUTPUT THROTTLING # This is where you specify how many bytes, per second, are allowed to be sent to # the specified host. Specify THROTTLEOUTPUT followed by # a forward slash character / and the optional host name and optional port and the # context (or just /), and then set that equal to the number of bytes per second to # allow in or out. Specify as many entries as you like. The throttle treats the # number of bytes that applies as a cap to ALL requests, in or out, that apply to a # specified host mask. It will attempt to be fair about distributing load across # numerous requests for a given host, and will treat each host mask as a separate pool # from other hosts. Remember to escape your colons and backslashes (if you use them)!! # Some examples: # THROTTLEOUTPUT/mydomain.net\:80/contextname=1024 # THROTTLEOUTPUT/localhost\:8080/zimmers=10000000 # THROTTLEOUTPUT/localhost\:8080/zhome=2048 # THROTTLEOUTPUT/*\:8080/zcommie=512 # THROTTLEOUTPUT/gallery.localhost\:80/=65536 # THROTTLEOUTPUT/texas.localhost\:*/=9999999 # # THREAD POOL TWEEKING # Now for the really geeky stuff. The web server will try to process as many requests at # the same time as it can by spawning threads when it needs to. You can tweek this process # right here. You can specify the minimum number of threads to keep hanging around waiting # to process requests (CORETHREADPOOLSIZE), as well as the absolute maximum number (MAXTHREADS). # You can also specify the amount of time a thread goes unused before it is shut down # (MAXTHREADIDLEMILLIS), the maximum number of tasks that can be queued up waiting for thread # time (MAXTHREADQUEUESIZE), and the absolute maximum amount of time a thread is allowed to # work on any one task (MAXTHREADTIMEOUTSECS). CORETHREADPOOLSIZE=1 MAXTHREADS=10 MAXTHREADIDLEMILLIS=60000 MAXTHREADQUEUESIZE=500 #MAXTHREADTIMEOUTSECS=30 # # DUPPOLICY # How to deal with url parameters or multi-part fields that have the same names. # For example: http://localhost?MYFIELD=bob&MYFIELD=joe&MYFIELD=tom # Set DUPPOLICY to OVERWRITE to end up only one field where the last value wins. # Set DUPPOLICY to ENUMERATE to append a number; e.g. MYFIELD=bob MYFIELD1=joe MYFIELD2=tom # DUPPOLICY=ENUMERATE # # CHUNKED ENCODING for HTTP/1.1 # How to encourage or specify chunked encoding output from the server to clients. # Will only provide chunked output according to the CHUNKHOST entries below. # Set CHUNKSIZE to the default chunk size to use when allowed. A value of # 0 completely disables chunked responses under all circumstances. # To allow chunked responses at particular domains or urls, enter "CHUNKALLOW" followed by # a forward slash character / and the optional host name and optional port and the # context (or just /), and then set that equal to either an asterisk * or a comma # delimited list of mime types to apply chunking to, followed by a colon, followed # by the minimum size of a file, in bytes, that may be chunk encoded. # Specify as many entries as you like. Here are some examples: # CHUNKALLOW/*\:*/=*:1 <-- this will chunk everything, basically # CHUNKALLOW/mydomain.net\:80/contextname=*:1048576 # CHUNKALLOW/texas.localhost\:*/=application/octet-stream,h323,doc:9999999 # CHUNKSIZE=8192 # # SIMPLE SERVLETS # For you Java programmers, there is an interface available at # com.planet_ink.coffee_web.interfaces.SimpleServlet for creating simple # servlet classes. There is also a SimpleServletRequest and SimpleServletResponse # interface for doing your input and output. When you create such a servlet, you # can map it to a top-level url context by using the word "SERVLET" followed by # a slash, followed by the root url context, and then setting that equal to the # java class name where your SimpleServlet can be found. Have as many as you like! # # Check out the example servlets in com/planet_ink/coffee_web/servlets/*.java SERVLET/stats=com.planet_ink.coffee_web.servlets.ServletStatsServlet SERVLET/info=com.planet_ink.coffee_web.servlets.ServerInfoServlet SERVLET/images/mxp/PlayerPortrait=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer SERVLET/AreaXML=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer SERVLET/FileData=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer SERVLET/ImageVerificationImage=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer SERVLET/pub/SipletInterface=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer SERVLET/SipletInterface=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer SERVLET/pub/Unsubscribe=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer SERVLET/Unsubscribe=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer # # MIME CONVERTERS # Also for the Java programmers, there is an interface available at # com.planet_ink.coffee_web.interfaces.HTTPOutputConverter for creating classes # that transform data from a specific mime type by processing it. Since it only # supports the mime types hard coded into com/planet_ink/coffee_web/http/MIMEType.java. # this is of limited usefulness -- still, you can do cool things make make custom # http page converters! When you create such a converter, you specify it here by # mapping the class to a mime type name by using the word "MIMECONVERT" followed by # a period, followed by the mime type name, and then setting that equal to the # java class name where your HTTPOutputConverter can be found. Have as many as you like! # Of course, using a mime converter will invalidate any eTag processing, since the # whole point is to change the contents of pages from disk. :) MIMECONVERT.cwhtml=com.planet_ink.coffee_web.converters.CWHTMLConverter MIMECONVERT.cmvp=com.planet_ink.coffee_mud.Libraries.WebMacroCreamer # # DISABLE # For developers and those who just don't like functional web servers, this is # a comma-delimited list of integrated features you would like to have disabled. # Available features to disable are: # RANGED : the web server will ignore ranged headers and return 200/full document DISABLE=