]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/gline.c
Couple of srvx updates.
[irc/evilnet/x3.git] / src / gline.c
index 785f3dee527a83e381abd75794b54f8bcf9265ae..96f02d3f92c8dda3eade5b6dbc630f5070976c4b 100644 (file)
@@ -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,8 +141,6 @@ 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;
@@ -247,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);
@@ -258,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 {
@@ -269,7 +264,7 @@ gline_add_record(const char *key, void *data, UNUSED_ARG(void *extra))
         issuer = "<unknown>";
     }
     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;
 }
 
@@ -288,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);
@@ -304,7 +297,7 @@ gline_saxdb_write(struct saxdb_context *ctx)
 }
 
 static void
-gline_db_cleanup(void)
+gline_db_cleanup(UNUSED_ARG(void *extra))
 {
     heap_delete(gline_heap);
     dict_delete(gline_dict);
@@ -317,7 +310,7 @@ gline_init(void)
     gline_dict = dict_new();
     dict_set_free_data(gline_dict, free_gline_from_dict);
     saxdb_register("gline", gline_saxdb_read, gline_saxdb_write);
-    reg_exit_func(gline_db_cleanup);
+    reg_exit_func(gline_db_cleanup, NULL);
 }
 
 struct gline_discrim *
@@ -327,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; i++) {
         if (i + 2 > argc) {
@@ -364,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;
         }
@@ -419,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;
@@ -451,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;
 }
+