diff options
| author | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-06-04 16:23:33 -0400 |
|---|---|---|
| committer | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-06-04 16:23:33 -0400 |
| commit | 3f4bb877614e423a7c35a355b764ed052e1671a8 (patch) | |
| tree | 33acdee48ca3e48ee08b8fbe5b9bc1c6e19e70b8 /src | |
| parent | 761006cea186bf1fba9d4935667e9d6bd7ca67e7 (diff) | |
- update referred-to items (via "memberOf") for passwd entries
Diffstat (limited to 'src')
| -rw-r--r-- | src/defaults.c | 28 | ||||
| -rw-r--r-- | src/defaults.h | 3 |
2 files changed, 23 insertions, 8 deletions
diff --git a/src/defaults.c b/src/defaults.c index 13b66f8..88db21f 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -26,42 +26,54 @@ #include <fnmatch.h> #include <string.h> +#include "defaults.h" + #define DEFAULT_ENTRY_FILTER "(&(nisMapName=%m)(objectClass=nisObject))" #define DEFAULT_KEY_FORMAT "%{cn}" #define DEFAULT_VALUE_FORMAT "%{nisMapEntry}" +#define DEFAULT_REFERRED NULL + +static char *user_referred[] = {"member", NULL}; +static char *group_referred[] = {"memberOf", NULL}; static struct configuration { char *map; enum { config_exact, config_glob } config_match; - char *filter, *key_format, *value_format; + char *filter, *key_format, *value_format, **referred; } config[] = { {"passwd.byname", config_exact, "(objectClass=posixAccount)", "%{uid}", - "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell:-}"}, + "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell:-}", + user_referred}, {"passwd.bynumber", config_exact, "(objectClass=posixAccount)", "%{uidNumber}", - "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell:-}"}, + "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell:-}", + user_referred}, {"group.byname", config_exact, "(objectClass=posixGroup)", "%{cn}", - "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\")"}, + "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\")", + group_referred}, {"group.bynumber", config_exact, "(objectClass=posixGroup)", "%{gidNumber}", - "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\")"}, + "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\")", + group_referred}, {"auto.*", config_glob, "(objectClass=automount)", "%{automountKey}", - "%{automountInformation}"}, + "%{automountInformation}", + NULL}, }; void defaults_get_map_config(const char *mapname, const char **filter, const char **key_format, - const char **value_format) + const char **value_format, + const char ***referred) { unsigned int i; *filter = DEFAULT_ENTRY_FILTER; @@ -74,6 +86,7 @@ defaults_get_map_config(const char *mapname, *filter = config[i].filter; *key_format = config[i].key_format; *value_format = config[i].value_format; + *referred = (const char **) config[i].referred; } break; case config_glob: @@ -82,6 +95,7 @@ defaults_get_map_config(const char *mapname, *filter = config[i].filter; *key_format = config[i].key_format; *value_format = config[i].value_format; + *referred = (const char **) config[i].referred; } break; } diff --git a/src/defaults.h b/src/defaults.h index 29c7c4a..ebfb45a 100644 --- a/src/defaults.h +++ b/src/defaults.h @@ -24,5 +24,6 @@ void defaults_get_map_config(const char *mapname, const char **filter, const char **key_format, - const char **value_format); + const char **value_format, + const char ***referred); #endif |
