summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authorGravatar default2024-04-22 05:46:56 +0200
committerGravatar default2024-04-22 05:46:56 +0200
commitebf6a4bd8e97e434d1502ddead4690aca3dd6d33 (patch)
tree1c0db63d7828759c3736e75a08da60a7362c65bd /data.c
parentUpdated TODO. (diff)
downloadsnac2-ebf6a4bd8e97e434d1502ddead4690aca3dd6d33.tar.gz
snac2-ebf6a4bd8e97e434d1502ddead4690aca3dd6d33.tar.xz
snac2-ebf6a4bd8e97e434d1502ddead4690aca3dd6d33.zip
URLs like {srv_baseurl}/{user}/admin/p/{md5} are valid.
But only if {md5} is in the user's timeline.
Diffstat (limited to 'data.c')
-rw-r--r--data.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/data.c b/data.c
index 1e46395..2fb00eb 100644
--- a/data.c
+++ b/data.c
@@ -1065,14 +1065,18 @@ int timeline_touch(snac *snac)
1065xs_str *timeline_fn_by_md5(snac *snac, const char *md5) 1065xs_str *timeline_fn_by_md5(snac *snac, const char *md5)
1066/* get the filename of an entry by md5 from any timeline */ 1066/* get the filename of an entry by md5 from any timeline */
1067{ 1067{
1068 xs_str *fn = xs_fmt("%s/private/%s.json", snac->basedir, md5); 1068 xs_str *fn = NULL;
1069 1069
1070 if (mtime(fn) == 0.0) { 1070 if (xs_is_hex(md5) && strlen(md5) == 32) {
1071 fn = xs_free(fn); 1071 fn = xs_fmt("%s/private/%s.json", snac->basedir, md5);
1072 fn = xs_fmt("%s/public/%s.json", snac->basedir, md5);
1073 1072
1074 if (mtime(fn) == 0.0) 1073 if (mtime(fn) == 0.0) {
1075 fn = xs_free(fn); 1074 fn = xs_free(fn);
1075 fn = xs_fmt("%s/public/%s.json", snac->basedir, md5);
1076
1077 if (mtime(fn) == 0.0)
1078 fn = xs_free(fn);
1079 }
1076 } 1080 }
1077 1081
1078 return fn; 1082 return fn;