浏览代码

Updated manual

Sergey Lyubka 12 年之前
父节点
当前提交
7a52bd643c
共有 1 个文件被更改,包括 98 次插入9 次删除
  1. 98 9
      UserManual.md

+ 98 - 9
UserManual.md

@@ -43,6 +43,19 @@ document root, because command line options take priority over
 configuration file. Configuration options section below provide a good
 configuration file. Configuration options section below provide a good
 overview of Mongoose features.
 overview of Mongoose features.
 
 
+Note that configuration options on the command line must start with `-`,
+but their names are the same as in the config file. All option names are
+listed in the next section. Thus, the following two setups are equivalent:
+
+    # Using command line arguments
+    $ mongoose -listening_ports 1234 -document_root /var/www
+
+    # Using config file
+    $ cat mongoose.conf
+    listening_ports 1234
+    document_root /var/www
+    $ mongoose
+
 Mongoose can also be used to modify `.htpasswd` passwords file:
 Mongoose can also be used to modify `.htpasswd` passwords file:
 
 
     mongoose -A <htpasswd_file> <realm> <user> <passwd>
     mongoose -A <htpasswd_file> <realm> <user> <passwd>
@@ -114,15 +127,34 @@ Authorization realm used in `.htpasswd` authorization.
 
 
 ### ssi_pattern `**.shtml$|**.shtm$`
 ### ssi_pattern `**.shtml$|**.shtm$`
 All files that match `ssi_pattern` are treated as SSI.
 All files that match `ssi_pattern` are treated as SSI.
-Unknown SSI directives are silently ignored. Currently, two SSI
+
+Server Side Includes (SSI) is a simple interpreted server-side scripting
+language which is most commonly used to include the contents of a file into
+a web page. It can be useful when it is desirable to include a common piece
+of code throughout a website, for example, headers and footers.
+
+In order for a webpage to recognize an SSI-enabled HTML file, the filename
+should end with a special extension, by default the extension should be
+either `.shtml` or `.shtm`.
+
+Unknown SSI directives are silently ignored by mongoose. Currently, two SSI
 directives are supported, `<!--#include ...>` and
 directives are supported, `<!--#include ...>` and
-`<!--#exec command>`. Note that `<!--#include ...>` directive supports
+`<!--#exec "command">`. Note that `<!--#include ...>` directive supports
 three path specifications:
 three path specifications:
 
 
     <!--#include virtual="path">  Path is relative to web server root
     <!--#include virtual="path">  Path is relative to web server root
     <!--#include file="path">     Path is relative to web server working dir
     <!--#include file="path">     Path is relative to web server working dir
     <!--#include "path">          Path is relative to current document
     <!--#include "path">          Path is relative to current document
 
 
