summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'data.c')
-rw-r--r--data.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/data.c b/data.c
index 8934f31..208c057 100644
--- a/data.c
+++ b/data.c
@@ -96,6 +96,9 @@ int srv_open(char *basedir, int auto_upgrade)
96 xs *qdir = xs_fmt("%s/queue", srv_basedir); 96 xs *qdir = xs_fmt("%s/queue", srv_basedir);
97 mkdirx(qdir); 97 mkdirx(qdir);
98 98
99 xs *ibdir = xs_fmt("%s/inboxes", srv_basedir);
100 mkdirx(ibdir);
101
99#ifdef __OpenBSD__ 102#ifdef __OpenBSD__
100 char *v = xs_dict_get(srv_config, "disable_openbsd_security"); 103 char *v = xs_dict_get(srv_config, "disable_openbsd_security");
101 104
@@ -1363,6 +1366,37 @@ d_char *history_list(snac *snac)
1363} 1366}
1364 1367
1365 1368
1369/** inbox collection **/
1370
1371void inbox_add(const char *inbox)
1372/* collects a shared inbox */
1373{
1374 xs *md5 = xs_md5_hex(inbox, strlen(inbox));
1375 xs *fn = xs_fmt("%s/inboxes/%s", srv_basedir, md5);
1376 FILE *f;
1377
1378 if ((f = fopen(fn, "w")) != NULL) {
1379 pthread_mutex_lock(&data_mutex);
1380
1381 fprintf(f, "%s\n", inbox);
1382 fclose(f);
1383
1384 pthread_mutex_unlock(&data_mutex);
1385 }
1386}
1387
1388
1389void inbox_add_by_actor(const xs_dict *actor)
1390/* collects an actor's shared inbox, if it has one */
1391{
1392 char *v;
1393
1394 if (!xs_is_null(v = xs_dict_get(actor, "endpoints")) &&
1395 !xs_is_null(v = xs_dict_get(v, "sharedInbox")))
1396 inbox_add(v);
1397}
1398
1399
1366/** the queue **/ 1400/** the queue **/
1367 1401
1368static xs_dict *_enqueue_put(const char *fn, xs_dict *msg) 1402static xs_dict *_enqueue_put(const char *fn, xs_dict *msg)