mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Added --library-versions flag to print the compile time and runtime versions of libevent, openssl and zlib. Partially implements #6384.
This commit is contained in:
parent
00bcc25d05
commit
6e17fa6d7b
2
changes/bug6384
Normal file
2
changes/bug6384
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
o Minor features:
|
||||||
|
- Add support for `--library-versions` flag. Implements ticket #6384.
|
@ -415,6 +415,14 @@ tor_check_libevent_version(const char *m, int server,
|
|||||||
#define HEADER_VERSION _EVENT_VERSION
|
#define HEADER_VERSION _EVENT_VERSION
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** Return a string representation of the version of Libevent that was used
|
||||||
|
* at compilation time. */
|
||||||
|
const char *
|
||||||
|
tor_libevent_get_header_version_str(void)
|
||||||
|
{
|
||||||
|
return HEADER_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
/** See whether the headers we were built against differ from the library we
|
/** See whether the headers we were built against differ from the library we
|
||||||
* linked against so much that we're likely to crash. If so, warn the
|
* linked against so much that we're likely to crash. If so, warn the
|
||||||
* user. */
|
* user. */
|
||||||
|
@ -78,6 +78,7 @@ void tor_check_libevent_version(const char *m, int server,
|
|||||||
const char **badness_out);
|
const char **badness_out);
|
||||||
void tor_check_libevent_header_compatibility(void);
|
void tor_check_libevent_header_compatibility(void);
|
||||||
const char *tor_libevent_get_version_str(void);
|
const char *tor_libevent_get_version_str(void);
|
||||||
|
const char *tor_libevent_get_header_version_str(void);
|
||||||
|
|
||||||
#ifdef USE_BUFFEREVENTS
|
#ifdef USE_BUFFEREVENTS
|
||||||
const struct timeval *tor_libevent_get_one_tick_timeout(void);
|
const struct timeval *tor_libevent_get_one_tick_timeout(void);
|
||||||
|
@ -195,13 +195,9 @@ try_load_engine(const char *path, const char *engine)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char *crypto_openssl_version_str = NULL;
|
static char *
|
||||||
/* Return a human-readable version of the run-time openssl version number. */
|
parse_openssl_version_str(const char *raw_version)
|
||||||
const char *
|
|
||||||
crypto_openssl_get_version_str(void)
|
|
||||||
{
|
{
|
||||||
if (crypto_openssl_version_str == NULL) {
|
|
||||||
const char *raw_version = SSLeay_version(SSLEAY_VERSION);
|
|
||||||
const char *end_of_version = NULL;
|
const char *end_of_version = NULL;
|
||||||
/* The output should be something like "OpenSSL 1.0.0b 10 May 2012. Let's
|
/* The output should be something like "OpenSSL 1.0.0b 10 May 2012. Let's
|
||||||
trim that down. */
|
trim that down. */
|
||||||
@ -211,14 +207,33 @@ crypto_openssl_get_version_str(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (end_of_version)
|
if (end_of_version)
|
||||||
crypto_openssl_version_str = tor_strndup(raw_version,
|
return tor_strndup(raw_version,
|
||||||
end_of_version-raw_version);
|
end_of_version-raw_version);
|
||||||
else
|
else
|
||||||
crypto_openssl_version_str = tor_strdup(raw_version);
|
return tor_strdup(raw_version);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *crypto_openssl_version_str = NULL;
|
||||||
|
/* Return a human-readable version of the run-time openssl version number. */
|
||||||
|
const char *
|
||||||
|
crypto_openssl_get_version_str(void)
|
||||||
|
{
|
||||||
|
if (crypto_openssl_version_str == NULL) {
|
||||||
|
const char *raw_version = SSLeay_version(SSLEAY_VERSION);
|
||||||
|
crypto_openssl_version_str = parse_openssl_version_str(raw_version);
|
||||||
}
|
}
|
||||||
return crypto_openssl_version_str;
|
return crypto_openssl_version_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return a human-readable version of the compile-time openssl version
|
||||||
|
* number. */
|
||||||
|
const char *
|
||||||
|
crypto_openssl_get_header_version_str(void)
|
||||||
|
{
|
||||||
|
//return OPENSSL_VERSION_TEXT;
|
||||||
|
return parse_openssl_version_str(OPENSSL_VERSION_TEXT);
|
||||||
|
}
|
||||||
|
|
||||||
/** Initialize the crypto library. Return 0 on success, -1 on failure.
|
/** Initialize the crypto library. Return 0 on success, -1 on failure.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
|
@ -109,6 +109,7 @@ typedef struct crypto_dh_t crypto_dh_t;
|
|||||||
|
|
||||||
/* global state */
|
/* global state */
|
||||||
const char * crypto_openssl_get_version_str(void);
|
const char * crypto_openssl_get_version_str(void);
|
||||||
|
const char * crypto_openssl_get_header_version_str(void);
|
||||||
int crypto_global_init(int hardwareAccel,
|
int crypto_global_init(int hardwareAccel,
|
||||||
const char *accelName,
|
const char *accelName,
|
||||||
const char *accelPath);
|
const char *accelPath);
|
||||||
|
@ -68,6 +68,22 @@ is_gzip_supported(void)
|
|||||||
return gzip_is_supported;
|
return gzip_is_supported;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return a string representation of the version of the currently running
|
||||||
|
* version of zlib. */
|
||||||
|
const char *
|
||||||
|
tor_zlib_get_version_str(void)
|
||||||
|
{
|
||||||
|
return zlibVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return a string representation of the version of the version of zlib
|
||||||
|
* used at compilation. */
|
||||||
|
const char *
|
||||||
|
tor_zlib_get_header_version_str(void)
|
||||||
|
{
|
||||||
|
return ZLIB_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
/** Return the 'bits' value to tell zlib to use <b>method</b>.*/
|
/** Return the 'bits' value to tell zlib to use <b>method</b>.*/
|
||||||
static INLINE int
|
static INLINE int
|
||||||
method_bits(compress_method_t method)
|
method_bits(compress_method_t method)
|
||||||
|
@ -32,6 +32,12 @@ tor_gzip_uncompress(char **out, size_t *out_len,
|
|||||||
|
|
||||||
int is_gzip_supported(void);
|
int is_gzip_supported(void);
|
||||||
|
|
||||||
|
const char *
|
||||||
|
tor_zlib_get_version_str(void);
|
||||||
|
|
||||||
|
const char *
|
||||||
|
tor_zlib_get_header_version_str(void);
|
||||||
|
|
||||||
compress_method_t detect_compression_method(const char *in, size_t in_len);
|
compress_method_t detect_compression_method(const char *in, size_t in_len);
|
||||||
|
|
||||||
/** Return values from tor_zlib_process; see that function's documentation for
|
/** Return values from tor_zlib_process; see that function's documentation for
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#include "statefile.h"
|
#include "statefile.h"
|
||||||
#include "transports.h"
|
#include "transports.h"
|
||||||
#include "ext_orport.h"
|
#include "ext_orport.h"
|
||||||
|
#include "torgzip.h"
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
#endif
|
#endif
|
||||||
@ -3816,6 +3817,7 @@ options_init_from_torrc(int argc, char **argv)
|
|||||||
printf("Tor version %s.\n",get_version());
|
printf("Tor version %s.\n",get_version());
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 1 && (!strcmp(argv[1],"--digests"))) {
|
if (argc > 1 && (!strcmp(argv[1],"--digests"))) {
|
||||||
printf("Tor version %s.\n",get_version());
|
printf("Tor version %s.\n",get_version());
|
||||||
printf("%s", libor_get_digests());
|
printf("%s", libor_get_digests());
|
||||||
@ -3823,6 +3825,22 @@ options_init_from_torrc(int argc, char **argv)
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argc > 1 && (!strcmp(argv[1],"--library-versions"))) {
|
||||||
|
printf("Tor version %s. \n", get_version());
|
||||||
|
printf("Library versions\tCompiled\t\tRuntime\n");
|
||||||
|
printf("Libevent\t\t%-15s\t\t%s\n",
|
||||||
|
tor_libevent_get_header_version_str(),
|
||||||
|
tor_libevent_get_version_str());
|
||||||
|
printf("OpenSSL \t\t%-15s\t\t%s\n",
|
||||||
|
crypto_openssl_get_header_version_str(),
|
||||||
|
crypto_openssl_get_version_str());
|
||||||
|
printf("Zlib \t\t%-15s\t\t%s\n",
|
||||||
|
tor_zlib_get_header_version_str(),
|
||||||
|
tor_zlib_get_version_str());
|
||||||
|
//TODO: Hex versions?
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
/* Go through command-line variables */
|
/* Go through command-line variables */
|
||||||
if (!global_cmdline_options) {
|
if (!global_cmdline_options) {
|
||||||
/* Or we could redo the list every time we pass this place.
|
/* Or we could redo the list every time we pass this place.
|
||||||
|
@ -2343,6 +2343,8 @@ tor_init(int argc, char *argv[])
|
|||||||
/* --version implies --quiet */
|
/* --version implies --quiet */
|
||||||
if (!strcmp(argv[i], "--version"))
|
if (!strcmp(argv[i], "--version"))
|
||||||
quiet = 2;
|
quiet = 2;
|
||||||
|
if (!strcmp(argv[i], "--library-versions"))
|
||||||
|
quiet = 2;
|
||||||
}
|
}
|
||||||
/* give it somewhere to log to initially */
|
/* give it somewhere to log to initially */
|
||||||
switch (quiet) {
|
switch (quiet) {
|
||||||
@ -2365,11 +2367,12 @@ tor_init(int argc, char *argv[])
|
|||||||
#else
|
#else
|
||||||
"";
|
"";
|
||||||
#endif
|
#endif
|
||||||
log_notice(LD_GENERAL, "Tor v%s %srunning on %s with Libevent %s "
|
log_notice(LD_GENERAL, "Tor v%s %srunning on %s with Libevent %s, "
|
||||||
"and OpenSSL %s.", version, bev_str,
|
"OpenSSL %s and Zlib %s.", version, bev_str,
|
||||||
get_uname(),
|
get_uname(),
|
||||||
tor_libevent_get_version_str(),
|
tor_libevent_get_version_str(),
|
||||||
crypto_openssl_get_version_str());
|
crypto_openssl_get_version_str(),
|
||||||
|
tor_zlib_get_version_str());
|
||||||
|
|
||||||
log_notice(LD_GENERAL, "Tor can't help you if you use it wrong! "
|
log_notice(LD_GENERAL, "Tor can't help you if you use it wrong! "
|
||||||
"Learn how to be safe at "
|
"Learn how to be safe at "
|
||||||
|
Loading…
Reference in New Issue
Block a user