39
39
#include <glib/gi18n.h>
41
41
#include "common.h"
42
#include "configfile.h"
43
#include "encode.h" /* gq_codeset */
44
#include "errorchain.h"
43
46
#include "gq-keyring.h"
44
47
#include "gq-server-list.h"
48
#include "encode.h" /* gq_codeset */
49
#include "errorchain.h"
48
#include "gq-utilities.h"
51
50
#include "ldif.h" /* for b64_encode */
52
51
#include "syntax.h"
55
54
struct gq_config *config;
56
55
GList *transient_servers = NULL;
58
const struct tokenlist token_searchargument[] = {
59
{ SEARCHARG_BEGINS_WITH, "Begins with", NULL },
60
{ SEARCHARG_ENDS_WITH, "Ends with", NULL },
61
{ SEARCHARG_CONTAINS, "Contains", NULL },
62
{ SEARCHARG_EQUALS, "Equals", NULL },
66
57
const struct tokenlist token_bindtype[] = {
67
{ BINDTYPE_SIMPLE, "Simple", NULL },
68
{ BINDTYPE_KERBEROS, "Kerberos", NULL },
69
{ BINDTYPE_SASL, "SASL", NULL },
58
{ GQ_BIND_SIMPLE, "Simple", NULL },
59
{ GQ_BIND_KERBEROS, "Kerberos", NULL },
60
{ GQ_BIND_SASL, "SASL", NULL },
387
write_server(GQServerList* list, GqServer* server, gpointer user_data) {
388
gpointer* wc_and_cfg = user_data;
389
struct writeconfig* wc = wc_and_cfg[0];
390
struct gq_config * cfg = wc_and_cfg[1];
380
write_server(GQServerList* list G_GNUC_UNUSED,
384
struct writeconfig* wc = user_data;
392
386
/* GString *pw = g_string_new(); */
393
387
config_write(wc, "<ldapserver>\n");
396
config_write_string(wc, server->name, "name", NULL);
397
config_write_string(wc, server->ldaphost, "ldaphost", NULL);
398
config_write_int(wc, server->ldapport, "ldapport", NULL);
399
config_write_string_ne(wc, server->basedn, "basedn", NULL);
400
config_write_string_ne(wc, server->binddn, "binddn", NULL);
402
if (cfg->config_version == 0) {
403
config_write_string_ne(wc, server->bindpw, "bindpw", NULL);
404
} else if(server->bindpw && *server->bindpw) {
405
gq_keyring_save_server_password(server);
408
if(server->bindtype != DEFAULT_BINDTYPE)
409
config_write_string_ne(wc, detokenize(token_bindtype, server->bindtype), "bindtype", NULL);
410
config_write_string_ne(wc, server->searchattr,
411
"search-attribute", NULL);
412
if(server->maxentries != DEFAULT_MAXENTRIES)
413
config_write_int(wc, server->maxentries, "maxentries", NULL);
414
if(server->cacheconn != DEFAULT_CACHECONN)
415
config_write_bool(wc, server->cacheconn,
416
"cache-connection", NULL);
417
if(server->enabletls != DEFAULT_ENABLETLS)
418
config_write_bool(wc, server->enabletls, "enable-tls", NULL);
390
config_write_string(wc, gq_server_get_name(server), "name", NULL);
391
config_write_string(wc, gq_server_get_host(server), "ldaphost", NULL);
392
config_write_int (wc, gq_server_get_port(server), "ldapport", NULL);
393
config_write_string_ne(wc, server->basedn, "basedn", NULL);
394
config_write_string_ne(wc, gq_server_get_bind_dn(server), "binddn", NULL);
396
config_write_string_ne(wc, detokenize(token_bindtype, gq_server_get_bind_type(server)),
398
config_write_string_ne(wc, gq_server_get_search_attribute(server),
399
"search-attribute", NULL);
400
config_write_bool(wc, gq_server_get_cache_connection(server),
401
"cache-connection", NULL);
402
config_write_bool(wc, gq_server_get_use_tls(server), "enable-tls", NULL);
419
403
if(server->local_cache_timeout != DEFAULT_LOCAL_CACHE_TIMEOUT)
420
404
config_write_int(wc, server->local_cache_timeout,
421
405
"local-cache-timeout", NULL);
422
if(server->ask_pw != DEFAULT_ASK_PW)
423
config_write_bool(wc, server->ask_pw, "ask-pw", NULL);
424
if(server->hide_internal != DEFAULT_HIDE_INTERNAL)
425
config_write_bool(wc, server->hide_internal,
426
"hide-internal", NULL);
427
if(server->show_ref != DEFAULT_SHOW_REF)
406
config_write_bool(wc, gq_server_get_ask_pw(server), "ask-pw", NULL);
407
config_write_bool(wc, gq_server_get_hide_internals(server),
408
"hide-internal", NULL);
409
if(server->show_ref != DEFAULT_SHOW_REF)
428
410
config_write_bool(wc, server->show_ref, "show-ref", NULL);
431
config_write(wc, "</ldapserver>\n\n");
413
config_write(wc, "</ldapserver>\n\n");
434
416
static gboolean save_config_internal(int write_context,