/* This file is part of Metaproxy.
- Copyright (C) 2005-2012 Index Data
+ Copyright (C) Index Data
Metaproxy 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
#include <metaproxy/package.hpp>
#include <boost/thread/mutex.hpp>
-#include <boost/algorithm/string.hpp>
#include <metaproxy/util.hpp>
#include "filter_auth_simple.hpp"
static void die(std::string s) { throw mp::filter::FilterException(s); }
+static std::string get_user(Z_InitRequest *initReq, std::string &password)
+{
+ Z_IdAuthentication *auth = initReq->idAuthentication;
+ std::string user;
+ if (auth)
+ {
+ const char *cp;
+ switch (auth->which)
+ {
+ case Z_IdAuthentication_open:
+ cp = strchr(auth->u.open, '/');
+ if (cp)
+ {
+ user.assign(auth->u.open, cp - auth->u.open);
+ password.assign(cp + 1);
+ }
+ else
+ user = auth->u.open;
+ break;
+ case Z_IdAuthentication_idPass:
+ if (auth->u.idPass->userId)
+ user = auth->u.idPass->userId;
+ if (auth->u.idPass->password)
+ password = auth->u.idPass->password;
+ break;
+ }
+ }
+ return user;
+}
+
// Read XML config.. Put config info in m_p.
void mp::filter::AuthSimple::configure(const xmlNode * ptr, bool test_only,
const char *path)
config_targetRegister(targetRegisterName);
}
+static void split_db(std::list<std::string> &dbs,
+ const char *databasesp)
+{
+ const char *cp;
+ while ((cp = strchr(databasesp, ',')))
+ {
+ dbs.push_back(std::string(databasesp, cp - databasesp));
+ databasesp = cp + 1;
+ }
+ dbs.push_back(std::string(databasesp));
+}
void mp::filter::AuthSimple::config_userRegister(std::string filename)
{
"no databases on line: '" + buf + ":" + passwdp + "'");
*databasesp++ = 0;
yf::AuthSimple::Rep::PasswordAndDBs tmp(passwdp);
- boost::split(tmp.dbs, databasesp, boost::is_any_of(","));
+ split_db(tmp.dbs, databasesp);
m_p->userRegister[buf] = tmp;
if (0)
"no targets on line: '" + buf + "'");
*targetsp++ = 0;
std::list<std::string> tmp;
- boost::split(tmp, targetsp, boost::is_any_of(","));
+ split_db(tmp, targetsp);
m_p->targetsByUser[buf] = tmp;
if (0) { // debugging
package.session().close();
}
-std::string yf::AuthSimple::get_user(Z_InitRequest *initReq,
- std::string &password) const
-{
- Z_IdAuthentication *auth = initReq->idAuthentication;
- std::string user;
- if (auth)
- {
- const char *cp;
- switch (auth->which)
- {
- case Z_IdAuthentication_open:
- cp = strchr(auth->u.open, '/');
- if (cp)
- {
- user.assign(auth->u.open, cp - auth->u.open);
- password.assign(cp + 1);
- }
- else
- user = auth->u.open;
- break;
- case Z_IdAuthentication_idPass:
- if (auth->u.idPass->userId)
- user = auth->u.idPass->userId;
- if (auth->u.idPass->password)
- password = auth->u.idPass->password;
- break;
- }
- }
- return user;
-}
-
void yf::AuthSimple::check_targets(mp::Package & package) const
{
Z_InitRequest *initReq = package.request().get()->u.z3950->u.initRequest;