00001 #ifndef _ACC_CONFIG_H
00002 #define _ACC_CONFIG_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include <sys/types.h>
00034
00035 #include "XrdOuc/XrdOuca2x.hh"
00036 #include "XrdSys/XrdSysError.hh"
00037 #include "XrdOuc/XrdOucHash.hh"
00038 #include "XrdSys/XrdSysPthread.hh"
00039 #include "XrdOuc/XrdOucStream.hh"
00040 #include "XrdAcc/XrdAccAccess.hh"
00041 #include "XrdAcc/XrdAccAuthDB.hh"
00042 #include "XrdAcc/XrdAccCapability.hh"
00043 #include "XrdAcc/XrdAccGroups.hh"
00044
00045
00046
00047
00048
00049 struct XrdAccGlist
00050 {
00051 struct XrdAccGlist *next;
00052 char *name;
00053
00054 XrdAccGlist(const char *Name, struct XrdAccGlist *Next=0)
00055 {name = strdup(Name); next = Next;}
00056 ~XrdAccGlist()
00057 {if (name) free(name);}
00058 };
00059
00060
00061
00062
00063
00064 class XrdAccConfig
00065 {
00066 public:
00067
00068
00069
00070 int Configure(XrdSysError &Eroute, const char *cfn);
00071
00072
00073
00074
00075
00076 int ConfigDB(int Warm, XrdSysError &Eroute);
00077
00078 XrdAccAccess *Authorization;
00079 XrdAccGroups GroupMaster;
00080
00081 int AuthRT;
00082
00083 XrdAccConfig();
00084 ~XrdAccConfig() {}
00085
00086 private:
00087
00088 struct XrdAccGlist *addGlist(gid_t Gid, const char *Gname,
00089 struct XrdAccGlist *Gnext);
00090 int ConfigDBrec(XrdSysError &Eroute,
00091 struct XrdAccAccess_Tables &tabs);
00092 void ConfigDefaults(void);
00093 int ConfigFile(XrdSysError &Eroute, const char *cfn);
00094 int ConfigXeq(char *, XrdOucStream &, XrdSysError &);
00095 void idChk(XrdSysError &Eroute, XrdAccAccess_ID *idList,
00096 XrdAccAccess_Tables &tabs);
00097 int idDef(XrdSysError &Eroute, XrdAccAccess_Tables &tabs,
00098 const char *idName);
00099 void subSpace(char *id);
00100 int PrivsConvert(char *privs, XrdAccPrivCaps &ctab);
00101
00102 int xaud(XrdOucStream &Config, XrdSysError &Eroute);
00103 int xart(XrdOucStream &Config, XrdSysError &Eroute);
00104 int xdbp(XrdOucStream &Config, XrdSysError &Eroute);
00105 int xglt(XrdOucStream &Config, XrdSysError &Eroute);
00106 int xgrt(XrdOucStream &Config, XrdSysError &Eroute);
00107 int xnis(XrdOucStream &Cofig, XrdSysError &Eroute);
00108 int xspc(XrdOucStream &Cofig, XrdSysError &Eroute);
00109
00110 XrdAccAuthDB *Database;
00111 char *dbpath;
00112
00113 XrdSysMutex Config_Context;
00114 XrdSysThread Config_Refresh;
00115
00116 int options;
00117 int rulenum;
00118 char spChar;
00119 };
00120 #endif