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); |