Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'master' of github.com:klacke/yaws

  • Loading branch information...
commit 128b00245f251ac4c00dca65fd3d0181fea1be06 2 parents e3c1631 + 039c300
@klacke authored
Showing with 6,463 additions and 2,749 deletions.
  1. +4 −3 .gitignore
  2. +2 −2 Makefile
  3. +1 −0  configure.in
  4. +112 −11 doc/yaws.tex
  5. +11 −5 examples/src/server_sent_events.erl
  6. +17 −5 include/yaws.hrl
  7. +15 −14 include/yaws_api.hrl
  8. +19 −4 include/yaws_dav.hrl
  9. +5 −6 known_dialyzer_warnings
  10. +1 −2  man/yaws.1
  11. +159 −56 man/yaws.conf.5
  12. +149 −35 man/yaws_api.5
  13. +2 −11 man/yaws_soap_lib.5
  14. +1,413 −79 priv/mime.types
  15. +5 −0 rebar.config
  16. +44 −0 rel/files/install_upgrade.escript
  17. +125 −20 rel/files/yaws
  18. +2 −1  rel/reltool.config
  19. +1 −1  scripts/darwin/Yaws.StartupItem
  20. +35 −0 scripts/freebsd/yaws
  21. +1 −1  scripts/freebsd/yaws.sh
  22. +5 −5 scripts/rebar-pre-script
  23. +9 −8 src/Makefile
  24. +0 −1,357 src/mime.types
  25. +234 −125 src/mime_type_c.erl
  26. +215 −59 src/yaws.erl
  27. +414 −171 src/yaws_api.erl
  28. +4 −4 src/yaws_cgi.erl
  29. +359 −99 src/yaws_config.erl
  30. +876 −361 src/yaws_dav.erl
  31. +355 −0 src/yaws_davlock.erl
  32. +2 −2 src/yaws_exhtml.erl
  33. +16 −10 src/yaws_revproxy.erl
  34. +188 −150 src/yaws_server.erl
  35. +96 −22 src/yaws_soap12_lib.erl
  36. +1 −1  src/yaws_sse.erl
  37. +4 −1 src/yaws_sup.erl
  38. +31 −23 src/yaws_websockets.erl
  39. +1 −1  test/Makefile
  40. +109 −0 test/conf/davconf.conf
  41. +128 −0 test/conf/mimetypes.conf
  42. +26 −0 test/conf/stdconf.conf
  43. +2 −2 test/eunit/Makefile
  44. +40 −0 test/eunit/cookies.dump
  45. +348 −0 test/eunit/cookies.erl
  46. +0 −24 test/eunit/embedded_yaws_id_dir.erl
  47. +128 −0 test/eunit/ipmask.erl
  48. +236 −0 test/eunit/setcookies.dump
  49. +2 −2 test/support/include.mk.in
  50. +1 −1  test/t2/Makefile
  51. +165 −31 test/t2/app_test.erl
  52. +17 −0 test/t2/dispatchmod_tester.erl
  53. +3 −1 test/t2/posttest.erl
  54. +62 −0 test/t2/www/test_upload_ssl.yaws
  55. +1 −1  test/t3/app_test.erl
  56. +21 −23 test/t4/app_test.erl
  57. +2 −1  test/t4/posttest.erl
  58. +1 −1  test/t5/app_test.erl
  59. 0  test/t7/.placeholder
  60. +33 −0 test/t7/Makefile
  61. +118 −0 test/t7/app_test.erl
  62. +3 −0  test/t7/mime.types
  63. +28 −0 test/t8/Makefile
  64. +33 −0 test/t8/davtest
  65. +15 −0 test/t8/davtest.in
  66. +1 −0  test/t8/www/test
  67. +1 −0  www/contributors.txt
  68. +4 −5 www/json_sample.yaws
  69. +0 −1  www/news
  70. +2 −1  www/server_sent_events.html
