]> jfr.im git - irc/quakenet/newserv.git/blobdiff - trusts/data.c
Add database flushing, rename max/maxuse both to maxusage, record max usage/lastseen.
[irc/quakenet/newserv.git] / trusts / data.c
index 934c08e5398096672ed61715792a80d9767dc07a..c9bb1f101145f8efe04d9dbb6a821760c0687ef3 100644 (file)
@@ -5,6 +5,9 @@
 
 trustgroup *tglist;
 
+void th_dbupdatecounts(trusthost *);
+void tg_dbupdatecounts(trustgroup *);
+
 void trusts_freeall(void) {
   trustgroup *tg, *ntg;
   trusthost *th, *nth;
@@ -37,7 +40,7 @@ void th_free(trusthost *th) {
   free(th);
 }
 
-int th_add(trustgroup *tg, char *host, unsigned int maxseen, time_t lastseen) {
+int th_add(trustgroup *tg, char *host, unsigned int maxusage, time_t lastseen) {
   u_int32_t ip, mask;
   trusthost *th;
 
@@ -48,7 +51,7 @@ int th_add(trustgroup *tg, char *host, unsigned int maxseen, time_t lastseen) {
   if(!th)
     return 0;
 
-  th->maxseen = maxseen;
+  th->maxusage = maxusage;
   th->lastseen = lastseen;
   th->ip = ip;
   th->mask = mask;
@@ -71,7 +74,7 @@ void tg_free(trustgroup *tg) {
   free(tg);
 }
 
-int tg_add(unsigned int id, char *name, unsigned int trustedfor, int mode, unsigned int maxperident, unsigned int maxseen, time_t expires, time_t lastseen, time_t lastmaxuserreset, char *createdby, char *contact, char *comment) {
+int tg_add(unsigned int id, char *name, unsigned int trustedfor, int mode, unsigned int maxperident, unsigned int maxusage, time_t expires, time_t lastseen, time_t lastmaxuserreset, char *createdby, char *contact, char *comment) {
   trustgroup *tg = malloc(sizeof(trustgroup));
   if(!tg)
     return 0;
@@ -89,7 +92,7 @@ int tg_add(unsigned int id, char *name, unsigned int trustedfor, int mode, unsig
   tg->trustedfor = trustedfor;
   tg->mode = mode;
   tg->maxperident = maxperident;
-  tg->maxseen = maxseen;
+  tg->maxusage = maxusage;
   tg->expires = expires;
   tg->lastseen = lastseen;
   tg->lastmaxuserreset = lastmaxuserreset;
@@ -114,3 +117,23 @@ trusthost *th_getbyhost(uint32_t host) {
 
   return NULL;
 }
+
+void trusts_flush(void) {
+  trustgroup *tg;
+  trusthost *th;
+  time_t t = time(NULL);
+
+  for(tg=tglist;tg;tg=tg->next) {
+    if(tg->count > 0)
+      tg->lastseen = t;
+
+    tg_dbupdatecounts(tg);
+
+    for(th=tg->hosts;th;th=th->next) {
+      if(th->count > 0)
+        th->lastseen = t;
+
+      th_dbupdatecounts(th);
+    }
+  }
+}