nuttx-apps/netutils/webserver/Kconfig
2014-06-29 09:30:09 -06:00

148 lines
5.0 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see misc/tools/kconfig-language.txt.
#
config NETUTILS_WEBSERVER
bool "uIP web server"
default n
depends on NET_TCP
---help---
Enable support for the uIP web server. This tiny web server was
from uIP 1.0, but has undergone many changes. It is, however,
still referred to as the "uIP" web server.
if NETUTILS_WEBSERVER
config NETUTILS_HTTPD_SINGLECONNECT
bool "Single Connection"
default n if !DISABLE_PTHREAD
default y if DISABLE_PTHREAD
---help---
By default, the uIP web server will create a new, independent thread
for each connection. This can, however, use a lot of stack space
if there are many connections and that can be a problem is RAM is
limited. If this option is selected, then a single thread will
service all HTTP requests and, in this case, only a single connection
at a time is supported at a time.
config NETUTILS_HTTPD_SCRIPT_DISABLE
bool "Disable %! scripting"
default y if NETUTILS_HTTPD_SENDFILE
default n if !NETUTILS_HTTPD_SENDFILE
---help---
This option, if selected, will elide the %! scripting
config NETUTILS_HTTPD_MAXPATH
bool "Maximum size of a path"
default 64
---help---
This is the maximum size of a PATH used in the web server. This setting
is the logically the same as the PATH_MAX setting that (and in fact, if
not defined, the MAX_PATH setting will be used). This setting allows
more conservative memory allocation.
config NETUTILS_HTTPD_CGIPATH
bool "URL/CGI function mapping"
default n
---help---
This option enables mappings from URLs to call CGI functions. The
effect is that the existing httpd_cgi_register() interface can be
used thus:
const static struct httpd_cgi_call a[] = {
{ NULL, "/abc", cgi_abc },
{ NULL, "/xyz", cgi_xyz }
};
for (i = 0; i < sizeof a / sizeof *a; i++) {
httpd_cgi_register(&a[i]);
}
Where (under NETUTILS_HTTPD_CGIPATH) the "/xyz" is a URL path,
rather than a %! xyz style call in the existing manner.
This is useful when NETUTILS_HTTPD_SCRIPT_DISABLE is defined.
In other words, this provides a way to get your CGI functions called
without needing the scripting language. I'm using this to provide a
REST style interface over HTTP, where my CGI handlers just return a
HTTP status code with a content length of 0.
config NETUTILS_HTTPD_ERRPATH
string "Error Path"
default ""
---help---
Path used in error return packets.
config NETUTILS_HTTPD_SERVERHEADER_DISABLE
bool "Disabled the SERVER header"
default n
---help---
This option, if selected, will elide the Server\: header
config NETUTILS_HTTPD_TIMEOUT
int "Receive Timeout (sec)"
default 0
depends on NET_SOCKOPTS
---help---
Receive timeout setting (in seconds). A timeout value of zero
disables the timeout. An HTTP 408 error is generated if the timeout
expires. This option depends on support for socket options (sockopts).
choice
prompt "File Transfer Method"
default NETUTILS_HTTPD_CLASSIC
config NETUTILS_HTTPD_CLASSIC
bool "Pre-processed files"
---help---
Traditionally, the uIP-based webserver only sends "files" that have
been prepared as a data structure using nutts/tools/mkfsdata.pl
config NETUTILS_HTTPD_MMAP
bool "File mmap-ing"
---help---
Traditionally, the uIP-based webserver only sends "files" that have
been prepared as a data structure using nutts/tools/mkfsdata.pl
However, extensions have been contributed. If this option is
selected, then files can be accessed from the NuttX file system
as well. This selection will map the files into memory (using mmap)
so that the logic is still basically compatible with the classic
approach. NOTE, however, that since files are copied into memory,
this limits solution to small files that will fit into available RAM.
config NETUTILS_HTTPD_MMAP
bool "sendfile()"
select NETUTILS_HTTPD_SCRIPT_DISABLE
---help---
Traditionally, the uIP-based webserver only sends "files" that have
been prepared as a data structure using nutts/tools/mkfsdata.pl
However, extensions have been contributed. If this option is
selected, then files can be accessed from the NuttX file system
as well. This selection will use the NuttX sendfile() interface
to send files. NOTE: If this option is selected, then scripting
must be disabled since it depends on the classic, in-memory
representation.
endchoice
config NETUTILS_HTTPD_KEEPALIVE_DISABLE
bool "Keepalive Disable"
default y if !NETUTILS_HTTPD_TIMEOUT
default n if NETUTILS_HTTPD_TIMEOUT
---help---
Disabled HTTP keep-alive for HTTP clients. Keep-alive permits a
client to make multiple requests over the same connection, rather
than closing and opening a new socket for each request.
This depends on the content-length being known, and is automatically
disabled for situations where that header isn't produced (i.e.
scripting, CGI). Keep-alive is also disabled for certain error
responses.
Keep-alive should normally be disabled if timeouts are enabled,
otherwise a rogue HTTP client could block the httpd indefinitely.
endif # NETUTILS_WEBSERVER