automember.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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 "slapi-private.h"
  22. #include "prclist.h"
  23. #include "ldif.h"
  24. /*
  25. * Plug-in defines
  26. */
  27. #define AUTOMEMBER_PLUGIN_SUBSYSTEM "auto-membership-plugin"
  28. #define AUTOMEMBER_FEATURE_DESC "Auto Membership"
  29. #define AUTOMEMBER_PLUGIN_DESC "Auto Membership plugin"
  30. #define AUTOMEMBER_INT_POSTOP_DESC "Auto Membership internal postop plugin"
  31. #define AUTOMEMBER_POSTOP_DESC "Auto Membership postop plugin"
  32. /*
  33. * Config type defines
  34. */
  35. #define AUTOMEMBER_SCOPE_TYPE "autoMemberScope"
  36. #define AUTOMEMBER_FILTER_TYPE "autoMemberFilter"
  37. #define AUTOMEMBER_EXC_REGEX_TYPE "autoMemberExclusiveRegex"
  38. #define AUTOMEMBER_INC_REGEX_TYPE "autoMemberInclusiveRegex"
  39. #define AUTOMEMBER_DEFAULT_GROUP_TYPE "autoMemberDefaultGroup"
  40. #define AUTOMEMBER_GROUPING_ATTR_TYPE "autoMemberGroupingAttr"
  41. #define AUTOMEMBER_DISABLED_TYPE "autoMemberDisabled"
  42. #define AUTOMEMBER_TARGET_GROUP_TYPE "autoMemberTargetGroup"
  43. /*
  44. * Config loading filters
  45. */
  46. #define AUTOMEMBER_DEFINITION_FILTER "objectclass=autoMemberDefinition"
  47. #define AUTOMEMBER_REGEX_RULE_FILTER "objectclass=autoMemberRegexRule"
  48. /*
  49. * Helper defines
  50. */
  51. #define IS_ATTRDESC_CHAR(c) ( isalnum(c) || (c == '.') || (c == ';') || (c == '-') )
  52. struct automemberRegexRule {
  53. PRCList list;
  54. Slapi_DN *target_group_dn;
  55. char *attr;
  56. char *regex_str;
  57. Slapi_Regex *regex;
  58. };
  59. struct automemberDNListItem {
  60. PRCList list;
  61. Slapi_DN *dn;
  62. };
  63. /*
  64. * Linked list of config entries.
  65. */
  66. struct configEntry {
  67. PRCList list;
  68. char *dn;
  69. char *scope;
  70. Slapi_Filter *filter;
  71. struct automemberRegexRule *exclusive_rules;
  72. struct automemberRegexRule *inclusive_rules;
  73. char **default_groups;
  74. char *grouping_attr;
  75. char *grouping_value;
  76. };
  77. /*
  78. * Config fetch function
  79. */
  80. PRCList *automember_get_config(void);
  81. /*
  82. * Config cache locking functions
  83. */
  84. void automember_config_read_lock(void);
  85. void automember_config_write_lock(void);
  86. void automember_config_unlock(void);
  87. /*
  88. * Plugin identity functions
  89. */
  90. void automember_set_plugin_id(void *pluginID);
  91. void *automember_get_plugin_id(void);
  92. void automember_set_plugin_dn(char *pluginDN);
  93. char *automember_get_plugin_dn(void);