X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fyaz-proxy-config.cpp;h=c05724e53182c6a720d04e3f19eea8cab8004c23;hb=b33db4435e63a69fc8aafa1e3a163743b79b6990;hp=21497ec7a8e7547ed63202c554b49640391a2a58;hpb=91f84eaf3ca73d717e7c462359127fd44e795bd9;p=yazproxy-moved-to-github.git diff --git a/src/yaz-proxy-config.cpp b/src/yaz-proxy-config.cpp index 21497ec..c05724e 100644 --- a/src/yaz-proxy-config.cpp +++ b/src/yaz-proxy-config.cpp @@ -1,4 +1,4 @@ -/* $Id: yaz-proxy-config.cpp,v 1.7 2004-10-18 22:10:57 adam Exp $ +/* $Id: yaz-proxy-config.cpp,v 1.9 2004-11-09 14:24:22 adam Exp $ Copyright (c) 1998-2004, Index Data. This file is part of the yaz-proxy. @@ -26,6 +26,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #if HAVE_XSLT #include #include +#include #include #include #endif @@ -47,7 +48,8 @@ class Yaz_ProxyConfigP { int *limit_bw, int *limit_pdu, int *limit_req, int *target_idletime, int *client_idletime, int *keepalive_limit_bw, int *keepalive_limit_pdu, - int *pre_init, const char **cql2rpn); + int *pre_init, const char **cql2rpn, + const char **authentication); void return_limit(xmlNodePtr ptr, int *limit_bw, int *limit_pdu, int *limit_req); int check_type_1(ODR odr, xmlNodePtr ptr, Z_RPNQuery *query, @@ -94,6 +96,10 @@ int Yaz_ProxyConfig::read_xml(const char *fname) yaz_log(LOG_WARN, "Config file %s not found or parse error", fname); return -1; // no good } + int noSubstitutions = xmlXIncludeProcess(ndoc); + if (noSubstitutions == -1) + yaz_log(LOG_WARN, "XInclude processing failed on config %s", fname); + xmlNodePtr proxyPtr = xmlDocGetRootElement(ndoc); if (!proxyPtr || proxyPtr->type != XML_ELEMENT_NODE || strcmp((const char *) proxyPtr->name, "proxy")) @@ -176,7 +182,8 @@ void Yaz_ProxyConfigP::return_target_info(xmlNodePtr ptr, int *keepalive_limit_bw, int *keepalive_limit_pdu, int *pre_init, - const char **cql2rpn) + const char **cql2rpn, + const char **authentication) { *pre_init = 0; int no_url = 0; @@ -240,6 +247,13 @@ void Yaz_ProxyConfigP::return_target_info(xmlNodePtr ptr, if (t) *cql2rpn = t; } + if (ptr->type == XML_ELEMENT_NODE + && !strcmp((const char *) ptr->name, "authentication")) + { + const char *t = get_text(ptr); + if (t) + *authentication = t; + } } } #endif @@ -680,7 +694,8 @@ int Yaz_ProxyConfig::get_target_no(int no, int *keepalive_limit_bw, int *keepalive_limit_pdu, int *pre_init, - const char **cql2rpn) + const char **cql2rpn, + const char **authentication) { #if HAVE_XSLT xmlNodePtr ptr; @@ -707,7 +722,7 @@ int Yaz_ProxyConfig::get_target_no(int no, limit_bw, limit_pdu, limit_req, target_idletime, client_idletime, keepalive_limit_bw, keepalive_limit_pdu, - pre_init, cql2rpn); + pre_init, cql2rpn, authentication); return 1; } i++; @@ -904,7 +919,8 @@ void Yaz_ProxyConfig::get_target_info(const char *name, int *keepalive_limit_bw, int *keepalive_limit_pdu, int *pre_init, - const char **cql2rpn) + const char **cql2rpn, + const char **authentication) { #if HAVE_XSLT xmlNodePtr ptr; @@ -940,7 +956,7 @@ void Yaz_ProxyConfig::get_target_info(const char *name, m_cp->return_target_info(ptr, url, limit_bw, limit_pdu, limit_req, target_idletime, client_idletime, keepalive_limit_bw, keepalive_limit_pdu, - pre_init, cql2rpn); + pre_init, cql2rpn, authentication); } #else *url = name;