* Copyright (c) 1998-2003, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-proxy-config.cpp,v 1.10 2003-10-16 13:40:41 adam Exp $
+ * $Id: yaz-proxy-config.cpp,v 1.12 2003-10-20 18:31:44 adam Exp $
*/
#include <ctype.h>
int *client_idletime,
int *keepalive_limit_bw,
int *keepalive_limit_pdu,
- int *pre_init,
- int *log_mask)
+ int *pre_init)
{
*pre_init = 0;
int no_url = 0;
for (; ptr; ptr = ptr->next)
{
if (ptr->type == XML_ELEMENT_NODE
- && !strcmp((const char *) ptr->name, "log"))
- {
- const char *v = get_text(ptr);
- *log_mask = 0;
- while (v && *v)
- {
- const char *cp = v;
- while (*cp && *cp != ',' && !isspace(*cp))
- cp++;
- size_t len = cp - v;
- if (len == 4 && !memcmp(v, "apdu", 4))
- *log_mask |= PROXY_LOG_APDU;
- if (len == 3 && !memcmp(v, "req", 3))
- *log_mask |= PROXY_LOG_REQ;
- if (isdigit(*v))
- *log_mask |= atoi(v);
- if (*cp == ',')
- cp++;
- while (*cp && isspace(*cp))
- cp++;
- v = cp;
- }
- }
- if (ptr->type == XML_ELEMENT_NODE
&& !strcmp((const char *) ptr->name, "preinit"))
{
const char *v = get_text(ptr);
Z_RPNStructure *q,
char **addinfo)
{
- int c;
if (q->which == Z_RPNStructure_complex)
{
int e = check_type_1_structure(odr, ptr, q->u.complex->s1, addinfo);
int *max_clients,
int *keepalive_limit_bw,
int *keepalive_limit_pdu,
- int *pre_init,
- int *log_mask)
+ int *pre_init)
{
#if HAVE_XML2
xmlNodePtr ptr;
return_target_info(ptr, url, limit_bw, limit_pdu, limit_req,
target_idletime, client_idletime,
keepalive_limit_bw, keepalive_limit_pdu,
- pre_init, log_mask);
+ pre_init);
return 1;
}
i++;
return 0;
}
+int Yaz_ProxyConfig::mycmp(const char *hay, const char *item, size_t len)
+{
+ if (len == strlen(item) && memcmp(hay, item, len) == 0)
+ return 1;
+ return 0;
+}
+
+void Yaz_ProxyConfig::get_generic_info(int *log_mask,
+ int *max_clients)
+{
+#if HAVE_XML2
+ xmlNodePtr ptr;
+ if (!m_proxyPtr)
+ return;
+ for (ptr = m_proxyPtr->children; ptr; ptr = ptr->next)
+ {
+ if (ptr->type == XML_ELEMENT_NODE
+ && !strcmp((const char *) ptr->name, "log"))
+ {
+ const char *v = get_text(ptr);
+ *log_mask = 0;
+ while (v && *v)
+ {
+ const char *cp = v;
+ while (*cp && *cp != ',' && !isspace(*cp))
+ cp++;
+ size_t len = cp - v;
+ if (mycmp(v, "client-apdu", len))
+ *log_mask |= PROXY_LOG_APDU_CLIENT;
+ if (mycmp(v, "server-apdu", len))
+ *log_mask |= PROXY_LOG_APDU_SERVER;
+ if (mycmp(v, "client-requests", len))
+ *log_mask |= PROXY_LOG_REQ_CLIENT;
+ if (mycmp(v, "server-requests", len))
+ *log_mask |= PROXY_LOG_REQ_SERVER;
+ if (isdigit(*v))
+ *log_mask |= atoi(v);
+ if (*cp == ',')
+ cp++;
+ while (*cp && isspace(*cp))
+ cp++;
+ v = cp;
+ }
+ }
+ if (ptr->type == XML_ELEMENT_NODE &&
+ !strcmp((const char *) ptr->name, "max-clients"))
+ {
+ const char *t = get_text(ptr);
+ if (t)
+ {
+ *max_clients = atoi(t);
+ if (*max_clients < 1)
+ *max_clients = 1;
+ }
+ }
+ }
+#endif
+}
+
void Yaz_ProxyConfig::get_target_info(const char *name,
const char **url,
int *limit_bw,
int *max_clients,
int *keepalive_limit_bw,
int *keepalive_limit_pdu,
- int *pre_init,
- int *log_mask)
+ int *pre_init)
{
#if HAVE_XML2
xmlNodePtr ptr;
return_target_info(ptr, url, limit_bw, limit_pdu, limit_req,
target_idletime, client_idletime,
keepalive_limit_bw, keepalive_limit_pdu,
- pre_init, log_mask);
+ pre_init);
}
#else
*url = name;