#include <ctype.h>
#include <ldap.h>
+#include <atalk/globals.h>
#include <atalk/ldapconfig.h>
#include <atalk/logger.h>
#include <atalk/iniparser.h>
+void acl_ldap_freeconfig(void)
+{
+ for (int i = 0; ldap_prefs[i].name != NULL; i++) {
+ if (ldap_prefs[i].intfromarray == 0 && ldap_prefs[i].strorint == 0) {
+ free(*((char **)(ldap_prefs[i].pref)));
+ *((char **)(ldap_prefs[i].pref)) = NULL;
+ }
+ ldap_prefs[i].valid = ldap_prefs[i].valid_save;
+ }
+}
+
int acl_ldap_readconfig(dictionary *iniconfig)
{
int i, j;
- char *val;
+ const char *val;
i = 0;
/* now see if its a correct pref */
for (i = 0; ldap_prefs[i].name != NULL; i++) {
- if ((val = iniparser_getstring(ldap_prefs[i].name)) != NULL) {
- /* ok, found a valid pref */
-
+ if ((val = iniparser_getstring(iniconfig, INISEC_GLOBAL, ldap_prefs[i].name, NULL))) {
/* check if we have pre-defined values */
if (ldap_prefs[i].intfromarray == 0) {
/* no, its just a string */
*((int *)(ldap_prefs[i].pref)) = atoi(val);
else
/* store string as string */
- *((char **)(ldap_prefs[i].pref)) = val;
+ *((const char **)(ldap_prefs[i].pref)) = strdup(val);
} else {
/* ok, we have string to int mapping for this pref
eg. "none", "simple", "sasl" map to 0, 128, 129 */
while(ldap_prefs[i].pref != NULL) {
if ( ldap_prefs[i].valid != 0) {
- LOG(log_debug, logtype_afpd,"afp_ldap.conf: Missing option: \"%s\"", ldap_prefs[i].name);
+ LOG(log_debug, logtype_afpd,"LDAP: Missing option: \"%s\"", ldap_prefs[i].name);
ldap_config_valid = 0;
break;
}
if (ldap_config_valid) {
if (ldap_auth_method == LDAP_AUTH_NONE)
- LOG(log_debug, logtype_afpd,"afp_ldap.conf: Using anonymous bind.");
+ LOG(log_debug, logtype_afpd,"LDAP: Using anonymous bind.");
else if (ldap_auth_method == LDAP_AUTH_SIMPLE)
- LOG(log_debug, logtype_afpd,"afp_ldap.conf: Using simple bind.");
+ LOG(log_debug, logtype_afpd,"LDAP: Using simple bind.");
else {
ldap_config_valid = 0;
- LOG(log_error, logtype_afpd,"afp_ldap.conf: SASL not yet supported.");
+ LOG(log_error, logtype_afpd,"LDAP: SASL not yet supported.");
}
} else
- LOG(log_info, logtype_afpd,"afp_ldap.conf: not used");
- fclose(f);
+ LOG(log_info, logtype_afpd,"LDAP: not used");
return 0;
}
#endif /* HAVE_LDAP */