Bladeren bron

Merge remote-tracking branch 'andrea/ticket14840'

Nick Mathewson 9 jaren geleden
bovenliggende
commit
af83a205b0
2 gewijzigde bestanden met toevoegingen van 74 en 39 verwijderingen
  1. 5 0
      changes/ticket14840
  2. 69 39
      src/or/config.c

+ 5 - 0
changes/ticket14840

@@ -0,0 +1,5 @@
+  o Minor features:
+    - Add DirAuthority lines for default directory authorities to output
+      of the GETINFO config/defaults controller command if not already
+      present.  Implements ticket 14840.
+

+ 69 - 39
src/or/config.c

@@ -839,6 +839,41 @@ escaped_safe_str(const char *address)
     return escaped(address);
 }
 
+/** List of default directory authorities */
+
+static const char *default_authorities[] = {
+  "moria1 orport=9101 "
+    "v3ident=D586D18309DED4CD6D57C18FDB97EFA96D330566 "
+    "128.31.0.39:9131 9695 DFC3 5FFE B861 329B 9F1A B04C 4639 7020 CE31",
+  "tor26 orport=443 "
+    "v3ident=14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4 "
+    "86.59.21.38:80 847B 1F85 0344 D787 6491 A548 92F9 0493 4E4E B85D",
+  "dizum orport=443 "
+    "v3ident=E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58 "
+    "194.109.206.212:80 7EA6 EAD6 FD83 083C 538F 4403 8BBF A077 587D D755",
+  "Tonga orport=443 bridge "
+    "82.94.251.203:80 4A0C CD2D DC79 9508 3D73 F5D6 6710 0C8A 5831 F16D",
+  "gabelmoo orport=443 "
+    "v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 "
+    "131.188.40.189:80 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281",
+  "dannenberg orport=443 "
+    "v3ident=585769C78764D58426B8B52B6651A5A71137189A "
+    "193.23.244.244:80 7BE6 83E6 5D48 1413 21C5 ED92 F075 C553 64AC 7123",
+  "urras orport=80 "
+    "v3ident=80550987E1D626E3EBA5E5E75A458DE0626D088C "
+    "208.83.223.34:443 0AD3 FA88 4D18 F89E EA2D 89C0 1937 9E0E 7FD9 4417",
+  "maatuska orport=80 "
+    "v3ident=49015F787433103580E3B66A1707A00E60F2D15B "
+    "171.25.193.9:443 BD6A 8292 55CB 08E6 6FBE 7D37 4836 3586 E46B 3810",
+  "Faravahar orport=443 "
+    "v3ident=EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 "
+    "154.35.175.225:80 CF6D 0AAF B385 BE71 B8E1 11FC 5CFF 4B47 9237 33BC",
+  "longclaw orport=443 "
+    "v3ident=23D15D965BC35114467363C165C4F724B64B4F66 "
+    "199.254.238.52:80 74A9 1064 6BCE EFBC D2E8 74FC 1DC9 9743 0F96 8145",
+  NULL
+};
+
 /** Add the default directory authorities directly into the trusted dir list,
  * but only add them insofar as they share bits with <b>type</b>.
  * Each authority's bits are restricted to the bits shared with <b>type</b>.
@@ -847,42 +882,10 @@ static void
 add_default_trusted_dir_authorities(dirinfo_type_t type)
 {
   int i;
-  const char *authorities[] = {
-    "moria1 orport=9101 "
-      "v3ident=D586D18309DED4CD6D57C18FDB97EFA96D330566 "
-      "128.31.0.39:9131 9695 DFC3 5FFE B861 329B 9F1A B04C 4639 7020 CE31",
-    "tor26 orport=443 "
-      "v3ident=14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4 "
-      "86.59.21.38:80 847B 1F85 0344 D787 6491 A548 92F9 0493 4E4E B85D",
-    "dizum orport=443 "
-      "v3ident=E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58 "
-      "194.109.206.212:80 7EA6 EAD6 FD83 083C 538F 4403 8BBF A077 587D D755",
-    "Tonga orport=443 bridge "
-      "82.94.251.203:80 4A0C CD2D DC79 9508 3D73 F5D6 6710 0C8A 5831 F16D",
-    "gabelmoo orport=443 "
-      "v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 "
-      "131.188.40.189:80 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281",
-    "dannenberg orport=443 "
-      "v3ident=585769C78764D58426B8B52B6651A5A71137189A "
-      "193.23.244.244:80 7BE6 83E6 5D48 1413 21C5 ED92 F075 C553 64AC 7123",
-    "urras orport=80 "
-      "v3ident=80550987E1D626E3EBA5E5E75A458DE0626D088C "
-      "208.83.223.34:443 0AD3 FA88 4D18 F89E EA2D 89C0 1937 9E0E 7FD9 4417",
-    "maatuska orport=80 "
-      "v3ident=49015F787433103580E3B66A1707A00E60F2D15B "
-      "171.25.193.9:443 BD6A 8292 55CB 08E6 6FBE 7D37 4836 3586 E46B 3810",
-    "Faravahar orport=443 "
-      "v3ident=EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 "
-      "154.35.175.225:80 CF6D 0AAF B385 BE71 B8E1 11FC 5CFF 4B47 9237 33BC",
-    "longclaw orport=443 "
-      "v3ident=23D15D965BC35114467363C165C4F724B64B4F66 "
-      "199.254.238.52:80 74A9 1064 6BCE EFBC D2E8 74FC 1DC9 9743 0F96 8145",
-    NULL
-  };
-  for (i=0; authorities[i]; i++) {
-    if (parse_dir_authority_line(authorities[i], type, 0)<0) {
+  for (i=0; default_authorities[i]; i++) {
+    if (parse_dir_authority_line(default_authorities[i], type, 0)<0) {
       log_err(LD_BUG, "Couldn't parse internal DirAuthority line %s",
-              authorities[i]);
+              default_authorities[i]);
     }
   }
 }
@@ -6977,15 +6980,42 @@ getinfo_helper_config(control_connection_t *conn,
     smartlist_free(sl);
   } else if (!strcmp(question, "config/defaults")) {
     smartlist_t *sl = smartlist_new();
-    int i;
+    int i, dirauth_lines_seen = 0;
     for (i = 0; option_vars_[i].name; ++i) {
       const config_var_t *var = &option_vars_[i];
       if (var->initvalue != NULL) {
-          char *val = esc_for_log(var->initvalue);
-          smartlist_add_asprintf(sl, "%s %s\n",var->name,val);
-          tor_free(val);
+        if (strcmp(option_vars_[i].name, "DirAuthority") == 0) {
+          /*
+           * Count dirauth lines we have a default for; we'll use the
+           * count later to decide whether to add the defaults manually
+           */
+          ++dirauth_lines_seen;
+        }
+        char *val = esc_for_log(var->initvalue);
+        smartlist_add_asprintf(sl, "%s %s\n",var->name,val);
+        tor_free(val);
       }
     }
+
+    if (dirauth_lines_seen == 0) {
+      /*
+       * We didn't see any directory authorities with default values,
+       * so add the list of default authorities manually.
+       */
+      const char **i;
+
+      /*
+       * default_authorities is defined earlier in this file and
+       * is a const char ** NULL-terminated array of dirauth config
+       * lines.
+       */
+      for (i = default_authorities; *i != NULL; ++i) {
+        char *val = esc_for_log(*i);
+        smartlist_add_asprintf(sl, "DirAuthority %s\n", val);
+        tor_free(val);
+      }
+    }
+
     *answer = smartlist_join_strings(sl, "", 0, NULL);
     SMARTLIST_FOREACH(sl, char *, c, tor_free(c));
     smartlist_free(sl);