1
0

automember.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2011 Red Hat, Inc.
  3. * All rights reserved.
  4. *
  5. * License: GPL (version 3 or any later version).
  6. * See LICENSE for details.
  7. * END COPYRIGHT BLOCK **/
  8. #ifdef HAVE_CONFIG_H
  9. # include <config.h>
  10. #endif
  11. /*
  12. * Auto Membership plug-in header file
  13. */
  14. #include <stdio.h>
  15. #include <ctype.h>
  16. #include <string.h>
  17. #include <errno.h>
  18. #include "portable.h"
  19. #include "nspr.h"
  20. #include "slapi-plugin.h"
  21. #include "prclist.h"
  22. #include "ldif.h"
  23. /*
  24. * Plug-in defines
  25. */
  26. #define AUTOMEMBER_PLUGIN_SUBSYSTEM "auto-membership-plugin"
  27. #define AUTOMEMBER_FEATURE_DESC "Auto Membership"
  28. #define AUTOMEMBER_PLUGIN_DESC "Auto Membership plugin"
  29. #define AUTOMEMBER_INT_POSTOP_DESC "Auto Membership internal postop plugin"
  30. #define AUTOMEMBER_POSTOP_DESC "Auto Membership postop plugin"
  31. /*
  32. * Config type defines
  33. */
  34. #define AUTOMEMBER_SCOPE_TYPE "autoMemberScope"
  35. #define AUTOMEMBER_FILTER_TYPE "autoMemberFilter"
  36. #define AUTOMEMBER_EXC_REGEX_TYPE "autoMemberExclusiveRegex"
  37. #define AUTOMEMBER_INC_REGEX_TYPE "autoMemberInclusiveRegex"
  38. #define AUTOMEMBER_DEFAULT_GROUP_TYPE "autoMemberDefaultGroup"
  39. #define AUTOMEMBER_GROUPING_ATTR_TYPE "autoMemberGroupingAttr"
  40. #define AUTOMEMBER_DISABLED_TYPE "autoMemberDisabled"
  41. #define AUTOMEMBER_TARGET_GROUP_TYPE "autoMemberTargetGroup"
  42. /*
  43. * Config loading filters
  44. */
  45. #define AUTOMEMBER_DEFINITION_FILTER "objectclass=autoMemberDefinition"
  46. #define AUTOMEMBER_REGEX_RULE_FILTER "objectclass=autoMemberRegexRule"
  47. /*
  48. * Helper defines
  49. */
  50. #define IS_ATTRDESC_CHAR(c) ( isalnum(c) || (c == '.') || (c == ';') || (c == '-') )
  51. struct automemberRegexRule {
  52. PRCList list;
  53. Slapi_DN *target_group_dn;
  54. char *attr;
  55. char *regex_str;
  56. Slapi_Regex *regex;
  57. };
  58. struct automemberDNListItem {
  59. PRCList list;
  60. Slapi_DN *dn;
  61. };
  62. /*
  63. * Linked list of config entries.
  64. */
  65. struct configEntry {
  66. PRCList list;
  67. char *dn;
  68. char *scope;
  69. Slapi_Filter *filter;
  70. struct automemberRegexRule *exclusive_rules;
  71. struct automemberRegexRule *inclusive_rules;
  72. char **default_groups;
  73. char *grouping_attr;
  74. char *grouping_value;
  75. };
  76. /*
  77. * Config fetch function
  78. */
  79. PRCList *automember_get_config();
  80. /*
  81. * Config cache locking functions
  82. */
  83. void automember_config_read_lock();
  84. void automember_config_write_lock();
  85. void automember_config_unlock();
  86. /*
  87. * Plugin identity functions
  88. */
  89. void automember_set_plugin_id(void *pluginID);
  90. void *automember_get_plugin_id();
  91. void automember_set_plugin_dn(char *pluginDN);
  92. char *automember_get_plugin_dn();