96 char *value = util_xml_get_text(node); |
96 char *value = util_xml_get_text(node); |
97 cbool->value = util_getboolean(value); |
97 cbool->value = util_getboolean(value); |
98 } |
98 } |
99 |
99 |
100 |
100 |
101 DavConfig* dav_config_new(void) { |
101 DavConfig* dav_config_new(xmlDoc *doc) { |
102 CxMempool *cfg_mp = cxMempoolCreate(128, NULL); |
102 CxMempool *cfg_mp = cxMempoolCreate(128, NULL); |
103 DavConfig *config = cxMalloc(cfg_mp->allocator, sizeof(DavConfig)); |
103 DavConfig *config = cxMalloc(cfg_mp->allocator, sizeof(DavConfig)); |
104 memset(config, 0, sizeof(DavConfig)); |
104 memset(config, 0, sizeof(DavConfig)); |
105 config->mp = cfg_mp; |
105 config->mp = cfg_mp; |
106 |
106 |
107 xmlDoc *doc = xmlNewDoc(BAD_CAST "1.0"); |
107 if(!doc) { |
108 xmlNode *root = xmlNewNode(NULL, BAD_CAST "configuration"); |
108 doc = xmlNewDoc(BAD_CAST "1.0"); |
109 xmlDocSetRootElement(doc, root); |
109 xmlNode *root = xmlNewNode(NULL, BAD_CAST "configuration"); |
|
110 xmlDocSetRootElement(doc, root); |
|
111 } |
110 config->doc = doc; |
112 config->doc = doc; |
111 |
113 |
112 return config; |
114 return config; |
113 } |
115 } |
114 |
116 |
119 *error = DAV_CONFIG_ERROR_XML; |
121 *error = DAV_CONFIG_ERROR_XML; |
120 } |
122 } |
121 return NULL; |
123 return NULL; |
122 } |
124 } |
123 |
125 |
124 DavConfig *config = dav_config_new(); |
126 DavConfig *config = dav_config_new(doc); |
125 CxMempool *cfg_mp = config->mp; |
127 CxMempool *cfg_mp = config->mp; |
126 cxMempoolRegister(cfg_mp, doc, (cx_destructor_func)xmlFreeDoc); |
128 cxMempoolRegister(cfg_mp, doc, (cx_destructor_func)xmlFreeDoc); |
127 |
129 |
128 DavCfgRepository *repos_begin = NULL; |
130 DavCfgRepository *repos_begin = NULL; |
129 DavCfgRepository *repos_end = NULL; |
131 DavCfgRepository *repos_end = NULL; |
482 repo->url.value = cx_strdup_a(config->mp->allocator, newurl); |
484 repo->url.value = cx_strdup_a(config->mp->allocator, newurl); |
483 } |
485 } |
484 |
486 |
485 void dav_repository_set_auth(DavConfig *config, DavCfgRepository *repo, cxstring user, cxstring password) { |
487 void dav_repository_set_auth(DavConfig *config, DavCfgRepository *repo, cxstring user, cxstring password) { |
486 const CxAllocator *a = config->mp->allocator; |
488 const CxAllocator *a = config->mp->allocator; |
487 repo->user.value = cx_strdup_a(a, user); |
489 if(user.length > 0) { |
488 char *pwenc = util_base64encode(password.ptr, password.length); |
490 repo->user.value = cx_strdup_a(a, user); |
489 repo->password.value = cx_strdup_a(a, cx_str(pwenc)); |
491 } |
490 free(pwenc); |
492 if(password.length > 0) { |
|
493 char *pwenc = util_base64encode(password.ptr, password.length); |
|
494 repo->password.value = cx_strdup_a(a, cx_str(pwenc)); |
|
495 free(pwenc); |
|
496 } |
491 } |
497 } |
492 |
498 |
493 cxmutstr dav_repository_get_decodedpassword(DavCfgRepository *repo) { |
499 cxmutstr dav_repository_get_decodedpassword(DavCfgRepository *repo) { |
494 cxmutstr pw = { NULL, 0 }; |
500 cxmutstr pw = { NULL, 0 }; |
495 if(repo->password.value.ptr) { |
501 if(repo->password.value.ptr) { |