From: Nick Mathewson Date: Mon, 29 Sep 2008 14:18:47 +0000 (+0000) Subject: Make tor-resolve take a -p port option in addition to the current host:port syntax. X-Git-Tag: tor-0.2.1.6-alpha~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ee0078ead4d41dc87c080ab5d9ec955770aca3de;p=thirdparty%2Ftor.git Make tor-resolve take a -p port option in addition to the current host:port syntax. svn:r17002 --- diff --git a/ChangeLog b/ChangeLog index 94a59ae554..8673a7b3c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -60,6 +60,8 @@ Changes in version 0.2.1.6-alpha - 2008-09-29 single-hop circuits, and clients to use those servers to build single-hop circuits when using a specialized controller. Patch from Josh Albrecht. Resolves feature request 768. + - Add a -p option to tor-resolve for specifying the SOCKS port: some + people find host:port too confusing. o Minor bugfixes: - Fix compile on OpenBSD 4.4-current. Bugfix on 0.2.1.5-alpha. diff --git a/src/tools/tor-resolve.c b/src/tools/tor-resolve.c index 04822a15d6..90f736df35 100644 --- a/src/tools/tor-resolve.c +++ b/src/tools/tor-resolve.c @@ -293,7 +293,7 @@ do_resolve(const char *hostname, uint32_t sockshost, uint16_t socksport, static void usage(void) { - puts("Syntax: tor-resolve [-4] [-v] [-x] [-F] " + puts("Syntax: tor-resolve [-4] [-v] [-x] [-F] [-p port] " "hostname [sockshost:socksport]"); exit(1); } @@ -303,7 +303,7 @@ int main(int argc, char **argv) { uint32_t sockshost; - uint16_t socksport; + uint16_t socksport = 0, port_option = 0; int isSocks4 = 0, isVerbose = 0, isReverse = 0, force = 0; char **arg; int n_args; @@ -336,7 +336,21 @@ main(int argc, char **argv) isReverse = 1; else if (!strcmp("-F", arg[0])) force = 1; - else { + else if (!strcmp("-p", arg[0])) { + int p; + if (n_args < 2) { + fprintf(stderr, "No arguments given to -p\n"); + usage(); + } + p = atoi(arg[1]); + if (p<1 || p > 65535) { + fprintf(stderr, "-p requires a number between 1 and 65535\n"); + usage(); + } + port_option = (uint16_t) p; + ++arg; /* skip the port */ + --n_args; + } else { fprintf(stderr, "Unrecognized flag '%s'\n", arg[0]); usage(); } @@ -356,15 +370,26 @@ main(int argc, char **argv) add_stream_log(s, "", stderr); if (n_args == 1) { - log_debug(LD_CONFIG, "defaulting to localhost:9050"); + log_debug(LD_CONFIG, "defaulting to localhost"); sockshost = 0x7f000001u; /* localhost */ - socksport = 9050; /* 9050 */ + if (port_option) { + log_debug(LD_CONFIG, "Using port %d", (int)port_option); + socksport = port_option; + } else { + log_debug(LD_CONFIG, "defaulting to port 9050"); + socksport = 9050; /* 9050 */ + } } else if (n_args == 2) { if (parse_addr_port(LOG_WARN, arg[1], NULL, &sockshost, &socksport)<0) { fprintf(stderr, "Couldn't parse/resolve address %s", arg[1]); return 1; } - if (socksport == 0) { + if (socksport && port_option && socksport != port_option) { + log_warn(LD_CONFIG, "Conflicting ports; using %d, not %d", + (int)socksport, (int)port_option); + } else if (port_option) { + socksport = port_option; + } else { log_debug(LD_CONFIG, "defaulting to port 9050"); socksport = 9050; }