summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2023-02-12 09:17:38 +0100
committerGravatar default2023-02-12 09:17:38 +0100
commit0f4db7cf26b25f4841fab33620b3f791c08844ab (patch)
treecca0493b7c9f0dd4d5d6f2b9cc93f4a2c7a57f60
parentVersion 2.22 RELEASED. (diff)
downloadpenes-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.c16
-rw-r--r--snac.h15
2 files changed, 24 insertions, 7 deletions
diff --git a/data.c b/data.c
index 383cd38..c56b6a0 100644
--- a/data.c
+++ b/data.c
@@ -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));
diff --git a/snac.h b/snac.h
index 017ccea..be205d2 100644
--- a/snac.h
+++ b/snac.h
@@ -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);
30void srv_free(void); 30void srv_free(void);
31 31
32typedef struct _snac { 32typedef 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
41int user_open(snac *snac, const char *uid); 42int user_open(snac *snac, const char *uid);