]> jfr.im git - irc/quakenet/newserv.git/commitdiff
add initial spewdomain function for mail domains
authorPaul <redacted>
Sat, 2 Jun 2007 23:01:14 +0000 (23:01 +0000)
committerPaul <redacted>
Sat, 2 Jun 2007 23:01:14 +0000 (23:01 +0000)
chanserv/usercmds/spewdomain.c [new file with mode: 0644]

diff --git a/chanserv/usercmds/spewdomain.c b/chanserv/usercmds/spewdomain.c
new file mode 100644 (file)
index 0000000..482ca65
--- /dev/null
@@ -0,0 +1,66 @@
+/* Automatically generated by refactor.pl.
+ *
+ *
+ * CMDNAME: spewdomain
+ * CMDLEVEL: QCMD_OPER
+ * CMDARGS: 1
+ * CMDDESC: Spew Mail Domains.
+ * CMDFUNC: csu_dospewdomain
+ * CMDPROTO: int csu_dospewdomain(void *source, int cargc, char **cargv);
+ */
+
+#include "../chanserv.h"
+#include "../../lib/irc_string.h"
+#include <stdio.h>
+#include <string.h>
+
+int csu_dospewdomain(void *source, int cargc, char **cargv) {
+  nick *sender=source;
+  reguser *rup=getreguserfromnick(sender);
+  reguser *dbrup;
+  int i;
+  unsigned int count=0;
+  maildomain *smdp;
+  int limit=0, actlimit=0;
+
+  if (!rup)
+    return CMD_ERROR;
+
+  if (cargc < 1) {
+    chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "spewdomain");
+    return CMD_ERROR;
+  }
+
+  chanservstdmessage(sender, QM_SPEWDOMAINHEADER);
+  maildomain *mdp;
+
+  for (i=0;i<MAILDOMAINHASHSIZE;i++) {
+    for (mdp=maildomainnametable[i]; mdp; mdp=mdp->nextbyname) {
+      if (!match(cargv[0], mdp->name->content)) {
+        limit = 0; actlimit=0;
+        for(smdp=mdp;smdp;smdp=smdp->parent) {
+          if(smdp->limit) {
+            limit = smdp->limit; 
+            break;           
+          }
+        }
+        for(smdp=mdp;smdp;smdp=smdp->parent) {
+          if(smdp->actlimit) {
+            actlimit = smdp->actlimit;
+            break;
+          }
+        }
+        /***@@@ bug here? i.e. we recurse up to find limit, then check MDHaslimit for current domain only?*/
+        chanservsendmessage(sender, "%-19s %-7d %d%s %d%s", mdp->name->content, mdp->count, limit,MDHasLimit(mdp) ? "*":"", actlimit,MDHasActLimit(mdp) ? "*":""); 
+        count++;
+        if (count >= 2000) {
+          chanservstdmessage(sender, QM_TOOMANYRESULTS, 2000, "domains");
+          return CMD_ERROR;
+        }
+      }
+    }
+  }
+  chanservstdmessage(sender, QM_RESULTCOUNT, count, "domain", (count==1)?"":"s");
+
+  return CMD_OK;
+}