
=Extendconfiguration=

Extendconfiguration allows to configure some options of the server inside a {{{<host>}}} tag. (This extension is available starting from Ocsigen ≥ 1.2)

==Loading the extension

To use that extension, first load it from the configuration file:

{{{
<extension findlib-package="ocsigenserver.ext.extendconfiguration"/>
}}}

== Options
=== Following symlinks

For extensions that access files on the filesystem (<<a_manual chapter="staticmod"|staticmod>>,...), you can decide whether symlinks should be followed or not, using the tag

{{{
<followsymlinks value="VAL" />
}}}

where {{{VAL}}} can be:
    * {{{never}}} entirely disallows following symlinks.
    * {{{always}}} always follows symlinks (more efficient). Note that this setting is not permitted in userconf files
    * {{{ownermatch}}} symlinks are followed only if the owner of the symlink and of the target coincide. (Default value)

Notice that staticmod partially overrides this setting when it not used in a userconf file. When used with the syntax {{{<static dir="dir" />}}}, the checks start only after the directory {{{dir}}}. In regexp mode, the checks only start after the value given by the {{{root}}} attribute. See the documentation of <<a_manual chpater="staticmod"|staticmod>>] for details.

=== Hiding or forbidding local files

Again for extensions that send local files, you can selectively disallow sending some files. The syntax is as such:

<hidefile>
  <extension ext="php" />
  <extension ext="cgi" />
  <file file=".htaccess" />
  <regexp regexp=".*hidden_file.*" /> <!-- End the regexp with $ to match the full file name -->
</hidefile>

Using the tag {{{hidefile}}} results in 404 error codes. To have 403 errors, use {{{forbidfile}}} instead.

=== Index of directories

When the user requests access to a directory of the filesystem, Ocsigen can automatically try to find an index file. This is done through the following option

{{{
<defaultindex>
  <index>index1</index>
  <index>index2</index>
</defaultindex>
}}}

Ocsigen serves the first file (according to the order given by the index tags) that exists.

=== List the content of directories

If you want to list the content of a directory that does not contain an index file, use the tag

{{{
<listdirs value="true" />
}}}

You can also deactivate this option with {{{value="false"}}} instead.

=== Charset

The charset of the text files that are sent by the server can be set using the tag

{{{
<charset default="utf-8">
  <extension ext='txt' value="iso8859-15" />
  <file file="bla.text" value="iso8859-15" />
  <regexp regexp=".*text.*"  value="iso8859-15" />
</charset>
}}}

This sets the default charset for text files to {{{utf8}}}, while files whose extension
are {{{txt}}}, or that are named {{{bla.text}}}, or whose name contains {{{text}}} are sent as
{{{iso8859-15}}}.

Multiple extension tags can be specified. Both the default attribute and extension tags are optional. Extension tags are cumulative between the various sites.

=== Content-type

The content-type for the files sent by the server can be specified using the tag

{{{
<contenttype default="application/octet-stream">
  <extension ext='txt' value="text/plain" />
  <file file="bla.text" value="text/plain" />
  <regexp regexp=".*text.*"  value="text/plain" />
</contenttype>
}}}

The options are similar to the ones for the {{{charset}}} tag.


===@@id='upload' File uploading

//From Ocsigen ≥ 1.3//

You can specify the directory in which the files stored in POST requests are uploaded, as well
as the maximum size for these files. The two options are named {{{uploaddir}}} and {{{maxuploadfilesize}}}:
{{{
<uploaddir>/tmp</uploaddir>
<maxuploadfilesize>1MB</maxuploadfilesize>
}}}
The arguments are the same as for the global corresponding options ; see the <<a_manual chapter="config" fragment="upload"|configuration>> page for details. In order to disallow uploading for a specific
host or site, use an empty path: {{{<uploaddir></uploaddir>}}}.

//Warning//

POST arguments (including sent files) are read once and for all, by the first extension that attempts to decode the POST parameters. This means that the POST-uploaded files are stored //according to the settings local to this first extension//. Changing the {{{uploaddir}}} and {{{maxuploadfilesize}}} options later will have no effect; plan accordingly when you write your {{{ocsigen.conf}}} file. Currently the only extension supplied
with Ocsigen that reads POST data is Eliom.


== Visibility

The options above are visible until the end of the <site> tag they are part of.
