]> jfr.im git - irc/ircd-hybrid/libopm.git/commitdiff
Added OPM_TYPE_STRINGLIST
authorstrtok <redacted>
Tue, 10 Dec 2002 00:44:57 +0000 (00:44 +0000)
committerstrtok <redacted>
Tue, 10 Dec 2002 00:44:57 +0000 (00:44 +0000)
Allow multiple entries for TARGET_STRING

doc/libopm-api.txt
src/config.c
src/libopm.c
src/opm_types.h
src/test.c

index a514cc91654c123e81a1e14ea15847d60fc0b4ec..a5c09b791d094f4ac97197e120157a032f22431f 100644 (file)
@@ -142,7 +142,7 @@ OPM_ERR_T opm_config(OPM_T *, int, void *)
 
       OPM_CONFIG_BIND_IP         char *          IP to bind to for outgoing scans
 
-      OPM_CONFIG_TARGET_STRING   char *          Target string used to verify open proxies
+      OPM_CONFIG_TARGET_STRING   list of char *  Target strings used to verify open proxies
 
       OPM_CONFIG_SCAN_IP         char *          IP to command proxies to connect to
 
@@ -170,6 +170,8 @@ OPM_ERR_T opm_config(OPM_T *, int, void *)
                 opm_config(scanner, OPM_CONFIG_FD_LIMIT, &fd_limit);
                 opm_config(scanner, OPM_CONFIG_MAX_READ, &max_read);
                 opm_config(scanner, OPM_CONFIG_BIND_IP, "10.0.0.1");
+                opm_config(scanner, OPM_CONFIG_TARGET_STRING, "Match1");
+                opm_config(scanner, OPM_CONFIG_TARET_STRING, "Match2");
 
                 opm_free(scanner);
 
index 09d393be62bec0c7478d84cf811e959c5685e7ee..6ce7ae04dd3ea890560f80c16fb3297d1bcc7a2a 100644 (file)
@@ -28,6 +28,9 @@
 #include "inet.h"
 #include "opm_error.h"
 #include "opm_types.h"
+#include "opm_common.h"
+#include "list.h"
+
 #ifdef STDC_HEADERS
 # include <string.h>
 #endif
@@ -38,7 +41,7 @@ static OPM_CONFIG_HASH_T HASH[] = {
    {OPM_CONFIG_FD_LIMIT,       OPM_TYPE_INT},
    {OPM_CONFIG_BIND_IP ,       OPM_TYPE_ADDRESS},
    {OPM_CONFIG_DNSBL_HOST,     OPM_TYPE_STRING},
-   {OPM_CONFIG_TARGET_STRING,  OPM_TYPE_STRING},
+   {OPM_CONFIG_TARGET_STRING,  OPM_TYPE_STRINGLIST},
    {OPM_CONFIG_SCAN_IP,        OPM_TYPE_STRING},
    {OPM_CONFIG_SCAN_PORT,      OPM_TYPE_INT},
    {OPM_CONFIG_MAX_READ,       OPM_TYPE_INT},
@@ -74,7 +77,7 @@ OPM_CONFIG_T *libopm_config_create()
       OPM_TYPE_INT     = 0
       OPM_TYPE_STRING  = ""
       OPM_TYPE_ADDRESS = 0.0.0.0 
-
+      OPM_TYPE_STRINGLIST = empty list
    */
 
    for(i = 0; i < num; i++)
@@ -85,13 +88,19 @@ OPM_CONFIG_T *libopm_config_create()
             ret->vars[i] = MyMalloc(sizeof(int));
             *(int *) ret->vars[i] = 0;
             break;
+
          case OPM_TYPE_STRING:
             (char *) ret->vars[i] = strdup("");
             break;
+
          case OPM_TYPE_ADDRESS:
             (opm_sockaddr *) ret->vars[i] = MyMalloc(sizeof(opm_sockaddr));
             memset((opm_sockaddr *) ret->vars[i], 0, sizeof(opm_sockaddr));
             break; 
+
+         case OPM_TYPE_STRINGLIST:
+            (OPM_LIST_T *) ret->vars[i] = libopm_list_create();
+            break;
          default:
             ret->vars[i] = NULL;
       }
