12#include "XrdVersion.hh"
27 XrdVersionInfo &myVer);
45 catch (std::runtime_error &e)
48 err.
Emsg(
"Config",
"Configuration of Macaroon authorization handler failed", e.what());
60 if (parms && parms[0]) {
63 int from = parms_str.
tokenize(chained_lib, 0,
' ');
64 const char *chained_parms =
nullptr;
65 err.
Emsg(
"Config",
"Will chain library", chained_lib.
c_str());
71 err.
Emsg(
"Config",
"Will chain parameters", parms_str.
c_str());
72 chained_parms = parms_str.
c_str();
75 char resolvePath[2048];
76 bool usedAltPath{
true};
78 err.
Emsg(
"Config",
"Failed to locate appropriately versioned chained auth library:", parms);
81 void *handle_base = dlopen(resolvePath, RTLD_LOCAL|RTLD_NOW);
82 if (handle_base ==
nullptr) {
83 err.
Emsg(
"Config",
"Failed to base plugin ", resolvePath, dlerror());
89 (dlsym(handle_base,
"XrdAccAuthorizeObject"));
93 err.
Emsg(
"Config",
"Unable to chain second authlib after macaroons", parms);
97 chain_authz = (*ep)(log, config, chained_parms);
99 if (chain_authz ==
nullptr) {
100 dlclose(handle_base);
101 err.
Emsg(
"Config",
"Unable to chain second authlib after macaroons "
102 "which returned nullptr");
116 catch (
const std::runtime_error &e)
118 err.
Emsg(
"Config",
"Configuration of Macaroon authorization handler failed", e.what());
128 void *authz_raw = env->
GetPtr(
"XrdAccAuthorize*");
131 log->
Emsg(
"Initialize",
"Creating new Macaroon handler object");
136 catch (std::runtime_error &e)
138 log->
Emsg(
"Config",
"Generation of Macaroon handler failed", e.what());
XrdHttpExtHandler * XrdHttpGetExtHandler(XrdHttpExtHandlerArgs)
XrdSciTokensHelper * SciTokensHelper
static XrdVERSIONINFODEF(compiledVer, XrdAccTest, XrdVNUMBER, XrdVERSION)
XrdAccAuthorize * XrdAccDefaultAuthorizeObject(XrdSysLogger *lp, const char *cfn, const char *parm, XrdVersionInfo &myVer)
XrdHttpExtHandler * XrdHttpGetExtHandler(XrdSysError *log, const char *config, const char *parms, XrdOucEnv *env)
XrdAccAuthorize * XrdAccAuthorizeObjAdd(XrdSysLogger *log, const char *config, const char *params, XrdOucEnv *, XrdAccAuthorize *chain_authz)
XrdAccAuthorize * XrdAccAuthorizeObject(XrdSysLogger *log, const char *config, const char *parms)
XrdVERSIONINFO(XrdAccAuthorizeObject, XrdMacaroons)
int XrdOucPinPath(const char *piPath, bool &noAltP, char *buff, int blen)
void * GetPtr(const char *varname)
int erasefromstart(int sz=0)
int tokenize(XrdOucString &tok, int from, char del=':')
const char * c_str() const
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)