Added local timeline purging.

This commit is contained in:
default 2022-11-12 08:26:26 +01:00
parent f197919acb
commit 0eb26f10e5
2 changed files with 29 additions and 32 deletions

58
data.c
View file

@ -1130,42 +1130,38 @@ d_char *dequeue(snac *snac, char *fn)
} }
static void _purge_subdir(snac *snac, const char *subdir, int days)
/* purges all files in subdir older than days */
{
if (days) {
time_t mt = time(NULL) - days * 24 * 3600;
xs *spec = xs_fmt("%s/%s/" "*.json", snac->basedir, subdir);
xs *list = xs_glob(spec, 0, 0);
char *p, *v;
p = list;
while (xs_list_iter(&p, &v)) {
if (mtime(v) < mt) {
/* older than the minimum time: delete it */
unlink(v);
snac_debug(snac, 1, xs_fmt("purged %s", v));
}
}
}
}
void purge(snac *snac) void purge(snac *snac)
/* do the purge */ /* do the purge */
{ {
int tpd = xs_number_get(xs_dict_get(srv_config, "timeline_purge_days")); int days;
/* purge days set to 0? disable purging */ days = xs_number_get(xs_dict_get(srv_config, "timeline_purge_days"));
if (tpd == 0) { _purge_subdir(snac, "timeline", days);
/* well, enjoy your data drive exploding */ _purge_subdir(snac, "actors", days);
return;
}
time_t mt = time(NULL) - tpd * 24 * 3600; days = xs_number_get(xs_dict_get(srv_config, "local_purge_days"));
xs *t_spec = xs_fmt("%s/timeline/" "*.json", snac->basedir); _purge_subdir(snac, "local", days);
xs *t_list = xs_glob(t_spec, 0, 0);
char *p, *v;
p = t_list;
while (xs_list_iter(&p, &v)) {
if (mtime(v) < mt) {
/* older than the minimum time: delete it */
unlink(v);
snac_debug(snac, 1, xs_fmt("purged %s", v));
}
}
xs *a_spec = xs_fmt("%s/actors/" "*.json", snac->basedir);
xs *a_list = xs_glob(a_spec, 0, 0);
p = a_list;
while (xs_list_iter(&p, &v)) {
if (mtime(v) < mt) {
/* older than the minimum time: delete it */
unlink(v);
snac_debug(snac, 1, xs_fmt("purged %s", v));
}
}
} }

View file

@ -24,7 +24,8 @@ const char *default_srv_config = "{"
"\"queue_retry_max\": 10," "\"queue_retry_max\": 10,"
"\"cssurls\": [\"\"]," "\"cssurls\": [\"\"],"
"\"max_timeline_entries\": 256," "\"max_timeline_entries\": 256,"
"\"timeline_purge_days\": 120" "\"timeline_purge_days\": 120,"
"\"local_purge_days\": 0"
"}"; "}";
const char *default_css = const char *default_css =