commit 1b16fcb70cb9507184fe7316396c93c1daa12674 Author: Nick Mathewson nickm@torproject.org Date: Thu May 9 11:26:13 2019 -0400
Add a --list-modules command
Closes ticket 30452. --- changes/bug30452 | 3 +++ doc/tor.1.txt | 4 ++++ src/app/config/config.c | 13 +++++++++++++ src/feature/dirauth/authmode.h | 4 ++++ 4 files changed, 24 insertions(+)
diff --git a/changes/bug30452 b/changes/bug30452 new file mode 100644 index 000000000..2bb401d87 --- /dev/null +++ b/changes/bug30452 @@ -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. diff --git a/doc/tor.1.txt b/doc/tor.1.txt index 975a19818..f46929897 100644 --- a/doc/tor.1.txt +++ b/doc/tor.1.txt @@ -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.
diff --git a/src/app/config/config.c b/src/app/config/config.c index 2a504d306..7ccd76e7f 100644 --- a/src/app/config/config.c +++ b/src/app/config/config.c @@ -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"); diff --git a/src/feature/dirauth/authmode.h b/src/feature/dirauth/authmode.h index 40a89c739..876a1f947 100644 --- a/src/feature/dirauth/authmode.h +++ b/src/feature/dirauth/authmode.h @@ -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 */
tor-commits@lists.torproject.org