gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r20209 - in gnunet/src/gns: . proxy


From: gnunet
Subject: [GNUnet-SVN] r20209 - in gnunet/src/gns: . proxy
Date: Fri, 2 Mar 2012 22:07:39 +0100

Author: schanzen
Date: 2012-03-02 22:07:39 +0100 (Fri, 02 Mar 2012)
New Revision: 20209

Added:
   gnunet/src/gns/test_gns_simple_lookup.c
   gnunet/src/gns/test_gns_simple_lookup.conf
Modified:
   gnunet/src/gns/Makefile.am
   gnunet/src/gns/gns.conf.in
   gnunet/src/gns/gnunet-service-gns.c
   gnunet/src/gns/proxy/proxy.py
Log:
-new test, fixes, config


Modified: gnunet/src/gns/Makefile.am
===================================================================
--- gnunet/src/gns/Makefile.am  2012-03-02 19:05:53 UTC (rev 20208)
+++ gnunet/src/gns/Makefile.am  2012-03-02 21:07:39 UTC (rev 20209)
@@ -16,7 +16,7 @@
   gns.conf
 
 lib_LTLIBRARIES = \
-  libgnunetgns.la libgnunetnamestore.la
+  libgnunetgns.la
 
 bin_PROGRAMS = \
   gnunet-service-gns
@@ -28,19 +28,30 @@
  test_gnunet_gns.sh
 
 check_PROGRAMS = \
-  test_gns_twopeer
+  test_gns_simple_lookup
 
 
 plugin_LTLIBRARIES = \
   libgnunet_plugin_block_gns.la
 
-test_gns_twopeer_SOURCES = \
-  test_gns_twopeer.c
-test_gns_twopeer_LDADD = \
+#test_gns_twopeer_SOURCES = \
+#  test_gns_twopeer.c
+#test_gns_twopeer_LDADD = \
+#  $(top_builddir)/src/util/libgnunetutil.la \
+#  $(top_builddir)/src/namestore/libgnunetnamestore.la \
+#  $(top_builddir)/src/testing/libgnunettesting.la
+#test_gns_twopeer_DEPENDENCIES = \
+#  $(top_builddir)/src/util/libgnunetutil.la \
+#  $(top_builddir)/src/namestore/libgnunetnamestore.la \
+#  $(top_builddir)/src/testing/libgnunettesting.la
+
+test_gns_simple_lookup_SOURCES = \
+  test_gns_simple_lookup.c
+test_gns_simple_lookup_LDADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
   $(top_builddir)/src/namestore/libgnunetnamestore.la \
   $(top_builddir)/src/testing/libgnunettesting.la
-test_gns_twopeer_DEPENDENCIES = \
+test_gns_simple_lookup_DEPENDENCIES = \
   $(top_builddir)/src/util/libgnunetutil.la \
   $(top_builddir)/src/namestore/libgnunetnamestore.la \
   $(top_builddir)/src/testing/libgnunettesting.la
@@ -114,4 +125,4 @@
 
 EXTRA_DIST = \
   $(check_SCRIPTS) \
-  test_gns_twopeer.conf
+  test_gns_simple_lookup.conf

Modified: gnunet/src/gns/gns.conf.in
===================================================================
--- gnunet/src/gns/gns.conf.in  2012-03-02 19:05:53 UTC (rev 20208)
+++ gnunet/src/gns/gns.conf.in  2012-03-02 21:07:39 UTC (rev 20209)
@@ -5,13 +5,6 @@
 CONFIG = $DEFAULTCONFIG
 BINARY = gnunet-service-gns
 UNIXPATH = /tmp/gnunet-service-gns.sock
-ZONEKEY = /tmp/zonekey
-TRUSTED = bob:/tmp/bobkey
+ZONEKEY = $SERVICEHOME/zonekey
 HIJACK_DNS = YES
 OPTIONS = -L INFO
-
-# Access to this service can compromise all DNS queries in this
-# system.  Thus access should be restricted to the same UID.
-# (see https://gnunet.org/gnunet-access-control-model)
-UNIX_MATCH_UID = YES
-UNIX_MATCH_GID = YES

Modified: gnunet/src/gns/gnunet-service-gns.c
===================================================================
--- gnunet/src/gns/gnunet-service-gns.c 2012-03-02 19:05:53 UTC (rev 20208)
+++ gnunet/src/gns/gnunet-service-gns.c 2012-03-02 21:07:39 UTC (rev 20209)
@@ -158,7 +158,8 @@
 shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   /* Kill zone task for it may make the scheduler hang */
-  GNUNET_SCHEDULER_cancel(zone_update_taskid);
+  if (zone_update_taskid)
+    GNUNET_SCHEDULER_cancel(zone_update_taskid);
 
   GNUNET_DNS_disconnect(dns_handle);
   GNUNET_NAMESTORE_disconnect(namestore_handle, 1);
