Sat, 22 Jun 2019 16:36:52 +0200
move some properties to new namespace
for properties encryption we need to decide which props must be encrypted and the plan is, to decide by namespace
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
576
62cc92445234
store relative link in LocalResource
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
4 | * Copyright 2019 Olaf Wintermann. All rights reserved. |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #ifndef UTILS_H |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | #define UTILS_H |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | |
267
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
32 | #ifdef _WIN32 |
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
33 | #include <winsock2.h> |
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
34 | #include <io.h> |
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
35 | #endif /* _WIN32 */ |
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
36 | |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
37 | #include <sys/types.h> |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
38 | #include <libxml/tree.h> |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
39 | #include <ucx/string.h> |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
40 | #include <sys/stat.h> |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
41 | #include <inttypes.h> |
267
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
42 | |
40
a95ee94b9204
supports whitespace in paths
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
39
diff
changeset
|
43 | #include <curl/curl.h> |
a95ee94b9204
supports whitespace in paths
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
39
diff
changeset
|
44 | #include "webdav.h" |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
45 | |
267
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
46 | #ifndef S_IRWXG |
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
47 | /* if one is not defined, the others are probably also not defined */ |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
48 | #define S_IRWXG 070 |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
49 | #define S_IRGRP 040 |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
50 | #define S_IWGRP 020 |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
51 | #define S_IXGRP 010 |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
52 | #define S_IRWXO 07 |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
53 | #define S_IROTH 04 |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
54 | #define S_IWOTH 02 |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
55 | #define S_IXOTH 01 |
267
171498cb2137
some mingw fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
254
diff
changeset
|
56 | #endif /* S_IRWXG */ |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
57 | |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
58 | #ifdef __cplusplus |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
59 | extern "C" { |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
60 | #endif |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
61 | |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
62 | time_t util_parse_creationdate(char *str); |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
63 | time_t util_parse_lastmodified(char *str); |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
64 | |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
65 | int util_mkdir(char *path, mode_t mode); |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
66 | |
151
a316613205dc
fixed some memory leaks, content verification and dav info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
150
diff
changeset
|
67 | char* util_url_base(char *url); |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
68 | char* util_url_path(char *url); |
66 | 69 | char* util_url_decode(DavSession *sn, char *url); |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
70 | char* util_resource_name(char *url); |
372
2e15ff88a0ab
adds tag management commands to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
71 | char* util_concat_path(const char *url_base, const char *path); |
505 | 72 | char* util_get_url(DavSession *sn, const char *href); |
73 | void util_set_url(DavSession *sn, const char *href); | |
43
03076907b58a
added file name encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
74 | |
543
2f85df8cd35e
fixes that pull downloads the history collection
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
542
diff
changeset
|
75 | /* |
2f85df8cd35e
fixes that pull downloads the history collection
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
542
diff
changeset
|
76 | * returns true if path1 and path2 are equal or if path2 is a child of path1 |
2f85df8cd35e
fixes that pull downloads the history collection
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
542
diff
changeset
|
77 | */ |
2f85df8cd35e
fixes that pull downloads the history collection
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
542
diff
changeset
|
78 | int util_path_isrelated(const char *path1, const char *path2); |
2f85df8cd35e
fixes that pull downloads the history collection
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
542
diff
changeset
|
79 | |
575
f746f601c35c
add util_path_normalize
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
545
diff
changeset
|
80 | char* util_path_normalize(const char *path); |
576
62cc92445234
store relative link in LocalResource
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
81 | char* util_create_relative_path(const char *abspath, const char *base); |
575
f746f601c35c
add util_path_normalize
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
545
diff
changeset
|
82 | |
170
cf054cded046
added depth header workaround for Microsoft IIS (tested with sharepoint)
Mike Becker <universe@uap-core.de>
parents:
151
diff
changeset
|
83 | void util_capture_header(CURL *handle, UcxMap* map); |
cf054cded046
added depth header workaround for Microsoft IIS (tested with sharepoint)
Mike Becker <universe@uap-core.de>
parents:
151
diff
changeset
|
84 | |
40
a95ee94b9204
supports whitespace in paths
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
39
diff
changeset
|
85 | char* util_path_to_url(DavSession *sn, char *path); |
578
bb1e60fada74
create symlinks on pull
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
576
diff
changeset
|
86 | char* util_parent_path(const char *path); |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
87 | |
535
d814ee31c04f
adds blocksize also to the sync db
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
534
diff
changeset
|
88 | int util_getboolean(const char *v); |
d814ee31c04f
adds blocksize also to the sync db
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
534
diff
changeset
|
89 | int util_strtouint(const char *str, uint64_t *value); |
d814ee31c04f
adds blocksize also to the sync db
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
534
diff
changeset
|
90 | int util_strtoint(const char *str, int64_t *value); |
534
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
91 | int util_szstrtouint(const char *str, uint64_t *value); |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
92 | |
9a4857d6444e
adds dav-sync splitconfig parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
93 | int util_uint_mul(uint64_t a, uint64_t b, uint64_t *result); |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
94 | |
254
d7c4ba50b7d8
implements xmlErrorFunc for dav sync + adds line numbers to error reporting in both config checkers
Mike Becker <universe@uap-core.de>
parents:
228
diff
changeset
|
95 | char* util_xml_get_text(const xmlNode *elm); |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
96 | |
505 | 97 | char* util_base64decode(const char *in); |
98 | char* util_base64decode_len(const char *in, int *outlen); | |
99 | char* util_base64encode(const char *in, size_t len); | |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
100 | |
43
03076907b58a
added file name encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
101 | char* util_encrypt_str(DavSession *sn, char *str, char *key); |
147
458a8dc68048
added password based keys and fixed crash when keys are missing
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
119
diff
changeset
|
102 | char* util_encrypt_str_k(DavSession *sn, char *str, DavKey *key); |
43
03076907b58a
added file name encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
103 | char* util_decrypt_str(DavSession *sn, char *str, char *key); |
147
458a8dc68048
added password based keys and fixed crash when keys are missing
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
119
diff
changeset
|
104 | char* util_decrypt_str_k(DavSession *sn, char *str, DavKey *key); |
43
03076907b58a
added file name encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
105 | |
03076907b58a
added file name encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
106 | char* util_random_str(); |
03076907b58a
added file name encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
107 | |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
108 | sstr_t util_getsubstr_until_token(sstr_t str, sstr_t token, sstr_t *sub); |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
109 | |
119
451607eeff05
added initial code for config commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
75
diff
changeset
|
110 | sstr_t util_readline(FILE *stream); |
147
458a8dc68048
added password based keys and fixed crash when keys are missing
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
119
diff
changeset
|
111 | char* util_password_input(char *prompt); |
458a8dc68048
added password based keys and fixed crash when keys are missing
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
119
diff
changeset
|
112 | |
542
060a8cda7f62
adds wrapper functions for setting/getting the content hash
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
535
diff
changeset
|
113 | char* util_hexstr(const unsigned char *data, size_t len); |
150
37fb12574acd
added checksums for encrypted resources
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
147
diff
changeset
|
114 | |
544
9e85e1ec1155
adds semi functional download of splitted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
543
diff
changeset
|
115 | void util_remove_trailing_pathseparator(char *path); |
9e85e1ec1155
adds semi functional download of splitted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
543
diff
changeset
|
116 | |
545
268157722a0e
store content hash for splitted resources in the db
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
544
diff
changeset
|
117 | char* util_file_hash(const char *path); |
268157722a0e
store content hash for splitted resources in the db
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
544
diff
changeset
|
118 | |
33
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
119 | #ifdef __cplusplus |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
120 | } |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
121 | #endif |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
122 | |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
123 | #endif /* UTILS_H */ |
0bbbb0341606
some code cleanup and bug fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
124 |