@@ -116,16 +125,30 @@ OPM_CONFIG_T *libopm_config_create()
 void libopm_config_free(OPM_CONFIG_T *config)
 {
    int num, i;
+   OPM_NODE_T *p, *next;
+   OPM_LIST_T *list;
+
    num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T);
 
    for(i = 0; i < num; i++)
    {
-
       if(config->vars[i] == NULL)
          continue;
-      else
-         MyFree(config->vars[i]);
-     
+
+      switch(libopm_config_gettype(i))
+      {
+         case OPM_TYPE_STRINGLIST:
+            list = (OPM_LIST_T *) config->vars[i];
+            LIST_FOREACH_SAFE(p, next, list->head)
+            {
+               MyFree(p->data);
+               MyFree(p); 
+            }
+            break;
+         default:
+            MyFree(config->vars[i]);
+            break;
+      }
    }
 
    MyFree(config->vars);
@@ -153,6 +176,7 @@ OPM_ERR_T libopm_config_set(OPM_CONFIG_T *config, int key, void *value)
 {
 
    int num, i;
+   OPM_NODE_T *node;
 
    num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T);
    
@@ -177,6 +201,11 @@ OPM_ERR_T libopm_config_set(OPM_CONFIG_T *config, int key, void *value)
             return OPM_ERR_BADVALUE; /* return appropriate err code */
          break; 
 
+      case OPM_TYPE_STRINGLIST:
+         node = libopm_node_create(strdup((char *) value));
+         libopm_list_add((OPM_LIST_T *) config->vars[key], node);
+         break;                        
+
       default:
          return OPM_ERR_BADKEY; /* return appropriate err code */
 
index 0835a7ee19662a685190c46ee48d86ec6b37e119..4f7333271d8e4d7f8195b2f173c990909a4dcd2b 100644 (file)
@@ -1145,12 +1145,18 @@ static void libopm_do_readready(OPM_T *scanner, OPM_SCAN_T *scan, OPM_CONNECTION
 
 static void libopm_do_read(OPM_T *scanner, OPM_SCAN_T *scan, OPM_CONNECTION_T *conn)
 {
+   OPM_LIST_T *list;
+   OPM_NODE_T *node;
    char *target_string;
-   target_string = (char *) libopm_config(scanner->config, OPM_CONFIG_TARGET_STRING);
 
-   if(strstr(conn->readbuf, target_string))
-      libopm_do_openproxy(scanner, scan, conn);
+   //Check readbuf against target strings 
+   list = (OPM_LIST_T *) libopm_config(scanner->config, OPM_CONFIG_TARGET_STRING);
+   LIST_FOREACH(node, list->head)
+   {
+      target_string = (char *) node->data;
+      if(strstr(conn->readbuf, target_string))
+         libopm_do_openproxy(scanner, scan, conn);
+   }
 }
 
 
index 464c82a25373bafc4e6d2a3b2991106c7404b4d1..3c1738467a20d6263092bf3962c92ea5eff0f9fb 100644 (file)
@@ -15,6 +15,7 @@
 #define OPM_TYPE_INT             1
 #define OPM_TYPE_STRING          2
 #define OPM_TYPE_ADDRESS         3
+#define OPM_TYPE_STRINGLIST      4
 
 /* Protocols */
 #define OPM_TYPE_HTTP            1
index fdbe0496dc3f4be8a162cd733b91af18d71bb9f8..29751cf812829e96385fac9e93f1075c4141f5b0 100644 (file)
@@ -69,9 +69,10 @@ int main(int argc, char **argv)
 
    /* Setup the scanner configuration */ 
    opm_config(scanner, OPM_CONFIG_FD_LIMIT, &fdlimit);
-   opm_config(scanner, OPM_CONFIG_SCAN_IP, "203.56.139.100");
+   opm_config(scanner, OPM_CONFIG_SCAN_IP, "216.175.104.202");
    opm_config(scanner, OPM_CONFIG_SCAN_PORT, &scan_port);
    opm_config(scanner, OPM_CONFIG_TARGET_STRING, "*** Looking up your hostname...");
+   opm_config(scanner, OPM_CONFIG_TARGET_STRING, "ERROR :Trying to reconnect too fast.");
    opm_config(scanner, OPM_CONFIG_TIMEOUT, &scantimeout);
    opm_config(scanner, OPM_CONFIG_MAX_READ, &max_read);