]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Added 'showkill' and 'spew' commands (with associated functions) - also cleaned up...
authorDan <redacted>
Sat, 3 Sep 2005 11:32:00 +0000 (12:32 +0100)
committerDan <redacted>
Sat, 3 Sep 2005 11:32:00 +0000 (12:32 +0100)
proxyscan/proxyscan.c
proxyscan/proxyscan.h
proxyscan/proxyscandb.c

index 0971b1e219d8df7f3184ee024b3180c43bc156c0..f106d6b2f866d822ab8a68f352b6cd0c966a1e5a 100644 (file)
@@ -304,7 +304,29 @@ void proxyscanuserhandler(nick *target, int message, void **params) {
       if (!ircd_strncmp(msg,"debug",5)) {
        proxyscandebug(sender);
       }
-      
+
+      if (!ircd_strncmp(msg,"spew ",5)) {
+        /* check our database for the ip supplied */
+        unsigned long a,b,c,d;
+        if (4 != sscanf(&msg[5],"%lu.%lu.%lu.%lu",&a,&b,&c,&d)) {
+          sendnoticetouser(proxyscannick,sender,"Usage: spew x.x.x.x");
+        } else {
+          /* check db */
+          proxyscanspewip(proxyscannick,sender,a,b,c,d);
+        }
+      }
+
+      if (!ircd_strncmp(msg,"showkill ",9)) {
+        /* check our database for the id supplied */
+        unsigned long a;
+        if (1 != sscanf(&msg[9],"%lu",&a)) {
+          sendnoticetouser(proxyscannick,sender,"Usage: showkill <id>");
+        } else {
+          /* check db */
+          proxyscanshowkill(proxyscannick,sender,a);
+        }
+      }
+
       if (!ircd_strncmp(msg,"scan ",5)) {
         unsigned long a,b,c,d;
         if (4 != sscanf(&msg[5],"%lu.%lu.%lu.%lu",&a,&b,&c,&d)) {
@@ -339,13 +361,16 @@ void proxyscanuserhandler(nick *target, int message, void **params) {
        }
       }          
 
-      if (!ircd_strncmp(msg,"help",4)) {
+      if ((!ircd_strncmp(msg,"help",4)) || (!ircd_strncmp(msg,"showcommands",12))) {
        sendnoticetouser(proxyscannick,sender,"Proxyscan commands:");
-       sendnoticetouser(proxyscannick,sender,"-------------------------------------------");
-       sendnoticetouser(proxyscannick,sender,"help      Shows this help");
-       sendnoticetouser(proxyscannick,sender,"status    Prints status information");
-       sendnoticetouser(proxyscannick,sender,"listopen  Shows open proxies found recently");
-       sendnoticetouser(proxyscannick,sender,"save      Saves the clean host database");
+       sendnoticetouser(proxyscannick,sender,"----------------------------------------------------------------------");
+       sendnoticetouser(proxyscannick,sender,"help              Shows this help");
+       sendnoticetouser(proxyscannick,sender,"status            Prints status information");
+       sendnoticetouser(proxyscannick,sender,"listopen          Shows open proxies found recently");
+       sendnoticetouser(proxyscannick,sender,"save              Saves the clean host database");
+       sendnoticetouser(proxyscannick,sender,"scan <ip>         Force scan of the supplied IP");
+       sendnoticetouser(proxyscannick,sender,"spew <ip>         Find <ip> in our list of open proxies");
+       sendnoticetouser(proxyscannick,sender,"showkill <id>     Shows details of a kill or gline made by the service");
       }
     }
 
index 279dd3b07fcbe52846ef1468edeab478ed89bae6..ddaa8b30d59b25f532c8899a2a253ac4b029d535 100644 (file)
@@ -131,6 +131,8 @@ void loggline(cachehost *chp);
 void proxyscandbclose();
 int proxyscandbinit();
 void proxyscandolistopen(nick *mynick, nick *usernick, time_t snce);
+void proxyscanspewip(nick *mynick, nick *usernick, unsigned long a, unsigned long b, unsigned long c, unsigned long d);
+void proxyscanshowkill(nick *mynick, nick *usernick, unsigned long a);
 const char *scantostr(int type);
 
 #if defined(PROXYSCAN_MAIL)
index 03bf8d01fc02d8c31515e91262195660f818b9ed..874d2b7242ad6d8cc56e2a5358c72d848ec7f7bf 100644 (file)
@@ -218,3 +218,70 @@ void proxyscandolistopen(nick *mynick, nick *usernick, time_t snce) {
   sendnoticetouser(mynick,usernick,"--- End of list ---");
   mysql_free_result(myres);
 }
+
+/*
+ * proxyscanspewip
+ *  Check db for open proxies matching the given IP, send to user usernick.
+ */
+
+void proxyscanspewip(nick *mynick, nick *usernick, unsigned long a, unsigned long b, unsigned long c, unsigned long d) {
+  char mysqlquery[2000];
+  MYSQL_RES *myres;
+  MYSQL_ROW myrow;
+
+  sprintf(mysqlquery, "SELECT ID,IP,TS,RH FROM openproxies WHERE IP='%lu.%lu.%lu.%lu' ORDER BY TS DESC LIMIT 10",a,b,c,d);
+
+  if ((mysql_query(&proxyscansql,mysqlquery))!=0) {
+    sendnoticetouser(mynick,usernick,"Error performing database query!");
+    Error("proxyscan",ERR_ERROR,"Error performing spew query");
+    return;
+  }
+
+  myres=mysql_use_result(&proxyscansql);
+  if (mysql_num_fields(myres)!=4) {
+    sendnoticetouser(mynick,usernick,"Error performing database query!");
+    Error("proxyscan",ERR_ERROR,"Error performing spew query");
+    return;
+  }
+
+  sendnoticetouser(mynick,usernick,"%-5s %-20s %-22s %s","ID","IP","Found at","What was open");
+  while ((myrow=mysql_fetch_row(myres))) {
+    sendnoticetouser(mynick,usernick,"%-5s %-20s %-22s %s",myrow[0],myrow[1],myrow[2],myrow[3]);
+  }
+  sendnoticetouser(mynick,usernick,"--- End of list ---");
+  mysql_free_result(myres);
+}
+
+/*
+ * proxyscanshowkill
+ *  Check db for open proxies matching the given kill/gline ID, send to user usernick.
+ */
+
+void proxyscanshowkill(nick *mynick, nick *usernick, unsigned long a) {
+  char mysqlquery[2000];
+  MYSQL_RES *myres;
+  MYSQL_ROW myrow;
+
+  sprintf(mysqlquery, "SELECT ID,IP,TS,RH FROM openproxies WHERE ID='%lu'",a);
+
+  if ((mysql_query(&proxyscansql,mysqlquery))!=0) {
+    sendnoticetouser(mynick,usernick,"Error performing database query!");
+    Error("proxyscan",ERR_ERROR,"Error performing showkill query");
+    return;
+  }
+
+  myres=mysql_use_result(&proxyscansql);
+  if (mysql_num_fields(myres)!=4) {
+    sendnoticetouser(mynick,usernick,"Error performing database query!");
+    Error("proxyscan",ERR_ERROR,"Error performing showkill query");
+    return;
+  }
+
+  sendnoticetouser(mynick,usernick,"%-5s %-20s %-22s %s","ID","IP","Found at","What was open");
+  /* even though we should only ever have 1 result, still loop below - who knows eh? */
+  while ((myrow=mysql_fetch_row(myres))) {
+    sendnoticetouser(mynick,usernick,"%-5s %-20s %-22s %s",myrow[0],myrow[1],myrow[2],myrow[3]);
+  }
+  sendnoticetouser(mynick,usernick,"--- End of list ---");
+  mysql_free_result(myres);
+}