usual YAZ address format (typically
<literal>tcp:<parameter>hostname</parameter>:<parameter>port</parameter></literal>)
as described in
- <ulink url="http://www.indexdata.dk/yaz/doc/comstack.addresses.tkl"
+ <ulink url="&url.yaz.comstack.addresses;"
>the Addresses section of the YAZ manual</ulink>.
</para>
</listitem>
</orderedlist>
</para>
<para>
- If the proxy receives an SRW/SRU request, the following rules are used.
+ If the proxy receives an SRU request, the following rules are used.
<orderedlist>
<listitem>
<para>If default target has Explain information with a
<literal>database</literal> that matches the path of the
- HTTP request of SRW/SRU that backend server is used for
- SRW/SRU operation.
- </para>
+ HTTP request of SRU that backend server is used for SRU operation.
+ </para>
</listitem>
<listitem>
<para>
</listitem>
</orderedlist>
</para>
- <note>
- <para>
- We know it is stupid to only check for explain in default target.
- It means that it is only possible to offer one SRW/SRU server.
- We expect to improve that in the next version of the YAZ proxy.
- </para>
- </note>
</section>
<section id="proxy-keepalive">
<title>Keep-alive Facility</title>
</para>
<para>
The config file is XML based. The YAZ proxy must be compiled
- with <ulink url="http://www.xmlsoft.org/">libxml2</ulink> and
- <ulink url="http://xmlsoft.org/XSLT/">libXSLT</ulink> support in
+ with <ulink url="&url.libxml2;">libxml2</ulink> and
+ <ulink url="&url.libxslt;">libXSLT</ulink> support in
order for the config file facility to be enabled.
</para>
<para>
<para>
The proxy config file must have a root element called
<literal>proxy</literal> and scoped within namespace
- <literal> xmlns="http://indexdata.dk/yazproxy/schema/0.8/</literal>.
+ <literal> xmlns="http://indexdata.dk/yazproxy/schema/0.9/"</literal>.
All information except an optional XML header must be stored
within the <literal>proxy</literal> element.
</para>
<screen>
<?xml version="1.0"?>
- <proxy xmlns="http://indexdata.dk/yazproxy/schema/0.8/">
+ <proxy xmlns="http://indexdata.dk/yazproxy/schema/0.9/">
<!-- content here .. -->
</proxy>
</screen>
equivalent to command line option <literal>-t</literal>.
</para>
<para>
- <screen>
- <?xml version="1.0"?>
- <proxy xmlns="http://indexdata.dk/yazproxy/schema/0.9/">
- <target name="server1" default="1">
- <!-- description of server1 .. -->
- </target>
- <target name="server2">
- <!-- description of server2 .. -->
- </target>
- </proxy>
+ <screen><![CDATA[
+ <?xml version="1.0"?>
+ <proxy xmlns="http://indexdata.dk/yazproxy/schema/0.9/">
+ <target name="server1" default="1">
+ <!-- description of server1 .. -->
+ </target>
+ <target name="server2">
+ <!-- description of server2 .. -->
+ </target>
+ </proxy>
+ ]]>
</screen>
</para>
</section>
</para>
</section>
+ <section id="proxy-config-max-sockets">
+ <title>max-sockets</title>
+ <para>
+ The element <literal>max-sockets</literal> is the child of element
+ <literal>target</literal> and specifies the maximum number of sockets
+ to use for the target for all sessions using it. In other words: maximum
+ number of Z39.50 session to the target.
+ </para>
+ </section>
+
<section id="proxy-config-keepalive">
<title>keepalive</title>
<para>The <literal>keepalive</literal> element holds information about
<title>syntax</title>
<para>
The <literal>syntax</literal> element specifies accept or reject
- or a particular record syntax request from the client.
+ or a particular record syntax request from the client. It also
+ allows record conversion of XML records via XSLT.
</para>
<para>
The <literal>syntax</literal> has one required attribute:
record to OPACXML.
</para>
<para>
+ When <literal>marcxml</literal> is used, yazproxy assumes
+ that records retrieved from the backend are encoded in the
+ <ulink url="&url.marc8;">MARC-8</ulink> character set.
+ This is correct for most MARC21 based systems, but not for
+ other MARC variants or UTF-8 based MARC21 systems.
+ The <literal>backendcharset</literal> attribute specifies
+ the character set of the MARC records to be converted.
+ </para>
+ <para>
If attribute <literal>backendtype</literal> is given, that holds the
record syntax to be transmitted to backend.
</para>
<para>
+ If attribute <literal>backendelementset</literal> is given, that holds
+ elementset to be transmitted to backend. An empty value of
+ <literal>backendelementset</literal> has the effect of omitting
+ any Comp-Spec (and elementset) sent to backend.
+ </para>
+ <para>If <literal>backendelementset</literal> is omitted, the element
+ set from client is used, except if <literal>marcxml</literal> is used.
+ In that case (using <literal>marcxml</literal>), no Comp-Spec and no
+ elementset is sent to backend.
+ </para>
+ <para>
If attribute <literal>stylesheet</literal> is given, the proxy
will convert XML record from server via XSLT. It is important
that the content from server is XML. If used in conjunction with
</para>
<para>
If attribute <literal>identifier</literal> is given that is the
- SRW/SRU record schema identifier for the resulting output record (after
+ SRU record schema identifier for the resulting output record (after
MARCXML and/or XSLT conversion).
</para>
<para>
If sub element <literal>title</literal> is given (as child element
- of <literal>syntax</literal>, then that is the official SRW/SRU
+ of <literal>syntax</literal>, then that is the official SRU
name of the resulting record schema.
</para>
<para>
<title>explain</title>
<para>
The <literal>explain</literal> element includes Explain information
- for SRW/SRU about the server in the target section. This
+ for SRU about the server in the target section. This
information must have a <literal>serverInfo</literal> element
with a database that this target must be available as (URL path).
For example,
</explain>
]]>
</screen>
- In the above case, the SRW/SRU service is available as
+ In the above case, the SRU service is available as
<literal>http://myhost.org:8000/mydatabase</literal>.
</para>
The content of the <literal>cql2rpn</literal> element specifies
the path from the working directory to a CQL-to-RPN conversion
file for the server in the target section. This element
- is required for SRW/SRU searches to operate against Z39.50
+ is required for SRU searches to operate against Z39.50
servers that don't support CQL. Most Z39.50 servers only support
Type-1/RPN so this is usually required.
</para>
<para>
See YAZ documentation for more information about the
- <ulink url="http://indexdata.dk/yaz/doc/tools.tkl#tools.cql.pqf">CQL
- to PQF</ulink> conversion. See also the
+ <ulink url="&url.yaz.cql2pqf;">CQL to PQF</ulink> conversion.
+ See also the
<filename>pqf.properties</filename> in the <filename>etc</filename>
(or <replaceable>prefix/share/yazproxy</replaceable>)
directory of the YAZ proxy distribution.
</para>
<para>
If this is specified the proxy will act as a Z39.50 server
- supporting character set negotiation. And in SRW/SRU mode
+ supporting character set negotiation. And in SRU mode
it will convert from UTF-8 (UNICODE) to this native character
set (if possible).
</para>
</para>
<tip>
<para>
- Using the <ulink url="http://www.gnu.org/software/bash/bash.html">
- bash</ulink> shell, you can set the limit with
+ Using the <ulink url="&url.bash;">bash</ulink> shell, you can set
+ the limit with
<literal>ulimit -n</literal><replaceable>no</replaceable>.
Use <literal>ulimit -a</literal> to display limits.
</para>
and the size of the APDU is logged.
</entry>
</row>
+ <row>
+ <entry><literal>client-ip</literal></entry>
+ <entry>
+ Log the client IP for each log entry. By default, the client IP
+ is only logged when a new session starts.
+ </entry>
+ </row>
</tbody>
</tgroup>
</table>
<para>
The element <literal>max-connect</literal> is a child of element
<literal>proxy</literal> and specifies the maximum number
- of connections to be initiated within the last minute.
+ of connections to be initiated within the last minute (or
+ value of <link linkend="proxy-period-connect">period-connect</link>.
</para>
<para>
If the maximum number is reached the proxy will terminate the
<para>
The element <literal>max-connect</literal> is a child of element
<literal>proxy</literal> and specifies the limit of number
- of connections to be initiated within the last minute.
+ of connections to be initiated within the last minute (or
+ value of <link linkend="proxy-period-connect">period-connect</link>.
+ </para>
+ <para>
+ If the maximum number is reached the proxy delays the first operation
+ in the session by one second.
+ </para>
+ </section>
+
+ <section id="proxy-period-connect">
+ <title>period-connect</title>
+ <para>
+ The element <literal>period-connect</literal> is a child of element
+ <literal>proxy</literal> and specifies period - in the number of seconds
+ that <link linkend="proxy-limit-connect">limit-connect</link> and
+ <link linkend="proxy-max-connect">max-connect</link>
+ should measure connections.
</para>
<para>
- If the maximum number is reached the proxy delay the first operatation
- in the session (Thus delaying the connection).
+ If <literal>period-connect</literal> is omitted, 60 seconds is used.
</para>
</section>
The <literal>categoryTypeId</literal> is either
OID 1.2.840.10003.10.1000.81.1, 1.2.840.10003.10.1000.81.2
for proxy target and proxy cookie respectively. The
- integer element <literal>category</literal> is set to 0.
+ <literal>categoryValue</literal> is set to 1.
The value proxy and cookie is stored in element
<literal>characterInfo</literal> of the <literal>information</literal>
choice.
<screen><![CDATA[
<?xml version="1.0"?>
<!-- XML Schema for YAZ proxy config file.
- $Id: reference.xml,v 1.16 2006-04-06 10:30:16 adam Exp $
-->
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
<xs:element ref="url" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="target-timeout" minOccurs="0"/>
<xs:element ref="client-timeout" minOccurs="0"/>
+ <xs:element ref="max-sockets" minOccurs="0"/>
<xs:element ref="keepalive" minOccurs="0"/>
<xs:element ref="limit" minOccurs="0"/>
<xs:element ref="attribute" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="url" type="xs:string"/>
<xs:element name="target-timeout" type="xs:integer"/>
<xs:element name="client-timeout" type="xs:integer"/>
+ <xs:element name="max-sockets" type="xs:integer"/>
<xs:element name="bandwidth" type="xs:integer"/>
<xs:element name="pdu" type="xs:integer"/>
<xs:element name="retrieve" type="xs:integer"/>
<xs:attribute name="backendcharset" type="xs:string" />
<xs:attribute name="usemarconstage1" type="xs:string" />
<xs:attribute name="usemarconstage2" type="xs:string" />
+ <xs:attribute name="backendelementset" type="xs:string" />
</xs:complexType>
</xs:element>