]> jfr.im git - irc/quakenet/newserv.git/blobdiff - glines/glines_buf.c
CHANSERV: fix issue where chanserv_relay doesn't wait for db to be loaded before...
[irc/quakenet/newserv.git] / glines / glines_buf.c
index 7e0cdcc7c660cd6f3d4ab8de0acda4a8898b3675..7053853171bdc98276f26e816d896c0777ff397a 100644 (file)
@@ -79,7 +79,7 @@ void glinebufaddbyip(glinebuf *gbuf, const char *user, struct irc_in_addr *ip, u
   if (nodebits < bits)
     bits = nodebits;
 
-  snprintf(mask, sizeof(mask), "%s@%s", user, trusts_cidr2str(ip, bits));
+  snprintf(mask, sizeof(mask), "%s@%s", user, (bits == 128) ? IPtostr(*ip) : CIDRtostr(*ip, bits));
 
   glinebufadd(gbuf, mask, creator, reason, expire, lastmod, lifetime);
 }
@@ -90,7 +90,19 @@ void glinebufaddbynick(glinebuf *gbuf, nick *np, int flags, const char *creator,
     snprintf(mask, sizeof(mask), "%s!*@*", np->nick);
     glinebufadd(gbuf, mask, creator, reason, expire, lastmod, lifetime);
   } else {
-    glinebufaddbyip(gbuf, np->ident, &np->p_ipaddr, 128, flags, creator, reason, expire, lastmod, lifetime);
+    glinebufaddbyip(gbuf, np->ident, &np->ipaddress, 128, flags, creator, reason, expire, lastmod, lifetime);
+  }
+}
+
+void glinebufaddbywhowas(glinebuf *gbuf, whowas *ww, int flags, const char *creator, const char *reason, time_t expire, time_t lastmod, time_t lifetime) {
+  nick *np = &ww->nick;
+
+  if (flags & GLINE_ALWAYS_NICK) {
+    char mask[512];
+    snprintf(mask, sizeof(mask), "%s!*@*", np->nick);
+    glinebufadd(gbuf, mask, creator, reason, expire, lastmod, lifetime);
+  } else {
+    glinebufaddbyip(gbuf, np->ident, &np->ipaddress, 128, flags, creator, reason, expire, lastmod, lifetime);
   }
 }
 
@@ -211,7 +223,7 @@ int glinebufchecksane(glinebuf *gbuf, nick *spewto, int overridesanity, int over
 void glinebufspew(glinebuf *gbuf, nick *spewto) {
   gline *gl;
   int i;
-  char timebuf[30];
+  char timebuf[30], lastmod[30];
 
   if (!gbuf->hitsvalid)
     glinebufcounthits(gbuf, NULL, NULL);
@@ -233,11 +245,17 @@ void glinebufspew(glinebuf *gbuf, nick *spewto) {
     controlreply(spewto, "Amended at: %s", timebuf);
   }
 
-  controlreply(spewto, "Mask                                     Duration             Last modified        Creator              Reason");
+  controlreply(spewto, "Mask                                     Expiry               Last modified        Creator                   Reason");
   
   for (gl = gbuf->glines; gl; gl = gl->next) {
-    strftime(timebuf, sizeof(timebuf), "%d/%m/%y %H:%M:%S", localtime(&gl->lastmod));
-    controlreply(spewto, "%-40s %-20s %-20s %-20s %s", glinetostring(gl), longtoduration(gl->expire - gl->lastmod, 0), timebuf, gl->creator->content, gl->reason->content);
+    strftime(timebuf, sizeof(timebuf), "%d/%m/%y %H:%M:%S", localtime(&gl->expire));
+    if (gl->lastmod == 0)
+      strncpy(lastmod, "<ulined>", sizeof(lastmod));
+    else
+      strftime(lastmod, sizeof(lastmod), "%d/%m/%y %H:%M:%S", localtime(&gl->lastmod));
+
+    controlreply(spewto, "%-40s %-20s %-20s %-25s %s", glinetostring(gl), timebuf, lastmod, gl->creator->content, gl->reason ? gl->reason->content : "");
   }
 
   controlreply(spewto, "Hits");
@@ -292,7 +310,7 @@ int glinebufcommit(glinebuf *gbuf, int propagate) {
   glinebufcounthits(gbuf, &users, &channels);
 
   if (propagate && (users > MAXGLINEUSERHITS || channels > MAXGLINECHANNELHITS)) {
-    controlwall(NO_OPER, NL_GLINES, "G-Line buffer would hit %d users/%d channels. Not setting G-Lines.");
+    controlwall(NO_OPER, NL_GLINES_AUTO, "G-Line buffer would hit %d users/%d channels. Not setting G-Lines.");
     glinebufabort(gbuf);
     return 0;
   }
@@ -493,7 +511,7 @@ int glinebufwritelog(glinebuf *gbuf, int propagating) {
     if (gbuf->comment)
       glinebufcommentf(gbl, "%s", gbuf->comment->content);
     else if (!propagating)
-      glinebufcommentf(gbl, "Remote G-Lines set by %s", gbuf->glines->creator->content);
+      glinebufcommentf(gbl, "G-Lines set by %s", gbuf->glines->creator->content);
 
     gbl->commit = gbuf->commit;
   }
@@ -524,7 +542,7 @@ int glinebufwritelog(glinebuf *gbuf, int propagating) {
   if (glinebuflog[glinebuflogoffset])
     glinebufabort(glinebuflog[glinebuflogoffset]);
 
-  glinebuflog[glinebuflogoffset]= gbl;
+  glinebuflog[glinebuflogoffset] = gbl;
 
   return gbl->id;
 }