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 }