From 1a42fdc8bd4d5dc045a87108e73dcda4f633266b Mon Sep 17 00:00:00 2001 From: grunfink Date: Fri, 24 Oct 2025 05:02:28 +0200 Subject: Keep track of deleted users and return 410 Gone for them. --- data.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'data.c') diff --git a/data.c b/data.c index 36f5101..d291ba7 100644 --- a/data.c +++ b/data.c @@ -3137,6 +3137,35 @@ int instance_failure(const char *url, int op) } +int grave(const char *objid, int op) +/* the graveyeard of deleted objects */ +{ + int ret = 0; + xs *dir = xs_fmt("%s/grave", srv_basedir); + xs *md5 = xs_md5_hex(objid, strlen(objid)); + xs *fn = xs_fmt("%s/%s", dir, md5); + FILE *f; + + switch (op) { + case 0: /** check **/ + ret = mtime(fn) > 0.0 ? 1 : 0; + break; + + case 1: /** add **/ + mkdirx(dir); + + if ((f = fopen(fn, "w")) != NULL) { + fprintf(f, "%s\n", objid); + fclose(f); + } + + break; + } + + return ret; +} + + /** notifications **/ xs_str *notify_check_time(snac *snac, int reset) -- cgit v1.2.3