View
7 .gitignore
@@ -16,8 +16,8 @@ config.status
ebin/yaws.app
include.mk
priv/epam
+priv/charset.def
scripts/yaws.conf
-src/charset.def
src/mime_types.erl
src/yaws_configure.hrl
src/yaws_generated.erl
@@ -26,8 +26,8 @@ test/ibrowse.tar.gz
test/support/include.mk
test/support/include.sh
test/t1/localhost:8000/
-test/t[123456]/logs/
-test/t[123456]/yaws.conf
+test/t[12345678]/logs/
+test/t[12345678]/yaws.conf
test/t4/www2/8388608.bin
www/yaws.pdf
www/yaws.ps
@@ -72,3 +72,4 @@ yaws_logs
rel/yaws
dialyzer_warnings
deps/*
+.eunit/*
View
4 Makefile
@@ -79,7 +79,7 @@ touch:
find . -name '*.erl' -print | xargs touch -m
yaws.plt:
- dialyzer --build_plt -r ebin src --output_plt yaws.plt \
+ dialyzer --build_plt -r ebin --output_plt yaws.plt \
-r $(ERLDIR)/lib/sasl-$(SASL_VSN) \
-r $(ERLDIR)/lib/kernel-$(KERNEL_VSN) \
-r $(ERLDIR)/lib/stdlib-$(STDLIB_VSN) \
@@ -89,7 +89,7 @@ yaws.plt:
# -r $(ERLDIR)/lib/ssl-$(SSL_VSN)
dialyzer: yaws.plt
- -dialyzer -q --plt yaws.plt -r ebin src > dialyzer_warnings
+ -dialyzer -q --plt yaws.plt -r ebin > dialyzer_warnings
diff -U0 known_dialyzer_warnings dialyzer_warnings
.PHONY: test
View
1  configure.in
@@ -237,6 +237,7 @@ case "$host_os" in
[AC_MSG_NOTICE(found 32-bit Erlang)
case "$host_cpu" in
i?86) CBIT= ;;
+ armv6l) CBIT= ;;
*) CBIT=-m32 ;;
esac])
CFLAGS="$CFLAGS $CBIT"
View
123 doc/yaws.tex
@@ -1547,7 +1547,7 @@ \section{Stream content}
{streamcontent_from_pid, MimeType, Pid}
\end{verbatim}
-\noindent to tell \Yaws\ we wish to deliver data of mime type
+\noindent to tell \Yaws\ we wish to deliver data of MIME type
\verb+MimeType+ to the client from process \verb+Pid+. In this case,
\Yaws\ will prepare the socket for delivery from \verb+Pid+ and then
send one of the following messages to \verb+Pid+:
@@ -2192,8 +2192,8 @@ \section{Global Part}
\Yaws{}.
\item \verb+use_old_ssl = true | false+ ---
- This re-enables the old OTP ssl implementation. By default we use
- the new ssl implementation.
+ This re-enables the old OTP SSL implementation. By default we use
+ the new SSL implementation.
\item \verb+auth_log = true | false+ ---
\textit{Deprecated and ignored. Now, this target must be set in
@@ -2319,6 +2319,50 @@ \section{Global Part}
\item \verb+x_forwarded_for_log_proxy_whitelist = ListOfUpstreamProxyServerIps+ ---
\textit{This target is deprecated and will be ignored}.
+\item \verb+default_type = MimeType+ ---
+ Defines the default MIME type to be used where \Yaws\ cannot
+ determine it by its MIME types mappings. Default is
+ \textit{text/plain}.
+
+\item \verb+default_charset = Charset+ ---
+ Defines the default charset to be added when a response
+ content-type is \textit{text/*}. By default, no charset is added.
+
+\item \verb+mime_types_file = File+ ---
+ Overloads the default \textit{mime.types} file included with
+ \Yaws{}. This file must use the following format:
+\begin{verbatim}
+ # Lines beginning with a '#' or a whitespace are ignored
+ # blank lines are also ignored
+ <MIME type> <space separated file extensions>
+\end{verbatim}
+ The default file is located at
+ \textit{\${PREFIX}/lib/yaws/priv/mime.types}. You should not edit
+ this file because it may be replaced when you upgrade your server.
+
+\item \verb+add_types = ListOfTypes+ ---
+ Specifies one or more mappings between MIME types and file
+ extensions. More than one extension can be assigned to a MIME
+ type. \textit{ListOfTypes} is defined as follows:
+\begin{verbatim}
+ add_types = <MimeType1, Ext> <MimeType2, Ext1 Ext2 ...> ...
+\end{verbatim}
+ The mappings defined using this directive will overload all other
+ definitions. If a file extension is defined several times, only
+ the last one is kept. Multiple \textit{add\_types} directives may
+ be used.
+
+\item \verb+add_charsets = ListOfCharsets+ ---
+ Specifies one or more mappings between charsets and file
+ extensions. More than one extension can be assigned to a
+ charset. \textit{ListOfCharsets} is defined as follows:
+\begin{verbatim}
+ add_charsets = <Charset1, Ext> <Charset2, Ext1 Ext2 ...> ...
+\end{verbatim}
+ The mappings defined using this directive will overload all other
+ definitions. If a file extension is defined several times, only
+ the last one is kept. Multiple \textit{add\_charsets} directives
+ may be used.
\end{itemize}
@@ -2340,12 +2384,13 @@ \section{Server Part}
This makes the server listen on Port. Default is 8000.
\item \verb+listen = IpAddress+ ---
- This makes the server listen on \verb+IpAddress+ when
- virthosting several servers on the same IP/port
- address, if the browser doesn't send a \verb+Host:+ field,
- \Yaws\ will pick the first server specified in the
- config file. Multiple \verb+listen+ directives may be
- used to specify several addresses to listen on.
+ This makes the server listen on \verb+IpAddress+ when
+ virthosting several servers on the same IP/port address, if
+ the browser doesn't send a \verb+Host:+ field, \Yaws\ will
+ pick the first server specified in the config file. Multiple
+ \verb+listen+ directives may be used to specify several
+ addresses to listen on. The default listen interface is
+ 127.0.0.1.
\item \verb+listen_backlog = Integer+ ---
This sets the TCP listen backlog for the server to
@@ -2612,6 +2657,13 @@ \section{Server Part}
\textit{cgi}, \textit{fcgi}, \textit{php}. Default is\\
\verb+tilde_allowed_scripts =+ (i.e., empty).
+\item \verb+index_files = ListOfResources+ ---
+ This directive sets the list of resources to look for, when a
+ directory is requested by the client. If the last entry begins with
+ a `/', and none of the earlier resources are found, \Yaws\ will
+ perform a redirect to this uri.\\
+ Default is \verb+index_files = index.yaws index.html index.php+.
+
\item \verb+appmods = ListOfModuleNames+ ---
If any the names in \verb+ListOfModuleNames+ appear as components
in the path for a request, the path request parsing will terminate
@@ -2640,6 +2692,30 @@ \section{Server Part}
on everything except any file found in directories \verb+icons+,
\verb+js+ and \verb+top/static+ relative to the docroot.
+\item \verb+dispatchmod = DispatchModule+ ---
+ Set \verb+DispatchModule+ as a server-specific request
+ dispatching module. \Yaws\ expects \verb+DispatchModule+ to
+ export a \verb+dispatch/1+ function. When it receives a
+ request, \Yaws\ passes an \verb+#arg{}+ record to the dispatch
+ module's \verb+dispatch/1+ function, which returns one of the
+ following atom results:
+ \begin{itemize}
+ \item \verb+done+ --- this indicates the dispatch module
+ handled the request itself and already sent the response,
+ and \Yaws\ should resume watching for new requests on the
+ connection
+ \item \verb+closed+ --- same as \verb+done+ but the
+ \verb+DispatchModule+ also closed the connection
+ \item \verb+continue+ --- the dispatch module has decided
+ not to handle the request, and instead wants \Yaws\ to
+ perform its regular request dispatching
+ \end{itemize}
+ Note that when \verb+DispatchModule+ handles a request itself,
+ \Yaws\ does not support tracing, increment statistics
+ counters or allow traffic shaping for that request. It does
+ however still keep track of maximum keepalive uses on the
+ connection.
+
\item \verb+errormod_404 = Module+ ---
It is possible to set a special module that handles 404 Not Found
messages. The function\\ \verb+Module:out404(Arg, GC, SC)+ will be
@@ -2852,6 +2928,31 @@ \section{Server Part}
Use this directive is same as:
\verb+php_handler = <fcgi, HostPortSpec>+.
+\item \verb+default_type = MimeType+ ---
+ Overloads the global \verb+default_type+ value for this virtual
+ server.
+
+\item \verb+default_charset = Charset+ ---
+ Overloads the global \verb+default_charset+ value for this virtual
+ server.
+
+\item \verb+mime_types_file = File+ ---
+ Overrides the global \verb+mime_type_file+ value for this virtual
+ server. Mappings defined in \textit{File} will not overload those
+ defined by \verb+add_types+ directives in the global part.
+
+\item \verb+add_types = ListOfTypes+ ---
+ Overloads the global \verb+add_types+ values for this virtual
+ server. If a mapping is defined in the global part and redefined
+ in a server part using this directive, then it is replaced. Else
+ it is kept.
+
+\item \verb+add_charsets = ListOfCharsets+ ---
+ Overloads the global \verb+add_charsets+ values for this virtual
+ server. If a mapping is defined in the global part and redefined
+ in a server part using this directive, then it is replaced. Else
+ it is kept.
+
\item \verb+<ssl> .... </ssl>+
This begins and ends an SSL configuration for this server. It's
possible to virthost several SSL servers on the same IP given
@@ -2903,7 +3004,7 @@ \section{Server Part}
\item \verb+depth = Int+ --- Specifies the depth of certificate
chains the server is prepared to follow when verifying client
- certs. For the OTP new ssl implementation it is also used to
+ certs. For the OTP new SSL implementation it is also used to
specify how far the server, i.e. we, shall follow the SSL
certificates we present to the clients. Hence, using self
signed certs, we typically need to set this to 0.
@@ -2954,7 +3055,7 @@ \section{Server Part}
</redirect>
\end{verbatim}
With this configuration, a request for
- \url{http://abc.com/foo/x/y/z} simply gets redirected to
+ \url{http://abc.com/foo/x/y/z} simply gets redirected to \\
\url{http://www.mysite.org/zapp}. This is typically used when
we simply want a static redirect at some place in the
docroot.
View
16 examples/src/server_sent_events.erl
@@ -38,7 +38,8 @@ out(A) ->
end
end;
_ ->
- {status, 405}
+ [{status, 405},
+ {header, {"Allow", "GET"}}]
end.
init([Arg]) ->
@@ -51,8 +52,7 @@ handle_call(_Request, _From, State) ->
handle_cast(_Msg, State) ->
{noreply, State}.
-handle_info({ok, YawsPid}, #state{sock=Socket}=State) ->
- ok = inet:setopts(Socket, [{active, once}]),
+handle_info({ok, YawsPid}, State) ->
{ok, Timer} = timer:send_interval(1000, self(), tick),
{noreply, State#state{yaws_pid=YawsPid, timer=Timer}};
handle_info({discard, _YawsPid}, State) ->
@@ -61,8 +61,14 @@ handle_info({discard, _YawsPid}, State) ->
handle_info(tick, #state{sock=Socket}=State) ->
Time = erlang:localtime(),
Data = yaws_sse:data(httpd_util:rfc1123_date(Time)),
- yaws_sse:send_events(Socket, Data),
- {noreply, State};
+ case yaws_sse:send_events(Socket, Data) of
+ ok ->
+ {noreply, State};
+ {error, closed} ->
+ {stop, normal, State};
+ {error, Reason} ->
+ {stop, Reason, State}
+ end;
handle_info({tcp_closed, _}, State) ->
{stop, normal, State#state{sock=closed}};
handle_info(_Info, State) ->
View
22 include/yaws.hrl
@@ -97,10 +97,10 @@
soap_srv_mods = [],
ysession_mod = yaws_session_server, % storage module for ysession
- acceptor_pool_size = 8 % size of acceptor proc pool
- }).
-
+ acceptor_pool_size = 8, % size of acceptor proc pool
+ mime_types_info
+ }).
-record(ssl, {
keyfile,
@@ -233,6 +233,7 @@
start_mod, % user provided module to be started
allowed_scripts = [yaws,php,cgi,fcgi],
tilde_allowed_scripts = [],
+ index_files = ["index.yaws", "index.html", "index.php"],
revproxy = [],
soptions = [],
extra_cgi_vars = [],
@@ -240,7 +241,9 @@
fcgi_app_server, % FastCGI application server {host,port}
php_handler = {cgi, "/usr/bin/php-cgi"},
shaper,
- deflate_options
+ deflate_options,
+ mime_types_info, % if undefined, global config is used
+ dispatch_mod % custom dispatch module
}).
@@ -288,6 +291,16 @@
}).
+%% Internal record used to set information about mime-types
+-record(mime_types_info, {
+ mime_types_file, % an absolute filename path
+ types = [], % a map between mime-types and extensions
+ charsets = [], % a map between charsets and extensions
+ default_type = "text/plain",
+ default_charset
+ }).
+
+
%% this internal record is used and returned by the URL path parser
-record(urltype, {
type, % error | yaws | regular | directory | forbidden |
@@ -348,7 +361,6 @@
}).
-
%% as read by application:get_env()
-record(env, {
debug,
View
29 include/yaws_api.hrl
@@ -87,20 +87,21 @@
querypart = []}).
--record(setcookie,{
- key,
- value,
- quoted,
- comment,
- comment_url,
- discard,
- domain,
- max_age,
- expires,
- path,
- port,
- secure,
- version}).
+-record(setcookie, {key,
+ value,
+ quoted = false,
+ domain,
+ max_age,
+ expires,
+ path,
+ secure = false,
+ http_only = false,
+ extensions = []}).
+
+
+-record(cookie, {key,
+ value,
+ quoted = false}).
-record(redir_self, {
View
23 include/yaws_dav.hrl
@@ -1,11 +1,26 @@
-ifndef(_YAWS_DAV).
-define(_YAWS_DAV, true).
--record(propfind, {
- prop = [],
- uri = ""
- }).
+-define(LOCK_LIFETIME, 900). % lock lifetime in seconds: 15 minutes
+-define(CLEANUP_INTERVAL, 60). % cleanup interval in seconds: 1 minute
+-define(elog(X,Y), error_logger:info_msg("*elog ~p:~p: " X,
+ [?MODULE, ?LINE | Y])).
+-record(resource,{
+ name, % normalized name of resource
+ info % file_info record of mapped file
+ }).
+
+-record(davlock,{
+ path=undefined, % resource path
+ id=undefined, % uid
+ owner=anonymous, % lock owner if submitted
+ depth=infinity, % 0|infinity
+ scope=exclusive, % exclusive|shared
+ type=write, % write
+ timeout=0, % ?LOCK_LIFETIME or shorter
+ timestamp=0 % erlang:now()
+ }).
-endif.
View
11 known_dialyzer_warnings
@@ -1,9 +1,8 @@
-yaws.erl:1858: The pattern 'false' can never match the type 'true'
-yaws.erl:2366: Guard test Ret::'file' == 'fd' can never succeed
-yaws.erl:2374: Guard test Ret::'file' == 'binfd' can never succeed
-yaws_api.erl:470: The pattern <Data, ParseState = {'mp_parse_state', 'start_header', _, _, _, _}, Acc, [], []> can never match the type <_,#mp_parse_state{state::'header'},_,[any()],[{atom() | [any()],[any()]}]>
-yaws_config.erl:464: The pattern 'false' can never match the type 'true'
+yaws.erl:1648: The pattern 'false' can never match the type 'true'
+yaws.erl:2134: Guard test Ret::'file' == 'fd' can never succeed
+yaws.erl:2142: Guard test Ret::'file' == 'binfd' can never succeed
+yaws_config.erl:540: The pattern 'false' can never match the type 'true'
yaws_ctl.erl:530: Function hup/1 has no local return
yaws_ctl.erl:535: Function stop/1 has no local return
yaws_ctl.erl:539: Function status/1 has no local return
@@ -12,5 +11,5 @@ yaws_ctl.erl:564: Function trace/1 has no local return
yaws_ctl.erl:567: Function debug_dump/1 has no local return
yaws_ctl.erl:570: Function stats/1 has no local return
yaws_ctl.erl:572: Function running_config/1 has no local return
-yaws_revproxy.erl:523: The pattern 'true' can never match the type 'false'
+yaws_revproxy.erl:673: The pattern 'true' can never match the type 'false'
yaws_sup_restarts.erl:49: The pattern 'false' can never match the type 'true'
View
3  man/yaws.1
@@ -1,4 +1,4 @@
-.TH YAWS "1" "" "" "User Commands"
+.TH YAWS "1" "" "" "User Commands" -*- nroff -*-
.SH NAME
yaws \- yet another webserver
.SH SYNOPSIS
@@ -243,4 +243,3 @@ Written by Claes Wikstrom
.SH "SEE ALSO"
.BR yaws.conf (5)
.BR erl (1)
-
View
215 man/yaws.conf.5
@@ -1,4 +1,4 @@
-.TH YAWS.CONF "5" "" "" "User Commands"
+.TH YAWS.CONF "5" "" "" "User Commands" -*- nroff -*-
.SH NAME
/etc/yaws/yaws.conf \- Configuration file for the Yaws web server
.SH DESCRIPTION
@@ -37,8 +37,8 @@ where <Pid> is the process id handling the TCP connection.
\fBtrace.<Pid>.traffic\fR - this file contains the traffic trace if that is
enabled, where <Pid> is the process id handling the TCP connection.
.RE
-.HP
+.IP
Note that <Host>.access and <Host>.auth files will be used only if the directive
\fBlogger_mod\fR is not set or set to yaws_log. The default value for logdir is
\fI"."\fR
@@ -110,7 +110,7 @@ command line flag to Yaws. Default is \fIfalse\fR.
.TP
\fBuse_old_ssl = true | false\fR
-This re-enables the old OTP ssl implementation. By default we use the new ssl
+This re-enables the old OTP SSL implementation. By default we use the new SSL
implementation.
.TP
@@ -184,7 +184,7 @@ in local file systems.
For example, we can specify
.nf
- soap_srv_mods=<Mod1, HandlerFunc, WsdlFile1> <Mod2, HandlerFunc, WsdlFile2, SpecifiedPrefix> ...
+ soap_srv_mods=<Mod1, Handler, Wsdl1> <Mod2, Handler, Wsdl2, Prefix> ...
.fi
.TP
@@ -246,6 +246,60 @@ Load all config file in specified directory.
\fBx_forwarded_for_log_proxy_whitelist = ListOfUpstreamProxyServerIps\fR
\fBthis target is deprecated and will be ignored.\fR
+.TP
+\fBdefault_type = MimeType\fR
+Defines the default MIME type to be used where Yaws cannot determine it by its
+MIME types mappings. Default is \fItext/plain\fR.
+
+.TP
+\fBdefault_charset = Charset\fR
+Defines the default charset to be added when a response content-type is
+\fItext/*\fR. By default, no charset is added.
+
+.TP
+\fBmime_types_file = File\fR
+Overrides the default \fImime.types\fR file included with Yaws. This file must
+use the following format:
+
+.nf
+ # Lines beginning with a '#' or a whitespace are ignored
+ # blank lines are also ignored
+ <MIME type> <space separated file extensions>
+.fi
+
+The default file is located at \fI${PREFIX}/lib/yaws/priv/mime.types\fR. You
+should not edit this file because it may be replaced when you upgrade your
+server.
+
+.TP
+\fBadd_types = ListOfTypes\fR
+Specifies one or more mappings between MIME types and file extensions. More than
+one extension can be assigned to a MIME type. \fIListOfTypes\fR is defined as
+follows:
+
+.nf
+ add_types = <MimeType1, Ext> <MimeType2, Ext1 Ext2 ...> ...
+.fi
+
+The mappings defined using this directive will overload all other
+definitions. If a file extension is defined several times, only the last one is
+kept. Multiple \fBadd_types\fR directives may be used.
+
+.TP
+\fBadd_charsets = ListOfCharsets\fR
+Specifies one or more mappings between charsets and file extensions. More than
+one extension can be assigned to a charset. \fIListOfCharsets\fR is defined as
+follows:
+
+.nf
+ add_charsets = <Charset1, Ext> <Charset2, Ext1 Ext2 ...> ...
+.fi
+
+The mappings defined using this directive will overload all other
+definitions. If a file extension is defined several times, only the last one is
+kept. Multiple \fBadd_charsets\fR directives may be used.
+
+
.SH SERVER PART
Yaws can virthost several web servers on the same IP address as well as several
web servers on different IP addresses. This includes SSL servers.
@@ -264,7 +318,7 @@ This makes the server listen on IpAddress. When virthosting several servers on
the same ip/port address, if the browser doesn't send a Host: field, Yaws will
pick the \fIfirst\fR server specified in the config file. If the specified IP
address is 0.0.0.0 Yaws will listen on all local IP addresses on the specified
-port. Default is \fI0.0.0.0\fR. Multiple \fBlisten\fR directives may be used to
+port. Default is \fI127.0.0.1\fR. Multiple \fBlisten\fR directives may be used to
specify several addresses to listen on.
.TP
@@ -320,21 +374,21 @@ When Yaws is started, this function is called for this virtual server. If the
initialization is successful, the function must return \fI{true,State}\fR and if
an error occurred, it must return \fIfalse\fR.
.RE
-.HP
+.IP
\fBModule:close_log(ServerName, Type, State)\fR
.RS 12
This function is called for this virtual server when Yaws is stopped.
.RE
-.HP
+.IP
\fBModule:wrap_log(ServerName, Type, State, LogWrapSize)\fR
.RS 12
This function is used to rotate log files. It is regularly called by Yaws and
must return the possibly updated internal NewState.
.RE
-.HP
+.IP
\fBModule:write_log(ServerName, Type, State, Infos)\fR
.RS 12
When it needs to log a message, Yaws will call this function. The parameter
@@ -358,8 +412,8 @@ Infos is \fI{Ip,Req,InHdrs,OutHdrs,Time}\fR for an access log and
\fBTime\fR - The time taken to serve the request, in microseconds.
.RE
-.HP
+.IP
For all of these callbacks, \fBServerName\fR is the virtual server's name,
\fIType\fR is the atom access or auth and \fIState\fR is the internal state of
the logger.
@@ -426,26 +480,24 @@ Defines the smallest response size that will be compressed. If nolimit is not
used, the specified value must be strictly positive. The default value is
\fInolimit\fR.
.RE
-.HP
+.IP
\fBcompress_level = none | default | best_compression | best_speed | 0..9\fR
.RS 12
Defines the compression level to be used. 0 (none), gives no compression at all,
1 (best_speed) gives best speed and 9 (best_compression) gives best
compression. The default value is \fIdefault\fR.
.RE
-.HP
-
+.IP
\fBwindow_size = 9..15\fR
.RS 12
Specifies the zlib compression window size. It should be in the range 9 through
15. Larger values of this parameter result in better compression at the expense
of memory usage. The default value is \fI15\fR.
.RE
-.HP
-
+.IP
\fBmem_level = 1..9\fR
.RS 12
Specifies how much memory should be allocated for the internal compression
@@ -453,17 +505,16 @@ state. \fImem_level=1\fR uses minimum memory but is slow and reduces compression
ratio; \fImem_level=9\fR uses maximum memory for optimal speed. The default
value is \fI8\fR.
.RE
-.HP
-
+.IP
\fBstrategy = default | filtered | huffman_only\fR
.RS 12
This parameter is used to tune the compression algorithm. See \fBzlib(3erl)\fR
for more details on the \fIstrategy\fR parameter. The default value is
\fIdefault\fR.
.RE
-.HP
+.IP
\fBuse_gzip_static = true | false\fR
.RS 12
If true, Yaws will try to serve precompressed versions of static files. It will
@@ -471,13 +522,12 @@ look for precompressed files in the same location as original files that end in
".gz". Only files that do not fit in the cache are concerned. The default value
is \fIfalse\fR.
.RE
-.HP
-
+.IP
\fBmime_types = ListOfTypes | defaults | all\fR
.RS 12
-Restricts the deflate compression to particular mime types. The special value
-\fIall\fR enable it for all types (It is a synonym of `*/*'). Mime types into
+Restricts the deflate compression to particular MIME types. The special value
+\fIall\fR enable it for all types (It is a synonym of `*/*'). MIME types into
\fIListOfTypes\fR must have the form `type/subtype' or `type/*' (indicating all
subtypes of that type). Here is an example:
@@ -486,12 +536,11 @@ subtypes of that type). Here is an example:
mime_types = application/xml application/xhtml+xml application/rss+xml
.fi
-By default, following mime types are compressed (if
+By default, following MIME types are compressed (if
\fBdeflate\fR is set to true): \fItext/*, application/rtf, application/msword,
application/pdf, application/x-dvi, application/javascript,
-application/x-javascript\fR. Multiple mime_types directive can be used.
+application/x-javascript\fR. Multiple \fBmime_types\fR directive can be used.
.RE
-.HP
.TP
\fBdocroot = Directory ...\fR
@@ -546,6 +595,12 @@ The allowed script types for this server when executing files in a users
public_html folder Recognized are `yaws', `cgi', `fcgi', `php'. Default is
\fItilde_allowed_scripts =\fR i.e. empty
+.TP
+\fBindex_files = ListOfResources\fR
+This directive sets the list of resources to look for, when a directory is
+requested by the client. If the last entry begins with a `/', and none of the
+earlier resources are found, Yaws will perform a redirect to this uri.
+Default is \fIindex_files = index.yaws index.html index.php\fR.
.TP
\fBappmods = ListOfModuleNames\fR
@@ -579,6 +634,32 @@ except any file found in directories, 'icons', 'js' and 'top/static' relative to
the docroot.
.TP
+\fBdispatchmod = DispatchModule\fR
+Set \fIDispatchModule\fR as a server-specific request dispatching
+module. Yaws expects \fIDispatchModule\fR to export a \fIdispatch/1\fR
+function. When it receives a request, Yaws passes an \fI#arg{}\fR record to
+the dispatch module's \fIdispatch/1\fR function, which returns one of the
+following atom results:
+
+.RS 12
+\fBdone\fR - this indicates the dispatch module handled the request itself
+and already sent the response, and Yaws should resume watching for new
+requests on the connection
+
+\fBclosed\fR - same as \fIdone\fR but the \fIDispatchModule\fR also closed
+the connection
+
+\fBcontinue\fR - the dispatch module has decided not to handle the request,
+and instead wants Yaws to perform its regular request dispatching
+.RE
+
+.IP
+Note that when \fIDispatchModule\fR handles a request itself, Yaws does not
+support tracing, increment statistics counters or allow traffic shaping for
+that request. It does however still keep track of maximum keepalive uses on
+the connection.
+
+.TP
\fBerrormod_404 = Module\fR
It is possible to set a special module that handles 404 Not Found messages. The
function \fIModule:out404(Arg, GC, SC)\fR will be invoked. The arguments are
@@ -590,8 +671,8 @@ function \fIModule:out404(Arg, GC, SC)\fR will be invoked. The arguments are
\fBSC\fR - a #sconf{} record (defined in yaws.hrl)
.RE
-.HP
+.IP
The function can and must do the same things that a normal \fIout/1\fR does.
.TP
@@ -608,8 +689,8 @@ are
\fBRealm\fR - a string
.RE
-.HP
+.IP
The function can and must do the same things that a normal \fIout/1\fR does.
.TP
@@ -628,7 +709,7 @@ The function must return, \fI{content,MimeType,Cont}\fR or \fI{html, Str}\fR or
\fBexpires = ListOfExpires\fR
Controls the setting of the \fIExpires\fR HTTP header and the \fImax-age\fR
directive of the \fICache-Control\fR HTTP header in server responses for
-specific mime types. The expiration date can set to be relative to either the
+specific MIME types. The expiration date can set to be relative to either the
time the source file was last modified, or to the time of the client
access. ListOfExpires is defined as follows:
@@ -771,9 +852,8 @@ directly can use it to read any file to which it has read access. You should
consider this when setting up a system with several mutually untrusted instances
of php.
.RE
-.HP
-
+.IP
\fBphp_handler = <extern, Module:Function | Node:Module:Function>\fR - Use an
external handler, possibly on another node, to interpret .php files (if
allowed).
@@ -785,8 +865,8 @@ a #arg{} record.
.br
The function must do the same things that a normal out/1 does.
.RE
-.HP
+.IP
Default value is \fI<cgi, "/usr/bin/php-cgi">\fR.
.TP
@@ -797,6 +877,31 @@ instead.\fR
Use this directive is same as: php_handler = <fcgi, Host:Port>.
.TP
+\fBdefault_type = MimeType\fR
+Overloads the global \fBdefault_type\fR value for this virtual server.
+.TP
+\fBdefault_charset = Charset\fR
+Overloads the global \fBdefault_charset\fR value for this virtual server.
+
+.TP
+\fBmime_types_file = File\fR
+Overloads the global \fBmime_type_file\fR value for this virtual
+server. Mappings defined in \fIFile\fR will not overload those defined by
+\fBadd_types\fR directives in the global part.
+
+.TP
+\fBadd_types = ListOfTypes\fR
+Overloads the global \fBadd_types\fR values for this virtual server. If a
+mapping is defined in the global part and redefined in a server part using this
+directive, then it is replaced. Else it is kept.
+
+.TP
+\fBadd_charsets = ListOfCharsets\fR
+Overloads the global \fBadd_charsets\fR values for this virtual server. If a
+mapping is defined in the global part and redefined in a server part using this
+directive, then it is replaced. Else it is kept.
+
+.TP
\fB<ssl> ... </ssl>\fR
This begins and ends an SSL configuration for this server. It's possible to
virthost several SSL servers on the same IP given that they all share the same
@@ -811,14 +916,14 @@ http://wiki.cacert.org/VhostTaskForce#Interoperability_Test
Specifies which file contains the private key for the certificate. If not
specified then the certificate file will be used.
.RE
-.HP
+.IP
\fBcertfile = File\fR
.RS 12
Specifies which file contains the certificate for the server.
.RE
-.HP
+.IP
\fBcacertfile = File\fR
.RS 12
A file containing trusted certificates to use during client authentication and
@@ -826,8 +931,8 @@ to use when attempting to build the server certificate chain. The list is also
used in the list of acceptable client CAs passed to the client when a
certificate is requested.
.RE
-.HP
+.IP
\fBverify = 0 | 1 | 2 | verify_none | verify_peer\fR
.RS 12
Specifies the level of verification the server does on client certs. 0 means
@@ -843,8 +948,8 @@ request is sent to the client (x509 validation is performed.
You might want to use fail_if_no_peer_cert in combination with verify_peer.
.RE
-.HP
+.IP
\fBfail_if_no_peer_cert = true | false\fR
.RS 12
If verify is set to verify_peer and set to true the connection will fail if the
@@ -852,32 +957,35 @@ client does not send a certificate (i.e. an empty certificate). If set to false
the server will fail only if an invalid certificate is supplied (an empty
certificate is considered valid).
.RE
-.HP
+.IP
\fBdepth = Int\fR
.RS 12
Specifies the depth of certificate chains the server is prepared to follow when
-verifying client certs. For the OTP new ssl implementation it is also used to
+verifying client certs. For the OTP new SSL implementation it is also used to
specify how far the server, i.e. we, shall follow the SSL certificates we
-present to the clients. Hence, using self signed certs, we typically need to set
+present to the clients. Hence, using self-signed certs, we typically need to set
this to 0.
.RE
-.HP
+.IP
\fBpassword = String\fR
.RS 12
String If the private key is encrypted on disc, this password is the 3Dee key to
decrypt it.
.RE
-.HP
+.IP
\fBciphers = String\fR
.RS 12
This string specifies the SSL cipher string. The syntax of the SSL cipher string
-is a little horrible sublanguage of its own. It is documented in the ssl man
-page for "ciphers".
+is an erlang term compliant with the output of ssl:cipher_suites().
+.nf
+
+ciphers = "[{dhe_rsa,aes_256_cbc,sha}, \\
+ {dhe_dss,aes_256_cbc,sha}]"
+.fi
.RE
-.HP
.TP
\fB<redirect> ... </redirect>\fR
@@ -897,7 +1005,7 @@ appended to the redirected url. So if we for example have:
</redirect>
.fi
-Asumming this config resides on a site called http://abc.com, We have the
+Assuming this config resides on a site called http://abc.com, We have the
following redirects:
.nf
@@ -940,8 +1048,8 @@ the specified docroot. No docroot configured means all docroots. If two auth
structures are defined, one with a docroot and one with no docroot, the first of
both overrides the second one for requests in the configured docroot.
.RE
-.HP
+.IP
\fBdir = Dir\fR
.RS 12
Makes Dir to be controlled by WWW-authenticate headers. In order for a user to
@@ -949,14 +1057,14 @@ have access to WWW-Authenticate controlled directory, the user must supply a
password. The Dir must be specified relative to the docroot. Multiple dir can
be used. If no dir is set, the default value, \fI"/"\fR, will be used.
.RE
-.HP
+.IP
\fBrealm = Realm\fR
.RS 12
In the directory defined here, the WWW-Authenticate Realm is set to this value.
.RE
-.HP
+.IP
\fBauthmod = AuthMod\fR
.RS 12
If an auth module is defined then AuthMod:auth(Arg, Auth) will be called for all
@@ -971,8 +1079,8 @@ callback would check if a valid cookie header is present, if not it would return
{appmod, ?MODULE} and the out401/1 function in the same module would return
{redirect_local, "/login.html"}.
.RE
-.HP
+.IP
\fBuser = User:Password\fR
.RS 12
Inside this directory, the user User has access if the user supplies the
@@ -995,8 +1103,8 @@ recursive. Thus any subdirectories to Dir are automatically also protected.
The .yaws_auth file is never visible in a dir listing
.RE
-.HP
+.IP
\fBpam service = \fIpam-service\fR\fR
.RS 12
If the item \fBpam\fR is part of the auth structure, Yaws will also try to
@@ -1007,8 +1115,8 @@ etc.
pam authentication is performed by an Erlang port program which is typically
installed as suid root by the Yaws install script.
.RE
-.HP
+.IP
\fBallow = all | ListOfHost\fR
.RS 12
The \fIallow\fR directive affects which hosts can access an area of the
@@ -1035,16 +1143,16 @@ following formats:
allow = 10.1.0.0/16
.fi
.RE
-.HP
+.IP
\fBdeny = all | ListOfHost\fR
.RS 12
This directive allows access to the server to be restricted based on IP
address. The arguments for the \fIdeny\fR directive are identical to the
arguments for the \fIallow\fR directive.
.RE
-.HP
+.IP
\fBorder = Ordering\fR
.RS 12
The \fIorder\fR directive, along with \fIallow\fR and \fIdeny\fR directives,
@@ -1069,7 +1177,6 @@ First, all \fIdeny\fR directives are evaluated; if any match, the request is
denied unless it also matches an \fIallow\fR directive. Any requests which do
not match any \fIallow\fR or \fIdeny\fR directives are permitted.
.RE
-.HP
.TP
\fB<opaque> ... </opaque>\fR
@@ -1248,7 +1355,3 @@ Written by Claes Wikstrom
.SH "SEE ALSO"
.BR yaws (1)
.BR erl (1)
-
-Comment] Local Variables:
-Comment] mode: nroff
-Comment] End:
View
184 man/yaws_api.5
@@ -1,4 +1,4 @@
-.TH YAWS_API "5" "" "" "User API"
+.TH YAWS_API "5" "" "" "User API" -*- nroff -*-
.SH NAME
yaws_api \- api available to yaws web server programmers
.SH SYNOPSIS
@@ -43,23 +43,34 @@ We have the following relevant record definitions:
.nf
-record(arg, {
- clisock, %% the socket leading to the peer client
- client_ip_port, %% {ClientIp, ClientPort} tuple
- headers, %% headers
- req, %% request
- clidata, %% The client data (as a binary in POST requests)
- server_path, %% The normalized server path
- querydata, %% Was the URL on the form of ...?query (GET reqs)
- appmoddata, %% the remainder of the path up to the query
- docroot, %% where's the data
- fullpath, %% full path to yaws file
- cont, %% Continuation for chunked multipart uploads
- state, %% State for use by users of the out/1 callback
- pid, %% pid of the yaws worker process
- opaque, %% useful to pass static data
- appmod_prepath, %% path in front of: <appmod><appmoddata>
- pathinfo %% Set to 'd/e' when calling c.yaws for the request
- %% http://some.host/a/b/c.yaws/d/e
+ clisock, % the socket leading to the peer client
+ client_ip_port, % {ClientIp, ClientPort} tuple
+ headers, % headers
+ req, % request
+ clidata, % The client data (as a binary in POST requests)
+ server_path, % The normalized server path
+ % (pre-querystring part of URI)
+ querydata, % For URIs of the form ...?querydata
+ % equiv of cgi QUERY_STRING
+ appmoddata, % (deprecated - use pathinfo instead) the remainder
+ % of the path leading up to the query
+ docroot, % Physical base location of data for this request
+ docroot_mount, % virtual directory e.g /myapp/ that the docroot
+ % refers to.
+ fullpath, % full deep path to yaws file
+ cont, % Continuation for chunked multipart uploads
+ state, % State for use by users of the out/1 callback
+ pid, % pid of the yaws worker process
+ opaque, % useful to pass static data
+ appmod_prepath, % (deprecated - use prepath instead) path in front
+ % of: <appmod><appmoddata>
+ prepath, % Path prior to 'dynamic' segment of URI.
+ % ie http://some.host/<prepath>/<script-point>/d/e
+ % where <script-point> is an appmod mount point,
+ % or .yaws,.php,.cgi,.fcgi etc script file.
+ pathinfo % Set to '/d/e' when calling c.yaws for the request
+ % http://some.host/a/b/c.yaws/d/e
+ % equiv of cgi PATH_INFO
}).
.fi
\fR
@@ -83,15 +94,20 @@ The headers argument is also a record:
accept_ranges,
cookie = [],
keep_alive,
+ location,
content_length,
+ content_type,
+ content_encoding,
authorization,
- other = [] %% misc other headers
+ transfer_encoding,
+ x_forwarded_for,
+ other = [] % misc other headers
}).
-
.fi
\fR
-.PP The \fBout/1\fR function can use the Arg to generate any content
+.PP
+The \fBout/1\fR function can use the Arg to generate any content
it likes. We have the following functions to aid that generation.
@@ -105,7 +121,7 @@ will \fBnot\fR be parsed and searched for <erl> tags.
.TP
\fBpre_ssi_files(DocRoot, ListOfFiles) ->
-Server side include of pre indented code. The data in Files
+Server side include of pre-indented code. The data in Files
will be included but contained in a <pre> tag. The data will be
htmlized.
@@ -124,23 +140,97 @@ The equivalent of io_lib:format/2. This function is automatically
Htmlize an IO list object.
.TP
+\fBset_cookie(Name, Value, Options])\fR
+Sets a cookie to the browser. Options are:
+\fI
+.nf
+
+{expires, UtcTime} - Cookie expiration time, where UtcTime is
+ a tuple returned by calendar:universal_time/0.
+{max_age, Age} - Defines the lifetime of the cookie, in seconds,
+ where age is an integer >= 0.
+{path, Path} - Path is a string that specifies the subset of URLs to
+ which this cookie applies.
+{domain, Domain} - Domain is a string that specifies the domain for which
+ the cookie is valid.
+{comment, Comment} - Comment is a string that doccuments the server's
+ intended use of the cookie.
+secure - Directs the user agent to use only secure means to
+ contact the origin server whenever it sends back this
+ cookie.
+http_only - Restricts cookie access from other non-HTTP APIs.
+.fi
+\fR
+
+.TP
\fBsetcookie(Name, Value, [Path, [ Expire, [Domain , [Secure]]]])\fR
-Sets a cookie to the browser.
+Sets a cookie to the browser. This function is deprecated by set_cookie/3.
.TP
\fBfind_cookie_val(Cookie, Header)\fR
This function can be used to search for a cookie that was previously
set by \fBsetcookie/2-6\fR. For example if we set a cookie
-as \fByaws_api:setcookie("sid",SomeRandomSid) \fR, then on subsequent requests
+as \fByaws_api:setcookie("sid",SomeRandomSid)\fR, then on subsequent requests
from the browser we can call:
\fBfind_cookie("sid",(Arg#arg.headers)#headers.cookie)\fR
The function returns [] if no cookie was found, otherwise the actual cookie
is returned as a string.
+.TP
+\fBparse_set_cookie(Str)\fR
+This function parses the value of a \fBSet-Cookie\fR header, following the
+RFC6265. Because old RFCs (2109 and 2965) are still used, it is backward
+compatible. So this function returns a \fI#setcookie{}\fR record when only one
+cookie is found. If multiple cookies are set in a single \fBSet-Cookie\fR
+header, it returns a list of \fI#setcookie{}\fR records. If no cookie was found
+or if an error occurred, it returns [].
+
+\fI#setcookie{}\fR record is defined in \fIyaws_api.hrl\fR:
+\fI
+.nf
+
+-record(setcookie, {key,
+ value,
+ quoted = false,
+ domain,
+ max_age,
+ expires,
+ path,
+ secure = false,
+ http_only = false,
+ extensions = []}).
+.fi
+\fR
.TP
-\fBredirect(Url\fR
+\fBparse_cookie(Str)\fR
+This function parses the value of \fBCookie\fR header, following the RFC6265. It
+returns a list of \fI#cookie{}\fR records. If no cookie was found or if an error
+occurred, it returns [].
+
+\fI#cookie{}\fR record is defined in \fIyaws_api.hrl\fR:
+\fI
+.nf
+
+-record(cookie, {key,
+ value,
+ quoted = false}).
+.fi
+\fR
+
+.TP
+\fBformat_set_cookie(SetCookie)\fR
+Build a cookie string from a \fI#setcookie{}\fR record like returned by
+\fBparse_set_cookie/1\fR.
+
+.TP
+\fBformat_cookie(Cookie | [Cookie])\fR
+Build a cookie string from a \fI#cookie{}\fR record (or a list or records) like
+returned by \fBparse_cookie/1\fR.
+
+.TP
+\fBredirect(Url)\fR
This function generates a redirect to the browser.
It will clear any previously set headers. So to generate
a redirect \fBand\fR set a cookie, we need to set the cookie after
@@ -168,12 +258,12 @@ a URL to ourselves.
.nf
-record(redir_self, {
- host, %% string() - our own host
- scheme, %% http | https
- scheme_str, %% "https://" | "http://"
- port, %% integer() - our own port
- port_str %% "" | ":<int>" - the optional port part
- %% to append to the url
+ host, % string() - our own host
+ scheme, % http | https
+ scheme_str, % "https://" | "http://"
+ port, % integer() - our own port
+ port_str % "" | ":<int>" - the optional port part
+ % to append to the url
}).
.fi
@@ -188,8 +278,22 @@ from a stream of data. It returns:
The function handles multilines as defined in e.g. SMTP or HTTP
.TP
+\fBmime_type(Scope, FileName)\fR
+Returns the MIME type as defined by the extension of \fIFileName\fR. \fIScope\fR
+can have following values:
+
+.RS 12
+\fBglobal\fR - returns the result obtained from the global context.
+.br
+\fB#sconf{} | {ServerName, Port}\fR - returns the result obtained from the
+virtual server's context. If no MIME type is found in this scope, it falls back
+on the global one.
+.RE
+
+.TP
\fBmime_type(FileName)\fR
-Returns the mime type as defined by the extension of FileName
+Tries to determine the right \fIScope\fR before calling mime_type/2.
+
.TP
\fBstream_chunk_deliver(YawsPid, Data)\fR
@@ -295,12 +399,10 @@ and queryvar/2 if it is a GET request from the client.
.TP
\fBparse_multipart_post(Arg)\fR
-
If the browser has set the Content-Type header to the value
"multipart/form-data", which is the case when the browser
wants to upload a file to the server the following happens:
-
If the function returns \fB{result, Res}\fR no more data
will come from the browser.
@@ -416,6 +518,11 @@ character.
\fBurl_encode(Str)\fR
Url-encodes a string. All URLs in HTML documents must be URL encoded.
+.TP
+\fBget_sslsocket(Socket)\fR
+Returns a socket for SSL sockets or the atom \fIundefined\fR for non-SSL
+sockets. Useful for applications that have to deal with both SSL and
+non-SSL sockets.
.TP
\fBreformat_header(H)\fR
@@ -423,6 +530,13 @@ Returns a list of reformatted header values from a #headers{}
record. The return list is suitable for retransmit.
.TP
+\fBreformat_header(H, FormatFun)\fR
+Returns a list of reformatted header values from a #headers{} record, with
+each element of the list formatted via a call to \fIFormatFun\fR. This
+enables converting #headers{} records into various lists of headers and
+their values.
+
+.TP
\fBset_header(Headers, {Header, Value})\fR
Sets header \fIHeader\fR with value \fIValue\fR in the #headers{} record
\fIHeaders\fR, and returns a new #headers{} record. Using the atom
@@ -587,7 +701,7 @@ The code will be inserted in the page.
.TP
\fB{ehtml|exhtml, Term}\fR
This will transform the erlang term Term into a
-stream of HTML content. The exhtml variant transforms into
+stream of HTML content. The exhtml variant transforms into
strict XHTML code. The basic syntax of Term
is
View
13 man/yaws_soap_lib.5
@@ -1,4 +1,4 @@
-.TH YAWS_SOAP_LIB "5" "" "" "Yaws Soap API"
+.TH YAWS_SOAP_LIB "5" "" "" "Yaws Soap API" -*- nroff -*-
.SH NAME
yaws_soap_lib \- api for the yaws soap-functionality
.SH SYNOPSIS
@@ -7,7 +7,7 @@ yaws_soap_lib \- api for the yaws soap-functionality
.SH DESCRIPTION
.PP
-This is the Yaws api available for dealing with SOAP.
+This is the Yaws API available for dealing with SOAP.
.SH API
@@ -112,12 +112,3 @@ Works as the writeHrl/2 function but takes another prefix to be used.
Written by Torbjorn Tornkvist
.SH "SEE ALSO"
.BR yaws.conf (5)
-
-
-
-
-
-
-
-
-
View
1,492 priv/mime.types
@@ -1,99 +1,1433 @@
-# This is a comment. I love comments.
-
+# This is the mime.types file from the Apache web server svn trunk:
+#
+# http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+#
+# Updated 1 Sep 2012. Local modifications were also applied. The original text
+# from the top of the Apache source file is below.
+#
+# This file maps Internet media types to unique file extension(s).
+# Although created for httpd, this file is used by many software systems
+# and has been placed in the public domain for unlimited redisribution.
+#
+# The table below contains both registered and (common) unregistered types.
+# A type that has no unique extension can be ignored -- they are listed
+# here to guide configurations toward known types and to make it easier to
+# identify "new" types. File extensions are also commonly used to indicate
+# content languages and encodings, so choose them carefully.
+#
+# Internet media types should be registered as described in RFC 4288.
+# The registry is at <http://www.iana.org/assignments/media-types/>.
+#
+# MIME type (lowercased) Extensions
+# ============================================ ==========
application/activemessage
-application/andrew-inset
+application/andrew-inset ez
application/applefile
+application/applixware aw
+application/atom+xml atom
+application/atomcat+xml atomcat
application/atomicmail
+application/atomsvc+xml atomsvc
+application/auth-policy+xml
+application/batch-SMTP
+application/batch-smtp
+application/beep+xml
+application/cals-1840
+application/ccxml+xml ccxml
+application/cdmi-capability cdmia
+application/cdmi-container cdmic
+application/cdmi-domain cdmid
+application/cdmi-object cdmio
+application/cdmi-queue cdmiq
+application/cea-2018+xml
+application/cellml+xml
+application/cnrp+xml
+application/commonground
+application/conference-info+xml
+application/cpl+xml
+application/csta+xml
+application/cstadata+xml
+application/cu-seeme cu
+application/cybercash
+application/davmount+xml davmount
application/dca-rft
application/dec-dx
-application/mac-binhex40 hqx
-application/mac-compactpro cpt
+application/dialog-info+xml
+application/dicom
+application/dns
+application/docbook+xml dbk
+application/dssc+der dssc
+application/dssc+xml xdssc
+application/dvcs
+application/ecmascript ecma
+application/edi-consent
+application/edi-x12
+application/edifact
+application/emma+xml emma
+application/epp+xml
+application/epub+zip epub
+application/eshop
+application/example
+application/exi exi
+application/fastinfoset
+application/fastsoap
+application/fits
+application/font-tdpfr pfr
+application/font-woff woff
+application/gml+xml gml
+application/gpx+xml gpx
+application/gxf gxf
+application/h224
+application/http
+application/hyperstudio stk
+application/ibe-key-request+xml
+application/ibe-pkg-reply+xml
+application/ibe-pp-data
+application/iges
+application/im-iscomposing+xml
+application/index
+application/index.cmd
+application/index.obj
+application/index.response
+application/index.vnd
+application/inkml+xml ink inkml
+application/iotp
+application/ipfix ipfix
+application/ipp
+application/isup
+application/java-archive jar
+application/java-serialized-object ser
+application/java-vm class
+application/javascript js
+application/json json
+application/jsonml+json jsonml
+application/kpml-request+xml
+application/kpml-response+xml
+application/lost+xml lostxml
+application/mac-binhex40 hqx
+application/mac-compactpro cpt
application/macwriteii
-application/msword doc
+application/mads+xml mads
+application/marc mrc
+application/marcxml+xml mrcx
+application/mathematica ma nb mb
+application/mathematica-old
+application/mathml+xml mathml
+application/mbms-associated-procedure-description+xml
+application/mbms-deregister+xml
+application/mbms-envelope+xml
+application/mbms-msk+xml
+application/mbms-msk-response+xml
+application/mbms-protection-description+xml
+application/mbms-reception-report+xml
+application/mbms-register+xml
+application/mbms-register-response+xml
+application/mbms-user-service-description+xml
+application/mbox mbox
+application/media_control+xml
+application/mediaservercontrol+xml mscml
+application/metalink+xml metalink
+application/metalink4+xml meta4
+application/mets+xml mets
+application/mikey
+application/mods+xml mods
+application/moss-keys
+application/moss-signature
+application/mosskey-data
+application/mosskey-request
+application/mp21 m21 mp21
+application/mp4 mp4s
+application/mpeg4-generic
+application/mpeg4-iod
+application/mpeg4-iod-xmt
+application/msword doc dot
+application/mxf mxf
+application/nasdata
+application/news-checkgroups
+application/news-groupinfo
application/news-message-id
application/news-transmission
-application/octet-stream bin dms lha lzh exe class
-application/oda oda
-application/pdf pdf
-application/postscript ai eps ps
-application/powerpoint ppt
+application/nss
+application/ocsp-request
+application/ocsp-response
+application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy
+application/oda oda
+application/oebps-package+xml opf
+application/ogg ogx
+application/omdoc+xml omdoc
+application/onenote onetoc onetoc2 onetmp onepkg
+application/oxps oxps
+application/parityfec
+application/patch-ops-error+xml xer
+application/pdf pdf
+application/pgp-encrypted pgp
+application/pgp-keys
+application/pgp-signature asc sig
+application/pics-rules prf
+application/pidf+xml
+application/pidf-diff+xml
+application/pkcs10 p10
+application/pkcs7-mime p7m p7c
+application/pkcs7-signature p7s
+application/pkcs8 p8
+application/pkix-attr-cert ac
+application/pkix-cert cer
+application/pkix-crl crl
+application/pkix-pkipath pkipath
+application/pkixcmp pki
+application/pls+xml pls
+application/poc-settings+xml
+application/postscript ai eps ps
+application/prs.alvestrand.titrax-sheet
+application/prs.cww cww
+application/prs.nprend
+application/prs.plucker
+application/pskc+xml pskcxml
+application/qsig
+application/rdf+xml rdf
+application/reginfo+xml rif
+application/relax-ng-compact-syntax rnc
application/remote-printing
-application/rtf rtf
+application/resource-lists+xml rl
+application/resource-lists-diff+xml rld
+application/riscos
+application/rlmi+xml
+application/rls-services+xml rs
+application/rpki-ghostbusters gbr
+application/rpki-manifest mft
+application/rpki-roa roa
+application/rsd+xml rsd
+application/rss+xml rss
+application/rtf rtf
+application/rtx
+application/samlassertion+xml
+application/samlmetadata+xml
+application/sbml+xml sbml
+application/scvp-cv-request scq
+application/scvp-cv-response scs
+application/scvp-vp-request spq
+application/scvp-vp-response spp
+application/sdp sdp
+application/set-payment
+application/set-payment-initiation setpay
+application/set-registration
+application/set-registration-initiation setreg
+application/sgml
+application/sgml-open-catalog
+application/shf+xml shf
+application/sieve
+application/simple-filter+xml
+application/simple-message-summary
+application/simplesymbolcontainer
application/slate
+application/smil smi smil
+application/smil+xml smi smil
+application/soap+fastinfoset
+application/soap+xml
+application/sparql-query rq
+application/sparql-results+xml srx
+application/spirits-event+xml
+application/srgs gram
+application/srgs+xml grxml
+application/sru+xml sru
+application/ssdl+xml ssdl
+application/ssml+xml ssml
+application/tei+xml tei teicorpus
+application/thraud+xml tfi
+application/timestamp-query
+application/timestamp-reply
+application/timestamped-data tsd
+application/tve-trigger
+application/ulpfec
+application/vemmi
+application/vividence.scriptfile
+application/vnd.3M.Post-it-Notes
+application/vnd.3gpp.bsf+xml
+application/vnd.3gpp.pic-bw-large plb
+application/vnd.3gpp.pic-bw-small psb
+application/vnd.3gpp.pic-bw-var pvb
+application/vnd.3gpp.sms
+application/vnd.3gpp2.bcmcsinfo+xml
+application/vnd.3gpp2.sms
+application/vnd.3gpp2.tcap tcap
+application/vnd.3m.post-it-notes pwn
+application/vnd.FloGraphIt
+application/vnd.accpac.simply.aso aso
+application/vnd.accpac.simply.imp imp
+application/vnd.acucobol acu
+application/vnd.acucorp atc acutc
+application/vnd.adobe.air-application-installer-package+zip air
+application/vnd.adobe.formscentral.fcdt fcdt
+application/vnd.adobe.fxp fxp fxpl
+application/vnd.adobe.xdp+xml xdp
+application/vnd.adobe.xfdf xfdf
+application/vnd.aether.imp
+application/vnd.ahead.space ahead
+application/vnd.airzip.filesecure.azf azf
+application/vnd.airzip.filesecure.azs azs
+application/vnd.amazon.ebook azw
+application/vnd.americandynamics.acc acc
+application/vnd.amiga.ami ami
+application/vnd.android.package-archive apk
+application/vnd.anser-web-certificate-issue-initiation cii
+application/vnd.anser-web-funds-transfer-initiation fti
+application/vnd.antix.game-component atx
+application/vnd.apple.installer+xml mpkg
+application/vnd.apple.mpegurl m3u8
+application/vnd.arastra.swi swi
+application/vnd.aristanetworks.swi swi
+application/vnd.astraea-software.iota iota
+application/vnd.audiograph aep
+application/vnd.autopackage
+application/vnd.avistar+xml
+application/vnd.blueice.multipass mpm
+application/vnd.bluetooth.ep.oob
+application/vnd.bmi bmi
+application/vnd.businessobjects rep
+application/vnd.cab-jscript
+application/vnd.canon-cpdl
+application/vnd.canon-lips
+application/vnd.cendio.thinlinc.clientconf
+application/vnd.chemdraw+xml cdxml
+application/vnd.chipnuts.karaoke-mmd mmd
+application/vnd.cinderella cdy
+application/vnd.cirpack.isdn-ext
+application/vnd.claymore cla
+application/vnd.cloanto.rp9 rp9
+application/vnd.clonk.c4group c4g c4d c4f c4p c4u
+application/vnd.cluetrust.cartomobile-config c11amc
+application/vnd.cluetrust.cartomobile-config-pkg c11amz
+application/vnd.commerce-battelle
+application/vnd.commonspace csp
+application/vnd.comsocaller
+application/vnd.contact.cmsg cdbcmsg
+application/vnd.cosmocaller cmc
+application/vnd.crick.clicker clkx
+application/vnd.crick.clicker.keyboard clkk
+application/vnd.crick.clicker.palette clkp
+application/vnd.crick.clicker.template clkt
+application/vnd.crick.clicker.wordbank clkw
+application/vnd.criticaltools.wbs+xml wbs
+application/vnd.ctc-posml pml
+application/vnd.ctct.ws+xml
+application/vnd.cups-pdf
+application/vnd.cups-postscript
+application/vnd.cups-ppd ppd
+application/vnd.cups-raster
+application/vnd.cups-raw
+application/vnd.curl.car car
+application/vnd.curl.pcurl pcurl
+application/vnd.cybank
+application/vnd.dart dart
+application/vnd.data-vision.rdz rdz
+application/vnd.dece.data uvf uvvf uvd uvvd
+application/vnd.dece.ttml+xml uvt uvvt
+application/vnd.dece.unspecified uvx uvvx
+application/vnd.dece.zip uvz uvvz
+application/vnd.denovo.fcselayout-link fe_launch
+application/vnd.dir-bi.plate-dl-nosuffix
+application/vnd.dna dna
+application/vnd.dolby.mlp mlp
+application/vnd.dolby.mobile.1
+application/vnd.dolby.mobile.2
+application/vnd.dpgraph dpg
+application/vnd.dreamfactory dfac
+application/vnd.ds-keypoint kpxx
+application/vnd.dvb.ait ait
+application/vnd.dvb.esgcontainer
+application/vnd.dvb.ipdcdftnotifaccess
+application/vnd.dvb.ipdcesgaccess
+application/vnd.dvb.ipdcroaming
+application/vnd.dvb.iptv.alfec-base
+application/vnd.dvb.iptv.alfec-enhancement
+application/vnd.dvb.notif-aggregate-root+xml
+application/vnd.dvb.notif-container+xml
+application/vnd.dvb.notif-generic+xml
+application/vnd.dvb.notif-ia-msglist+xml
+application/vnd.dvb.notif-ia-registration-request+xml
+application/vnd.dvb.notif-ia-registration-response+xml
+application/vnd.dvb.notif-init+xml
+application/vnd.dvb.service svc
+application/vnd.dxr
+application/vnd.dynageo geo
+application/vnd.ecdis-update
+application/vnd.ecowin.chart mag
+application/vnd.ecowin.filerequest
+application/vnd.ecowin.fileupdate
+application/vnd.ecowin.series
+application/vnd.ecowin.seriesrequest
+application/vnd.ecowin.seriesupdate
+application/vnd.emclient.accessrequest+xml
+application/vnd.enliven nml
+application/vnd.epson.esf esf
+application/vnd.epson.msf msf
+application/vnd.epson.quickanime qam
+application/vnd.epson.salt slt
+application/vnd.epson.ssf ssf
+application/vnd.ericsson.quickcall
+application/vnd.eszigno3+xml es3 et3
+application/vnd.etsi.aoc+xml
+application/vnd.etsi.cug+xml
+application/vnd.etsi.iptvcommand+xml
+application/vnd.etsi.iptvdiscovery+xml
+application/vnd.etsi.iptvprofile+xml
+application/vnd.etsi.iptvsad-bc+xml
+application/vnd.etsi.iptvsad-cod+xml
+application/vnd.etsi.iptvsad-npvr+xml
+application/vnd.etsi.iptvueprofile+xml
+application/vnd.etsi.mcid+xml
+application/vnd.etsi.sci+xml
+application/vnd.etsi.simservs+xml
+application/vnd.eudora.data
+application/vnd.ezpix-album ez2
+application/vnd.ezpix-package ez3
+application/vnd.f-secure.mobile
+application/vnd.fdf fdf
+application/vnd.fdsn.mseed mseed
+application/vnd.fdsn.seed seed dataless
+application/vnd.ffsns
+application/vnd.fints
+application/vnd.flographit gph
+application/vnd.fluxtime.clip ftc
+application/vnd.font-fontforge-sfd
+application/vnd.framemaker fm frame maker book
+application/vnd.frogans.fnc fnc
+application/vnd.frogans.ltf ltf
+application/vnd.fsc.weblaunch fsc
+application/vnd.fujitsu.oasys oas
+application/vnd.fujitsu.oasys2 oa2
+application/vnd.fujitsu.oasys3 oa3
+application/vnd.fujitsu.oasysgp fg5
+application/vnd.fujitsu.oasysprs bh2
+application/vnd.fujixerox.art-ex
+application/vnd.fujixerox.art4
+application/vnd.fujixerox.ddd ddd
+application/vnd.fujixerox.docuworks xdw
+application/vnd.fujixerox.docuworks.binder xbd
+application/vnd.fujixerox.hbpl
+application/vnd.fut-misnet
+application/vnd.fuzzysheet fzs
+application/vnd.genomatix.tuxedo txd
+application/vnd.geogebra.file ggb
+application/vnd.geogebra.tool ggt
+application/vnd.geometry-explorer gex gre
+application/vnd.geonext gxt
+application/vnd.geoplan g2w
+application/vnd.geospace g3w
+application/vnd.gmx gmx
+application/vnd.google-earth.kml+xml kml
+application/vnd.google-earth.kmz kmz
+application/vnd.grafeq gqf gqs
+application/vnd.gridmp
+application/vnd.groove-account gac
+application/vnd.groove-help ghf
+application/vnd.groove-identity-message gim
+application/vnd.groove-injector grv
+application/vnd.groove-tool-message gtm
+application/vnd.groove-tool-template tpl
+application/vnd.groove-vcard vcg
+application/vnd.hal+xml hal
+application/vnd.handheld-entertainment+xml zmm
+application/vnd.hbci hbci
+application/vnd.hcl-bireports
+application/vnd.hhe.lesson-player les
+application/vnd.hp-HPGL
+application/vnd.hp-PCL
+application/vnd.hp-PCLXL
+application/vnd.hp-hpgl hpgl
+application/vnd.hp-hpid hpid
+application/vnd.hp-hps hps
+application/vnd.hp-jlyt jlt
+application/vnd.hp-pcl pcl
+application/vnd.hp-pclxl pclxl
+application/vnd.httphone
+application/vnd.hydrostatix.sof-data sfd-hdstx
+application/vnd.hzn-3d-crossword x3d
+application/vnd.ibm.MiniPay
+application/vnd.ibm.afplinedata
+application/vnd.ibm.electronic-media
+application/vnd.ibm.minipay mpy
+application/vnd.ibm.modcap afp listafp list3820
+application/vnd.ibm.rights-management irm
+application/vnd.ibm.secure-container sc
+application/vnd.iccprofile icc icm
+application/vnd.igloader igl
+application/vnd.immervision-ivp ivp
+application/vnd.immervision-ivu ivu
+application/vnd.informedcontrol.rms+xml
+application/vnd.informix-visionary
+application/vnd.insors.igm igm
+application/vnd.intercon.formnet xpw xpx
+application/vnd.intergeo i2g
+application/vnd.intertrust.digibox
+application/vnd.intertrust.nncp
+application/vnd.intu.qbo qbo
+application/vnd.intu.qfx qfx
+application/vnd.iptc.g2.conceptitem+xml
+application/vnd.iptc.g2.knowledgeitem+xml
+application/vnd.iptc.g2.newsitem+xml
+application/vnd.iptc.g2.packageitem+xml
+application/vnd.ipunplugged.rcprofile rcprofile
+application/vnd.irepository.package+xml irp
+application/vnd.is-xpr xpr
+application/vnd.isac.fcs fcs
+application/vnd.jam jam
+application/vnd.japannet-directory-service
+application/vnd.japannet-jpnstore-wakeup
+application/vnd.japannet-payment-wakeup
+application/vnd.japannet-registration
+application/vnd.japannet-registration-wakeup
+application/vnd.japannet-setstore-wakeup
+application/vnd.japannet-verification
+application/vnd.japannet-verification-wakeup
+application/vnd.jcp.javame.midlet-rms rms
+application/vnd.jisp jisp
+application/vnd.joost.joda-archive joda
+application/vnd.kahootz ktz ktr
+application/vnd.kde.karbon karbon
+application/vnd.kde.kchart chrt
+application/vnd.kde.kformula kfo
+application/vnd.kde.kivio flw
+application/vnd.kde.kontour kon
+application/vnd.kde.kpresenter kpr kpt
+application/vnd.kde.kspread ksp
+application/vnd.kde.kword kwd kwt
+application/vnd.kenameaapp htke
+application/vnd.kidspiration kia
+application/vnd.kinar kne knp
+application/vnd.koan skp skd skt skm
+application/vnd.kodak-descriptor sse
+application/vnd.las.las+xml lasxml
+application/vnd.liberty-request+xml
+application/vnd.llamagraphics.life-balance.desktop lbd
+application/vnd.llamagraphics.life-balance.exchange+xml lbe
+application/vnd.lotus-1-2-3 123
+application/vnd.lotus-approach apr
+application/vnd.lotus-freelance pre
+application/vnd.lotus-notes nsf
+application/vnd.lotus-organizer org
+application/vnd.lotus-screencam scm
+application/vnd.lotus-wordpro lwp
+application/vnd.macports.portpkg portpkg
+application/vnd.marlin.drm.actiontoken+xml
+application/vnd.marlin.drm.conftoken+xml
+application/vnd.marlin.drm.license+xml
+application/vnd.marlin.drm.mdcf
+application/vnd.mcd mcd
+application/vnd.medcalcdata mc1
+application/vnd.mediastation.cdkey cdkey
+application/vnd.meridian-slingshot
+application/vnd.mfer mwf
+application/vnd.mfmp mfm
+application/vnd.micrografx.flo flo
+application/vnd.micrografx.igx igx
+application/vnd.mif mif
+application/vnd.minisoft-hp3000-save
+application/vnd.mitsubishi.misty-guard.trustweb
+application/vnd.mobius.daf daf
+application/vnd.mobius.dis dis
+application/vnd.mobius.mbk mbk
+application/vnd.mobius.mqy mqy
+application/vnd.mobius.msl msl
+application/vnd.mobius.plc plc
+application/vnd.mobius.txf txf
+application/vnd.mophun.application mpn
+application/vnd.mophun.certificate mpc
+application/vnd.motorola.flexsuite
+application/vnd.motorola.flexsuite.adsi
+application/vnd.motorola.flexsuite.fis
+application/vnd.motorola.flexsuite.gotap
+application/vnd.motorola.flexsuite.kmr
+application/vnd.motorola.flexsuite.ttc
+application/vnd.motorola.flexsuite.wem
+application/vnd.motorola.iprm
+application/vnd.mozilla.xul+xml xul
+application/vnd.ms-artgalry cil
+application/vnd.ms-asf
+application/vnd.ms-cab-compressed cab
+application/vnd.ms-excel xls xlm xla xlc xlt xlw
+application/vnd.ms-excel.addin.macroenabled.12 xlam
+application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb
+application/vnd.ms-excel.sheet.macroenabled.12 xlsm
+application/vnd.ms-excel.template.macroenabled.12 xltm
+application/vnd.ms-fontobject eot
+application/vnd.ms-htmlhelp chm
+application/vnd.ms-ims ims
+application/vnd.ms-lrm lrm
+application/vnd.ms-office.activex+xml
+application/vnd.ms-officetheme thmx
+application/vnd.ms-pki.seccat cat
+application/vnd.ms-pki.stl stl
+application/vnd.ms-playready.initiator+xml
+application/vnd.ms-powerpoint ppt pps pot
+application/vnd.ms-powerpoint.addin.macroenabled.12 ppam
+application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm
+application/vnd.ms-powerpoint.slide.macroenabled.12 sldm
+application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm
+application/vnd.ms-powerpoint.template.macroenabled.12 potm
+application/vnd.ms-project mpp mpt
+application/vnd.ms-tnef
+application/vnd.ms-wmdrm.lic-chlg-req
+application/vnd.ms-wmdrm.lic-resp
+application/vnd.ms-wmdrm.meter-chlg-req
+application/vnd.ms-wmdrm.meter-resp
+application/vnd.ms-word.document.macroenabled.12 docm
+application/vnd.ms-word.template.macroenabled.12 dotm
+application/vnd.ms-works wps wks wcm wdb
+application/vnd.ms-wpl wpl
+application/vnd.ms-xpsdocument xps
+application/vnd.mseq mseq
+application/vnd.msign
+application/vnd.multiad.creator
+application/vnd.multiad.creator.cif
+application/vnd.music-niff
+application/vnd.musician mus
+application/vnd.muvee.style msty
+application/vnd.mynfc taglet
+application/vnd.ncd.control
+application/vnd.ncd.reference
+application/vnd.nervana
+application/vnd.netfpx
+application/vnd.neurolanguage.nlu nlu
+application/vnd.nitf ntf nitf
+application/vnd.noblenet-directory nnd
+application/vnd.noblenet-sealer nns
+application/vnd.noblenet-web nnw
+application/vnd.nokia.catalogs
+application/vnd.nokia.conml+wbxml
+application/vnd.nokia.conml+xml
+application/vnd.nokia.iptv.config+xml
+application/vnd.nokia.isds-radio-presets
+application/vnd.nokia.landmark+wbxml
+application/vnd.nokia.landmark+xml
+application/vnd.nokia.landmarkcollection+xml
+application/vnd.nokia.n-gage.ac+xml
+application/vnd.nokia.n-gage.data ngdat
+application/vnd.nokia.n-gage.symbian.install n-gage
+application/vnd.nokia.ncd
+application/vnd.nokia.pcd+wbxml
+application/vnd.nokia.pcd+xml
+application/vnd.nokia.radio-preset rpst
+application/vnd.nokia.radio-presets rpss
+application/vnd.novadigm.EDM
+application/vnd.novadigm.EDX
+application/vnd.novadigm.EXT
+application/vnd.novadigm.edm edm
+application/vnd.novadigm.edx edx
+application/vnd.novadigm.ext ext
+application/vnd.oasis.opendocument.chart odc
+application/vnd.oasis.opendocument.chart-template otc
+application/vnd.oasis.opendocument.database odb
+application/vnd.oasis.opendocument.formula odf
+application/vnd.oasis.opendocument.formula-template odft
+application/vnd.oasis.opendocument.graphics odg
+application/vnd.oasis.opendocument.graphics-template otg
+application/vnd.oasis.opendocument.image odi
+application/vnd.oasis.opendocument.image-template oti
+application/vnd.oasis.opendocument.presentation odp
+application/vnd.oasis.opendocument.presentation-template otp
+application/vnd.oasis.opendocument.spreadsheet ods
+application/vnd.oasis.opendocument.spreadsheet-template ots
+application/vnd.oasis.opendocument.text odt
+application/vnd.oasis.opendocument.text-master odm
+application/vnd.oasis.opendocument.text-template ott
+application/vnd.oasis.opendocument.text-web oth
+application/vnd.obn
+application/vnd.olpc-sugar xo
+application/vnd.oma-scws-config
+application/vnd.oma-scws-http-request
+application/vnd.oma-scws-http-response
+application/vnd.oma.bcast.associated-procedure-parameter+xml
+application/vnd.oma.bcast.drm-trigger+xml
+application/vnd.oma.bcast.imd+xml
+application/vnd.oma.bcast.ltkm
+application/vnd.oma.bcast.notification+xml
+application/vnd.oma.bcast.provisioningtrigger
+application/vnd.oma.bcast.sgboot
+application/vnd.oma.bcast.sgdd+xml
+application/vnd.oma.bcast.sgdu
+application/vnd.oma.bcast.simple-symbol-container
+application/vnd.oma.bcast.smartcard-trigger+xml
+application/vnd.oma.bcast.sprov+xml
+application/vnd.oma.bcast.stkm
+application/vnd.oma.dcd
+application/vnd.oma.dcdc
+application/vnd.oma.dd2+xml dd2
+application/vnd.oma.drm.risd+xml
+application/vnd.oma.group-usage-list+xml
+application/vnd.oma.poc.detailed-progress-report+xml
+application/vnd.oma.poc.final-report+xml
+application/vnd.oma.poc.groups+xml
+application/vnd.oma.poc.invocation-descriptor+xml
+application/vnd.oma.poc.optimized-progress-report+xml
+application/vnd.oma.xcap-directory+xml
+application/vnd.omads-email+xml
+application/vnd.omads-file+xml
+application/vnd.omads-folder+xml
+application/vnd.omaloc-supl-init
+application/vnd.openofficeorg.extension oxt
+application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
+application/vnd.openxmlformats-officedocument.presentationml.slide sldx
+application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
+application/vnd.openxmlformats-officedocument.presentationml.template potx
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
+application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
+application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
+application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
+application/vnd.osa.netdeploy
+application/vnd.osgeo.mapguide.package mgp
+application/vnd.osgi.bundle
+application/vnd.osgi.dp dp
+application/vnd.osgi.subsystem esa
+application/vnd.otps.ct-kip+xml
+application/vnd.palm pdb pqa oprc
+application/vnd.paos.xml
+application/vnd.pawaafile paw
+application/vnd.pg.format str
+application/vnd.pg.osasli ei6
+application/vnd.piaccess.application-licence
+application/vnd.picsel efif
+application/vnd.pmi.widget wg
+application/vnd.poc.group-advertisement+xml
+application/vnd.pocketlearn plf
+application/vnd.powerbuilder6 pbd
+application/vnd.powerbuilder6-s
+application/vnd.powerbuilder7
+application/vnd.powerbuilder7-s
+application/vnd.powerbuilder75
+application/vnd.powerbuilder75-s
+application/vnd.preminet
+application/vnd.previewsystems.box box
+application/vnd.proteus.magazine mgz
+application/vnd.publishare-delta-tree qps
+application/vnd.pvi.ptid1 ptid
+application/vnd.pwg-multiplexed
+application/vnd.pwg-xhtml-print+xml
+application/vnd.qualcomm.brew-app-res
+application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb
+application/vnd.rapid
+application/vnd.realvnc.bed bed
+application/vnd.recordare.musicxml mxl
+application/vnd.recordare.musicxml+xml musicxml
+application/vnd.renlearn.rlprint
+application/vnd.rig.cryptonote cryptonote
+application/vnd.rim.cod cod
+application/vnd.rn-realmedia rm
+application/vnd.rn-realmedia-vbr rmvb
+application/vnd.route66.link66+xml link66
+application/vnd.ruckus.download
+application/vnd.s3sms
+application/vnd.sailingtracker.track st
+application/vnd.sbm.cid
+application/vnd.sbm.mid2
+application/vnd.scribus
+application/vnd.sealed.3df
+application/vnd.sealed.csf
+application/vnd.sealed.doc
+application/vnd.sealed.eml
+application/vnd.sealed.mht
+application/vnd.sealed.net
+application/vnd.sealed.ppt
+application/vnd.sealed.tiff
+application/vnd.sealed.xls
+application/vnd.sealedmedia.softseal.html
+application/vnd.sealedmedia.softseal.pdf
+application/vnd.seemail see
+application/vnd.sema sema
+application/vnd.semd semd
+application/vnd.semf semf
+application/vnd.shana.informed.formdata ifm
+application/vnd.shana.informed.formtemplate itp
+application/vnd.shana.informed.interchange iif
+application/vnd.shana.informed.package ipk
+application/vnd.simtech-mindmapper twd twds
+application/vnd.smaf mmf
+application/vnd.smart.teacher teacher
+application/vnd.software602.filler.form+xml
+application/vnd.software602.filler.form-xml-zip
+application/vnd.solent.sdkm+xml sdkm sdkd
+application/vnd.spotfire.dxp dxp
+application/vnd.spotfire.sfs sfs
+application/vnd.sss-cod
+application/vnd.sss-dtf
+application/vnd.sss-ntf
+application/vnd.stardivision.calc sdc
+application/vnd.stardivision.draw sda
+application/vnd.stardivision.impress sdd
+application/vnd.stardivision.math smf
+application/vnd.stardivision.writer sdw vor
+application/vnd.stardivision.writer-global sgl
+application/vnd.stepmania.package smzip
+application/vnd.stepmania.stepchart sm
+application/vnd.street-stream
+application/vnd.sun.wadl+xml
+application/vnd.sun.xml.calc sxc
+application/vnd.sun.xml.calc.template stc
+application/vnd.sun.xml.draw sxd
+application/vnd.sun.xml.draw.template std
+application/vnd.sun.xml.impress sxi
+application/vnd.sun.xml.impress.template sti
+application/vnd.sun.xml.math sxm
+application/vnd.sun.xml.writer sxw
+application/vnd.sun.xml.writer.global sxg
+application/vnd.sun.xml.writer.template stw
+application/vnd.sus-calendar sus susp
+application/vnd.svd svd
+application/vnd.swiftview-ics
+application/vnd.symbian.install sis sisx
+application/vnd.syncml+xml xsm
+application/vnd.syncml.dm+wbxml bdm
+application/vnd.syncml.dm+xml xdm
+application/vnd.syncml.dm.notification
+application/vnd.syncml.ds.notification
+application/vnd.tao.intent-module-archive tao
+application/vnd.tcpdump.pcap pcap cap dmp
+application/vnd.tmobile-livetv tmo
+application/vnd.trid.tpt tpt
+application/vnd.triscape.mxs mxs
+application/vnd.trueapp tra
+application/vnd.truedoc
+application/vnd.tve-trigger
+application/vnd.ufdl ufd ufdl
+application/vnd.uiq.theme utz
+application/vnd.umajin umj
+application/vnd.unity unityweb
+application/vnd.uoml+xml uoml
+application/vnd.uplanet.alert
+application/vnd.uplanet.alert-wbxml
+application/vnd.uplanet.bearer-choice
+application/vnd.uplanet.bearer-choice-wbxml
+application/vnd.uplanet.cacheop
+application/vnd.uplanet.cacheop-wbxml
+application/vnd.uplanet.channel
+application/vnd.uplanet.channel-wbxml
+application/vnd.uplanet.list
+application/vnd.uplanet.list-wbxml
+application/vnd.uplanet.listcmd
+application/vnd.uplanet.listcmd-wbxml
+application/vnd.uplanet.signal
+application/vnd.vcx vcx
+application/vnd.vd-study
+application/vnd.vectorworks
+application/vnd.vidsoft.vidconference
+application/vnd.visio vsd vst vss vsw
+application/vnd.visionary vis
+application/vnd.vividence.scriptfile
+application/vnd.vsf vsf
+application/vnd.wap.sic sic
+application/vnd.wap.slc slc
+application/vnd.wap.wbxml wbxml
+application/vnd.wap.wmlc wmlc
+application/vnd.wap.wmlscriptc wmlsc
+application/vnd.webturbo wtb
+application/vnd.wfa.wsc
+application/vnd.wmc
+application/vnd.wmf.bootstrap
+application/vnd.wolfram.player nbp
+application/vnd.wordperfect wpd
+application/vnd.wqd wqd
+application/vnd.wrq-hp3000-labelled
+application/vnd.wt.stf stf
+application/vnd.wv.csp+wbxml
+application/vnd.wv.csp+xml
+application/vnd.wv.ssp+xml
+application/vnd.xara xar
+application/vnd.xfdl xfdl
+application/vnd.xfdl.webform
+application/vnd.xmi+xml
+application/vnd.xmpie.cpkg
+application/vnd.xmpie.dpkg
+application/vnd.xmpie.plan
+application/vnd.xmpie.ppkg
+application/vnd.xmpie.xlim
+application/vnd.yamaha.hv-dic hvd
+application/vnd.yamaha.hv-script hvs
+application/vnd.yamaha.hv-voice hvp
+application/vnd.yamaha.openscoreformat osf
+application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg
+application/vnd.yamaha.smaf-audio saf
+application/vnd.yamaha.smaf-phrase spf
+application/vnd.yellowriver-custom-menu cmp
+application/vnd.zul zir zirz
+application/vnd.zzazz.deck+xml zaz
+application/voicexml+xml vxml
+application/watcherinfo+xml
+application/whoispp-query
+application/whoispp-response
+application/widget wgt
+application/winhlp hlp
application/wita
application/wordperfect5.1
-application/x-bcpio bcpio
-application/x-cdlink vcd
-application/x-compress Z
-application/x-cpio cpio
-application/x-csh csh
-application/x-director dcr dir dxr
-application/x-dvi dvi
-application/x-gtar gtar
-application/x-gzip gz
-application/x-hdf hdf
-application/x-httpd-cgi cgi
-application/x-koan skp skd skt skm
-application/x-latex latex
-application/x-mif mif
-application/x-netcdf nc cdf
-application/x-sh sh
-application/x-shar shar
-application/x-stuffit sit
-application/x-sv4cpio sv4cpio
-application/x-sv4crc sv4crc
-application/x-tar tar
-application/x-tcl tcl
-application/x-tex tex
-application/x-texinfo texinfo texi
-application/x-troff t tr roff
-application/x-troff-man man
-application/x-troff-me me
-application/x-troff-ms ms
-application/x-ustar ustar
-application/x-wais-source src
-application/zip zip
-audio/basic au snd
-audio/mpeg mpga mp2
-audio/x-aiff aif aiff aifc
-audio/x-pn-realaudio ram
-audio/x-pn-realaudio-plugin rpm
-audio/x-realaudio ra
-audio/x-wav wav
-chemical/x-pdb pdb xyz
-image/gif gif
-image/ief ief
-image/jpeg jpeg jpg jpe
-image/png png
-image/tiff tiff tif
-image/x-cmu-raster ras
-image/x-portable-anymap pnm
-image/x-portable-bitmap pbm
-image/x-portable-graymap pgm
-image/x-portable-pixmap ppm
-image/x-rgb rgb
-image/x-xbitmap xbm
-image/x-xpixmap xpm
-image/x-xwindowdump xwd
+application/wsdl+xml wsdl
+application/wspolicy+xml wspolicy
+application/x-7z-compressed 7z
+application/x-abiword abw
+application/x-ace-compressed ace
+application/x-apple-diskimage dmg
+application/x-authorware-bin aab x32 u32 vox
+application/x-authorware-map aam
+application/x-authorware-seg aas
+application/x-bcpio bcpio
+application/x-bittorrent torrent
+application/x-blorb blb blorb
+application/x-bzip bz
+application/x-bzip2 bz2 boz
+application/x-cbr cbr cba cbt cbz cb7
+application/x-cdlink vcd
+application/x-cfs-compressed cfs
+application/x-chat chat
+application/x-chess-pgn pgn
+application/x-compress
+application/x-conference nsc
+application/x-cpio cpio
+application/x-csh csh
+application/x-debian-package deb udeb
+application/x-dgc-compressed dgc
+application/x-director dir dcr dxr cst cct cxt w3d fgd swa
+application/x-doom wad
+application/x-dtbncx+xml ncx
+application/x-dtbook+xml dtb
+application/x-dtbresource+xml res
+application/x-dvi dvi
+application/x-envoy evy
+application/x-eva eva
+application/x-font-bdf bdf
+application/x-font-dos
+application/x-font-framemaker
+application/x-font-ghostscript gsf
+application/x-font-libgrx
+application/x-font-linux-psf psf
+application/x-font-otf otf
+application/x-font-pcf pcf
+application/x-font-snf snf
+application/x-font-speedo
+application/x-font-sunos-news
+application/x-font-ttf ttf ttc
+application/x-font-type1 pfa pfb pfm afm
+application/x-font-vfont
+application/x-font-woff woff
+application/x-freearc arc
+application/x-futuresplash spl
+application/x-gca-compressed gca
+application/x-glulx ulx
+application/x-gnumeric gnumeric
+application/x-gramps-xml gramps
+application/x-gtar gtar
+application/x-gzip gz tgz
+application/x-hdf hdf
+application/x-install-instructions install
+application/x-iso9660-image iso
+application/x-java-jnlp-file jnlp
+application/x-javascript js
+application/x-kchart chrt
+application/x-killustrator kil
+application/x-koan skp skd skt skm
+application/x-kpresenter kpr kpt
+application/x-kspread ksp
+application/x-kword kwd kwt
+application/x-latex latex
+application/x-lzh-compressed lzh lha
+application/x-mie mie
+application/x-mobipocket-ebook prc mobi
+application/x-ms-application application
+application/x-ms-shortcut lnk
+application/x-ms-wmd wmd
+application/x-ms-wmz wmz
+application/x-ms-xbap xbap
+application/x-msaccess mdb
+application/x-msbinder obd
+application/x-mscardfile crd
+application/x-msclip clp
+application/x-msdownload exe dll com bat msi
+application/x-msmediaview mvb m13 m14
+application/x-msmetafile wmf wmz emf emz
+application/x-msmoney mny
+application/x-mspublisher pub
+application/x-msschedule scd
+application/x-msterminal trm
+application/x-mswrite wri
+application/x-netcdf nc cdf
+application/x-ns-proxy-autoconfig pac
+application/x-nzb nzb
+application/x-pkcs12 p12 pfx
+application/x-pkcs7-certificates p7b spc
+application/x-pkcs7-certreqresp p7r
+application/x-rar-compressed rar
+application/x-research-info-systems ris
+application/x-rpm rpm
+application/x-sh sh
+application/x-shar shar
+application/x-shockwave-flash swf
+application/x-silverlight-app xap
+application/x-sql sql
+application/x-stuffit sit
+application/x-stuffitx sitx
+application/x-subrip srt
+application/x-sv4cpio sv4cpio
+application/x-sv4crc sv4crc
+application/x-t3vm-image t3
+application/x-tads gam
+application/x-tar tar
+application/x-tcl tcl
+application/x-tex tex
+application/x-tex-tfm tfm
+application/x-texinfo texinfo texi
+application/x-tgif obj
+application/x-troff
+application/x-troff-man
+application/x-troff-me
+application/x-troff-ms ms
+application/x-ustar ustar
+application/x-wais-source src
+application/x-x509-ca-cert der crt
+application/x-xfig fig
+application/x-xliff+xml xlf
+application/x-xpinstall xpi
+application/x-xz xz
+application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8