@@ -1356,48 +1357,6 @@
     return;
   }
   
-  char* trusted_start;
-  char* trusted_name;
-  char *trusted_key;
-  int trusted_len;
-  if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (c, "gns",
-                                                      "TRUSTED",
-                                                      &trusted_entities))
-  {
-    trusted_start = trusted_entities;
-    trusted_len = strlen(trusted_entities);
-    GNUNET_log(GNUNET_ERROR_TYPE_INFO,
-               "Found trusted entities in config file, importing\n");
-    while ((trusted_entities-trusted_start) < trusted_len)
-    {
-      trusted_name = trusted_entities;
-      while (*trusted_entities != ':')
-        trusted_entities++;
-      *trusted_entities = '\0';
-      trusted_entities++;
-      trusted_key = trusted_entities;
-      while (*trusted_entities != ',' && (*trusted_entities != '\0'))
-        trusted_entities++;
-      *trusted_entities = '\0';
-      trusted_entities++;
-      
-      if (GNUNET_YES == GNUNET_DISK_file_test (trusted_key))
-      {
-        GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Adding %s:%s to root zone\n",
-                 trusted_name,
-                 trusted_key);
-        put_trusted(trusted_name, trusted_key);
-      }
-      else
-      {
-        GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Keyfile %s does not exist!\n",
-                   trusted_key);
-        //put_trusted(trusted_name, trusted_key); //FIXME for testing
-      }
-    }
-
-  }
-
   /**
    * handle to the dht
    */
@@ -1408,7 +1367,7 @@
     GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Could not connect to DHT!\n");
   }
 
