Metaproxy - User's Guide and Reference

Adam Dickmeiss

Marc Cromme

Mike Taylor



This manual is part of Metaproxy version 1.21.0.

Metaproxy is a universal router, proxy and encapsulated metasearcher for information retrieval protocols. It accepts, processes, interprets and redirects requests from IR clients using standard protocols such as the binary ANSI/NISO Z39.50 and the information search and retrieval web service SRU as well as functioning as a limited HTTP server.

Metaproxy is configured by an XML file which specifies how the software should function in terms of routes that the request packets can take through the proxy, each step on a route being an instantiation of a filter. Filters come in many types, one for each operation: accepting Z39.50 packets, logging, query transformation, multiplexing, etc. Further filter-types can be added as loadable modules to extend Metaproxy functionality, using the filter API.

Metaproxy is covered by the GNU General Public License version 2.

Table of Contents

1. Introduction
2. Installation
1. Installation on Unix (from Source)
1.1. Libxml2/libxslt
1.2. USEMARCON (optional)
1.3. YAZ/YAZ++
1.4. Boost
1.5. Metaproxy
2. Installation on Debian GNU/Linux
3. Installation on RPM based Linux Systems
4. Installation on Windows
4.1. Boost
4.2. Libxslt
4.3. YAZ
4.4. YAZ++
4.5. Metaproxy
3. YAZ Proxy Comparison
4. The Metaproxy Architecture
5. Filters
1. Introductory notes
2. Overview of filter types
2.1. auth_simple (mp::filter::AuthSimple)
2.2. backend_test (mp::filter::Backend_test)
2.3. bounce (mp::filter::Bounce)
2.4. cql_rpn (mp::filter::CQLtoRPN)
2.5. frontend_net (mp::filter::FrontendNet)
2.6. http_file (mp::filter::HttpFile)
2.7. http_rewrite (mp::filter::HttpRewrite)
2.8. load_balance (mp::filter::LoadBalance)
2.9. log (mp::filter::Log)
2.10. multi (mp::filter::Multi)
2.11. query_rewrite (mp::filter::QueryRewrite)
2.12. record_transform (mp::filter::RecordTransform)
2.13. session_shared (mp::filter::SessionShared)
2.14. sru_z3950 (mp::filter::SRUtoZ3950)
2.15. template (mp::filter::Template)
2.16. virt_db (mp::filter::VirtualDB)
2.17. z3950_client (mp::filter::Z3950Client)
2.18. zeerex_explain (mp::filter::ZeerexExplain)
3. Future directions
6. Configuration: the Metaproxy configuration file format
1. Introductory notes
2. Overview of the config file XML structure
3. An example configuration
3.1. Other configuration examples
4. Config file modularity
5. Config file syntax checking
7. Virtual databases and multi-database searching
1. Introductory notes
2. Virtual databases with the virt_db filter
3. Multi-database search with the multi filter
4. What's going on?
8. Combined SRU webservice and Z39.50 server configuration
9. Classes in the Metaproxy source code
1. Introductory notes
2. Individual classes
2.1. mp::FactoryFilter (factory_filter.cpp)
2.2. mp::FactoryStatic (factory_static.cpp)
2.3. mp::filter::Base (filter.cpp)
2.4. mp::filter::AuthSimple, Backend_test, etc. (filter_auth_simple.cpp, filter_backend_test.cpp, etc.)
2.5. mp::Package (package.cpp)
2.6. mp::Pipe (pipe.cpp)
2.7. mp::RouterChain (router_chain.cpp)
2.8. mp::RouterFleXML (router_flexml.cpp)
2.9. mp::Session (session.cpp)
2.10. mp::ThreadPoolSocketObserver (thread_pool_observer.cpp)
2.11. mp::util (util.cpp)
2.12. mp::xml (xmlutil.cpp)
3. Other Source Files
I. Reference
metaproxy — Metaproxy - server
metaproxy-config — script to get information about the installation of Metaproxy
auth_simple — Metaproxy Simple Authentication And Authorization Module
backend_test — Metaproxy Backend Test Z39.50 Server Module
bounce — Metaproxy Bouncing Package Sink Module for all kind of metaproxy packages
cgi — Metaproxy Package CGI Module
cql_rpn — Metaproxy CQL to RPN Query Language Transforming Module
frontend_net — Metaproxy Network Server module that accepts Z39.50 and HTTP requests
http_client — Metaproxy HTTP Client Module
http_file — Metaproxy HTTP File Server Module
http_rewrite — Module for rewriting HTTP content and headers
limit — Metaproxy Module for imposing resource limits
load_balance — Metaproxy Module balancing load among multiple identical Z39.50 targets
log — Metaproxy Package Logging Module
multi — Metaproxy Package Multiplexer Module
present_chunk — Splits Z39.50 Present Request into chunks
query_rewrite — Metaproxy RPN Query Rewrite Module
record_transform — Metaproxy Module that performs record transformations
sd_remove — Removes Surrogate Diagnostics
session_shared — Metaproxy Module for sharing system resources between threads
sort — Metaproxy Z39.50 Sort Module
sru_z3950 — Metaproxy Module transforming SRU web service requests to Z39.50 Metaproxy packages
template — Metaproxy Template Module That Does Nothing
virt_db — Metaproxy Virtual Databases Module
z3950_client — Metaproxy Z39.50 Backend Client Module
zeerex_explain — Metaproxy Z39.50 ZeeRex Explain Module
zoom — Metaproxy ZOOM Module
A. License
B. GNU General Public License
1. Preamble
2.1. Section 0
2.2. Section 1
2.3. Section 2
2.4. Section 3
2.5. Section 4
2.6. Section 5
2.7. Section 6
2.8. Section 7
2.9. Section 8
2.10. Section 9
2.11. Section 10
2.12. NO WARRANTY Section 11
2.13. Section 12
3. How to Apply These Terms to Your New Programs

List of Tables

3.1. Metaproxy / YAZ Proxy comparison
8.1. SRU/Z39.50 Server Filter Route Configuration