aci.ipp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*##############################################################################
  2. HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. ############################################################################## */
  13. #ifndef __ACI_IPP_
  14. #define __ACI_IPP_
  15. #include "ldapconnection.hpp"
  16. #include "permissions.hpp"
  17. #include "ldaputils.hpp"
  18. class AciProcessor : implements IPermissionProcessor, public CInterface
  19. {
  20. protected:
  21. Owned<IPropertyTree> m_cfg;
  22. Owned<IPropertyTree> m_sidcache;
  23. Mutex m_mutex;
  24. StringBuffer m_server;
  25. ILdapClient* m_ldap_client;
  26. LdapServerType m_servertype;
  27. public:
  28. IMPLEMENT_IINTERFACE;
  29. AciProcessor(IPropertyTree* cfg);
  30. virtual void setLdapClient(ILdapClient* client)
  31. {
  32. m_ldap_client = client;
  33. }
  34. virtual bool getPermissions(ISecUser& user, IArrayOf<CSecurityDescriptor>& sdlist, IArrayOf<ISecResource>& resources);
  35. virtual CSecurityDescriptor* createDefaultSD(ISecUser * const user, ISecResource* resource, SecPermissionType ptype);
  36. virtual CSecurityDescriptor* createDefaultSD(ISecUser * const user, const char* name, SecPermissionType ptype);
  37. virtual CSecurityDescriptor* createDefaultSD(ISecUser * const user, ISecResource* resource, MemoryBuffer& initial_sd);
  38. virtual bool retrieveUserInfo(ISecUser& user);
  39. virtual void getCachedSid(const char* name, MemoryBuffer& sid);
  40. virtual void cacheSid(const char* name, int len, const void* sidbuf);
  41. virtual void lookupSid(const char* act_name, MemoryBuffer& act_sid, ACT_TYPE acttype=USER_ACT);
  42. virtual int sdSegments(CSecurityDescriptor* sd);
  43. virtual StringBuffer& sec2aci(SecAccessFlags secperm, StringBuffer& aciperm);
  44. virtual bool getPermissionsArray(CSecurityDescriptor *sd, IArrayOf<CPermission>& permissions);
  45. virtual CSecurityDescriptor* changePermission(CSecurityDescriptor* initialsd, CPermissionAction& action);
  46. };
  47. class CIPlanetAciProcessor : public AciProcessor
  48. {
  49. public:
  50. CIPlanetAciProcessor(IPropertyTree* cfg) : AciProcessor(cfg)
  51. {
  52. m_servertype = IPLANET;
  53. }
  54. virtual StringBuffer& sec2aci(SecAccessFlags secperm, StringBuffer& aciperm);
  55. virtual CSecurityDescriptor* createDefaultSD(ISecUser * const user, const char* name, SecPermissionType ptype);
  56. virtual CSecurityDescriptor* createDefaultSD(ISecUser * const user, ISecResource* resource, MemoryBuffer& initial_sd);
  57. };
  58. class COpenLdapAciProcessor : public AciProcessor
  59. {
  60. public:
  61. COpenLdapAciProcessor(IPropertyTree* cfg) : AciProcessor(cfg)
  62. {
  63. m_servertype = OPEN_LDAP;
  64. }
  65. virtual StringBuffer& sec2aci(SecAccessFlags secperm, StringBuffer& aciperm);
  66. virtual CSecurityDescriptor* createDefaultSD(ISecUser * const user, const char* name, SecPermissionType ptype);
  67. virtual CSecurityDescriptor* createDefaultSD(ISecUser * const user, ISecResource* resource, MemoryBuffer& initial_sd);
  68. };
  69. #endif