diff --git a/README.md b/README.md index 4324bf82..1b03fd9a 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,34 @@ -# Project Mission +# Mongoose Web Server -Project mission is to provide easy to use, powerful, embeddable web server. +Mongoose easy to use, powerful, embeddable web server. Quick links: + * [Downloads](http://cesanta.com/#downloads) + * [Documentation](http://cesanta.com/#docs,Usage.md) + * [Mailing list](http://groups.google.com/group/mongoose-users) -# Downloads & Docs - -Sources, binaries and bundles are available for download at -[http://cesanta.com/#downloads](http://cesanta.com/#downloads). -User documentation is available at -[http://cesanta.com/#docs](http://cesanta.com/#docs,Usage.md). - -# Overview - -Mongoose keeps the balance between functionality and -simplicity by carefully selected list of features: +# Features - Works on Windows, Mac, UNIX/Linux, iPhone, Android, and many other platforms -- CGI, SSL, Digest auth, Websocket, WEbDAV -- Resumed download, URL rewrite, file blacklist, IP-based ACL, Windows service -- Scripting and database support (Lua Server Pages + Sqlite, see [page.lp](https://github.com/cesanta/mongoose/blob/master/build/test/page.lp) ), +- CGI, SSL, Digest auth, Websocket, WEbDAV, Resumed download, URL rewrite, file blacklist, IP-based ACL, Windows service +- Scripting and database support ([Lua](http://lua.org) + +[Sqlite](http://sqlite.org), see +[page.lp](https://github.com/cesanta/mongoose/blob/master/build/test/page.lp) ), which provides ready to go, powerful web development platform in one single-click executable with no dependencies - Simple and clean [embedding API](https://github.com/cesanta/mongoose/blob/master/mongoose.h). The source is in single [mongoose.c](https://github.com/cesanta/mongoose/blob/master/mongoose.c) file - to make embedding easy. + to make embedding easy - Extremely lightweight, has a core of under 40kB and tiny runtime footprint - Asyncronouns, non-blocking core supporting single- or multi-threaded usage - On the market since 2004, stable, mature and tested, - has man-years invested in continuous improvement and refinement - -Note that Windows and MacOS binaries have following 3rd party software -compiled in: - WolfSSL lightweight SSL library, - SQLite embedded database, - Lua embedded scripting engine. - -Questions can be asked at -[mongoose-users@googlegroups.com](http://groups.google.com/group/mongoose-users) -mailing list. + has several man-years invested in continuous improvement and refinement +- Professional support and consultancy available from +[Cesanta Software](http://cesanta.com), developer of Mongoose # Acknowledgements -Author is grateful to the following people who made their contribution: +Mongoose made better thanks to the contribution of following people: Arnout Vandecappelle, BenoƮt Amiaux, Boris Pek, Cody Hanson, Colin Leitner, Daniel Oaks, Eric Bakan, Erik Oomen, Filipp Kovalev, Ger Hobbelt, diff --git a/docs/Usage.md b/docs/Usage.md index f0cc9162..c9df71ea 100644 --- a/docs/Usage.md +++ b/docs/Usage.md @@ -1,64 +1,66 @@ -# Mongoose Usage Guide +# Mongoose User Guide -Mongoose is small and easy to use web server. It is self-contained, and does -not require any external software to run. - -On Windows, mongoose iconifies itself to the system tray icon when started. -Right-click on the icon pops up a menu, where it is possible to stop -mongoose, or configure it, or install it as Windows service. The easiest way -to share a folder on Windows is to copy `mongoose.exe` to a folder, -double-click the exe, and launch a browser at -[http://localhost:8080](http://localhost:8080). Note that 'localhost' should +Mongoose is small and easy to use web server built on top of +mongoose library. It is designed with maximum simplicity in mind. For example, +to share any directory, just drop mongoose executable file in that directory, +double-click it (on UNIX, run it from shell) and launch a browser at +[http://localhost:8080](http://localhost:8080) Note that 'localhost' should be changed to a machine's name if a folder is accessed from other computer. -On UNIX and Mac, mongoose is a command line utility. Running `mongoose` in +On Windows and Mac, Mongoose iconifies itself to the system tray when started. +Right-click on the icon pops up a menu, where it is possible to stop +mongoose, or configure it. + +On UNIX, `mongoose` is a command line utility. Running `mongoose` in terminal, optionally followed by configuration parameters (`mongoose [OPTIONS]`) or configuration file name (`mongoose [config_file_name]`) starts the -web server. Mongoose does not detach from terminal. Pressing `Ctrl-C` keys -would stop the server. +web server: + + $ mongoose -document_root /var/www # Running mongoose with cmdline options + $ mongoose /etc/my_config.txt # Running mongoose with config file + $ mongoose # Running with no parameters. This will + # serve current directory on port 8080 + +Mongoose does not detach from terminal. Pressing `Ctrl-C` keys +stops the server. When started, mongoose first searches for the configuration file. -If configuration file is specified explicitly in the command line, i.e. -`mongoose path_to_config_file`, then specified configuration file is used. +If configuration file is specified explicitly in the command line, then +specified configuration file is used. Otherwise, mongoose would search for file `mongoose.conf` in the same directory where binary is located, and use it. Configuration file can be absent. - Configuration file is a sequence of lines, each line containing -command line argument name and it's value. Empty lines, and lines beginning -with `#`, are ignored. Here is the example of `mongoose.conf` file: +command line argument name and it's value. Empty lines and lines beginning +with `#` are ignored. Here is the example of `mongoose.conf` file: - document_root c:\www - listening_ports 8080,8043s - ssl_certificate c:\mongoose\ssl_cert.pem + # This is a comment + document_root C:\www + listening_port 80 + ssl_certificate C:\mongoose\ssl_cert.pem -When configuration file is processed, mongoose process command line arguments, -if they are specified. Command line arguments therefore can override -configuration file settings. Command line arguments must start with `-`. -For example, if `mongoose.conf` has line +Command line arguments are highest priority and can override +configuration file settings. For example, if `mongoose.conf` has line `document_root /var/www`, and mongoose has been started as -`mongoose -document_root /etc`, then `/etc` directory will be served as -document root, because command line options take priority over -configuration file. Configuration options section below provide a good -overview of Mongoose features. +`mongoose -document_root /etc`, then `/etc` directory will be used as +document root. 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: +and their names are the same as in the config file. Exampli gratia, +the following two setups are equivalent: - # Using command line arguments - $ mongoose -listening_ports 1234 -document_root /var/www + $ mongoose -listening_port 1234 -document_root /var/www - # Using config file - $ cat mongoose.conf + $ cat > mongoose.conf listening_ports 1234 document_root /var/www + ^D $ mongoose Mongoose can also be used to modify `.htpasswd` passwords file: - mongoose -A + $ mongoose -A .htpasswd mydomain.com user_name user_password Unlike other web servers, mongoose does not require CGI scripts be located in a special directory. CGI scripts can be anywhere. CGI (and SSI) files are @@ -78,4 +80,6 @@ All other characters in the pattern match themselves. Examples: /foo Any string that begins with /foo **a$|**b$ Any string that ends with a or b +To restrict CGI files only to `/cgi-bin/` directory, use this setting: + $ mongoose -cgi_pattern /cgi-bin/*.cgi # Emulate /cgi-bin/ restriction