X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/ff3b058ac51e9caf5cf1fd310b8a401a97a85582..1ccb8f6e37ca3c53da7ab48b3ded3ae332702e0b:/src/gline.c diff --git a/src/gline.c b/src/gline.c index c1a65ae..489d00b 100644 --- a/src/gline.c +++ b/src/gline.c @@ -40,7 +40,6 @@ #define KEY_REASON "reason" #define KEY_EXPIRES "expires" -#define KEY_LASTMOD "lastmod" #define KEY_ISSUER "issuer" #define KEY_ISSUED "issued" @@ -129,7 +128,7 @@ gline_remove(const char *target, int announce) } struct gline * -gline_add(const char *issuer, const char *target, unsigned long duration, const char *reason, time_t issued, time_t lastmod, int announce, int silent) +gline_add(const char *issuer, const char *target, unsigned long duration, const char *reason, time_t issued, int announce, int silent) { struct gline *ent; struct gline *prev_first; @@ -142,12 +141,9 @@ gline_add(const char *issuer, const char *target, unsigned long duration, const heap_remove_pred(gline_heap, gline_for_p, (char*)target); if (ent->expires < (time_t)(now + duration)) ent->expires = now + duration; - if (ent->lastmod < lastmod) - ent->lastmod = lastmod; } else { ent = malloc(sizeof(*ent)); ent->issued = issued; - ent->lastmod = lastmod; ent->issuer = strdup(issuer); ent->target = strdup(target); ent->expires = now + duration; @@ -248,7 +244,7 @@ gline_add_record(const char *key, void *data, UNUSED_ARG(void *extra)) { struct record_data *rd = data; const char *issuer, *reason, *dstr; - time_t issued, expiration, lastmod; + time_t issued, expiration; if (!(reason = database_get_data(rd->d.object, KEY_REASON, RECDB_QSTRING))) { log_module(MAIN_LOG, LOG_ERROR, "Missing reason for gline %s", key); @@ -259,8 +255,6 @@ gline_add_record(const char *key, void *data, UNUSED_ARG(void *extra)) return 0; } expiration = strtoul(dstr, NULL, 0); - dstr = database_get_data(rd->d.object, KEY_LASTMOD, RECDB_QSTRING); - lastmod = dstr ? strtoul(dstr, NULL, 0) : 0; if ((dstr = database_get_data(rd->d.object, KEY_ISSUED, RECDB_QSTRING))) { issued = strtoul(dstr, NULL, 0); } else { @@ -270,7 +264,7 @@ gline_add_record(const char *key, void *data, UNUSED_ARG(void *extra)) issuer = ""; } if (expiration > now) - gline_add(issuer, key, expiration - now, reason, issued, lastmod, 0, 0); + gline_add(issuer, key, expiration - now, reason, issued, 0, 0); return 0; } @@ -289,8 +283,6 @@ gline_write_entry(UNUSED_ARG(void *key), void *data, void *extra) saxdb_start_record(ctx, ent->target, 0); saxdb_write_int(ctx, KEY_EXPIRES, ent->expires); saxdb_write_int(ctx, KEY_ISSUED, ent->issued); - if (ent->lastmod) - saxdb_write_int(ctx, KEY_LASTMOD, ent->lastmod); saxdb_write_string(ctx, KEY_REASON, ent->reason); saxdb_write_string(ctx, KEY_ISSUER, ent->issuer); saxdb_end_record(ctx); @@ -328,9 +320,8 @@ gline_discrim_create(struct userNode *user, struct userNode *src, unsigned int a struct gline_discrim *discrim; discrim = calloc(1, sizeof(*discrim)); + discrim->max_issued = now; discrim->limit = 50; - discrim->max_issued = INT_MAX; - discrim->max_lastmod = INT_MAX; for (i=0; i argc) { @@ -365,24 +356,7 @@ gline_discrim_create(struct userNode *user, struct userNode *src, unsigned int a discrim->min_expire = now + ParseInterval(argv[++i]); else if (!irccasecmp(argv[i], "before")) discrim->max_issued = now - ParseInterval(argv[++i]); - else if (!irccasecmp(argv[i], "lastmod")) { - const char *cmp = argv[++i]; - if (cmp[0] == '<') { - if (cmp[1] == '=') { - discrim->min_lastmod = now - ParseInterval(cmp + 2); - } else { - discrim->min_lastmod = now - (ParseInterval(cmp + 1) - 1); - } - } else if (cmp[0] == '>') { - if (cmp[1] == '=') { - discrim->max_lastmod = now - ParseInterval(cmp + 2); - } else { - discrim->max_lastmod = now - (ParseInterval(cmp + 1) - 1); - } - } else { - discrim->min_lastmod = now - ParseInterval(cmp + 2); - } - } else { + else { send_message(user, src, "MSG_INVALID_CRITERIA", argv[i]); goto fail; } @@ -420,9 +394,7 @@ gline_discrim_match(struct gline *gline, struct gline_discrim *discrim) && (!discrim->alt_target_mask || !match_ircglobs(discrim->alt_target_mask, gline->target))))) || (discrim->max_issued < gline->issued) - || (discrim->min_expire > gline->expires) - || (discrim->min_lastmod > gline->lastmod) - || (discrim->max_lastmod < gline->lastmod)) { + || (discrim->min_expire > gline->expires)) { return 0; } return 1; @@ -452,3 +424,4 @@ gline_discrim_search(struct gline_discrim *discrim, gline_search_func gsf, void heap_remove_pred(gline_heap, gline_search_helper, &search); return search.hits; } +