/* This file is part of Pazpar2.
- Copyright (C) 2006-2010 Index Data
+ Copyright (C) 2006-2011 Index Data
Pazpar2 is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
static char *parse_settings(struct conf_config *config,
NMEM nmem, xmlNode *node);
-static struct conf_targetprofiles *parse_targetprofiles(NMEM nmem,
- xmlNode *node);
-
static void conf_metadata_assign(NMEM nmem,
struct conf_metadata * metadata,
const char *name,
service->next = 0;
service->settings = 0;
service->databases = 0;
- service->targetprofiles = 0;
service->server = server;
service->session_timeout = 60; /* default session timeout */
service->z3950_session_timeout = 180;
}
else if (!strcmp((const char *) n->name, "settings"))
got_settings++;
- else if (!strcmp((const char *) n->name, (const char *) "targetprofiles"))
- {
- if (service->targetprofiles)
- {
- yaz_log(YLOG_FATAL, "Can't repeat targetprofiles");
- return 0;
- }
- if (!(service->targetprofiles =
- parse_targetprofiles(service->nmem, n)))
- return 0;
- }
else if (!strcmp((const char *) n->name, "relevance"))
{
if (service->relevance_pct)
return w;
}
-static struct conf_targetprofiles *parse_targetprofiles(NMEM nmem,
- xmlNode *node)
-{
- struct conf_targetprofiles *r = nmem_malloc(nmem, sizeof(*r));
- xmlChar *type = xmlGetProp(node, (xmlChar *) "type");
- xmlChar *src = xmlGetProp(node, (xmlChar *) "src");
-
- memset(r, 0, sizeof(*r));
-
- if (type)
- {
- if (!strcmp((const char *) type, "local"))
- r->type = Targetprofiles_local;
- else
- {
- yaz_log(YLOG_FATAL, "Unknown targetprofile type");
- return 0;
- }
- }
- else
- {
- yaz_log(YLOG_FATAL, "Must specify type for targetprofile");
- return 0;
- }
-
- if (src)
- r->src = nmem_strdup(nmem, (const char *) src);
- else
- {
- yaz_log(YLOG_FATAL, "Must specify src in targetprofile");
- return 0;
- }
- xmlFree(type);
- xmlFree(src);
- return r;
-}
-
struct conf_service *locate_service(struct conf_server *server,
const char *service_id)
{
return s;
}
+void info_services(struct conf_server *server, WRBUF w)
+{
+ struct conf_service *s = server->service;
+ wrbuf_puts(w, " <services>\n");
+ for (; s; s = s->next)
+ {
+ wrbuf_puts(w, " <service");
+ if (s->id)
+ {
+ wrbuf_puts(w, " id=\"");
+ wrbuf_xmlputs(w, s->id);
+ wrbuf_puts(w, "\"");
+ }
+ wrbuf_puts(w, "/>");
+
+ wrbuf_puts(w, "\n");
+ }
+ wrbuf_puts(w, " </services>\n");
+}
static int parse_config(struct conf_config *config, xmlNode *root)
{
}
int config_start_listeners(struct conf_config *conf,
- const char *listener_override)
+ const char *listener_override,
+ const char *record_fname)
{
struct conf_server *ser;
wrbuf_printf(w, "%d", ser->port);
}
}
- r = http_init(wrbuf_cstr(w), ser);
+ r = http_init(wrbuf_cstr(w), ser, record_fname);
wrbuf_destroy(w);
if (r)
return -1;