+The `include` directive may be used to include the contents of a file or the
+result of running a CGI script. The `exec` directive is used to execute a
+command on a server, and show command's output. Example:
+
+    <!--#exec "ls -l" -->
+
+For more information on Server Side Includes, take a look at the Wikipedia:
+[Server Side Includes](http://en.wikipedia.org/wiki/Server_Side_Includes)
+
 ### throttle
 ### throttle
 Limit download speed for clients.  `throttle` is a comma-separated
 Limit download speed for clients.  `throttle` is a comma-separated
 list of key=value pairs, where key could be:
 list of key=value pairs, where key could be:
@@ -164,15 +196,22 @@ Comma-separated list of files to be treated as directory index
 files.
 files.
 
 
 ### access\_control\_list
 ### access\_control\_list
-Access Control List (ACL) is a comma separated list
-of IP subnets, each subnet is prepended by `-` or `+` sign. Plus
-means allow, minus means deny. If subnet mask is omitted, like
-`-1.2.3.4`, then it means a single IP address. Mask may vary from 0
-to 32 inclusive. On each request, full list is traversed, and
-last match wins. Default setting is to allow all accesses. Examples:
+An Access Control List (ACL) allows restrictions to be put on the list of IP
+addresses which have access to the web server. In the case of the Mongoose
+web server, the ACL is a comma separated list of IP subnets, where each
+subnet is prepended by either a `-` or a `+` sign. A plus sign means allow,
+where a minus sign means deny. If a subnet mask is omitted, such as `-1.2.3.4`,
+this means to deny only that single IP address.
+
+Subnet masks may vary from 0 to 32, inclusive. The default setting is to allow
+all accesses. On each request the full list is traversed, and
+the last match wins. Examples:
 
 
     -0.0.0.0/0,+192.168/16    deny all acccesses, only allow 192.168/16 subnet
     -0.0.0.0/0,+192.168/16    deny all acccesses, only allow 192.168/16 subnet
 
 
+To learn more about subnet masks, see the
+[Wikipedia page on Subnetwork](http://en.wikipedia.org/wiki/Subnetwork)
+
 ### extra\_mime\_types
 ### extra\_mime\_types
 Extra mime types to recognize, in form `extension1=type1,exten-
 Extra mime types to recognize, in form `extension1=type1,exten-
 sion2=type2,...`. Extension must include dot.  Example:
 sion2=type2,...`. Extension must include dot.  Example:
@@ -236,7 +275,9 @@ Or, to imitate user home directories support, do:
 ### hide\_files\_patterns
 ### hide\_files\_patterns
 A pattern for the files to hide. Files that match the pattern will not
 A pattern for the files to hide. Files that match the pattern will not
 show up in directory listing and return `404 Not Found` if requested. Pattern
 show up in directory listing and return `404 Not Found` if requested. Pattern
-must be for a file name only, not including directory name.
+must be for a file name only, not including directory name. Example:
+
+    mongoose -hide_files_patterns secret.txt|even_more_secret.txt
 
 
 # Common Problems
 # Common Problems
 - PHP doesn't work - getting empty page, or 'File not found' error. The
 - PHP doesn't work - getting empty page, or 'File not found' error. The
@@ -245,6 +286,13 @@ must be for a file name only, not including directory name.
   full path to the PHP interpreter, e.g.:
   full path to the PHP interpreter, e.g.:
     `mongoose -cgi_interpreter /full/path/to/php-cgi`
     `mongoose -cgi_interpreter /full/path/to/php-cgi`
 
 
+- Mongoose fails to start. If Mongoose exits immediately when run, this
+  usually indicates a syntax error in the configuration file
+  (named `mongoose.conf` by default) or the command-line arguments.
+  Syntax checking is omitted from Mongoose to keep its size low. However,
+  the Manual should be of help. Note: the syntax changes from time to time,
+  so updating the config file might be necessary after executable update.
+
 # Embedding
 # Embedding
 Embedding Mongoose is easy. Somewhere in the application code, `mg_start()`
 Embedding Mongoose is easy. Somewhere in the application code, `mg_start()`
 function must be called. That starts the web server in a separate thread.
 function must be called. That starts the web server in a separate thread.
@@ -261,6 +309,47 @@ that shows how to easily any data can be embedded
 directly into the executable. If such data needs to be encrypted, then
 directly into the executable. If such data needs to be encrypted, then
 encrypted database or encryption dongles would be a better choice.
 encrypted database or encryption dongles would be a better choice.
 
 
+# Build on Android
+
+This is a small guide to help you run mongoose on Android. Currently it is
+tested on the HTC Wildfire. If you have managed to run it on other devices
+as well, please comment or drop an email in the mailing list.
+Note : You dont need root access to run mongoose on Android.
+
+- Download the source from the Downloads page.
+- Download the Android NDK from here
+- Make a folder (e.g. mongoose) and inside that make a folder named "jni".
+- Add `mongoose.h`, `mongoose.c` and `main.c` from the source to the jni folder.
+- Make a new file in the jni folder named "Android.mk".
+  This is the make file for ndk-build.
+
+Android.mk:
+
+    LOCAL_PATH := $(call my-dir)
+    include $(CLEAR_VARS)
+    LOCAL_MODULE    := mongoose
+    LOCAL_SRC_FILES := main.c mongoose.c
+    include $(BUILD_EXECUTABLE)
+
+- Run `./ndk-build -C /path/to/mongoose/`.
+  This should generate mongoose/lib/armeabi/mongoose
+- Using the adb tool, push the generated mongoose binary to `/data/local`
+  folder on device.
+- From adb shell, navigate to `/data/local` and execute `./mongoose`.
+- To test if the server is running fine, visit your web-browser and
+  navigate to `http://127.0.0.1:8080` You should see the `Index of /` page.
+
+![screenshot](https://a248.e.akamai.net/camo.github.com/b88428bf009a2b6141000937ab684e04cc8586af/687474703a2f2f692e696d6775722e636f6d2f62676f6b702e706e67)
+
+
+Notes:
+- jni stands for Java Native Interface. Read up on Android NDK if you want
+  to know how to interact with the native C functions of mongoose in Android
+  Java applications.
+- Download android-sdk for the adb tool.
+- TODO: A Java application that interacts with the native binary or a
+  shared library.
+
 
 
 # Other Resources
 # Other Resources
 - Presentation made by Arnout Vandecappelle at FOSDEM 2011 on 2011-02-06
 - Presentation made by Arnout Vandecappelle at FOSDEM 2011 on 2011-02-06