Changes for the ZAP Module. $Date: 2008-10-06 18:51:07 $ --- 1.4.10 2008/10/06 Fixed SEGV which could occur for partial results and servertotal=s. --- 1.4.9 2007/05/08 Updated for libyaz3 (3.0.2). --- 1.4.8 2007/05/07 Updated for libyaz3. --- 1.4.7 2006/12/22 Updates for Apache 2.2, based on patch from Jörg Prante. Changed to 'Revised BSD License'. --- 1.4.6 2006/09/04 Upgrade for YAZ 2.1.28, which no longer offers tcpip_strtoaddr. Flush log file every time a log entry is written. --- 1.4.5 2003/12/03 Configure didn't enable Tcl on compilation when it should. --- 1.4.4 2003/11/15 Fixed a bug with "content-type" setting. --- 1.4.3 2003/11/12 Fixed Apache 2 check to work with Apache 2 on Red Hat 9. Documentation in Docbook. Documentation in HTML and PDF part of ZAP distribution. --- 1.4.2 2003/09/29 Apache 2 support. ZAP reads show_number and show_offset which is the number of records to display (record rules) and offset. ZAP also sets sortoffset1,sortoffset2,.. to set up number,start,show_number, show_offset respectively. If ZAP var servertotal=s is like servertotal=1 but records are sorted too. Rules "sort-record .." and "sort-format .. " work like record and format but they are invoked before actual sorting is performed for each record. One of these rules should set Tcl variable "sort" to value of sort criteria to be used. After sorting, "records begin" "record", "format", "records end" are invoked with the sorted result. Changed order of libs YAZLIB and TCLLIB. Patch by Peter Popovics. --- 1.4.1 2003/02/25 Patch from Shigeru Ishida: Checked the zero length of queryString. Patch from Shigeru Ishida: Fixed decoding MARC records. Patch from Shigeru Ishida: Changed the buffer size of reading ZAP template files. Patch Shigeru Ishida: Added facility to remember pre-selected targets in use of 'ptarget*' and 'palltargets' variables. And changed to understand 'target*' variable (ex. target1, target2,...). If 'ptarget*' variables are set, these variables will be set again. Otherwise if 'ptarget*' variables are not set, these variables will be newly set from 'target*' variables. And finally 'palltargets' variable will be constructed from 'ptarget*' variables. Usage: (1) first search + present Brief record (multiple targets) ~~~~~ | (set ptarget* and palltargets from target*) | v (2) second search + present Full record (1 target (one of multiple targets)) | (construct ptarget* and palltargets from target*) | v (3) again search + present Brief record (same multiple targets (1)) ~~~~~ (remember ptarget* and palltargets. and set target* from ptarget * and palltargets) Patch from Shigeru Ishida: Added 'rpn-direct' value in querytype variable. This contidion uses no 'term*', 'field*', 'entry*' and 'op*' variables. Only 'rpnquery' variable is used. It is available to construct the expression of RPN query flexibilly (especially 'and', 'or' and 'not' operators) in CGI script. --- 1.4 2003/02/20 Find Tcl on Debian systems automatically. New Tcl variable HTTP_HOST holding Apache header "Host". New ZAP variable for scan: displayterm. Value of that is diplayable term if present; otherwise value of term. --- 1.3 2002/11/12 Added setting 'charset' and 'lang' to set character set language respectively. --- 1.2 2002/05/17 Third official release Bug fix: endless loop for big code sections in def/override. Bug fix: For servertotal when resultCount==0. Bug fix: For servertotal, ZAP variables weren't set. ZAP provides more informative implemenation{Name,Version}. Bug fix: problems with callZap in format rules (XML, MARC conversions). --- 1.1 2001/10/26 Second official release Fixed bug that could cause ZAP! to crash when doing present requests sub pages using callZap. Added facility to make per-target CCL config files. File cclfields.zap is read as before (to verify syntax etc). If file cclfields..zap exists it will be used instead to perform CCL to RPN for the target. Character slash (/) in target name should be replaced by underscore. For example, file cclfields.bagel_gils.zap read for target bagel/gils. Added setting servertotal which when set to 1, defers record event rules (records begin, record .., record end) to allow all server-hits to be executed together before any records are displayed. Fixed problem with env(REMOTE_USER) setting - ZAP! now unsets the variable when no remote-user is given. ZAP! logs the elapsed time when receiving a response (init, search, etc) from the target. Added expire variable which sets Expire to current date + number of seconds (Apache only). New setting: schema that sets Z39.50 schema for retrieval (piggyback disabled when present). Variable content-type may be used to specify hmm.. Content-type. Set it in %%def / %%override. Function callZap returns the value of Tcl variable "result" in child. ZAP! handles Danmarc/Danmarc2 records better. String tags are 8-bit based in %format sections so that, say, Latin-1 characters may be used. Fixed character conversion Tcl command setz. Fixed HTML output for newer Tcl versions 8.1-8.3 where the internal structure is UTF-8. The html, callZap and urlenc commands now converts to the default external system encoding - normally iso8859-1. Added call to Tcl_Init so that Tcl packages are available. Bug fix: ODR mess when calling CallZap in Scan Response rules. Added feature: alltargets holds encoded target=t1&target=t2, etc. to ease the creation of hyper-links within per-target list sections, such as %%record. Added feature: variables cookie(name) is cookie value for "name". Cookies can be read in any section, but must be modified in %%override section. Added feature: variable map(field,target) maps field for specific target. --- 1.0 2000/09/14 First official release Updated CGI version of ZAP to use cookies. ZAP uses one cookie for the session rather than one cookie per target. Added authOpen(target) to specify open-style authentication for specific target. Added userId(target), groupId(target) and password(target) settings to specify User-ID, group-ID and password for specific target. Fixes for multi-target operations with cookies. Added support for Tcl code in %%def and %%override sections. Added Tcl command setz that works like Tcl's set but also sets ZAP local variable. Added Tcl command virtual which provides HTTP sub requests (Apache only). Added setting piggyback. When 1 piggyback (search response with records) is used; when 0 no search requests for records. Default is 1. ZAP log prints microseconds as well. Apache configuration setting ZapLog can be set to none indicating that no log should be produced. ZAP no longer caches targets with identical ID's but different host names (rawname). Fixed bug regarding callZap / Tcl. Using GNU autoconf and RPM spec file. Added es-user-id setting. Added support for the ILL-Request using Z39.50 Order. The following variables are read so far: ill,protocol-version-num ill,transaction-id,initial-requester-id,person-or-institution-symbol,person ill,transaction-id,initial-requester-id,person-or-institution-symbol,institution ill,transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person ill,transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution ill,transaction-id,transaction-group-qualifier ill,transaction-id,transaction-qualifier ill,transaction-id,sub-transaction-qualifier ill,requester-id,person-or-institution-symbol,person ill,requester-id,person-or-institution-symbol,institution ill,requester-id,name-of-person-or-institution,name-of-person ill,requester-id,name-of-person-or-institution,name-of-institution ill,responder-id,person-or-institution-symbol,person ill,responder-id,person-or-institution-symbol,institution ill,responder-id,name-of-person-or-institution,name-of-person ill,responder-id,name-of-person-or-institution,name-of-institution ill,transaction-type ill,ill-service-type ill,requester-optional-messages,can-send-RECEIVED ill,requester-optional-messages,can-send-RETURNED ill,requester-optional-messages,requester-SHIPPED ill,requester-optional-messages,requester-CHECKED-IN ill,place-on-hold ill,item-id,item-type ill,item-id,call-number ill,item-id,author ill,item-id,title ill,item-id,sub-title ill,item-id,sponsoring-body ill,item-id,place-of-publication ill,item-id,publisher ill,item-id,series-title-number ill,item-id,volume-issue ill,item-id,edition ill,item-id,publication-date ill,item-id,publication-date-of-component ill,item-id,author-of-article ill,item-id,title-or-article ill,item-id,pagination ill,item-id,ISBN ill,item-id,ISSN ill,item-id,additional-no-letters ill,item-id,verification-reference-source ill,copyright-complicance ill,retry-flag ill,forward-flag ill,requester-note ill,forward-note Multiple database may be specified for a target - separate database names with plus, as in target=z3950.com/base1+base2 Added support for embedded CCL queries. A variable named cclterm1,2.. is treated as a CCL query. The available access points (ti, au, isbn, etc) and their mapping to RPN is defined in the file cclfields.zap. Added support for internal XML to GRS-1 conversion and MARC to GRS-1 conversion. Patterns as used in format-sections may now be used for MARC records and XML records as well. Relative path allowed for recursive ZAP calls using the $<..>-notation and CallZap (if Tcl is enabled). For RPN queries ZAP treats multiple terms with same name as a list that is OR'ed. ZAP used to only consider the first. For RPN queries ZAP treats variable op (no digit after op) as flags for operators op1, op2, .. opN. Currently left and right are observed. If value is left the left-most operator is treated when terms are empty. If value is right the right-most operator is treated. The default and old treatment of operators was "left". Implemented non-blocking i/o. Targets that doesn't respond within a timeout are considered unavailable. Variable timeout specifies number of seconds (default is 10). Added support for variable "rawterm.." in queries that works as "term.." except that the term is considered "raw" and include attributes, etc. New action "init" which sends initializeRequest only. To be used for "login" pages. Implemented authentication support. Variable authOpen specifies *open* style idAuthentication. Variable authGroupId, authUserId and authPassword specifies *idPass* authentication. Implemented proxy support. Variable proxy (if existing and non-empty) specifies default proxy server. Also proxy(target) specifies proxy for specific host. Changed name of ZAP Handler to zap-script (used to be z39.50-search). Added APDULog to specify name of APDU log file. If not specified no log is generated. Added support for language specific operators for the definition of $query. opdisplay(and)/opdisplay(or)/opdisplay(not) may be set the names of those operators in a non-english language. Fix: Queries only including one or more spaces now treated as non-existent terms. Added DSO support for ZAP. Tested DSO with Apache 1.3.6. Note, DSO didn't work for ZAP with Apache version 1.3.4. Added support for many more record syntaxes - including XML, /HTML, etc. Fixed handling of multipleNonSurrogateDiagnostics for search/present- response. --- 0.9 1998/10/20 Third internal release Added ES Item Order. Invoked when "action" is "es" and "es-package-type" is "itemorder". Currently only es-itemorder-contact-{name,phone,email} and es-itemorder-item (result set pos.) is used for the Item Order request. Added initial Extended Services support - enabled when variable "action" is "es". Variables "es-function", "es-package-name" and es-package-type specifies ES request parameters. The following sections are defined for the status for the ES response: "es-response done", "es-response accepted", "es-response failure", and "es-response unknown". Each diagnostic message returned in ES response triggers section "es-diagnostic". Whole list of diagnostics surrounded by sections "es-diagnostics-begin" and "es-diagnostics-end". Added sub page call support. A sub page call makes it possible for a template to invoked another search template recursively. Use $ to invoke it. Added scan support. Action type "scan". The initial starting term for scan is given by variables "term1" and "field1", i.e the first "line" of the query. Other variables that affect scan are "scannumber" (default 10), "scanposition" (preferred position in response, default 5). If term1 is empty section "scan-empty" is invoked before a scan request is sent. If query is ok, section "scan-ok" is invoked. When response is received "firstterm" and "lastterm" hold the first- and last term in scan response. These terms may be used to create links that refer to previous terms - and next terms. Each term in response triggers section "scan-term-normal" if it's a normal term (i.e. not a diagnostic term); or if it's a diagnostic term it triggers section "scan-term-error" in which case the usual varibles "errorcode", "errorstring", and "addinfo" are set. The list of scan terms returned are surrouded by sections "scan-begin" and "scan-end". Added support for different major actions using the "action" variable. Default value is "search". New action types are defined when implemented. Added Type-1 query support (CCL). Variable "querytype" specifies query type; possible values are "rpn" (default if not specified) or "ccl". Only term1, term2, etc. are treated as part of query when querytype is "ccl". Added support for navigation among search result pages. Fixed bug regarding %%include. Renamed variables holding terms in query to term1, term2, ... termN. Checked that ZAP works with Apache 1.3.3. --- 0.8 1998/08/19 Second internal release Reworked code and added support for Apache 1.3.1. Changed ZAP so that the script itself *is* the template, not the setting template=.. The new, preferred way, to trigger ZAP is: http:myscript.zap/target=... instead of http:/search/template=myscript&target=.... Added access to ISO2709 records using the Tcl command (getMarc). --- 0.1 1998/03/19 First internal release First version that works with Apache 1.2.5.