dav/config.c

changeset 43
03076907b58a
parent 40
a95ee94b9204
child 73
41e88442ad4e
equal deleted inserted replaced
42:6518b035a9df 43:03076907b58a
109 } 109 }
110 110
111 void load_repository(xmlNode *reponode) { 111 void load_repository(xmlNode *reponode) {
112 xmlNode *node = reponode->children; 112 xmlNode *node = reponode->children;
113 Repository *repo = calloc(1, sizeof(Repository)); 113 Repository *repo = calloc(1, sizeof(Repository));
114 repo->store_key_property = true; 114 repo->encrypt_name = false;
115 repo->decrypt = false; 115 repo->encrypt_content = false;
116 repo->decrypt_name = false;
117 repo->decrypt_content = true;
116 while(node) { 118 while(node) {
117 if(node->type == XML_ELEMENT_NODE) { 119 if(node->type == XML_ELEMENT_NODE) {
118 char *value = util_xml_get_text(node); 120 char *value = util_xml_get_text(node);
119 if(!value) { 121 if(!value) {
120 // next 122 // next
126 repo->user = strdup(value); 128 repo->user = strdup(value);
127 } else if(xstreq(node->name, "password")) { 129 } else if(xstreq(node->name, "password")) {
128 repo->password = util_base64decode(value); 130 repo->password = util_base64decode(value);
129 } else if(xstreq(node->name, "default-key")) { 131 } else if(xstreq(node->name, "default-key")) {
130 repo->default_key = strdup(value); 132 repo->default_key = strdup(value);
131 } else if(xstreq(node->name, "encrypt")) { 133 } else if(xstreq(node->name, "full-encryption")) {
132 repo->encrypt = util_getboolean(value); 134 if(util_getboolean(value)) {
133 } else if(xstreq(node->name, "decrypt")) { 135 repo->encrypt_name = true;
134 repo->decrypt = util_getboolean(value); 136 repo->encrypt_content = true;
135 } else if(xstreq(node->name, "store-key-property")) { 137 repo->decrypt_name = true;
136 repo->store_key_property = util_getboolean(value); 138 repo->decrypt_content = true;
139 }
140 } else if(xstreq(node->name, "content-encryption")) {
141 if(util_getboolean(value)) {
142 repo->encrypt_content = true;
143 repo->decrypt_content = true;
144 } else {
145 repo->encrypt_content = false;
146 }
147 } else if(xstreq(node->name, "decrypt-content")) {
148 repo->decrypt_content = util_getboolean(value);
149 } else if(xstreq(node->name, "decrypt-name")) {
150 repo->decrypt_name = util_getboolean(value);
151 } else if(xstreq(node->name, "encrypt") || xstreq(node->name, "store-key-property") || xstreq(node->name, "decrypt")) {
152 fprintf(stderr, "Error: config.xml contains deprecated elements\n");
153 fprintf(stderr, "The elements <encrypt>, <decrypt> and <store-key-property> are removed\n");
154 fprintf(stderr, "Use the following: \n\n");
155 fprintf(stderr, "<content-encryption>true</content-encryption>\n");
156 fprintf(stderr, "enables file content encryption and decryption\n\n");
157 fprintf(stderr, "<full-encryption>true</full-encryption>\n");
158 fprintf(stderr, "enables content and file name encryption/decryption\n\n");
159 fprintf(stderr, "<decrypt-content>$BOOL</decrypt-content>\n");
160 fprintf(stderr, "only enables/disables content decryption\n\n");
161 fprintf(stderr, "<decrypt-name>$BOOL</decrypt-name>\n");
162 fprintf(stderr, "only enables/disables name decryption\n\n");
163 exit(-1);
137 } 164 }
138 } 165 }
139 node = node->next; 166 node = node->next;
140 } 167 }
141 168
281 return NULL; 308 return NULL;
282 } 309 }
283 return ucx_map_sstr_get(repos, name); 310 return ucx_map_sstr_get(repos, name);
284 } 311 }
285 312
313 int get_repository_flags(Repository *repo) {
314 int flags = 0;
315 if(repo->decrypt_content) {
316 flags |= DAV_SESSION_DECRYPT_CONTENT;
317 }
318 if(repo->decrypt_name) {
319 flags |= DAV_SESSION_DECRYPT_NAME;
320 }
321 if(repo->encrypt_content) {
322 flags |= DAV_SESSION_ENCRYPT_CONTENT;
323 }
324 if(repo->encrypt_name) {
325 flags |= DAV_SESSION_ENCRYPT_NAME;
326 }
327 return flags;
328 }
329
330
286 Key* get_key(char *name) { 331 Key* get_key(char *name) {
287 if(!name) { 332 if(!name) {
288 return NULL; 333 return NULL;
289 } 334 }
290 return ucx_map_cstr_get(keys, name); 335 return ucx_map_cstr_get(keys, name);

mercurial