00001
00002 #include "XrdAcc/XrdAccAuthorize.hh"
00003 #include "XrdSys/XrdSysError.hh"
00004
00005
00006 class XrdSysError;
00007
00008 namespace Macaroons
00009 {
00010
00011 class Authz : public XrdAccAuthorize
00012 {
00013 public:
00014 Authz(XrdSysLogger *lp, const char *parms, XrdAccAuthorize *chain);
00015
00016 virtual ~Authz() {}
00017
00018 virtual XrdAccPrivs Access(const XrdSecEntity *Entity,
00019 const char *path,
00020 const Access_Operation oper,
00021 XrdOucEnv *env);
00022
00023 virtual int Audit(const int accok, const XrdSecEntity *Entity,
00024 const char *path, const Access_Operation oper,
00025 XrdOucEnv *Env)
00026 {
00027 return 0;
00028 }
00029
00030 virtual int Test(const XrdAccPrivs priv,
00031 const Access_Operation oper)
00032 {
00033 return 0;
00034 }
00035
00036 private:
00037 XrdAccPrivs OnMissing(const XrdSecEntity *Entity,
00038 const char *path,
00039 const Access_Operation oper,
00040 XrdOucEnv *env);
00041
00042 ssize_t m_max_duration;
00043 XrdAccAuthorize *m_chain;
00044 XrdSysError m_log;
00045 std::string m_secret;
00046 std::string m_location;
00047 int m_authz_behavior;
00048 };
00049
00050 }