The YAZ proxy is a transparent Z39.50-to-Z39.50 gateway. That is, it is a Z39.50 server which has as its back-end a Z39.50 client that forwards requests on to another server (known as the backend target.)
The YAZ Proxy is useful for debugging Z39.50 software, logging APDUs, redirecting Z39.50 packages through firewalls, etc. Furthermore, it offers facilities that often boost performance for connectionless Z39.50 clients such as web gateways.
Unlike most other server software, the proxy runs single-threaded, single-process. Every I/O operation is non-blocking so it is very lightweight and extremely fast. It does not store any state information on the hard drive, except any log files you ask for.
yaz-proxy -a - -t tcp:foo.bar.com:18398 tcp:@:9000 |
decode choice initRequest { referenceId OCTETSTRING(len=4) 69 6E 69 74 protocolVersion BITSTRING(len=1) options BITSTRING(len=2) preferredMessageSize 1048576 maximumRecordSize 1048576 implementationId 'Mike Taylor (id=169)' implementationName 'Net::Z3950.pm (Perl)' implementationVersion '0.31' } encode choice initResponse { referenceId OCTETSTRING(len=4) 69 6E 69 74 protocolVersion BITSTRING(len=1) options BITSTRING(len=2) preferredMessageSize 1048576 maximumRecordSize 1048576 result TRUE implementationId '81' implementationName 'GFS/YAZ / Zebra Information Server' implementationVersion 'YAZ 1.9.1 / Zebra 1.3.3' } decode choice searchRequest { referenceId OCTETSTRING(len=1) 30 smallSetUpperBound 0 largeSetLowerBound 1 mediumSetPresentNumber 0 replaceIndicator TRUE resultSetName 'default' databaseNames { 'gils' } { smallSetElementSetNames choice generic 'F' } { mediumSetElementSetNames choice generic 'B' } preferredRecordSyntax OID: 1 2 840 10003 5 10 { query choice type_1 { attributeSetId OID: 1 2 840 10003 3 1 RPNStructure choice { simple choice attributesPlusTerm { attributes { } term choice general OCTETSTRING(len=7) 6D 69 6E 65 72 61 6C } } } } } |