-  put_some_records(); //FIXME for testing
+  //put_some_records(); //FIXME for testing
   
   /**
    * Schedule periodic put

Modified: gnunet/src/gns/proxy/proxy.py
===================================================================
--- gnunet/src/gns/proxy/proxy.py       2012-03-02 19:05:53 UTC (rev 20208)
+++ gnunet/src/gns/proxy/proxy.py       2012-03-02 21:07:39 UTC (rev 20209)
@@ -1,5 +1,15 @@
 #!/usr/bin/python
 
+"""
+Copyright (c) 2001 SUZUKI Hisao 
+
+Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and associated documentation files (the "Software"), to deal 
in the Software without restriction, including without limitation the rights to 
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
of the Software, and to permit persons to whom the Software is furnished to do 
so, subject to the following conditions: 
+
+The above copyright notice and this permission notice shall be included in all 
copies or substantial portions of the Software. 
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
+"""
+
 __doc__ = """Tiny HTTP Proxy.
 
 This module implements GET, HEAD, POST, PUT and DELETE methods

Added: gnunet/src/gns/test_gns_simple_lookup.c
===================================================================
--- gnunet/src/gns/test_gns_simple_lookup.c                             (rev 0)
+++ gnunet/src/gns/test_gns_simple_lookup.c     2012-03-02 21:07:39 UTC (rev 
20209)
@@ -0,0 +1,294 @@
+/*
+     This file is part of GNUnet.
+     (C) 2009 Christian Grothoff (and other contributing authors)
+
+     GNUnet is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published
+     by the Free Software Foundation; either version 3, or (at your
+     option) any later version.
+
+     GNUnet is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+/**
+ * @file gns/test_gns_twopeer.c
+ * @brief base testcase for testing DHT service with
+ *        two running peers.
+ *
+ * This testcase starts peers using the GNUNET_TESTING_daemons_start
+ * function call.  On peer start, connects to the peers DHT service
+ * by calling GNUNET_DHT_connected.  Once notified about all peers
+ * being started (by the peers_started_callback function), calls
+ * GNUNET_TESTING_connect_topology, which connects the peers in a
+ * "straight line" topology.  On notification that all peers have
+ * been properly connected, calls the do_get function which initiates
+ * a GNUNET_DHT_get from the *second* peer. Once the GNUNET_DHT_get
+ * function starts, runs the do_put function to insert data at the first peer.
+ *   If the GET is successful, schedules finish_testing
+ * to stop the test and shut down peers.  If GET is unsuccessful
+ * after GET_TIMEOUT seconds, prints an error message and shuts down
+ * the peers.
+ */
+#include "platform.h"
+#include "gnunet_testing_lib.h"
+#include "gnunet_core_service.h"
+#include "block_dns.h"
+#include "gnunet_signatures.h"
+#include "gnunet_namestore_service.h"
+#include "gnunet_dnsparser_lib.h"
+#include "gnunet_gns_service.h"
+
+/* DEFINES */
+#define VERBOSE GNUNET_YES
+
+/* Timeout for entire testcase */
+#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 10)
+
+/* If number of peers not in config file, use this number */
+#define DEFAULT_NUM_PEERS 2
+
+/* test records to resolve */
+#define TEST_DOMAIN "www.gnunet"
+#define TEST_IP
+#define TEST_RECORD_NAME "www"
+
+/* Globals */
+
+/**
+ * Directory to store temp data in, defined in config file
+ */
+static char *test_directory;
+
+struct GNUNET_TESTING_Daemon *d1;
+
+
+/* Task handle to use to schedule test failure */
+GNUNET_SCHEDULER_TaskIdentifier die_task;
+
+/* Global return value (0 for success, anything else for failure) */
+static int ok;
+
+static struct GNUNUET_NAMESTORE_Handle *namestore_handle;
+
+const struct GNUNET_CONFIGURATION_Handle *cfg;
+
+/**
+ * Check whether peers successfully shut down.
+ */
+void
+shutdown_callback (void *cls, const char *emsg)
+{
+  if (emsg != NULL)
+  {
+    if (ok == 0)
+      ok = 2;
+  }
+
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "done(ret=%d)!\n", ok);
+}
+
+/**
+ * Function scheduled to be run on the successful completion of this
+ * testcase.  Specifically, called when our get request completes.
+ */
+static void
+finish_testing (void *cls, int32_t success, const char *emsg)
+{
+  struct hostent *he;
+  struct in_addr a;
+  char* addr;
+  
+  GNUNET_NAMESTORE_disconnect(namestore_handle, GNUNET_YES);
+
+  he = gethostbyname (TEST_DOMAIN);
+
+  if (!he)
+  {
+    ok = 2;
+  }
+  else
+  {
+    ok = 1;
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "name: %s\n", he->h_name);
+    while (*he->h_addr_list)
+    {
+      memcpy(&a, *he->h_addr_list++, sizeof(a));
+      addr = inet_ntoa(a);
+      GNUNET_log (GNUNET_ERROR_TYPE_INFO, "address: %s\n", addr);
+      if (0 == strcmp(addr, TEST_IP))
+      {
+        GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                    "%s correctly resolved to %s!\n", TEST_DOMAIN, addr);
+        ok = 0;
+      }
+      else
+      {
+        GNUNET_log (GNUNET_ERROR_TYPE_INFO, "No resolution!\n");
+      }
+    }
+  }
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Shutting down peer1!\n");
+  GNUNET_TESTING_daemon_stop (d1, TIMEOUT, &shutdown_callback, NULL,
+                              GNUNET_YES, GNUNET_NO);
+}
+
+/**
+ * Continuation for the GNUNET_DHT_get_stop call, so that we don't shut
+ * down the peers without freeing memory associated with GET request.
+ */
+static void
+end_badly_cont (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+
+  if (d1 != NULL)
+    GNUNET_TESTING_daemon_stop (d1, TIMEOUT, &shutdown_callback, NULL,
+                                GNUNET_YES, GNUNET_NO);
+  GNUNET_SCHEDULER_cancel (die_task);
+}
+
+/**
+ * Check if the get_handle is being used, if so stop the request.  Either
+ * way, schedule the end_badly_cont function which actually shuts down the
+ * test.
+ */
+static void
+end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Failing test with error: `%s'!\n",
+              (char *) cls);
+  GNUNET_SCHEDULER_add_now (&end_badly_cont, NULL);
+  ok = 1;
+}
+
+static void
+do_lookup(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded alice_pkey;
+  struct GNUNET_CRYPTO_RsaPrivateKey *alice_key;
+  char* alice_keyfile;
+
+  GNUNET_SCHEDULER_cancel (die_task);
+
+  /* put records into namestore */
+  namestore_handle = GNUNET_NAMESTORE_connect(cfg);
+  if (NULL == namestore_handle)
+  {
+    GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Failed to connect to namestore\n");
+    ok = -1;
+    return;
+  }
+
+  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg, "gns",
+                                                          "ZONEKEY",
+                                                          &alice_keyfile))
+  {
+    GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Failed to get alice's key from 
cfg\n");
+    ok = -1;
+    return;
+  }
+
+  alice_key = GNUNET_CRYPTO_rsa_key_create_from_file (alice_keyfile);
+
+  GNUNET_CRYPTO_rsa_key_get_public (alice_key, &alice_pkey);
+
+  struct GNUNET_NAMESTORE_RecordData rd;
+  char* ip = TEST_IP;
+  struct in_addr *web = GNUNET_malloc(sizeof(struct in_addr));
+  rd.expiration = GNUNET_TIME_absolute_get_forever ();
+  GNUNET_assert(1 == inet_pton (AF_INET, ip, web));
+  rd.data_size = sizeof(struct in_addr);
+  rd.data = web;
+  rd.record_type = GNUNET_DNSPARSER_TYPE_A;
+
+  GNUNET_NAMESTORE_record_create (namestore_handle,
+                                  alice_key,
+                                  TEST_RECORD_NAME,
+                                  &rd,
+                                  &finish_testing,
+                                  NULL);
+
+}
+
+static void
+run (void *cls, char *const *args, const char *cfgfile,
+     const struct GNUNET_CONFIGURATION_Handle *c)
+{
+  cfg = c;
+   /* Get path from configuration file */
+  if (GNUNET_YES !=
+      GNUNET_CONFIGURATION_get_value_string (cfg, "paths", "servicehome",
+                                             &test_directory))
+  {
+    ok = 404;
+    return;
+  }
+
+    
+  /* Set up a task to end testing if peer start fails */
+  die_task =
+      GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly,
+                                    "didn't start all daemons in reasonable 
amount of time!!!");
+  
+  /* Start alice */
+  d1 = GNUNET_TESTING_daemon_start(cfg, TIMEOUT, GNUNET_NO, NULL, NULL, 0,
+                                   NULL, NULL, NULL, &do_lookup, NULL);
+}
+
+static int
+check ()
+{
+  int ret;
+
+  /* Arguments for GNUNET_PROGRAM_run */
+  char *const argv[] = { "test-gns-simple-lookup", /* Name to give running 
binary */
+    "-c",
+    "test_gns_simple_lookup.conf",       /* Config file to use */
+#if VERBOSE
+    "-L", "DEBUG",
+#endif
+    NULL
+  };
+  struct GNUNET_GETOPT_CommandLineOption options[] = {
+    GNUNET_GETOPT_OPTION_END
+  };
+  /* Run the run function as a new program */
+  ret =
+      GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv,
+                          "test-gns-simple-lookup", "nohelp", options, &run,
+                          &ok);
+  if (ret != GNUNET_OK)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                "`test-gns-simple-lookup': Failed with error code %d\n", ret);
+  }
+  return ok;
+}
+
+int
+main (int argc, char *argv[])
+{
+  int ret;
+
+  GNUNET_log_setup ("test-gns-simple-lookup",
+#if VERBOSE
+                    "DEBUG",
+#else
+                    "WARNING",
+#endif
+                    NULL);
+  ret = check ();
+  /**
+   * Need to remove base directory, subdirectories taken care
+   * of by the testing framework.
+   */
+  return ret;
+}
+
+/* end of test_gns_twopeer.c */

