mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-08 12:44:23 +01:00
dirmngr: Pass Tor credentials to libdns.
* dirmngr/dns-stuff.c (tor_credentials): Replace by ... (tor_socks_user, tor_socks_password): new vars. (enable_dns_tormode): Set these new vars. (libdns_res_open): Tell libdns the socks credentials. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
59d3c3e4ba
commit
ddb4808683
@ -118,8 +118,10 @@ static int tor_mode;
|
|||||||
(40 should be sufficient for v6 but we add some extra for a scope.) */
|
(40 should be sufficient for v6 but we add some extra for a scope.) */
|
||||||
static char tor_nameserver[40+20];
|
static char tor_nameserver[40+20];
|
||||||
|
|
||||||
/* A string to hold the credentials presented to Tor. */
|
/* Two strings to hold the credentials presented to Tor. */
|
||||||
static char tor_credentials[50];
|
static char tor_socks_user[30];
|
||||||
|
static char tor_socks_password[20];
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_LIBDNS
|
#ifdef USE_LIBDNS
|
||||||
/* Libdns gobal data. */
|
/* Libdns gobal data. */
|
||||||
@ -177,15 +179,14 @@ recursive_resolver_p (void)
|
|||||||
gpg_error_t
|
gpg_error_t
|
||||||
enable_dns_tormode (int new_circuit)
|
enable_dns_tormode (int new_circuit)
|
||||||
{
|
{
|
||||||
/* XXX: dns.c doesn't support SOCKS credentials. */
|
if (!*tor_socks_user || new_circuit)
|
||||||
|
|
||||||
if (!*tor_credentials || new_circuit)
|
|
||||||
{
|
{
|
||||||
static unsigned int counter;
|
static unsigned int counter;
|
||||||
|
|
||||||
gpgrt_snprintf (tor_credentials, sizeof tor_credentials,
|
gpgrt_snprintf (tor_socks_user, sizeof tor_socks_user,
|
||||||
"dirmngr-%lu:p%u",
|
"dirmngr-%lu", (unsigned long)getpid ());
|
||||||
(unsigned long)getpid (), counter);
|
gpgrt_snprintf (tor_socks_password, sizeof tor_socks_password,
|
||||||
|
"p%u", counter);
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
tor_mode = 1;
|
tor_mode = 1;
|
||||||
@ -428,7 +429,10 @@ libdns_res_open (struct dns_resolver **r_res)
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
res = dns_res_open (libdns.resolv_conf, libdns.hosts, libdns.hints, NULL,
|
res = dns_res_open (libdns.resolv_conf, libdns.hosts, libdns.hints, NULL,
|
||||||
dns_opts (.socks_host=&libdns.socks_host), &derr);
|
dns_opts (.socks_host = &libdns.socks_host,
|
||||||
|
.socks_user = tor_socks_user,
|
||||||
|
.socks_password = tor_socks_password ),
|
||||||
|
&derr);
|
||||||
if (!res)
|
if (!res)
|
||||||
return libdns_error_to_gpg_error (derr);
|
return libdns_error_to_gpg_error (derr);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user