]> jfr.im git - irc/quakenet/newserv.git/blobdiff - proxyscan/proxyscandb.c
CHANSERV: tell user when they can't attempts to auth any more, and drop max attempts...
[irc/quakenet/newserv.git] / proxyscan / proxyscandb.c
index 484445d2aa938372163b32f033885e9c33f92a05..f3ee2d784f40adbd210d0794ac49507a9585bc71 100644 (file)
@@ -99,6 +99,14 @@ const char *scantostr(int type) {
     case STYPE_DIRECT:
       reason="forward";
       break;
+
+    case STYPE_DIRECT_IRC:
+      reason="fwdirc";
+      break;
+
+    case STYPE_ROUTER:
+      reason="router";
+      break;
   }
    
   return reason;
@@ -122,8 +130,8 @@ int scantodm(int scannum) {
  */
 
 void loggline(cachehost *chp, patricia_node_t *node) {
-  char reasonlist[100];
-  char reasonesc[200 + 1]; /* reasonlist*2+1 */
+  char reasonlist[200];
+  char reasonesc[400 + 1]; /* reasonlist*2+1 */
   int reasonmask=0;
   int reasonpos=0;
   foundproxy *fpp;
@@ -136,6 +144,9 @@ void loggline(cachehost *chp, patricia_node_t *node) {
   reasonlist[0]='\0';
   reasonmask=0;
   for (fpp=chp->proxies;fpp;fpp=fpp->next) {
+    if ((reasonpos + 20) > sizeof(reasonlist))
+      break;
+
     reasonpos += sprintf(reasonlist+reasonpos, "%s:%d ",scantostr(fpp->type), fpp->port);
   }
 
@@ -196,10 +207,12 @@ void proxyscandolistopen_real(DBConn *dbconn, void *arg) {
   sendnoticetouser(proxyscannick,np,"--- End of list ---");
 }
 
-void proxyscandolistopen(nick *mynick, nick *usernick, time_t snce) {
-
+int proxyscandolistopen(void *sender, int cargc, char **cargv) {
+  nick *usernick = (nick *)sender;
+   
   dbasyncquery(proxyscandolistopen_real,(void *)usernick->numeric, 
-               "SELECT IP,TS,RH FROM openproxies WHERE TS>'%lu' ORDER BY TS",snce);
+               "SELECT IP,TS,RH FROM openproxies WHERE TS>'%lu' ORDER BY TS",time(NULL)-rescaninterval);
+  return CMD_OK;
 }
 
 /*
@@ -210,6 +223,7 @@ void proxyscandolistopen(nick *mynick, nick *usernick, time_t snce) {
 void proxyscanspewip_real(DBConn *dbconn, void *arg) {
   nick *np=getnickbynumeric((unsigned long)arg);
   DBResult *pgres;
+  char timebuf[30];
 
   pgres=dbgetresult(dbconn);
   if (!dbquerysuccessful(pgres)) {
@@ -230,9 +244,12 @@ void proxyscanspewip_real(DBConn *dbconn, void *arg) {
 
   sendnoticetouser(proxyscannick,np,"%-5s %-20s %-22s %s","ID","IP","Found at","What was open");
   while(dbfetchrow(pgres)) {
+    time_t t = strtoul(dbgetvalue(pgres, 2), NULL, 10);
+    strftime(timebuf, sizeof(timebuf), "%d/%m/%y %H:%M GMT", gmtime(&t));
+
     sendnoticetouser(proxyscannick,np, "%-5s %-20s %-22s %s",dbgetvalue(pgres, 0),
                                                              dbgetvalue(pgres, 1),
-                                                             dbgetvalue(pgres, 2),
+                                                             timebuf,
                                                             dbgetvalue(pgres, 3));
   }
   dbclear(pgres);
@@ -282,7 +299,6 @@ void proxyscanshowkill_real(DBConn *dbconn, void *arg) {
   sendnoticetouser(proxyscannick,np,"--- End of list ---");
 }
 
-
 void proxyscanshowkill(nick *mynick, nick *usernick, unsigned long a) {
   dbasyncquery(proxyscanspewip_real,(void *)usernick->numeric,
                "SELECT ID,IP,TS,RH FROM openproxies WHERE ID='%lu'",a);