The [Httpd]
section of conf/texis.ini
controls the
Texis Monitor Web Server. This is a minimal web server primarily
intended for certain standalone Windows applications. Most
environments (e.g. Unix) should use the vhttpd
web server instead.
This setting may be given multiple times to listen on multiple ports and/or addresses. Added in version 8.
Note: This setting is deprecated and will be removed in a future release; use Listen instead, which overrides Bind Address and Port.
The local IP address to bind to. There is no default; the Listen default applies instead.
Note: This setting is deprecated and will be removed in a future release; use Listen instead, which overrides Bind Address and Port.
The TCP port to listen to. There is no default; the Listen default applies instead.
printf
-like format string containing %
-codes for
certain special values. The codes are based on Apache 2.4's
LogFormat
directive format codes, with some codes
unsupported.
Note that conf/texis.ini
setting values normally have certain
%
-variables replaced (e.g. %INSTALLDIR%
); such var
replacement may unexpectedly alter the Log Format value, as it
is likely to also contain %
codes that have meaning only in
Log Format. To avoid this conflict, assign Log Format
with the ":=
" operator instead of the usual "=
":
the former disables variable substitution.
Some Log Format
codes can take a {
varName}
prefix - e.g. "%{Referer}i
" - as a parameter; these are
noted in the list of codes below:
%%
A percent sign%a
Client (remote) IP address%A
Local IP address%B
The response size in bytes, not including headers%b
The response size in bytes, not including headers,
or "-
" (dash) if unknown/empty%{varName}C
The value of cookie varName
in the
request, or dash if unset%D
Elapsed time for the transaction, in microseconds%{varName}e
Environment variable varName
;
unimplemented, always a dash%f
The request's filename path%h
The client hostname; reverse-DNS lookups are not
currently performed so this is always the IP address%H
The request protocol%{varName}i
The request header named varName
,
or dash if unset; for security the value is escaped as if a C
literal string%k
Number of Keep-Alives performed on this socket;
i.e. one less than the number of transactions performed%l
Remote logname via identd; unimplemented, always a dash%m
Request method (e.g. "GET
")%{varName}n
Apache module note named varName
;
unimplemented, always a dash%{varName}o
Reply header named varName
;
unimplemented, always a dash%{varName}p
Canonical server port; varName
is
optional and may be "canonical
" for canonical server
port (e.g. 80), "local
" for local port (same as
canonical), or "remote
" for remote port%{varName}P
PID of process servicing the transaction;
varName
is optional and may be "pid
" for PID,
"tid
" for thread ID, or "hextid
" for the
thread ID in hexadecimal%q
Request query string (with "?
"), or empty
if none%r
Request line; escaped as C literal string for security%R
Handler-generated request; unimplemented, always a dash%s
Status code (e.g. 200)%>s
Final status code (e.g. 200); same as %s
%{varName}t
Timestamp when request started;
varName
may be a strftime()
date format; the
default is "[%d/%b/%Y:%H:%M:%S %z]
". The prefix
"begin:
" may be prepended for the time the transaction
began, or "end:
for the time the transaction ended.%T
Length of time in seconds for transaction%u
Remote user; unimplemented, always a dash%U
URL path of request, without query string; URL-decoded%v
Canonical server name%V
Same as %v
%X
Connection status: "X
" if connection
error/aborted, "+
" if connection is reusable (via
Keep-Alive), "-
" if not reusable%I
Number of bytes received (including request line
and headers); unimplemented, always a dash%O
Number of bytes sent (including request line
and headers); unimplemented, always a dash%S
Number of bytes received and sent (including
request line and headers); unimplemented, always a dash%{varName}/
Non-Apache extension: print the
resource statistic varName
; one of the following:
UserTime
SystemTime
RealTime
MaxResidentSetSize
IntegralSharedMemSize
IntegralUnsharedDataSize
IntegralUnsharedStackSize
MinorPageFaults
MajorPageFaults
Swaps
BlockInputOps
BlockOutputOps
MessagesSent
MessagesReceived
SignalsReceived
VoluntaryContextSwitches
InvoluntaryContextSwitches
K
" appended. The varName
given may have one of
the prefixes "self
", "children
",
"both
" or "thread
" prepended, with a period
between it and the rest of varName
. Such a prefix alters
which statistics group varName
is printed from, as per
the Unix getrusage()
call; the default is children
for the Monitor web server and self
for vhttpd
.
Not all platforms support all groups, nor all statistic names.
Unsupported statistics are printed as a dash.
Apache's status-code qualifier prefix syntax is supported: after
the "%
", a comma-separated list of status codes may be
given, indicating that the format code is only to be printed if the
response status matches one of the codes.
E.g. "%404,500{User-Agent}i
" only logs the user agent on
404 or 500 responses. An exclamation point preceding the list
negates it, i.e. the format is printed if the response status does
not match one of the codes. The Apache "<
" and
">
" modifiers are also supported (though essentially
ignored, since there is only one request).
The Log Format setting was added in version 7.01.1384824000 20131118.
<exec>
option USER
for
caveats and permission requirements. Added in version
4.04.1071892000 20031219.
<exec>
flag
FASTLOGON
for caveats and permission requirements. Added in
version 4.04.1071892000 20031219.
<meta>
robots tag on automatic directory index
pages should indicate (via follow) that the pages' links
should be followed by web crawlers. Zero indicates (via nofollow) that the links should not be followed. Added in version
5.01.1225747000 20081103.
Accept-
... header preferences, and the highest-ranked file
will be served. Applies to implicit Index Files
files too.
For example, a request for "/dir/file
" might return
"/dir/file.html
", "/dir/file.txt.gz
" etc. If
variant(s) are found but are not deemed acceptable according to the
client's Accept-
... headers, a 406 Not Acceptable
response may result. Currently, only the
Accept-Encoding
client header is respected. Added in version
5.01.1251952000 20090903.
LD_LIBRARY_PATH
if needed. Use with caution. Added in
version 4.02.1047673208 Mar 14 2003.
In addition, all "settings" in the [Httpd Set Env] section are taken as environment variable assignments to pass to the CGI environment. This allows environment variables which aren't set in the web server's environment to be set in the CGI environment. Added in version 4.02.1047663381 Mar 14 2003.
<urlcp verbose>
documentation for details, as this is the same format.
This is generally only set at the request of tech support. Some flags currently unsupported (e.g. all document flags). Added in version 5.01.1184720000 20070717. Previous to version 7.07.1545428000 20181221 only the request/response lines/headers flags existed, and were 4x (2 bit positions) smaller.
Flags supported:
<urlcp traceauth>
setting. Generally
only set at the request of tech support. Added in version
5.01.1184720000 20070717.
If set to on, the default port value becomes 443 instead of 80. Added in version 6. If there is a problem initializing the SSL layer, an error such as "SSL disabled for web server due to previous errors" may result in monitor.log, after other errors (e.g. failed to load certificate): the web server will continue to run, but as if SSL Engine was off.
If a server is started with a password-protected key, but SSL Pass Phrase Dialog is set to off, an error such as "Cannot obtain password to decrypt SSL certificate key `.../server.key': [Httpd] SSL Pass Phrase Dialog is `off'" may result in monitor.log. If SSL Pass Phrase Dialog is set to builtin and an incorrect password is given when the monitor server is started (and prompts the user), the error "Cannot parse SSL certificate key `.../server.key': Bad password" may result in the log and the error "Failed to load SSL certificate key .../server.key" may be output to the user starting the monitor.
Note: if builtin is set, the monitor must be started manually on the command line, so that it can prompt for any needed password(s). Setting added in version 6. See also the [Scheduler] SSL Pass Phrase Dialog setting for the schedule/license server, here.
The server certificate file is provided by the administrator. One
way to create a certificate and unencrypted private key if they do
not exist is with the command:
/usr/local/morph3/etc/openssl req -new -x509 -nodes -days 3653 \
-out server.cert -keyout server.key
See http://www.openssl.org/
for more on the openssl
command.
If the server certificate file is missing, an error such as "Cannot read SSL certificate .../server.cert: No such file or
directory" may result in monitor.log
.
off
. If this setting is unset (the default), the
certificate key is assumed to be concatenated into SSL
Certificate File. Added in version 6. Note: This file
should be accessible only to the Texis Monitor server, i.e. the
monitor
owner. See the openssl
example above for
an example of how to create this file if it does not exist.
If the SSL certificate key is password-protected, SSL Pass
Phrase Dialog will need to be set to "builtin
" to allow
the monitor to prompt for the password at server start; otherwise an
error such as "Cannot obtain password to decrypt SSL
certificate key" will result.
If the certificate key file is missing, an error such as "Cannot read SSL certificate key `.../server.key': No such file or
directory" may result in monitor.log
.
Setting a CA chain for the server certificate may be needed so that a web browser can trust the server. If the server certificate was not signed by a well-known CA that the browser already trusts, the browser might give an SSL/certificate/security error to the user. Supplying the CA chain - up through a well-known root CA certificate - lets the browser follow that chain to the well-known root CA that it trusts, avoiding the security error.
Note that this setting only sets the server certificate CA chain; it does not alter what CA certificates the server trusts for authentication of clients (see SSL CA Certificate File).
Note also that if further CA certificates are needed to finish the server certificate's chain (due to SSL Certificate Chain File being unset or incomplete), the server may automatically obtain them from the SSL CA Certificate File. Since SSL CA Certificate File certificates are trusted whereas SSL Certificate Chain File certificates are not, it is best to add all needed server certificate chain certificates directly via SSL Certificate Chain File, and not implicitly via SSL CA Certificate File. For example, say the server certificate's issuer is a well-known Thawte certificate, but the server also wants to do authentication of clients and only trust clients with certificates issued by a local issuer (say Acme Co.). The Acme certificate should be the only certificate in the SSL CA Certificate File file - so that the server trusts only client certificates issued by Acme. The well-known Thawte certificate should only be in SSL Certificate Chain File - so that browsers can verify the server. If the Thawte certificate were in SSL CA Certificate File, the server chain would still be completed correctly, but the server would start trusting all clients with Thawte certificates - which is not what is desired.
Added in version 6.00.1318364000 20111011.
Note that while this setting (SSL CA DN Request File) sets the list of requested CAs, it does not set the list of CAs that are actually trusted by the server - that is controlled by SSL CA Certificate File. Usually these lists are the same, and hence this setting may be left unset. But sometimes they differ, e.g. if client certificates are signed by intermediate CAs: the requested list may need to be set differently with this setting, to prompt the user more correctly. Added in version 6.00.1318364000 20111011.
If on and a client certificate cannot be obtained or verified, the connection will be terminated with a server error such as "Cannot verify certificate from host:port: reason at depth N". The specific reason may vary; see the SSL Client/Server Certificate Verification appendix of the Vortex manual for a full list. The client/browser may see an error such as "SSL peer was unable to negotiate an acceptable set of security parameters / ssl_error_handshake_failure_alert", or "Cannot complete SSL handshake: ... alert bad certificate".
The Apache-compatible setting values none and require are also permitted, as aliases for on and off, respectively. The Apache value optional is also permitted - client certificates will be requested and must be verified if presented, but if no certificate is presented the connection continues. (This is a less secure value but may be useful for debugging, development etc.)
When asking for the client certificate, the server will present a list of names of certificate authorities (CAs): the client may choose which certificate to return based on this list. This list is obtained from SSL CA DN Request File if set, or SSL CA Certificate File if the former is unset.
The SSL Verify Client setting was added in version 6.00.1318364000 20111011.
In version 7.07 and later, an optional cipher group may be given as the first space-separated token in the setting value, to set the cipher list for that protocol group. The group may be SSL (the default) for protocols TLSv1.2 and below, or TLSv1.3 for TLSv1.3 ciphers; the cipher lists for the two groups are independent.