diff options
| author | 2024-05-25 08:05:36 +0000 | |
|---|---|---|
| committer | 2024-05-25 08:05:36 +0000 | |
| commit | 84a767dd0878013194ed7551b5ae6ef715e841a6 (patch) | |
| tree | 9fb1b2b89e0bfbb4b8bf1e85d840c8653e646bb7 /upgrade.c | |
| parent | Prevent some browsers from caching servers basic auth request (diff) | |
| parent | Backport from xs (fix regex.h compilation with tcc). (diff) | |
| download | snac2-84a767dd0878013194ed7551b5ae6ef715e841a6.tar.gz snac2-84a767dd0878013194ed7551b5ae6ef715e841a6.tar.xz snac2-84a767dd0878013194ed7551b5ae6ef715e841a6.zip | |
Merge pull request 'master' (#1) from grunfink/snac2:master into master
Reviewed-on: https://codeberg.org/louis77/snac2/pulls/1
Diffstat (limited to 'upgrade.c')
| -rw-r--r-- | upgrade.c | 73 |
1 files changed, 49 insertions, 24 deletions
| @@ -18,7 +18,7 @@ int snac_upgrade(xs_str **error) | |||
| 18 | double f = 0.0; | 18 | double f = 0.0; |
| 19 | 19 | ||
| 20 | for (;;) { | 20 | for (;;) { |
| 21 | char *layout = xs_dict_get(srv_config, "layout"); | 21 | const char *layout = xs_dict_get(srv_config, "layout"); |
| 22 | double nf; | 22 | double nf; |
| 23 | 23 | ||
| 24 | f = nf = xs_number_get(layout); | 24 | f = nf = xs_number_get(layout); |
| @@ -43,7 +43,8 @@ int snac_upgrade(xs_str **error) | |||
| 43 | else | 43 | else |
| 44 | if (f < 2.2) { | 44 | if (f < 2.2) { |
| 45 | xs *users = user_list(); | 45 | xs *users = user_list(); |
| 46 | char *p, *v; | 46 | char *p; |
| 47 | const char *v; | ||
| 47 | 48 | ||
| 48 | p = users; | 49 | p = users; |
| 49 | while (xs_list_iter(&p, &v)) { | 50 | while (xs_list_iter(&p, &v)) { |
| @@ -52,12 +53,13 @@ int snac_upgrade(xs_str **error) | |||
| 52 | if (user_open(&snac, v)) { | 53 | if (user_open(&snac, v)) { |
| 53 | xs *spec = xs_fmt("%s/actors/" "*.json", snac.basedir); | 54 | xs *spec = xs_fmt("%s/actors/" "*.json", snac.basedir); |
| 54 | xs *list = xs_glob(spec, 0, 0); | 55 | xs *list = xs_glob(spec, 0, 0); |
| 55 | char *g, *fn; | 56 | char *g; |
| 57 | const char *fn; | ||
| 56 | 58 | ||
| 57 | g = list; | 59 | g = list; |
| 58 | while (xs_list_iter(&g, &fn)) { | 60 | while (xs_list_iter(&g, &fn)) { |
| 59 | xs *l = xs_split(fn, "/"); | 61 | xs *l = xs_split(fn, "/"); |
| 60 | char *b = xs_list_get(l, -1); | 62 | const char *b = xs_list_get(l, -1); |
| 61 | xs *dir = xs_fmt("%s/object/%c%c", srv_basedir, b[0], b[1]); | 63 | xs *dir = xs_fmt("%s/object/%c%c", srv_basedir, b[0], b[1]); |
| 62 | xs *nfn = xs_fmt("%s/%s", dir, b); | 64 | xs *nfn = xs_fmt("%s/%s", dir, b); |
| 63 | 65 | ||
| @@ -77,14 +79,16 @@ int snac_upgrade(xs_str **error) | |||
| 77 | else | 79 | else |
| 78 | if (f < 2.3) { | 80 | if (f < 2.3) { |
| 79 | xs *users = user_list(); | 81 | xs *users = user_list(); |
| 80 | char *p, *v; | 82 | char *p; |
| 83 | const char *v; | ||
| 81 | 84 | ||
| 82 | p = users; | 85 | p = users; |
| 83 | while (xs_list_iter(&p, &v)) { | 86 | while (xs_list_iter(&p, &v)) { |
| 84 | snac snac; | 87 | snac snac; |
| 85 | 88 | ||
| 86 | if (user_open(&snac, v)) { | 89 | if (user_open(&snac, v)) { |
| 87 | char *p, *v; | 90 | char *p; |
| 91 | const char *v; | ||
| 88 | xs *dir = xs_fmt("%s/hidden", snac.basedir); | 92 | xs *dir = xs_fmt("%s/hidden", snac.basedir); |
| 89 | 93 | ||
| 90 | /* create the hidden directory */ | 94 | /* create the hidden directory */ |
| @@ -109,7 +113,8 @@ int snac_upgrade(xs_str **error) | |||
| 109 | else | 113 | else |
| 110 | if (f < 2.4) { | 114 | if (f < 2.4) { |
| 111 | xs *users = user_list(); | 115 | xs *users = user_list(); |
| 112 | char *p, *v; | 116 | char *p; |
| 117 | const char *v; | ||
| 113 | 118 | ||
| 114 | p = users; | 119 | p = users; |
| 115 | while (xs_list_iter(&p, &v)) { | 120 | while (xs_list_iter(&p, &v)) { |
| @@ -132,7 +137,8 @@ int snac_upgrade(xs_str **error) | |||
| 132 | if (f < 2.5) { | 137 | if (f < 2.5) { |
| 133 | /* upgrade followers */ | 138 | /* upgrade followers */ |
| 134 | xs *users = user_list(); | 139 | xs *users = user_list(); |
| 135 | char *p, *v; | 140 | char *p; |
| 141 | const char *v; | ||
| 136 | 142 | ||
| 137 | p = users; | 143 | p = users; |
| 138 | while (xs_list_iter(&p, &v)) { | 144 | while (xs_list_iter(&p, &v)) { |
| @@ -141,7 +147,8 @@ int snac_upgrade(xs_str **error) | |||
| 141 | if (user_open(&snac, v)) { | 147 | if (user_open(&snac, v)) { |
| 142 | xs *spec = xs_fmt("%s/followers/" "*.json", snac.basedir); | 148 | xs *spec = xs_fmt("%s/followers/" "*.json", snac.basedir); |
| 143 | xs *dir = xs_glob(spec, 0, 0); | 149 | xs *dir = xs_glob(spec, 0, 0); |
| 144 | char *p, *v; | 150 | char *p; |
| 151 | const char *v; | ||
| 145 | 152 | ||
| 146 | p = dir; | 153 | p = dir; |
| 147 | while (xs_list_iter(&p, &v)) { | 154 | while (xs_list_iter(&p, &v)) { |
| @@ -152,12 +159,12 @@ int snac_upgrade(xs_str **error) | |||
| 152 | xs *o = xs_json_loads(s); | 159 | xs *o = xs_json_loads(s); |
| 153 | fclose(f); | 160 | fclose(f); |
| 154 | 161 | ||
| 155 | char *type = xs_dict_get(o, "type"); | 162 | const char *type = xs_dict_get(o, "type"); |
| 156 | 163 | ||
| 157 | if (!xs_is_null(type) && strcmp(type, "Follow") == 0) { | 164 | if (!xs_is_null(type) && strcmp(type, "Follow") == 0) { |
| 158 | unlink(v); | 165 | unlink(v); |
| 159 | 166 | ||
| 160 | char *actor = xs_dict_get(o, "actor"); | 167 | const char *actor = xs_dict_get(o, "actor"); |
| 161 | 168 | ||
| 162 | if (!xs_is_null(actor)) | 169 | if (!xs_is_null(actor)) |
| 163 | follower_add(&snac, actor); | 170 | follower_add(&snac, actor); |
| @@ -175,7 +182,8 @@ int snac_upgrade(xs_str **error) | |||
| 175 | if (f < 2.6) { | 182 | if (f < 2.6) { |
| 176 | /* upgrade local/ to public/ */ | 183 | /* upgrade local/ to public/ */ |
| 177 | xs *users = user_list(); | 184 | xs *users = user_list(); |
| 178 | char *p, *v; | 185 | char *p; |
| 186 | const char *v; | ||
| 179 | 187 | ||
| 180 | p = users; | 188 | p = users; |
| 181 | while (xs_list_iter(&p, &v)) { | 189 | while (xs_list_iter(&p, &v)) { |
| @@ -184,7 +192,8 @@ int snac_upgrade(xs_str **error) | |||
| 184 | if (user_open(&snac, v)) { | 192 | if (user_open(&snac, v)) { |
| 185 | xs *spec = xs_fmt("%s/local/" "*.json", snac.basedir); | 193 | xs *spec = xs_fmt("%s/local/" "*.json", snac.basedir); |
| 186 | xs *dir = xs_glob(spec, 0, 0); | 194 | xs *dir = xs_glob(spec, 0, 0); |
| 187 | char *p, *v; | 195 | char *p; |
| 196 | const char *v; | ||
| 188 | 197 | ||
| 189 | p = dir; | 198 | p = dir; |
| 190 | while (xs_list_iter(&p, &v)) { | 199 | while (xs_list_iter(&p, &v)) { |
| @@ -198,22 +207,29 @@ int snac_upgrade(xs_str **error) | |||
| 198 | xs *meta = xs_dup(xs_dict_get(o, "_snac")); | 207 | xs *meta = xs_dup(xs_dict_get(o, "_snac")); |
| 199 | o = xs_dict_del(o, "_snac"); | 208 | o = xs_dict_del(o, "_snac"); |
| 200 | 209 | ||
| 201 | char *id = xs_dict_get(o, "id"); | 210 | const char *id = xs_dict_get(o, "id"); |
| 202 | 211 | ||
| 203 | /* store object */ | 212 | /* store object */ |
| 204 | object_add_ow(id, o); | 213 | object_add_ow(id, o); |
| 205 | 214 | ||
| 206 | /* if it's from us, add to public */ | 215 | /* if it's from us, add to public */ |
| 207 | if (xs_startswith(id, snac.actor)) { | 216 | if (xs_startswith(id, snac.actor)) { |
| 208 | char *p, *v; | 217 | const xs_list *p; |
| 218 | const char *v; | ||
| 219 | int c; | ||
| 209 | 220 | ||
| 210 | object_user_cache_add(&snac, id, "public"); | 221 | object_user_cache_add(&snac, id, "public"); |
| 211 | 222 | ||
| 212 | p = xs_dict_get(meta, "announced_by"); | 223 | p = xs_dict_get(meta, "announced_by"); |
| 213 | while (xs_list_iter(&p, &v)) | 224 | |
| 225 | c = 0; | ||
| 226 | while (xs_list_next(p, &v, &c)) | ||
| 214 | object_admire(id, v, 0); | 227 | object_admire(id, v, 0); |
| 228 | |||
| 215 | p = xs_dict_get(meta, "liked_by"); | 229 | p = xs_dict_get(meta, "liked_by"); |
| 216 | while (xs_list_iter(&p, &v)) | 230 | |
| 231 | c = 0; | ||
| 232 | while (xs_list_next(p, &v, &c)) | ||
| 217 | object_admire(id, v, 1); | 233 | object_admire(id, v, 1); |
| 218 | } | 234 | } |
| 219 | 235 | ||
| @@ -234,7 +250,8 @@ int snac_upgrade(xs_str **error) | |||
| 234 | if (f < 2.7) { | 250 | if (f < 2.7) { |
| 235 | /* upgrade timeline/ to private/ */ | 251 | /* upgrade timeline/ to private/ */ |
| 236 | xs *users = user_list(); | 252 | xs *users = user_list(); |
| 237 | char *p, *v; | 253 | char *p; |
| 254 | const char *v; | ||
| 238 | 255 | ||
| 239 | p = users; | 256 | p = users; |
| 240 | while (xs_list_iter(&p, &v)) { | 257 | while (xs_list_iter(&p, &v)) { |
| @@ -243,7 +260,8 @@ int snac_upgrade(xs_str **error) | |||
| 243 | if (user_open(&snac, v)) { | 260 | if (user_open(&snac, v)) { |
| 244 | xs *spec = xs_fmt("%s/timeline/" "*.json", snac.basedir); | 261 | xs *spec = xs_fmt("%s/timeline/" "*.json", snac.basedir); |
| 245 | xs *dir = xs_glob(spec, 0, 0); | 262 | xs *dir = xs_glob(spec, 0, 0); |
| 246 | char *p, *v; | 263 | char *p; |
| 264 | const char *v; | ||
| 247 | 265 | ||
| 248 | p = dir; | 266 | p = dir; |
| 249 | while (xs_list_iter(&p, &v)) { | 267 | while (xs_list_iter(&p, &v)) { |
| @@ -257,21 +275,28 @@ int snac_upgrade(xs_str **error) | |||
| 257 | xs *meta = xs_dup(xs_dict_get(o, "_snac")); | 275 | xs *meta = xs_dup(xs_dict_get(o, "_snac")); |
| 258 | o = xs_dict_del(o, "_snac"); | 276 | o = xs_dict_del(o, "_snac"); |
| 259 | 277 | ||
| 260 | char *id = xs_dict_get(o, "id"); | 278 | const char *id = xs_dict_get(o, "id"); |
| 261 | 279 | ||
| 262 | /* store object */ | 280 | /* store object */ |
| 263 | object_add_ow(id, o); | 281 | object_add_ow(id, o); |
| 264 | 282 | ||
| 265 | { | 283 | { |
| 266 | char *p, *v; | 284 | const xs_list *p; |
| 285 | const char *v; | ||
| 286 | int c = 0; | ||
| 267 | 287 | ||
| 268 | object_user_cache_add(&snac, id, "private"); | 288 | object_user_cache_add(&snac, id, "private"); |
| 269 | 289 | ||
| 270 | p = xs_dict_get(meta, "announced_by"); | 290 | p = xs_dict_get(meta, "announced_by"); |
| 271 | while (xs_list_iter(&p, &v)) | 291 | |
| 292 | c = 0; | ||
| 293 | while (xs_list_next(p, &v, &c)) | ||
| 272 | object_admire(id, v, 0); | 294 | object_admire(id, v, 0); |
| 295 | |||
| 273 | p = xs_dict_get(meta, "liked_by"); | 296 | p = xs_dict_get(meta, "liked_by"); |
| 274 | while (xs_list_iter(&p, &v)) | 297 | |
| 298 | c = 0; | ||
| 299 | while (xs_list_next(p, &v, &c)) | ||
| 275 | object_admire(id, v, 1); | 300 | object_admire(id, v, 1); |
| 276 | } | 301 | } |
| 277 | 302 | ||