]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add a --list-modules command
authorNick Mathewson <nickm@torproject.org>
Thu, 9 May 2019 15:26:13 +0000 (11:26 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 14 May 2019 23:19:53 +0000 (19:19 -0400)
Closes ticket 30452.

changes/bug30452 [new file with mode: 0644]
doc/tor.1.txt
src/app/config/config.c
src/feature/dirauth/authmode.h

diff --git a/changes/bug30452 b/changes/bug30452
new file mode 100644 (file)
index 0000000..2bb401d
--- /dev/null
@@ -0,0 +1,3 @@
+  o Minor features (compile-time modules):
+    - Add a --list-modules command to print a list of which compile-time
+      modules are enabled. Closes ticket 30452.
index 975a1981828f5c2bf8b5226f77274a279444e151..f46929897b457bcf10eb2c73018a6d5f3c11ea37 100644 (file)
@@ -88,6 +88,10 @@ COMMAND-LINE OPTIONS
     List all valid options that are scheduled to become obsolete in a
     future version. (This is a warning, not a promise.)
 
+[[opt-list-modules]] **--list-modules**::
+    For each optional module, list whether or not it has been compiled
+    into Tor.  (Any module not listed is not optional in this version of Tor.)
+
 [[opt-version]] **--version**::
     Display Tor version and exit.
 
index 2a504d3065f1aed084e95726cc47fff9a467b12c..7ccd76e7f023c9124daeb1224fafcb6b2976dffa 100644 (file)
@@ -2474,6 +2474,7 @@ static const struct {
   { "--quiet",                TAKES_NO_ARGUMENT },
   { "--hush",                 TAKES_NO_ARGUMENT },
   { "--version",              TAKES_NO_ARGUMENT },
+  { "--list-modules",         TAKES_NO_ARGUMENT },
   { "--library-versions",     TAKES_NO_ARGUMENT },
   { "-h",                     TAKES_NO_ARGUMENT },
   { "--help",                 TAKES_NO_ARGUMENT },
@@ -2695,6 +2696,13 @@ list_deprecated_options(void)
   }
 }
 
+/** Print all compile-time modules and their enabled/disabled status. */
+static void
+list_enabled_modules(void)
+{
+  printf("%s: %s\n", "dirauth", have_module_dirauth() ? "yes" : "no");
+}
+
 /** Last value actually set by resolve_my_address. */
 static uint32_t last_resolved_addr = 0;
 
@@ -5198,6 +5206,11 @@ options_init_from_torrc(int argc, char **argv)
     return 1;
   }
 
+  if (config_line_find(cmdline_only_options, "--list-modules")) {
+    list_enabled_modules();
+    return 1;
+  }
+
   if (config_line_find(cmdline_only_options, "--library-versions")) {
     printf("Tor version %s. \n", get_version());
     printf("Library versions\tCompiled\t\tRuntime\n");
index 40a89c739726d015eae023e66eddad56f57d4197..876a1f947b433b3ce0231ca9e37e56c9715f8f12 100644 (file)
@@ -27,6 +27,8 @@ authdir_mode_v3(const or_options_t *options)
   return authdir_mode(options) && options->V3AuthoritativeDir != 0;
 }
 
+#define have_module_dirauth() (1)
+
 #else /* HAVE_MODULE_DIRAUTH */
 
 #define authdir_mode(options) (((void)(options)),0)
@@ -37,6 +39,8 @@ authdir_mode_v3(const or_options_t *options)
 #define authdir_mode_bridge(options) (((void)(options)),0)
 #define authdir_mode_v3(options) (((void)(options)),0)
 
+#define have_module_dirauth() (0)
+
 #endif /* HAVE_MODULE_DIRAUTH */
 
 #endif /* TOR_MODE_H */