diff options
| author | 2025-07-25 18:44:04 +0200 | |
|---|---|---|
| committer | 2025-07-25 18:44:04 +0200 | |
| commit | 92f44e07cf24a2a25421a0ee28b5dece10f6511a (patch) | |
| tree | d0c32365982a5292d9cd30081e96c327446097e8 /data.c | |
| parent | Updated RELEASE_NOTES. (diff) | |
| download | penes-snac2-92f44e07cf24a2a25421a0ee28b5dece10f6511a.tar.gz penes-snac2-92f44e07cf24a2a25421a0ee28b5dece10f6511a.tar.xz penes-snac2-92f44e07cf24a2a25421a0ee28b5dece10f6511a.zip | |
New function delete_purged_posts().
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 39 |
1 files changed, 39 insertions, 0 deletions
| @@ -3840,6 +3840,43 @@ void purge_server(void) | |||
| 3840 | } | 3840 | } |
| 3841 | 3841 | ||
| 3842 | 3842 | ||
| 3843 | void delete_purged_posts(snac *user, int days) | ||
| 3844 | /* enqueues Delete activities for local purged messages */ | ||
| 3845 | { | ||
| 3846 | if (days == 0) | ||
| 3847 | return; | ||
| 3848 | |||
| 3849 | time_t mt = time(NULL) - days * 24 * 3600; | ||
| 3850 | xs *spec = xs_fmt("%s/public/" "*.json", user->basedir); | ||
| 3851 | xs *list = xs_glob(spec, 0, 0); | ||
| 3852 | const char *v; | ||
| 3853 | |||
| 3854 | xs_list_foreach(list, v) { | ||
| 3855 | if (mtime(v) < mt) { | ||
| 3856 | /* to be purged; is it a Note by us? */ | ||
| 3857 | FILE *f; | ||
| 3858 | |||
| 3859 | if ((f = fopen(v, "r")) != NULL) { | ||
| 3860 | xs *msg = xs_json_load(f); | ||
| 3861 | fclose(f); | ||
| 3862 | |||
| 3863 | if (xs_is_dict(msg)) { | ||
| 3864 | const char *id = xs_dict_get(msg, "id"); | ||
| 3865 | |||
| 3866 | if (xs_is_string(id) && xs_startswith(id, user->actor)) { | ||
| 3867 | xs *d_msg = msg_delete(user, id); | ||
| 3868 | |||
| 3869 | enqueue_message(user, d_msg); | ||
| 3870 | |||
| 3871 | snac_log(user, xs_fmt("enqueued Delete for purged message %s", id)); | ||
| 3872 | } | ||
| 3873 | } | ||
| 3874 | } | ||
| 3875 | } | ||
| 3876 | } | ||
| 3877 | } | ||
| 3878 | |||
| 3879 | |||
| 3843 | void purge_user(snac *snac) | 3880 | void purge_user(snac *snac) |
| 3844 | /* do the purge for this user */ | 3881 | /* do the purge for this user */ |
| 3845 | { | 3882 | { |
| @@ -3863,6 +3900,8 @@ void purge_user(snac *snac) | |||
| 3863 | pub_days = user_days; | 3900 | pub_days = user_days; |
| 3864 | } | 3901 | } |
| 3865 | 3902 | ||
| 3903 | delete_purged_posts(snac, pub_days); | ||
| 3904 | |||
| 3866 | _purge_user_subdir(snac, "hidden", priv_days); | 3905 | _purge_user_subdir(snac, "hidden", priv_days); |
| 3867 | _purge_user_subdir(snac, "private", priv_days); | 3906 | _purge_user_subdir(snac, "private", priv_days); |
| 3868 | 3907 | ||