12 #ifndef ROOT_XrdProofdClientMgr 
   13 #define ROOT_XrdProofdClientMgr 
   31 #include "XrdOuc/XrdOucString.hh" 
   33 #define XPD_LOGGEDIN       1 
   34 #define XPD_NEED_AUTH      2 
   35 #define XPD_ADMINUSER      4 
   36 #define XPD_NEED_MAP       8 
   38 class XrdProofdClient;
 
   39 class XrdProofdConfig;
 
   40 class XrdProofdManager;
 
   41 class XrdProofdProtocol;
 
   42 class XrdProtocol_Config;
 
   48 class XrdProofdClientMgr : 
public XrdProofdConfig {
 
   50    XrdSysRecMutex    *fMutex;
 
   51    XrdProofdManager  *fMgr;
 
   54    XrdSysPlugin      *fSecPlugin;      
 
   59    XrdOucString       fClntAdminPath;  
 
   61    int                fReconnectTimeOut;
 
   64    std::list<XrdProofdClient *> fProofdClients;        
 
   66    int                CheckAdminPath(XrdProofdProtocol *p,
 
   67                                      XrdOucString &cidpath, XrdOucString &emsg);
 
   68    int                CheckClient(XrdProofdProtocol *p,
 
   69                                     const char *user, XrdOucString &emsg);
 
   70    int                CreateAdminPath(XrdProofdProtocol *p,
 
   71                                       XrdOucString &path, XrdOucString &e);
 
   72    int                RestoreAdminPath(XrdOucString &cpath, XrdOucString &emsg);
 
   73    int                ParsePreviousClients(XrdOucString &emsg);
 
   74    int                MapClient(XrdProofdProtocol *xp, 
bool all = 1);
 
   75    char              *FilterSecConfig(
int &nd);
 
   77    void               RegisterDirectives();
 
   78    int                DoDirectiveClientMgr(
char *, XrdOucStream *, 
bool);
 
   81    XrdSecService     *LoadSecurity();
 
   84    XrdProofdClientMgr(XrdProofdManager *mgr, XrdProtocol_Config *pi, XrdSysError *e);
 
   85    virtual ~XrdProofdClientMgr() { SafeDel(fMutex); }
 
   87    enum CMProtocol { kClientDisconnect = 0 };
 
   89    int               Config(
bool rcf = 0);
 
   90    int               DoDirective(XrdProofdDirective *d,
 
   91                                  char *val, XrdOucStream *cfg, 
bool rcf);
 
   94    XrdProofdClient  *GetClient(
const char *usr, 
const char *grp = 0, 
bool create = 1);
 
   95    int               GetNClients()
 const { XrdSysMutexHelper mh(fMutex);
 
   96                                            return fProofdClients.size(); }
 
   98    void              Broadcast(XrdProofdClient *c, 
const char *msg);
 
   99    void              TerminateSessions(XrdProofdClient *c, 
const char *msg, 
int srvtype);
 
  101    int               Process(XrdProofdProtocol *p);
 
  103    int               Auth(XrdProofdProtocol *xp);
 
  104    int               Login(XrdProofdProtocol *xp);
 
  106    int               CheckFrequency()
 const { 
return fCheckFrequency; }
 
  107    inline XrdProofdPipe *Pipe() { 
return &fPipe; }