diff options
-rw-r--r-- | src/defs-nis.c | 75 | ||||
-rw-r--r-- | src/defs-nis.h | 1 |
2 files changed, 46 insertions, 30 deletions
diff --git a/src/defs-nis.c b/src/defs-nis.c index 05ff043..80e4cb9 100644 --- a/src/defs-nis.c +++ b/src/defs-nis.c @@ -34,6 +34,7 @@ #define DEFAULT_KEY_FORMAT NULL #define DEFAULT_KEYS_FORMAT "%{cn}" #define DEFAULT_VALUE_FORMAT "%{nisMapEntry}" +#define DEFAULT_VALUES_FORMAT NULL #define DEFAULT_DISALLOWED_CHARS NULL #define DEFAULT_MAP_SECURE FALSE #define DEFAULT_CONFIGURATION_SUFFIX "cn=NIS Server, cn=plugins, cn=config" @@ -44,131 +45,132 @@ static struct configuration { bool_t secure; char *base; char *filter; - char *key_format, *keys_format, *value_format, *disallowed_chars; + char *key_format, *keys_format, *value_format, *values_format; + char *disallowed_chars; } config[] = { {"passwd.byname", config_exact, FALSE, NULL, "(objectClass=posixAccount)", "%{uid}", NULL, - "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn:-}}:%{homeDirectory:-/}:%{loginShell:-" _PATH_BSHELL "}", + "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn:-}}:%{homeDirectory:-/}:%{loginShell:-" _PATH_BSHELL "}", NULL, ":"}, {"passwd.byuid", config_exact, FALSE, NULL, "(objectClass=posixAccount)", "%{uidNumber}", NULL, - "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn:-}}:%{homeDirectory:-/}:%{loginShell:-" _PATH_BSHELL "}", + "%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn:-}}:%{homeDirectory:-/}:%{loginShell:-" _PATH_BSHELL "}", NULL, ":"}, {"group.byname", config_exact, FALSE, NULL, "(objectClass=posixGroup)", "%{cn}", NULL, - "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%{memberUid}\",\"%deref(\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")", + "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%{memberUid}\",\"%deref(\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")", NULL, ":,"}, {"group.bygid", config_exact, FALSE, NULL, "(objectClass=posixGroup)", "%{gidNumber}", NULL, - "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%{memberUid}\",\"%deref(\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")", + "%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%{memberUid}\",\"%deref(\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")", NULL, ":,"}, {"netgroup", config_exact, FALSE, NULL, "(objectClass=nisNetgroup)", "%{cn}", NULL, - "%merge(\" \",\"%{nisNetgroupTriple}\",\"%{memberNisNetgroup}\")", + "%merge(\" \",\"%{nisNetgroupTriple}\",\"%{memberNisNetgroup}\")", NULL, NULL}, {"auto.*", config_glob, FALSE, NULL, "(objectClass=automount)", NULL, "%{automountKey}", - "%{automountInformation}", + "%{automountInformation}", NULL, NULL}, {"ethers.byaddr", config_exact, FALSE, NULL, "(&(ipHostNumber=*)(macAddress=*))", "%{macAddress}", NULL, - "%{ipHostNumber}", + "%{ipHostNumber}", NULL, NULL}, {"ethers.byname", config_exact, FALSE, NULL, "(&(ipHostNumber=*)(macAddress=*))", "%{ipHostNumber}", NULL, - "%{macAddress}", + "%{macAddress}", NULL, NULL}, {"hosts.byaddr", config_exact, FALSE, NULL, "(&(ipHostNumber=*)(cn=*))", "%{ipHostNumber}", NULL, - "%first(\"%{cn}\")\t%{ipHostNumber} %merge(\" \",\"%{cn}\")", + "%first(\"%{cn}\")\t%{ipHostNumber} %merge(\" \",\"%{cn}\")", NULL, NULL}, {"hosts.byname", config_exact, FALSE, NULL, "(&(ipHostNumber=*)(cn=*))", NULL, "%{cn}", - "%first(\"%{cn}\")\t%{ipHostNumber} %merge(\" \",\"%{cn}\")", + "%first(\"%{cn}\")\t%{ipHostNumber} %merge(\" \",\"%{cn}\")", NULL, NULL}, {"mail.aliases", config_exact, FALSE, NULL, "(objectClass=nisMailAlias)", "%{cn}", NULL, - "%merge(\",\",\"%{rfc822MailMember}\")", + "%merge(\",\",\"%{rfc822MailMember}\")", NULL, NULL}, {"mail.byaddr", config_exact, FALSE, NULL, "(objectClass=nisMailAlias)", NULL, "%{rfc822MailMember}", - "%merge(\",\",\"%{cn}\")", + "%merge(\",\",\"%{cn}\")", NULL, NULL}, {"netgroup.byhost", config_exact, FALSE, NULL, "(objectClass=nisNetgroup)", NULL, NULL, - NULL, + NULL, NULL, NULL}, {"netgroup.byuser", config_exact, FALSE, NULL, "(objectClass=nisNetgroup)", NULL, NULL, - NULL, + NULL, NULL, NULL}, {"netid.byname", config_exact, FALSE, NULL, "(objectClass=posixAccount)", "unix.%{uidNumber}", NULL, - "%{uidNumber}:%merge(\",\",\"%{gidNumber}\",\"%deref(\\\"memberOf\\\",\\\"gidNumber\\\")\",\"%referred(\\\"group.byname\\\",\\\"member\\\",\\\"gidNumber\\\")\",\"%referred(\\\"group.byname\\\",\\\"uniqueMember\\\",\\\"gidNumber\\\")\")", + "%{uidNumber}:%merge(\",\",\"%{gidNumber}\",\"%deref(\\\"memberOf\\\",\\\"gidNumber\\\")\",\"%referred(\\\"group.byname\\\",\\\"member\\\",\\\"gidNumber\\\")\",\"%referred(\\\"group.byname\\\",\\\"uniqueMember\\\",\\\"gidNumber\\\")\")", NULL, NULL}, {"networks.byaddr", config_exact, FALSE, NULL, "(objectClass=ipNetwork)", "%{ipNetworkNumber}", NULL, - "%merge(\"%{cn}\")", + "%merge(\"%{cn}\")", NULL, NULL}, {"networks.byname", config_exact, FALSE, NULL, "(objectClass=ipNetwork)", NULL, "%{cn}", - "%{ipNetworkNumber}", + "%{ipNetworkNumber}", NULL, NULL}, {"protocols.byname", config_exact, FALSE, NULL, "(objectClass=ipProtocol)", NULL, "%{cn}", - "%first(\"%{cn}\")\t%{ipProtocolNumber}\t%merge(\" \",\"%{cn}\")", + "%first(\"%{cn}\")\t%{ipProtocolNumber}\t%merge(\" \",\"%{cn}\")", NULL, NULL}, {"protocols.bynumber", config_exact, FALSE, NULL, "(objectClass=ipProtocol)", "%{ipProtocolNumber}", NULL, - "%first(\"%{cn}\")\t%{ipProtocolNumber}\t%merge(\" \",\"%{cn}\")", + "%first(\"%{cn}\")\t%{ipProtocolNumber}\t%merge(\" \",\"%{cn}\")", NULL, NULL}, {"rpc.byname", config_exact, FALSE, NULL, "(objectClass=oncRpc)", NULL, "%{cn}", - "%first(\"%{cn}\")\t%{oncRpcNumber}\t%merge(\" \",\"%{cn}\")", + "%first(\"%{cn}\")\t%{oncRpcNumber}\t%merge(\" \",\"%{cn}\")", NULL, NULL}, {"rpc.bynumber", config_exact, FALSE, NULL, "(objectClass=oncRpc)", "%{oncRpcNumber}", NULL, - "%first(\"%{cn}\")\t%{oncRpcNumber}\t%merge(\" \",\"%{cn}\")", + "%first(\"%{cn}\")\t%{oncRpcNumber}\t%merge(\" \",\"%{cn}\")", NULL, NULL}, {"services.byname", config_exact, FALSE, NULL, "(objectClass=ipService)", NULL, "%{cn}", - "%{cn} %{ipServicePort}/%{ipServiceProtocol} %merge(\"%{cn}\")", + "%{cn} %{ipServicePort}/%{ipServiceProtocol} %merge(\"%{cn}\")", NULL, NULL}, {"services.byservicename", config_exact, FALSE, NULL, "(objectClass=ipService)", NULL, "%{cn}", - "%{cn} %{ipServicePort}/%{ipServiceProtocol} %merge(\"%{cn}\")", + "%{cn} %{ipServicePort}/%{ipServiceProtocol} %merge(\"%{cn}\")", NULL, NULL}, {"ypservers", config_exact, FALSE, "cn=nis-servers, " DEFAULT_CONFIGURATION_SUFFIX, "(&(" NIS_MAP_CONFIGURATION_MAP_ATTR "=nis-servers)" "(" NIS_MAP_CONFIGURATION_DOMAIN_ATTR "=%d)" "(" NIS_PLUGIN_CONFIGURATION_SERVER_ATTR "=*))", - "%{" NIS_PLUGIN_CONFIGURATION_SERVER_ATTR "}", NULL, - "%{" NIS_PLUGIN_CONFIGURATION_SERVER_ATTR "}", + NULL, "%{" NIS_PLUGIN_CONFIGURATION_SERVER_ATTR "}", + NULL, "%{" NIS_PLUGIN_CONFIGURATION_SERVER_ATTR "}", NULL}, }; @@ -179,6 +181,7 @@ defaults_get_map_config(const char *mapname, const char **key_format, const char **keys_format, const char **value_format, + const char **values_format, const char **disallowed_chars) { unsigned int i; @@ -216,6 +219,9 @@ defaults_get_map_config(const char *mapname, if (value_format) { *value_format = config[i].value_format; } + if (values_format) { + *values_format = config[i].values_format; + } if (disallowed_chars) { *disallowed_chars = config[i].disallowed_chars; } @@ -237,6 +243,9 @@ defaults_get_map_config(const char *mapname, if (value_format) { *value_format = DEFAULT_VALUE_FORMAT; } + if (values_format) { + *values_format = DEFAULT_VALUES_FORMAT; + } if (disallowed_chars) { *disallowed_chars = DEFAULT_DISALLOWED_CHARS; } @@ -324,10 +333,16 @@ main(int argc, char **argv) config[i].key_format ? config[i].key_format : ""); } - printf("%s: %s\n", - NIS_MAP_CONFIGURATION_VALUE_ATTR, - config[i].value_format ? - config[i].value_format : ""); + if (config[i].values_format != NULL) { + printf("%s: %s\n", + NIS_MAP_CONFIGURATION_VALUES_ATTR, + config[i].values_format); + } else { + printf("%s: %s\n", + NIS_MAP_CONFIGURATION_VALUE_ATTR, + config[i].value_format ? + config[i].value_format : ""); + } if (config[i].disallowed_chars != NULL) { printf("%s: %s\n", NIS_MAP_CONFIGURATION_DISALLOWED_CHARS_ATTR, diff --git a/src/defs-nis.h b/src/defs-nis.h index 3155cd5..236f797 100644 --- a/src/defs-nis.h +++ b/src/defs-nis.h @@ -27,5 +27,6 @@ void defaults_get_map_config(const char *mapname, const char **key_format, const char **keys_format, const char **value_format, + const char **values_format, const char **disallowed_chars); #endif |