Application Configuration
Global Configuration
The following list shows the global configuration parameters defined in logrend.properties, sorted by topic.
Global
application.loginapp.default
The default login application that is used as a fallback if no application matches the value received in the GUI descriptor domain attribute (or in the legacy
isiwebappid
header).application.loginapp.current
Login application override. If specified, this login application will always be used.
Integration
application.webdata.pathparam
Default value:
logrendresourcepath
Name of the HTTP parameter for providing the path for static resources. As it has to be accessible to the client, this location is usually forwarded by the reverse proxy.
application.webdata.pathparam.default
Default value:
/login/resources
The default value for the HTTP parameter described above.
application.webdata.path
Default value:
{0}{2}{1}
Path to webdata directory for static resources. nevisProxy must forward all requests within this path to nevisLogRend.
{0}
is replaced with the query parameter defined viaapplication.webdata.pathparam
(provided by nevisProxy){1}
is replaced with the context path of the webapp (without the leading /){2}
is replaced by a slash if both {0} and {1} contain a value.
If the resulting path is not empty, a trailing slash is added.
Caching
cache.revalidate.delay
Default value:
15
(set to 0 to turn off revalidation completely)Time in minutes after which a cache-entry should be checked for validity. Validity checking is done against the login application's appinfo file. Set this value to 0 to turn revalidation off completely.
For short development roundtrips, you can set this value to -1 (always revalidate)
cache.source
Default value:
file
Read cached data from files (file) or from classloader (class). If both are given (comma separated), try to find the file in the given order.
cache.maxsize
Default value:
10000
Maximum number of elements (files or resources if the classloader is used) that are stored in the cache.
GUI Descriptor
application.gui.litdict
Default value:
yes
Perform LitDict mapping on GUI labels.
application.gui.substitution
Default value:
yes
Label attributes in the GUI descriptor received from nevisAuth are mapped to literal dictionary entries if configured. The labels may also contain variable references that are recursively evaluated. The process is essentially the same as in nevisAuth.
Label values may contain references to GUI descriptor elements, using the
${bean.gui.<name>}
syntax.<name>
references an element in the GUI descriptor whose value attribute will be substituted for the variable.Labels can reference other labels. This can be useful to avoid duplication of common text fragments. Use the
${bundle.<key>}
syntax to substitute other label values for the variable.If a page needs to display the server time, you can use the placeholder
${time}
which displays the server time in GMT format. For a different date format, you can use${time.<mydateformat>}
where<mydateformat>
can be any Date pattern according to the JAVA SimpleDateFormat API.keytag.start
,keytag.end
Default value:
${
and}
, respectivelyTags to be used for identifying variables in GUI labels.
Miscellaneous
application.inputs.htmlencode
Default value:
yes
HTML-encode any inputs before putting them in the output. Only set to no if the reverse proxy already encodes the user inputs.
If application.render.content.type is set to anything containing "JSON" or "Javascript" (case insensitive), encoding is done for use inside a Javascript string literal instead.
application.inputs.htmlencode.guielems
Default value:
no
(for backwards compatibility)Encode GUI elements for the content-type (works for Velocity templates only).
application.render.content.type
Default value:
text/html; charset=UTF-8
Sets the content-type header. The Charset is taken from system property
file.encoding
if set.velocity.
Prefix to pass parameters directly to the Velocity engine. The velocity. prefix will be removed before passing it through to Velocity.
Examplevelocity.input.encoding = "UTF-8"
System Properties
Additionally, some global parameters are passed via system properties. These are defined in the env.conf configuration file of the nevisLogRend instance.
ch.nevis.logrend.spooldir
The spool directory to use. This is where nevisLogRend expects login application data. Usually, there is no need to change this parameter.
file.encoding
Default value:
UTF-8
Sets the default encoding. This property controls the encoding used by the JVM when reading files, as well as the content type of the HTTP response.
Login Application Configuration
The following sections describe the configuration parameters that can be set per application. These parameters are defined in the login application's default.properties file.
Localization
application.languages
Supported languages, listed using comma-separated ISO-639 language codes. Localized texts are stored in the
text_${language}.properties
files.Exampleapplication.languages=en,de
application.languages.aliases
Aliases for supported languages if internal codes are used, listed in the following format:
<ISO-639 language code 1>=<Internal language code 1>
,<ISO-639 language code 2>=<Internal language code 2>
.Exampleapplication.languages.aliases=en=e,de=g
application.language.default
The default language.
Exampleapplication.languages.default=en
application.countries.default
Default country (ISO-3166 country code).
Exampleapplication.countries.default=CH
application.date.format
Date format (see java.text.SimpleDateFormat class reference for details).
Exampleapplication.date.format=dd.MM.yyyy / HH:mm z
application.date.showTimeZoneWithDST
Set to yes to display timezone with a different name during daylight savings time (e.g., CET -> CEST).
Exampleapplication.date.showTimeZoneWithDST=yes
application.language.source.$index
This property is used to configure how the language is determined. Mechanisms are prioritized, with lower indices indicating higher priorities.
gui
The language is taken from the GUI descriptor sent by nevisAuth / nevisProxy. This enables setting the language in the AuthStates (e.g., using information from a backend).
browser
The language is taken from the Accept-Language HTTP header sent by the user agent.
header
The language can alternatively be taken from any HTTP header.
cookie:$name
The language is extracted from the named cookie.
param:$name
The language is extracted from the named HTTP parameter (e.g., query string).
uri:$patt
The language is extracted from the URL. Set patt to a regular expression describing the login URI and the position holding the language. You have to use Java regular expression syntax. The pattern must be formed so that the first capturing group returns the ISO-639 language code.
Examplesapplication.language.source.1=param:language
application.language.source.2=uri:^/login/((en|de))/.*$
application.language.source.3=cookie:lang
application.language.source.4=gui
application.language.source.5=browserIf none of the configured mechanisms yield a result, the following policy is applied:
- Use the
isiweblang
HTTP header if given (backward compatibility behavior) - Use the language provided by the user agent.
- Use the default language if the language is not among the supported ones.
application.language.cookie.$lang=$name:$value[:$domain[:$path[:$ttl]]]
A language cookie can be set depending on the language that resulted in the language determination process described in the previous sections.
Exampleapplication.language.cookie.de=LANG:de
application.language.cookie.default
This property can be used to set a language cookie even if no language could be determined.
application.language.cookie.secure
Set this property to ’true’ to activate the secure flag for the issued language cookie.
Caching
cache.html.exempt
HTML files can be exempted from caching (e.g., an operating information file is usually exempted because it can be updated from outside at any time).
Examplecache.html.exempt={0}/OperatingInfos.html
File Serving
Requests to static resources are made by unauthenticated users. Also, nevisProxy, being unaware of the files available in nevisLogRend, is unable to filter out invalid requests. Therefore, all files provided by nevisLogRend (e.g., images, style sheets, HTML pages) are served using a servlet that will only provide the contents of a file if all of the following is true:
- The file resides logically within nevisLogRend's spool directory inside the directory data. Going up directories using "../" is not permitted. (Currently, hyperlinks can be placed within this directory, thus allowing outside files to be accessed. This possibility was left open on purpose as, for instance, files with operating information might be only available within a different directory.)
- The files reside within a subdirectory webdata. Thus, no property files etc. will ever be transferred.
- The file has an extension that is either recognized as a default (currently: gif, jpg, jpeg, png, js, html, css) or is listed in the mimetype.properties file as a valid extension with corresponding MIME type.
All configuration files read from the file system are subject to restrictions 1 and 3 (with a different set of allowed extensions).