diff options
| author | 2023-02-12 09:17:38 +0100 | |
|---|---|---|
| committer | 2023-02-12 09:17:38 +0100 | |
| commit | 0f4db7cf26b25f4841fab33620b3f791c08844ab (patch) | |
| tree | cca0493b7c9f0dd4d5d6f2b9cc93f4a2c7a57f60 | |
| parent | Version 2.22 RELEASED. (diff) | |
| download | penes-snac2-0f4db7cf26b25f4841fab33620b3f791c08844ab.tar.gz penes-snac2-0f4db7cf26b25f4841fab33620b3f791c08844ab.tar.xz penes-snac2-0f4db7cf26b25f4841fab33620b3f791c08844ab.zip | |
New file ~user/user_o.json, for the admin to override user settings.
| -rw-r--r-- | data.c | 16 | ||||
| -rw-r--r-- | snac.h | 15 |
2 files changed, 24 insertions, 7 deletions
| @@ -130,6 +130,7 @@ void user_free(snac *snac) | |||
| 130 | xs_free(snac->uid); | 130 | xs_free(snac->uid); |
| 131 | xs_free(snac->basedir); | 131 | xs_free(snac->basedir); |
| 132 | xs_free(snac->config); | 132 | xs_free(snac->config); |
| 133 | xs_free(snac->config_o); | ||
| 133 | xs_free(snac->key); | 134 | xs_free(snac->key); |
| 134 | xs_free(snac->actor); | 135 | xs_free(snac->actor); |
| 135 | xs_free(snac->md5); | 136 | xs_free(snac->md5); |
| @@ -172,7 +173,22 @@ int user_open(snac *snac, const char *uid) | |||
| 172 | if ((snac->key = xs_json_loads(key_data)) != NULL) { | 173 | if ((snac->key = xs_json_loads(key_data)) != NULL) { |
| 173 | snac->actor = xs_fmt("%s/%s", srv_baseurl, uid); | 174 | snac->actor = xs_fmt("%s/%s", srv_baseurl, uid); |
| 174 | snac->md5 = xs_md5_hex(snac->actor, strlen(snac->actor)); | 175 | snac->md5 = xs_md5_hex(snac->actor, strlen(snac->actor)); |
| 176 | |||
| 177 | /* everything is ok right now */ | ||
| 175 | ret = 1; | 178 | ret = 1; |
| 179 | |||
| 180 | /* does it have a configuration override? */ | ||
| 181 | xs *cfg_file_o = xs_fmt("%s/user_o.json", snac->basedir); | ||
| 182 | if ((f = fopen(cfg_file_o, "r")) != NULL) { | ||
| 183 | xs *j = xs_readall(f); | ||
| 184 | fclose(f); | ||
| 185 | |||
| 186 | if ((snac->config_o = xs_json_loads(j)) == NULL) | ||
| 187 | srv_log(xs_fmt("cannot parse '%s'", cfg_file_o)); | ||
| 188 | } | ||
| 189 | |||
| 190 | if (snac->config_o == NULL) | ||
| 191 | snac->config_o = xs_dict_new(); | ||
| 176 | } | 192 | } |
| 177 | else | 193 | else |
| 178 | srv_log(xs_fmt("cannot parse '%s'", key_file)); | 194 | srv_log(xs_fmt("cannot parse '%s'", key_file)); |
| @@ -1,7 +1,7 @@ | |||
| 1 | /* snac - A simple, minimalistic ActivityPub instance */ | 1 | /* snac - A simple, minimalistic ActivityPub instance */ |
| 2 | /* copyright (c) 2022 - 2023 grunfink / MIT license */ | 2 | /* copyright (c) 2022 - 2023 grunfink / MIT license */ |
| 3 | 3 | ||
| 4 | #define VERSION "2.22" | 4 | #define VERSION "2.23-dev" |
| 5 | 5 | ||
| 6 | #define USER_AGENT "snac/" VERSION | 6 | #define USER_AGENT "snac/" VERSION |
| 7 | 7 | ||
| @@ -30,12 +30,13 @@ int srv_open(char *basedir, int auto_upgrade); | |||
| 30 | void srv_free(void); | 30 | void srv_free(void); |
| 31 | 31 | ||
| 32 | typedef struct _snac { | 32 | typedef struct _snac { |
| 33 | d_char *uid; /* uid */ | 33 | xs_str *uid; /* uid */ |
| 34 | d_char *basedir; /* user base directory */ | 34 | xs_str *basedir; /* user base directory */ |
| 35 | d_char *config; /* user configuration */ | 35 | xs_dict *config; /* user configuration */ |
| 36 | d_char *key; /* keypair */ | 36 | xs_dict *config_o; /* user configuration admin override */ |
| 37 | d_char *actor; /* actor url */ | 37 | xs_dict *key; /* keypair */ |
| 38 | d_char *md5; /* actor url md5 */ | 38 | xs_str *actor; /* actor url */ |
| 39 | xs_str *md5; /* actor url md5 */ | ||
| 39 | } snac; | 40 | } snac; |
| 40 | 41 | ||
| 41 | int user_open(snac *snac, const char *uid); | 42 | int user_open(snac *snac, const char *uid); |