summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-04 16:23:33 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-04 16:23:33 -0400
commit3f4bb877614e423a7c35a355b764ed052e1671a8 (patch)
tree33acdee48ca3e48ee08b8fbe5b9bc1c6e19e70b8 /src
parent761006cea186bf1fba9d4935667e9d6bd7ca67e7 (diff)
- update referred-to items (via "memberOf") for passwd entries
Diffstat (limited to 'src')
-rw-r--r--src/defaults.c28
-rw-r--r--src/defaults.h3
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