]> jfr.im git - irc/quakenet/newserv.git/blobdiff - proxyscan/proxyscanhandlers.c
CHANSERV: remove accidental sendemail from SETEMAIL command.
[irc/quakenet/newserv.git] / proxyscan / proxyscanhandlers.c
index c1c70b4559c2984b39595a744560202b79a2fa3e..df5c6b6128370c33ab0789b8b3f5c468b39945c5 100644 (file)
@@ -1,31 +1,43 @@
+#include <stdio.h>
 #include "proxyscan.h"
 #include "../irc/irc.h"
 #include "../lib/irc_string.h"
 #include "../core/error.h"
+#include "../glines/glines.h"
 
 void proxyscan_newnick(int hooknum, void *arg) {
   nick *np=(nick *)arg;
   cachehost *chp;
   foundproxy *fpp, *nfpp;
   extrascan *esp, *espp;
+  char reason[200];
 
   int i;
 
   /* Skip 127.* and 0.* hosts */
-  if (irc_in_addr_is_loopback(&np->p_ipaddr) || !irc_in_addr_is_ipv4(&np->p_ipaddr)) 
+  if (irc_in_addr_is_loopback(&np->ipaddress))
     return;
 
-  /* before we look at a normal host, see if we think we have an open proxy */
+  /* slug: why is this here? why isn't it with the other queuing stuff? */
+  /* we're given a list of ip/subnets and port pairs which someone else has
+     seen a proxy on in the past, so we scan these very aggressively
+     (even ignoring the cache)
+   */
+  /* disabled as the list is hopelessly out of date */
   if ((esp=findextrascan(np->ipnode))) {
-    Error("proxyextra", ERR_ERROR, "connection from possible proxy %s", IPtostr(np->p_ipaddr)); 
+    Error("proxyextra", ERR_ERROR, "connection from possible proxy %s", IPtostr(np->ipaddress)); 
     for (espp=esp;espp;espp=espp->nextbynode) { 
+      /* we force a scan on any hosts that may be an open proxy, even if they are:
+       * a) already in the queue, b) we've been running < 120 seconds */
       queuescan(np->ipnode, espp->type, espp->port, SCLASS_NORMAL, time(NULL));
     }
   }
 
-  /* ignore newnick for first 120s */
-  if (ps_start_ts+120 > time(NULL))
+/* slug: this BREAKS all of P's design assumptions, do NOT REENABLE THIS UNDER ANY CIRCUMSTANCES */
+/* ignore newnick until initial burst complete */
+/*  if (!ps_ready)
     return;
+*/
 
   /*
    * Logic for connecting hosts:
@@ -40,7 +52,6 @@ void proxyscan_newnick(int hooknum, void *arg) {
    *
    * If they're not in the cache, we queue up their scans
    */
-
   if ((chp=findcachehost(np->ipnode))) {
     if (!chp->proxies)
       return;
@@ -68,8 +79,8 @@ void proxyscan_newnick(int hooknum, void *arg) {
     }
 
     /* set a SHORT gline - if they really have an open proxy the gline will be re-set, with a new ID */
-    irc_send("%s GL * +*@%s 600 :Open Proxy, see http://www.quakenet.org/openproxies.html - ID: %d",
-            mynumeric->content,IPtostr(np->p_ipaddr),chp->glineid);
+    snprintf(reason, sizeof(reason), "Open Proxy, see http://www.quakenet.org/openproxies.html - ID: %d", chp->glineid);
+    glinebynick(np, 600, reason, GLINE_IGNORE_TRUST, "proxyscan");
 
     chp->lastscan=time(NULL);
     chp->proxies=NULL;
@@ -84,4 +95,3 @@ void proxyscan_newnick(int hooknum, void *arg) {
       queuescan(np->ipnode, thescans[i].type, thescans[i].port, SCLASS_NORMAL, 0);
   }
 }
-