[or-cvs] When using eventdns: suppress logging of addresses when Saf...

Nick Mathewson nickm at seul.org
Fri Jul 7 17:33:32 UTC 2006


Update of /home/or/cvsroot/tor/src/or
In directory moria:/tmp/cvs-serv2115/src/or

Modified Files:
	config.c dns.c or.h 
Log Message:
When using eventdns: suppress logging of addresses when SafeLogging is active, and make set of nameservers configurable from torrc.

Index: config.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/config.c,v
retrieving revision 1.569
retrieving revision 1.570
diff -u -p -d -r1.569 -r1.570
--- config.c	6 Jul 2006 02:44:05 -0000	1.569
+++ config.c	7 Jul 2006 17:33:29 -0000	1.570
@@ -58,6 +58,7 @@ static config_abbrev_t _option_abbrevs[]
   PLURAL(LongLivedPort),
   PLURAL(HiddenServiceNode),
   PLURAL(HiddenServiceExcludeNode),
+  PLURAL(Nameserver),
   PLURAL(NumCpu),
   PLURAL(RendNode),
   PLURAL(RendExcludeNode),
@@ -191,6 +192,7 @@ static config_var_t _option_vars[] = {
   OBSOLETE("MonthlyAccountingStart"),
   VAR("MyFamily",            STRING,   MyFamily,             NULL),
   VAR("NewCircuitPeriod",    INTERVAL, NewCircuitPeriod,     "30 seconds"),
+  VAR("Nameservers",         CSV,      Nameservers,          ""),
   VAR("NamingAuthoritativeDirectory",BOOL, NamingAuthoritativeDir, "0"),
   VAR("Nickname",            STRING,   Nickname,             NULL),
   VAR("NoPublish",           BOOL,     NoPublish,            "0"),
@@ -1971,6 +1973,30 @@ validate_ports_csv(smartlist_t *sl, cons
   return 0;
 }
 
+/* Return 0 if every element of sl is a string holding an IP address, or if sl
+ * is NULL.  Otherwise set *msg and return -1. */
+static int
+validate_ips_csv(smartlist_t *sl, const char *name, char **msg)
+{
+  char buf[1024];
+  tor_assert(name);
+
+  if (!sl)
+    return 0;
+
+  SMARTLIST_FOREACH(sl, const char *, cp,
+  {
+    struct in_addr in;
+    if (0 == tor_inet_aton(cp, &in)) {
+      int r = tor_snprintf(buf, sizeof(buf),
+                        "Malformed address '%s' out of range in %s", cp, name);
+      *msg = tor_strdup(r >= 0 ? buf : "internal error");
+      return -1;
+    }
+  });
+  return 0;
+}
+
 /** Lowest allowable value for RendPostPeriod; if this is too low, hidden
  * services can overload the directory system. */
 #define MIN_REND_POST_PERIOD (5*60)
@@ -2186,6 +2212,9 @@ options_validate(or_options_t *old_optio
   if (validate_ports_csv(options->LongLivedPorts, "LongLivedPorts", msg) < 0)
     return -1;
 
+  if (validate_ips_csv(options->Nameservers, "Nameservers", msg) < 0)
+    return -1;
+
   if (options->FascistFirewall && !options->ReachableAddresses) {
     if (smartlist_len(options->FirewallPorts)) {
       /* We already have firewall ports set, so migrate them to

Index: dns.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/dns.c,v
retrieving revision 1.194
retrieving revision 1.195
diff -u -p -d -r1.194 -r1.195
--- dns.c	5 Jul 2006 21:42:18 -0000	1.194
+++ dns.c	7 Jul 2006 17:33:30 -0000	1.195
@@ -122,6 +122,11 @@ init_cache_map(void)
 static void
 eventdns_log_cb(const char *msg)
 {
+  if (!strcmpstart(msg, "Resolve requested for") &&
+      get_options()->SafeLogging) {
+    log(LOG_INFO, LD_EXIT, "eventdns: Resolve requested.");
+    return;
+  }
   log(LOG_INFO, LD_EXIT, "eventdns: %s", msg);
 }
 #endif
@@ -130,12 +135,29 @@ eventdns_log_cb(const char *msg)
 void
 dns_init(void)
 {
+
   init_cache_map();
   dnsworkers_rotate();
 #ifdef USE_EVENTDNS
-  eventdns_set_log_fn(eventdns_log_cb);
-  eventdns_resolv_conf_parse(DNS_OPTION_NAMESERVERS|DNS_OPTION_MISC,
-                             "/etc/resolv.conf");
+  {
+    or_options_t *options = get_options();
+    eventdns_set_log_fn(eventdns_log_cb);
+    if (options->Nameservers && smartlist_len(options->Nameservers)) {
+      SMARTLIST_FOREACH(options->Nameservers, const char *, ip,
+        {
+          struct in_addr in;
+          log_info(LD_EXIT, "Parsing /etc/resolv.conf");
+          if (tor_inet_aton(ip, &in)) {
+            log_info(LD_EXIT, "Adding nameserver '%s'", ip);
+            eventdns_nameserver_add(in.s_addr);
+          }
+        });
+    } else {
+      log_info(LD_EXIT, "Parsing /etc/resolv.conf");
+      eventdns_resolv_conf_parse(DNS_OPTION_NAMESERVERS|DNS_OPTION_MISC,
+                                 "/etc/resolv.conf");
+    }
+  }
 #endif
 }
 

Index: or.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/or.h,v
retrieving revision 1.847
retrieving revision 1.848
diff -u -p -d -r1.847 -r1.848
--- or.h	4 Jul 2006 03:31:27 -0000	1.847
+++ or.h	7 Jul 2006 17:33:30 -0000	1.848
@@ -1414,6 +1414,8 @@ typedef struct {
 
   char *VirtualAddrNetwork; /**< Address and mask to hand out for virtual
                              * MAPADDRESS requests. */
+  smartlist_t *Nameservers; /**< If provided, overrides the platform nameserver
+                             * list. when using eventdns. */
 } or_options_t;
 
 /** Persistent state for an onion router, as saved to disk. */



More information about the tor-commits mailing list