Added: gnunet/src/gns/test_gns_simple_lookup.conf
===================================================================
--- gnunet/src/gns/test_gns_simple_lookup.conf                          (rev 0)
+++ gnunet/src/gns/test_gns_simple_lookup.conf  2012-03-02 21:07:39 UTC (rev 
20209)
@@ -0,0 +1,81 @@
+[fs]
+AUTOSTART = NO
+
+[resolver]
+AUTOSTART = NO
+HOSTNAME = localhost
+
+[dht]
+DEBUG = NO
+AUTOSTART = YES
+ACCEPT_FROM6 = ::1;
+ACCEPT_FROM = 127.0.0.1;
+HOSTNAME = localhost
+PORT = 2100
+BINARY = gnunet-service-dht
+
+[block]
+plugins = dht test gns
+
+[dhtcache]
+QUOTA = 1 MB
+DATABASE = sqlite
+
+[transport]
+PLUGINS = tcp
+DEBUG = NO
+ACCEPT_FROM6 = ::1;
+ACCEPT_FROM = 127.0.0.1;
+NEIGHBOUR_LIMIT = 50
+PORT = 12365
+
+[ats]
+WAN_QUOTA_IN = 1 GB
+WAN_QUOTA_OUT = 1 GB
+
+[core]
+PORT = 12092
+
+[arm]
+DEFAULTSERVICES = core namestore gns
+PORT = 12366
+DEBUG = NO
+
+[transport-tcp]
+TIMEOUT = 300 s
+PORT = 12368
+BINDTO = 127.0.0.1
+
+[TESTING]
+WEAKRANDOM = YES
+
+[gnunetd]
+HOSTKEY = $SERVICEHOME/.hostkey
+
+[PATHS]
+DEFAULTCONFIG = gns.conf
+SERVICEHOME = /tmp/test-gnunetd-gns-peer-1/
+
+
+[nat]
+DISABLEV6 = YES
+ENABLE_UPNP = NO
+BEHIND_NAT = NO
+ALLOW_NAT = NO
+INTERNAL_ADDRESS = 127.0.0.1
+EXTERNAL_ADDRESS = 127.0.0.1
+USE_LOCALADDR = NO
+
+[dns]
+AUTOSTART = YES
+
+[gns]
+AUTOSTART = YES
+BINARY = gnunet-service-gns
+ZONEKEY = $SERVICEHOME/alicekey
+
+
+[nse]
+AUTOSTART = NO
+
+




reply via email to

[Prev in Thread] Current Thread [Next in Thread]