mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-12 22:23:49 +01:00
Merge remote branch 'origin/maint-0.2.2'
Conflicts: src/or/config.c src/or/cpuworker.c
This commit is contained in:
commit
8c2affe637
4
changes/HTTP
Normal file
4
changes/HTTP
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Code simplifications and refactoring:
|
||||||
|
- Some options used different conventions for uppercasing of acronyms
|
||||||
|
when comparing manpage and source. Fix those in favor of the
|
||||||
|
manpage, as it makes sense to capitalize acronyms.
|
3
changes/minuptimehs
Normal file
3
changes/minuptimehs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
o Minor features:
|
||||||
|
- Make hidden services work better in private networks by not requiring
|
||||||
|
any uptime to join the dht. Implements ticket 2088.
|
4
changes/torrc.complete
Normal file
4
changes/torrc.complete
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Code simplifications and refactorings:
|
||||||
|
- Remove the torrc.complete file. It hasn't been kept up to date
|
||||||
|
and users will have better luck checking out the manpage.
|
||||||
|
|
@ -4,17 +4,14 @@ use strict;
|
|||||||
my %options = ();
|
my %options = ();
|
||||||
my %descOptions = ();
|
my %descOptions = ();
|
||||||
my %torrcSampleOptions = ();
|
my %torrcSampleOptions = ();
|
||||||
my %torrcCompleteOptions = ();
|
|
||||||
my %manPageOptions = ();
|
my %manPageOptions = ();
|
||||||
|
|
||||||
# Load the canonical list as actually accepted by Tor.
|
# Load the canonical list as actually accepted by Tor.
|
||||||
my $mostRecentOption;
|
|
||||||
open(F, "./src/or/tor --list-torrc-options |") or die;
|
open(F, "./src/or/tor --list-torrc-options |") or die;
|
||||||
while (<F>) {
|
while (<F>) {
|
||||||
next if m!\[notice\] Tor v0\.!;
|
next if m!\[notice\] Tor v0\.!;
|
||||||
if (m!^([A-Za-z0-9_]+)!) {
|
if (m!^([A-Za-z0-9_]+)!) {
|
||||||
$mostRecentOption = lc $1;
|
$options{$1} = 1;
|
||||||
$options{$mostRecentOption} = 1;
|
|
||||||
} else {
|
} else {
|
||||||
print "Unrecognized output> ";
|
print "Unrecognized output> ";
|
||||||
print;
|
print;
|
||||||
@ -22,7 +19,7 @@ while (<F>) {
|
|||||||
}
|
}
|
||||||
close F;
|
close F;
|
||||||
|
|
||||||
# Load the contents of torrc.sample and torrc.complete
|
# Load the contents of torrc.sample
|
||||||
sub loadTorrc {
|
sub loadTorrc {
|
||||||
my ($fname, $options) = @_;
|
my ($fname, $options) = @_;
|
||||||
local *F;
|
local *F;
|
||||||
@ -30,7 +27,7 @@ sub loadTorrc {
|
|||||||
while (<F>) {
|
while (<F>) {
|
||||||
next if (m!##+!);
|
next if (m!##+!);
|
||||||
if (m!#([A-Za-z0-9_]+)!) {
|
if (m!#([A-Za-z0-9_]+)!) {
|
||||||
$options->{lc $1} = 1;
|
$options->{$1} = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close F;
|
close F;
|
||||||
@ -38,7 +35,6 @@ sub loadTorrc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loadTorrc("./src/config/torrc.sample.in", \%torrcSampleOptions);
|
loadTorrc("./src/config/torrc.sample.in", \%torrcSampleOptions);
|
||||||
loadTorrc("./src/config/torrc.complete.in", \%torrcCompleteOptions);
|
|
||||||
|
|
||||||
# Try to figure out what's in the man page.
|
# Try to figure out what's in the man page.
|
||||||
|
|
||||||
@ -46,7 +42,7 @@ my $considerNextLine = 0;
|
|||||||
open(F, "./doc/tor.1.txt") or die;
|
open(F, "./doc/tor.1.txt") or die;
|
||||||
while (<F>) {
|
while (<F>) {
|
||||||
if (m!^\*\*([A-Za-z0-9_]+)\*\*!) {
|
if (m!^\*\*([A-Za-z0-9_]+)\*\*!) {
|
||||||
$manPageOptions{lc $1} = 1;
|
$manPageOptions{$1} = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close F;
|
close F;
|
||||||
@ -66,8 +62,6 @@ sub subtractHashes {
|
|||||||
# subtractHashes("No online docs", \%options, \%descOptions);
|
# subtractHashes("No online docs", \%options, \%descOptions);
|
||||||
# subtractHashes("Orphaned online docs", \%descOptions, \%options);
|
# subtractHashes("Orphaned online docs", \%descOptions, \%options);
|
||||||
|
|
||||||
subtractHashes("Not in torrc.complete.in", \%options, \%torrcCompleteOptions);
|
|
||||||
subtractHashes("Orphaned in torrc.complete.in", \%torrcCompleteOptions, \%options);
|
|
||||||
subtractHashes("Orphaned in torrc.sample.in", \%torrcSampleOptions, \%options);
|
subtractHashes("Orphaned in torrc.sample.in", \%torrcSampleOptions, \%options);
|
||||||
|
|
||||||
subtractHashes("Not in man page", \%options, \%manPageOptions);
|
subtractHashes("Not in man page", \%options, \%manPageOptions);
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
These hostnames can be passed to Tor as the address part of a SOCKS4a or
|
These hostnames can be passed to Tor as the address part of a SOCKS4a or
|
||||||
SOCKS5 request. If the application is connected to Tor using an IP-only
|
SOCKS5 request. If the application is connected to Tor using an IP-only
|
||||||
method (such as SOCKS4, TransPort, or NatdPort), these hostnames can be
|
method (such as SOCKS4, TransPort, or NATDPort), these hostnames can be
|
||||||
substituted for certain IP addresses using the MapAddress configuration
|
substituted for certain IP addresses using the MapAddress configuration
|
||||||
option or the MAPADDRESS control command.
|
option or the MAPADDRESS control command.
|
||||||
|
|
||||||
|
@ -89,14 +89,14 @@ Other options can be specified either on the command-line (--option
|
|||||||
without impacting network performance.
|
without impacting network performance.
|
||||||
|
|
||||||
**RelayBandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
|
**RelayBandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
|
||||||
If defined, a separate token bucket limits the average incoming bandwidth
|
If not 0, a separate token bucket limits the average incoming bandwidth
|
||||||
usage for \_relayed traffic_ on this node to the specified number of bytes
|
usage for \_relayed traffic_ on this node to the specified number of bytes
|
||||||
per second, and the average outgoing bandwidth usage to that same value.
|
per second, and the average outgoing bandwidth usage to that same value.
|
||||||
Relayed traffic currently is calculated to include answers to directory
|
Relayed traffic currently is calculated to include answers to directory
|
||||||
requests, but that may change in future versions. (Default: 0)
|
requests, but that may change in future versions. (Default: 0)
|
||||||
|
|
||||||
**RelayBandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
|
**RelayBandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
|
||||||
Limit the maximum token bucket size (also known as the burst) for
|
If not 0, limit the maximum token bucket size (also known as the burst) for
|
||||||
\_relayed traffic_ to the given number of bytes in each direction.
|
\_relayed traffic_ to the given number of bytes in each direction.
|
||||||
(Default: 0)
|
(Default: 0)
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ Other options can be specified either on the command-line (--option
|
|||||||
You should never need to change this value, since a network-wide value is
|
You should never need to change this value, since a network-wide value is
|
||||||
published in the consensus and your relay will use that value. (Default: 0)
|
published in the consensus and your relay will use that value. (Default: 0)
|
||||||
|
|
||||||
**ConLimit** __NUM__::
|
**ConnLimit** __NUM__::
|
||||||
The minimum number of file descriptors that must be available to the Tor
|
The minimum number of file descriptors that must be available to the Tor
|
||||||
process before it will start. Tor will ask the OS for as many file
|
process before it will start. Tor will ask the OS for as many file
|
||||||
descriptors as the OS will allow (you can find this by "ulimit -H -n").
|
descriptors as the OS will allow (you can find this by "ulimit -H -n").
|
||||||
@ -426,7 +426,9 @@ The following options are useful only for clients (that is, if
|
|||||||
This option controls whether circuits built by Tor will include relays with
|
This option controls whether circuits built by Tor will include relays with
|
||||||
the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set
|
the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set
|
||||||
to 0, these relays will be included. Note that these relays might be at
|
to 0, these relays will be included. Note that these relays might be at
|
||||||
higher risk of being seized or observed, so they are not normally included.
|
higher risk of being seized or observed, so they are not normally
|
||||||
|
included. Also note that relatively few clients turn off this option,
|
||||||
|
so using these relays might make your client stand out.
|
||||||
(Default: 1)
|
(Default: 1)
|
||||||
|
|
||||||
**Bridge** __IP__:__ORPort__ [fingerprint]::
|
**Bridge** __IP__:__ORPort__ [fingerprint]::
|
||||||
@ -683,7 +685,7 @@ The following options are useful only for clients (that is, if
|
|||||||
|
|
||||||
**AllowDotExit** **0**|**1**::
|
**AllowDotExit** **0**|**1**::
|
||||||
If enabled, we convert "www.google.com.foo.exit" addresses on the
|
If enabled, we convert "www.google.com.foo.exit" addresses on the
|
||||||
SocksPort/TransPort/NatdPort into "www.google.com" addresses that exit from
|
SocksPort/TransPort/NATDPort into "www.google.com" addresses that exit from
|
||||||
the node "foo". Disabled by default since attacking websites and exit
|
the node "foo". Disabled by default since attacking websites and exit
|
||||||
relays can use it to manipulate your path selection. (Default: 0)
|
relays can use it to manipulate your path selection. (Default: 0)
|
||||||
|
|
||||||
@ -764,6 +766,11 @@ The following options are useful only for clients (that is, if
|
|||||||
Like WarnPlaintextPorts, but instead of warning about risky port uses, Tor
|
Like WarnPlaintextPorts, but instead of warning about risky port uses, Tor
|
||||||
will instead refuse to make the connection. (Default: None).
|
will instead refuse to make the connection. (Default: None).
|
||||||
|
|
||||||
|
**AllowSingleHopCircuits** **0**|**1**::
|
||||||
|
When this option is set, the attached Tor controller can use relays
|
||||||
|
that have the **AllowSingleHopExits** option turned on to build
|
||||||
|
one-hop Tor connections. (Default: 0)
|
||||||
|
|
||||||
SERVER OPTIONS
|
SERVER OPTIONS
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
@ -781,7 +788,9 @@ is non-zero):
|
|||||||
**AllowSingleHopExits** **0**|**1**::
|
**AllowSingleHopExits** **0**|**1**::
|
||||||
This option controls whether clients can use this server as a single hop
|
This option controls whether clients can use this server as a single hop
|
||||||
proxy. If set to 1, clients can use this server as an exit even if it is
|
proxy. If set to 1, clients can use this server as an exit even if it is
|
||||||
the only hop in the circuit. (Default: 0)
|
the only hop in the circuit. Note that most clients will refuse to use
|
||||||
|
servers that set this option, since most clients have
|
||||||
|
ExcludeSingleHopRelays set. (Default: 0)
|
||||||
|
|
||||||
**AssumeReachable** **0**|**1**::
|
**AssumeReachable** **0**|**1**::
|
||||||
This option is used when bootstrapping a new Tor network. If set to 1,
|
This option is used when bootstrapping a new Tor network. If set to 1,
|
||||||
@ -1216,6 +1225,11 @@ DIRECTORY AUTHORITY SERVER OPTIONS
|
|||||||
server's preferred number, but the consensus of all preferences. Must be at
|
server's preferred number, but the consensus of all preferences. Must be at
|
||||||
least 2. (Default: 3.)
|
least 2. (Default: 3.)
|
||||||
|
|
||||||
|
**V3BandwidthsFile** __FILENAME__::
|
||||||
|
V3 authoritative directories only. Configures the location of the
|
||||||
|
bandiwdth-authority generated file storing information on relays' measured
|
||||||
|
bandwidth capacities. (Default: unset.)
|
||||||
|
|
||||||
HIDDEN SERVICE OPTIONS
|
HIDDEN SERVICE OPTIONS
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
@ -1284,6 +1298,7 @@ The following options are used for running a testing Tor network.
|
|||||||
V3AuthVotingInterval 5 minutes
|
V3AuthVotingInterval 5 minutes
|
||||||
V3AuthVoteDelay 20 seconds
|
V3AuthVoteDelay 20 seconds
|
||||||
V3AuthDistDelay 20 seconds
|
V3AuthDistDelay 20 seconds
|
||||||
|
MinUptimeHidServDirectoryV2 0 seconds
|
||||||
TestingV3AuthInitialVotingInterval 5 minutes
|
TestingV3AuthInitialVotingInterval 5 minutes
|
||||||
TestingV3AuthInitialVoteDelay 20 seconds
|
TestingV3AuthInitialVoteDelay 20 seconds
|
||||||
TestingV3AuthInitialDistDelay 20 seconds
|
TestingV3AuthInitialDistDelay 20 seconds
|
||||||
|
@ -1,534 +0,0 @@
|
|||||||
####################################################################
|
|
||||||
## This config file is divided into four sections. They are:
|
|
||||||
## 1. Global Options (clients and servers)
|
|
||||||
## 2. Client Options Only
|
|
||||||
## 3. Server Options Only
|
|
||||||
## 4. Directory Server Options (for running your own Tor network)
|
|
||||||
## 5. Hidden Service Options (clients and servers)
|
|
||||||
##
|
|
||||||
## The conventions used are:
|
|
||||||
## double hash (##) is for summary text about the config option;
|
|
||||||
## single hash (#) is for the config option; and,
|
|
||||||
## the config option is always after the text.
|
|
||||||
####################################################################
|
|
||||||
|
|
||||||
|
|
||||||
## Section 1: Global Options (clients and servers)
|
|
||||||
|
|
||||||
## A token bucket limits the average incoming bandwidth on this node
|
|
||||||
## to the specified number of bytes per second. (Default: 2MB)
|
|
||||||
#BandwidthRate N bytes|KB|MB|GB|TB
|
|
||||||
|
|
||||||
## Limit the maximum token bucket size (also known as the burst) to
|
|
||||||
## the given number of bytes. (Default: 5 MB)
|
|
||||||
#BandwidthBurst N bytes|KB|MB|GB|TB
|
|
||||||
|
|
||||||
## If set, we will not advertise more than this amount of bandwidth
|
|
||||||
## for our BandwidthRate. Server operators who want to reduce the
|
|
||||||
## number of clients who ask to build circuits through them (since
|
|
||||||
## this is proportional to advertised bandwidth rate) can thus
|
|
||||||
## reduce the CPU demands on their server without impacting
|
|
||||||
## network performance.
|
|
||||||
#MaxAdvertisedBandwidth N bytes|KB|MB|GB|TB
|
|
||||||
|
|
||||||
## If set, Tor will accept connections from the same machine
|
|
||||||
## (localhost only) on this port, and allow those connections to
|
|
||||||
## control the Tor process using the Tor Control Protocol
|
|
||||||
## (described in control-spec.txt). Note: unless you also specify
|
|
||||||
## one of HashedControlPassword or CookieAuthentication, setting
|
|
||||||
## this option will cause Tor to allow any process on the local
|
|
||||||
## host to control it.
|
|
||||||
#ControlPort Port
|
|
||||||
|
|
||||||
## Don’t allow any connections on the control port except when the
|
|
||||||
## other process knows the password whose one-way hash is
|
|
||||||
## hashed_password. You can compute the hash of a password by
|
|
||||||
## running "tor --hash-password password".
|
|
||||||
#HashedControlPassword hashed_password
|
|
||||||
|
|
||||||
## If this option is set to 1, don’t allow any connections on the
|
|
||||||
## control port except when the connecting process knows the
|
|
||||||
## contents of a file named "control_auth_cookie", which Tor will
|
|
||||||
## create in its data directory. This authentication method
|
|
||||||
## should only be used on systems with good filesystem security.
|
|
||||||
## (Default: 0)
|
|
||||||
#CookieAuthentication 0|1
|
|
||||||
|
|
||||||
## Store working data in DIR (Default: /usr/local/var/lib/tor)
|
|
||||||
#DataDirectory DIR
|
|
||||||
|
|
||||||
## Every time the specified period elapses, Tor downloads a direc-
|
|
||||||
## tory. A directory contains a signed list of all known servers
|
|
||||||
## as well as their current liveness status. A value of "0 sec-
|
|
||||||
## onds" tells Tor to choose an appropriate default.
|
|
||||||
## (Default: 1 hour for clients, 20 minutes for servers)
|
|
||||||
#DirFetchPeriod N seconds|minutes|hours|days|weeks
|
|
||||||
|
|
||||||
## Tor only trusts directories signed with one of these keys, and
|
|
||||||
## uses the given addresses to connect to the trusted directory
|
|
||||||
## servers. If no DirServer lines are specified, Tor uses the built-in
|
|
||||||
## defaults (moria1, moria2, tor26), so you can leave this alone unless
|
|
||||||
## you need to change it.
|
|
||||||
##
|
|
||||||
## WARNING! Changing these options will make your Tor behave
|
|
||||||
## differently from everyone else's, and hurt your anonymity. Even
|
|
||||||
## uncommenting these lines is a bad idea. They are the defaults now,
|
|
||||||
## but the defaults may change in the future, leaving you behind.
|
|
||||||
##
|
|
||||||
#DirServer moria1 v1 18.244.0.188:9031 FFCB 46DB 1339 DA84 674C 70D7 CB58 6434 C437 0441
|
|
||||||
#DirServer moria2 v1 18.244.0.114:80 719B E45D E224 B607 C537 07D0 E214 3E2D 423E 74CF
|
|
||||||
#DirServer tor26 v1 86.59.21.38:80 847B 1F85 0344 D787 6491 A548 92F9 0493 4E4E B85D
|
|
||||||
|
|
||||||
## Attempt to lock current and future memory pages and effectively disable swap
|
|
||||||
# DisableAllSwap 0|1
|
|
||||||
|
|
||||||
## On startup, setgid to this user.
|
|
||||||
#Group GID
|
|
||||||
|
|
||||||
## Tor will make all its directory requests through this host:port
|
|
||||||
## (or host:80 if port is not specified), rather than connecting
|
|
||||||
## directly to any directory servers.
|
|
||||||
#HttpProxy host[:port]
|
|
||||||
|
|
||||||
## If defined, Tor will use this username:password for Basic Http
|
|
||||||
## proxy authentication, as in RFC 2617. This is currently the
|
|
||||||
## only form of Http proxy authentication that Tor supports; feel
|
|
||||||
## free to submit a patch if you want it to support others.
|
|
||||||
#HttpProxyAuthenticator username:password
|
|
||||||
|
|
||||||
## Tor will make all its OR (SSL) connections through this
|
|
||||||
## host:port (or host:443 if port is not specified), via HTTP CON-
|
|
||||||
## NECT rather than connecting directly to servers. You may want
|
|
||||||
## to set FascistFirewall to restrict the set of ports you might
|
|
||||||
## try to connect to, if your Https proxy only allows connecting
|
|
||||||
## to certain ports.
|
|
||||||
#HttpsProxy host[:port]
|
|
||||||
|
|
||||||
## If defined, Tor will use this username:password for Basic Https
|
|
||||||
## proxy authentication, as in RFC 2617. This is currently the
|
|
||||||
## only form of Https proxy authentication that Tor supports; feel
|
|
||||||
## free to submit a patch if you want it to support others.
|
|
||||||
#HttpsProxyAuthenticator username:password
|
|
||||||
|
|
||||||
## To keep firewalls from expiring connections, send a padding
|
|
||||||
## keepalive cell every NUM seconds on open connections that are
|
|
||||||
## in use. If the connection has no open circuits, it will instead
|
|
||||||
## be closed after NUM seconds of idleness. (Default: 5 minutes)
|
|
||||||
#KeepalivePeriod NUM
|
|
||||||
|
|
||||||
## Send all messages between minSeverity and maxSeverity to the
|
|
||||||
## standard output stream, the standard error stream, or to the
|
|
||||||
## system log. (The "syslog" value is only supported on Unix.)
|
|
||||||
## Recognized severity levels are debug, info, notice, warn, and
|
|
||||||
## err. If only one severity level is given, all messages of that
|
|
||||||
## level or higher will be sent to the listed destination.
|
|
||||||
#Log minSeverity[-maxSeverity] stderr|stdout|syslog
|
|
||||||
|
|
||||||
## As above, but send log messages to the listed filename. The
|
|
||||||
## "Log" option may appear more than once in a configuration file.
|
|
||||||
## Messages are sent to all the logs that match their severity
|
|
||||||
## level.
|
|
||||||
#Log minSeverity[-maxSeverity] file FILENAME
|
|
||||||
|
|
||||||
## Maximum number of simultaneous sockets allowed. You probably
|
|
||||||
## don’t need to adjust this. (Default: 1024)
|
|
||||||
#MaxConn NUM
|
|
||||||
|
|
||||||
## Make all outbound connections originate from the IP address
|
|
||||||
## specified. This is only useful when you have multiple network
|
|
||||||
## interfaces, and you want all of Tor’s outgoing connections to
|
|
||||||
## use a single one.
|
|
||||||
#OutboundBindAddress IP
|
|
||||||
|
|
||||||
## On startup, write our PID to FILE. On clean shutdown, remove
|
|
||||||
## FILE.
|
|
||||||
#PIDFile FILE
|
|
||||||
|
|
||||||
## If 1, Tor forks and daemonizes to the background. (Default: 0)
|
|
||||||
#RunAsDaemon 0|1
|
|
||||||
|
|
||||||
## If 1, Tor replaces potentially sensitive strings in the logs
|
|
||||||
## (e.g. addresses) with the string [scrubbed]. This way logs can
|
|
||||||
## still be useful, but they don’t leave behind personally identi-
|
|
||||||
## fying information about what sites a user might have visited.
|
|
||||||
## (Default: 1)
|
|
||||||
#SafeLogging 0|1
|
|
||||||
|
|
||||||
## Every time the specified period elapses, Tor downloads signed
|
|
||||||
## status information about the current state of known servers. A
|
|
||||||
## value of "0 seconds" tells Tor to choose an appropriate
|
|
||||||
## default. (Default: 30 minutes for clients, 15 minutes for
|
|
||||||
## servers)
|
|
||||||
#StatusFetchPeriod N seconds|minutes|hours|days|weeks
|
|
||||||
|
|
||||||
## On startup, setuid to this user.
|
|
||||||
#User UID
|
|
||||||
|
|
||||||
## If non-zero, try to use crypto hardware acceleration when
|
|
||||||
## available. (Default: 1)
|
|
||||||
#HardwareAccel 0|1
|
|
||||||
|
|
||||||
|
|
||||||
## Section 2: Client Options Only
|
|
||||||
|
|
||||||
## Where on our circuits should we allow Tor servers that the
|
|
||||||
## directory servers haven’t authenticated as "verified"?
|
|
||||||
## (Default: middle,rendezvous)
|
|
||||||
#AllowUnverifiedNodes entry|exit|middle|introduction|rendezvous|...
|
|
||||||
|
|
||||||
## If set to 1, Tor will under no circumstances run as a server.
|
|
||||||
## The default is to run as a client unless ORPort is configured.
|
|
||||||
## (Usually, you don’t need to set this; Tor is pretty smart at
|
|
||||||
## figuring out whether you are reliable and high-bandwidth enough
|
|
||||||
## to be a useful server.)
|
|
||||||
## This option will likely be deprecated in the future; see the
|
|
||||||
## NoPublish option below. (Default: 0)
|
|
||||||
#ClientOnly 0|1
|
|
||||||
|
|
||||||
## A list of preferred nodes to use for the first hop in the
|
|
||||||
## circuit, if possible.
|
|
||||||
#EntryNodes nickname,nickname,...
|
|
||||||
|
|
||||||
## A list of preferred nodes to use for the last hop in the
|
|
||||||
## circuit, if possible.
|
|
||||||
#ExitNodes nickname,nickname,...
|
|
||||||
|
|
||||||
## A list of nodes to never use when building a circuit.
|
|
||||||
#ExcludeNodes nickname,nickname,...
|
|
||||||
|
|
||||||
## If 1, Tor will never use any nodes besides those listed in
|
|
||||||
## "exitnodes" for the last hop of a circuit.
|
|
||||||
#StrictExitNodes 0|1
|
|
||||||
|
|
||||||
## If 1, Tor will never use any nodes besides those listed in
|
|
||||||
## "entrynodes" for the first hop of a circuit.
|
|
||||||
#StrictEntryNodes 0|1
|
|
||||||
|
|
||||||
## If 1, Tor will only create outgoing connections to ORs running
|
|
||||||
## on ports that your firewall allows (defaults to 80 and 443; see
|
|
||||||
## FirewallPorts). This will allow you to run Tor as a client
|
|
||||||
## behind a firewall with restrictive policies, but will not allow
|
|
||||||
## you to run as a server behind such a firewall.
|
|
||||||
#FascistFirewall 0|1
|
|
||||||
|
|
||||||
## A list of ports that your firewall allows you to connect to.
|
|
||||||
## Only used when FascistFirewall is set. (Default: 80, 443)
|
|
||||||
#FirewallPorts PORTS
|
|
||||||
|
|
||||||
## A comma-separated list of IPs that your firewall allows you to
|
|
||||||
## connect to. Only used when FascistFirewall is set. The format
|
|
||||||
## is as for the addresses in ExitPolicy.
|
|
||||||
## For example, ’FirewallIPs 99.0.0.0/8, *:80’ means that your
|
|
||||||
## firewall allows connections to everything inside net 99, and
|
|
||||||
## to port 80 outside.
|
|
||||||
#FirewallIPs ADDR[/MASK][:PORT]...
|
|
||||||
|
|
||||||
## A list of ports for services that tend to have long-running
|
|
||||||
## connections (e.g. chat and interactive shells). Circuits for
|
|
||||||
## streams that use these ports will contain only high-uptime
|
|
||||||
## nodes, to reduce the chance that a node will go down before the
|
|
||||||
## stream is finished. (Default: 21, 22, 706, 1863, 5050, 5190,
|
|
||||||
## 5222, 5223, 6667, 8300, 8888)
|
|
||||||
#LongLivedPorts PORTS
|
|
||||||
|
|
||||||
## When a request for address arrives to Tor, it will rewrite it
|
|
||||||
## to newaddress before processing it. For example, if you always
|
|
||||||
## want connections to www.indymedia.org to exit via torserver
|
|
||||||
## (where torserver is the nickname of the server),
|
|
||||||
## use "MapAddress www.indymedia.org www.indymedia.org.torserver.exit".
|
|
||||||
#MapAddress address newaddress
|
|
||||||
|
|
||||||
## Every NUM seconds consider whether to build a new circuit.
|
|
||||||
## (Default: 30 seconds)
|
|
||||||
#NewCircuitPeriod NUM
|
|
||||||
|
|
||||||
## Feel free to reuse a circuit that was first used at most NUM
|
|
||||||
## seconds ago, but never attach a new stream to a circuit that is
|
|
||||||
## too old. (Default: 10 minutes)
|
|
||||||
#MaxCircuitDirtiness NUM
|
|
||||||
|
|
||||||
## The named Tor servers constitute a "family" of similar or co-
|
|
||||||
## administered servers, so never use any two of them in the same
|
|
||||||
## circuit. Defining a NodeFamily is only needed when a server
|
|
||||||
## doesn’t list the family itself (with MyFamily). This option can
|
|
||||||
## be used multiple times.
|
|
||||||
#NodeFamily nickname,nickname,...
|
|
||||||
|
|
||||||
## A list of preferred nodes to use for the rendezvous point, if
|
|
||||||
## possible.
|
|
||||||
#RendNodes nickname,nickname,...
|
|
||||||
|
|
||||||
## A list of nodes to never use when choosing a rendezvous point.
|
|
||||||
#RendExcludeNodes nickname,nickname,...
|
|
||||||
|
|
||||||
## Advertise this port to listen for connections from SOCKS-speak-
|
|
||||||
## ing applications. Set this to 0 if you don’t want to allow
|
|
||||||
## application connections. (Default: 9050)
|
|
||||||
#SOCKSPort PORT
|
|
||||||
|
|
||||||
## Bind to this address to listen for connections from SOCKS-
|
|
||||||
## speaking applications. (Default: 127.0.0.1) You can also spec-
|
|
||||||
## ify a port (e.g. 192.168.0.1:9100). This directive can be spec-
|
|
||||||
## ified multiple times to bind to multiple addresses/ports.
|
|
||||||
#SOCKSBindAddress IP[:PORT]
|
|
||||||
|
|
||||||
## Set an entrance policy for this server, to limit who can con-
|
|
||||||
## nect to the SOCKS ports. The policies have the same form as
|
|
||||||
## exit policies below.
|
|
||||||
#SOCKSPolicy policy,policy,...
|
|
||||||
|
|
||||||
## For each value in the comma separated list, Tor will track
|
|
||||||
## recent connections to hosts that match this value and attempt
|
|
||||||
## to reuse the same exit node for each. If the value is prepended
|
|
||||||
## with a ’.’, it is treated as matching an entire domain. If one
|
|
||||||
## of the values is just a ’.’, it means match everything. This
|
|
||||||
## option is useful if you frequently connect to sites that will
|
|
||||||
## expire all your authentication cookies (ie log you out) if your
|
|
||||||
## IP address changes. Note that this option does have the disad-
|
|
||||||
## vantage of making it more clear that a given history is associ-
|
|
||||||
## ated with a single user. However, most people who would wish to
|
|
||||||
## observe this will observe it through cookies or other protocol-
|
|
||||||
## specific means anyhow.
|
|
||||||
#TrackHostExits host,.domain,...
|
|
||||||
|
|
||||||
## Since exit servers go up and down, it is desirable to expire
|
|
||||||
## the association between host and exit server after NUM seconds.
|
|
||||||
## The default is 1800 seconds (30 minutes).
|
|
||||||
#TrackHostExitsExpire NUM
|
|
||||||
|
|
||||||
## If this option is set to 1, we pick a few entry servers as our
|
|
||||||
## "helpers", and try to use only those fixed entry servers. This
|
|
||||||
## is desirable, because constantly changing servers increases the
|
|
||||||
## odds that an adversary who owns some servers will observe a
|
|
||||||
## fraction of your paths. (Defaults to 0; will eventually
|
|
||||||
## default to 1.)
|
|
||||||
#UseHelperNodes 0|1
|
|
||||||
|
|
||||||
## If UseHelperNodes is set to 1, we will try to pick a total of
|
|
||||||
## NUM helper nodes as entries for our circuits. (Defaults to 3.)
|
|
||||||
#NumHelperNodes NUM
|
|
||||||
|
|
||||||
|
|
||||||
## Section 3: Server Options Only
|
|
||||||
|
|
||||||
## The IP or fqdn of this server (e.g. moria.mit.edu). You can
|
|
||||||
## leave this unset, and Tor will guess your IP.
|
|
||||||
#Address address
|
|
||||||
|
|
||||||
## Administrative contact information for server.
|
|
||||||
#ContactInfo email_address
|
|
||||||
|
|
||||||
## Set an exit policy for this server. Each policy is of the form
|
|
||||||
## "accept|reject ADDR[/MASK][:PORT]". If /MASK is omitted then
|
|
||||||
## this policy just applies to the host given. Instead of giving
|
|
||||||
## a host or network you can also use "*" to denote the universe
|
|
||||||
## (0.0.0.0/0). PORT can be a single port number, an interval of
|
|
||||||
## ports "FROM_PORT-TO_PORT", or "*". If PORT is omitted, that
|
|
||||||
## means "*".
|
|
||||||
##
|
|
||||||
## For example, "reject 127.0.0.1:*,reject 192.168.1.0/24:*,accept
|
|
||||||
## *:*" would reject any traffic destined for localhost and any
|
|
||||||
## 192.168.1.* address, but accept anything else.
|
|
||||||
##
|
|
||||||
## This directive can be specified multiple times so you don’t
|
|
||||||
## have to put it all on one line.
|
|
||||||
##
|
|
||||||
## See RFC 3330 for more details about internal and reserved IP
|
|
||||||
## address space. Policies are considered first to last, and the
|
|
||||||
## first match wins. If you want to _replace_ the default exit
|
|
||||||
## policy, end your exit policy with either a reject *:* or an
|
|
||||||
## accept *:*. Otherwise, you’re _augmenting_ (prepending to) the
|
|
||||||
## default exit policy. The default exit policy is:
|
|
||||||
## reject 0.0.0.0/8
|
|
||||||
## reject 169.254.0.0/16
|
|
||||||
## reject 127.0.0.0/8
|
|
||||||
## reject 192.168.0.0/16
|
|
||||||
## reject 10.0.0.0/8
|
|
||||||
## reject 172.16.0.0/12
|
|
||||||
## reject *:25
|
|
||||||
## reject *:119
|
|
||||||
## reject *:135-139
|
|
||||||
## reject *:445
|
|
||||||
## reject *:1214
|
|
||||||
## reject *:4661-4666
|
|
||||||
## reject *:6346-6429
|
|
||||||
## reject *:6699
|
|
||||||
## reject *:6881-6999
|
|
||||||
## accept *:*
|
|
||||||
#ExitPolicy policy,policy,...
|
|
||||||
|
|
||||||
## If you have more than this number of onionskins queued for
|
|
||||||
## decrypt, reject new ones. (Default: 100)
|
|
||||||
#MaxOnionsPending NUM
|
|
||||||
|
|
||||||
## Declare that this Tor server is controlled or administered by a
|
|
||||||
## group or organization identical or similar to that of the other
|
|
||||||
## named servers. When two servers both declare that they are in
|
|
||||||
## the same ’family’, Tor clients will not use them in the same
|
|
||||||
## circuit. (Each server only needs to list the other servers in
|
|
||||||
## its family; it doesn’t need to list itself, but it won’t hurt.)
|
|
||||||
#MyFamily nickname,nickname,...
|
|
||||||
|
|
||||||
## Set the server’s nickname to ’name’.
|
|
||||||
#Nickname name
|
|
||||||
|
|
||||||
## If you set NoPublish 1, Tor will act as a server if you have an
|
|
||||||
## ORPort defined, but it will not publish its descriptor to the
|
|
||||||
## dirservers. This option is useful if you're testing out your
|
|
||||||
## server, or if you're using alternate dirservers (e.g. for other
|
|
||||||
## Tor networks such as Blossom). (Default: 0)
|
|
||||||
#NoPublish 0|1
|
|
||||||
|
|
||||||
## How many processes to use at once for decrypting onionskins.
|
|
||||||
## (Default: 1)
|
|
||||||
#NumCPUs num
|
|
||||||
|
|
||||||
## Advertise this port to listen for connections from Tor clients
|
|
||||||
## and servers.
|
|
||||||
#ORPort PORT
|
|
||||||
|
|
||||||
## Bind to this IP address to listen for connections from Tor
|
|
||||||
## clients and servers. If you specify a port, bind to this port
|
|
||||||
## rather than the one specified in ORPort. (Default: 0.0.0.0)
|
|
||||||
#ORBindAddress IP[:PORT]
|
|
||||||
|
|
||||||
## Whenever an outgoing connection tries to connect to one of a
|
|
||||||
## given set of addresses, connect to target (an address:port
|
|
||||||
## pair) instead. The address pattern is given in the same format
|
|
||||||
## as for an exit policy. The address translation applies after
|
|
||||||
## exit policies are applied. Multiple RedirectExit options can
|
|
||||||
## be used: once any one has matched successfully, no subsequent
|
|
||||||
## rules are considered. You can specify that no redirection is
|
|
||||||
## to be performed on a given set of addresses by using the spe-
|
|
||||||
## cial target string "pass", which prevents subsequent rules from
|
|
||||||
## being considered.
|
|
||||||
#RedirectExit pattern target
|
|
||||||
|
|
||||||
## When we get a SIGINT and we're a server, we begin shutting
|
|
||||||
## down: we close listeners and start refusing new circuits. After
|
|
||||||
## NUM seconds, we exit. If we get a second SIGINT, we exit imme-
|
|
||||||
## diately. (Default: 30 seconds)
|
|
||||||
#ShutdownWaitLengthNUM
|
|
||||||
|
|
||||||
## Every time the specified period elapses, Tor uploads its server
|
|
||||||
## descriptors to the directory servers. This information is also
|
|
||||||
## uploaded whenever it changes. (Default: 20 minutes)
|
|
||||||
#DirPostPeriod N seconds|minutes|hours|days|weeks
|
|
||||||
|
|
||||||
## A token bucket limits the average relayed bandwidth (server
|
|
||||||
## traffic only, not client traffic) on this node to the specified
|
|
||||||
## number of bytes per second.
|
|
||||||
#RelayBandwidthRate N bytes|KB|MB|GB|TB
|
|
||||||
|
|
||||||
## Limit the maximum token bucket size (also known as the burst) for
|
|
||||||
## relayed traffic (server traffic only, not client traffic) to the
|
|
||||||
## given number of bytes.
|
|
||||||
#RelayBandwidthBurst N bytes|KB|MB|GB|TB
|
|
||||||
|
|
||||||
## Never send more than the specified number of bytes in a given
|
|
||||||
## accounting period, or receive more than that number in the
|
|
||||||
## period. For example, with AccountingMax set to 1 GB, a server
|
|
||||||
## could send 900 MB and receive 800 MB and continue running. It
|
|
||||||
## will only hibernate once one of the two reaches 1 GB. When the
|
|
||||||
## number of bytes is exhausted, Tor will hibernate until some
|
|
||||||
## time in the next accounting period. To prevent all servers
|
|
||||||
## from waking at the same time, Tor will also wait until a random
|
|
||||||
## point in each period before waking up. If you have bandwidth
|
|
||||||
## cost issues, enabling hibernation is preferable to setting a
|
|
||||||
## low bandwidth, since it provides users with a collection of
|
|
||||||
## fast servers that are up some of the time, which is more useful
|
|
||||||
## than a set of slow servers that are always "available".
|
|
||||||
#AccountingMax N bytes|KB|MB|GB|TB
|
|
||||||
|
|
||||||
## Specify how long accounting periods last. If month is given,
|
|
||||||
## each accounting period runs from the time HH:MM on the dayth
|
|
||||||
## day of one month to the same day and time of the next. (The
|
|
||||||
## day must be between 1 and 28.) If week is given, each account-
|
|
||||||
## ing period runs from the time HH:MM of the dayth day of one
|
|
||||||
## week to the same day and time of the next week, with Monday as
|
|
||||||
## day 1 and Sunday as day 7. If day is given, each accounting
|
|
||||||
## period runs from the time HH:MM each day to the same time on
|
|
||||||
## the next day. All times are local, and given in 24-hour time.
|
|
||||||
## (Defaults to "month 1 0:00".)
|
|
||||||
#AccountingStart day|week|month [day] HH:MM
|
|
||||||
|
|
||||||
|
|
||||||
## Section 4: Directory Server Options (for running your own Tor
|
|
||||||
## network)
|
|
||||||
|
|
||||||
## When this option is set to 1, Tor operates as an authoritative
|
|
||||||
## directory server. Instead of caching the directory, it gener-
|
|
||||||
## ates its own list of good servers, signs it, and sends that to
|
|
||||||
## the clients. Unless the clients already have you listed as a
|
|
||||||
## trusted directory, you probably do not want to set this option.
|
|
||||||
## Please coordinate with the other admins at
|
|
||||||
## tor-ops@freehaven.net if you think you should be a directory.
|
|
||||||
#AuthoritativeDirectory 0|1
|
|
||||||
|
|
||||||
## Advertise the directory service on this port.
|
|
||||||
#DirPort PORT
|
|
||||||
|
|
||||||
## Bind the directory service to this address. If you specify a
|
|
||||||
## port, bind to this port rather than the one specified in DirPort.
|
|
||||||
## (Default: 0.0.0.0)
|
|
||||||
#DirBindAddress IP[:PORT]
|
|
||||||
|
|
||||||
## Set an entrance policy for this server, to limit who can con-
|
|
||||||
## nect to the directory ports. The policies have the same form
|
|
||||||
## as exit policies above.
|
|
||||||
#DirPolicy policy,policy,...
|
|
||||||
|
|
||||||
## STRING is a command-separated list of Tor versions currently
|
|
||||||
## believed to be safe. The list is included in each directory,
|
|
||||||
## and nodes which pull down the directory learn whether they need
|
|
||||||
## to upgrade. This option can appear multiple times: the values
|
|
||||||
## from multiple lines are spliced together.
|
|
||||||
#RecommendedVersions STRING
|
|
||||||
|
|
||||||
|
|
||||||
## If set to 1, Tor will accept router descriptors with arbitrary
|
|
||||||
## "Address" elements. Otherwise, if the address is not an IP or
|
|
||||||
## is a private IP, it will reject the router descriptor. Defaults
|
|
||||||
## to 0.
|
|
||||||
#DirAllowPrivateAddresses 0|1
|
|
||||||
|
|
||||||
## If set to 1, Tor tries to build circuits through all of the
|
|
||||||
## servers it knows about, so it can tell which are up and which
|
|
||||||
## are down. This option is only useful for authoritative direc-
|
|
||||||
## tories, so you probably don't want to use it.
|
|
||||||
#RunTesting 0|1
|
|
||||||
|
|
||||||
## Section 5: Hidden Service Options (clients and servers)
|
|
||||||
|
|
||||||
## Store data files for a hidden service in DIRECTORY. Every hid-
|
|
||||||
## den service must have a separate directory. You may use this
|
|
||||||
## option multiple times to specify multiple services.
|
|
||||||
#HiddenServiceDir DIRECTORY
|
|
||||||
|
|
||||||
## Configure a virtual port VIRTPORT for a hidden service. You
|
|
||||||
## may use this option multiple times; each time applies to the
|
|
||||||
## service using the most recent hiddenservicedir. By default,
|
|
||||||
## this option maps the virtual port to the same port on
|
|
||||||
## 127.0.0.1. You may override the target port, address, or both
|
|
||||||
## by specifying a target of addr, port, or addr:port.
|
|
||||||
#HiddenServicePort VIRTPORT [TARGET]
|
|
||||||
|
|
||||||
## If possible, use the specified nodes as introduction points for
|
|
||||||
## the hidden service. If this is left unset, Tor will be smart
|
|
||||||
## and pick some reasonable ones; most people can leave this unset.
|
|
||||||
#HiddenServiceNodes nickname,nickname,...
|
|
||||||
|
|
||||||
## Do not use the specified nodes as introduction points for the
|
|
||||||
## hidden service. In normal use there is no reason to set this.
|
|
||||||
#HiddenServiceExcludeNodes nickname,nickname,...
|
|
||||||
|
|
||||||
## Publish the given rendezvous service descriptor versions for the
|
|
||||||
## hidden service.
|
|
||||||
#HiddenServiceVersion 0,2
|
|
||||||
|
|
||||||
## Every time the specified period elapses, Tor uploads any ren-
|
|
||||||
## dezvous service descriptors to the directory servers. This
|
|
||||||
## information is also uploaded whenever it changes.
|
|
||||||
## (Default: 1 hour)
|
|
||||||
#RendPostPeriod N seconds|minutes|hours|days|weeks
|
|
||||||
#
|
|
@ -85,7 +85,7 @@ static config_abbrev_t _option_abbrevs[] = {
|
|||||||
PLURAL(LongLivedPort),
|
PLURAL(LongLivedPort),
|
||||||
PLURAL(HiddenServiceNode),
|
PLURAL(HiddenServiceNode),
|
||||||
PLURAL(HiddenServiceExcludeNode),
|
PLURAL(HiddenServiceExcludeNode),
|
||||||
PLURAL(NumCpu),
|
PLURAL(NumCPU),
|
||||||
PLURAL(RendNode),
|
PLURAL(RendNode),
|
||||||
PLURAL(RendExcludeNode),
|
PLURAL(RendExcludeNode),
|
||||||
PLURAL(StrictEntryNode),
|
PLURAL(StrictEntryNode),
|
||||||
@ -279,10 +279,10 @@ static config_var_t _option_vars[] = {
|
|||||||
V(HidServAuth, LINELIST, NULL),
|
V(HidServAuth, LINELIST, NULL),
|
||||||
V(HSAuthoritativeDir, BOOL, "0"),
|
V(HSAuthoritativeDir, BOOL, "0"),
|
||||||
OBSOLETE("HSAuthorityRecordStats"),
|
OBSOLETE("HSAuthorityRecordStats"),
|
||||||
V(HttpProxy, STRING, NULL),
|
V(HTTPProxy, STRING, NULL),
|
||||||
V(HttpProxyAuthenticator, STRING, NULL),
|
V(HTTPProxyAuthenticator, STRING, NULL),
|
||||||
V(HttpsProxy, STRING, NULL),
|
V(HTTPSProxy, STRING, NULL),
|
||||||
V(HttpsProxyAuthenticator, STRING, NULL),
|
V(HTTPSProxyAuthenticator, STRING, NULL),
|
||||||
V(Socks4Proxy, STRING, NULL),
|
V(Socks4Proxy, STRING, NULL),
|
||||||
V(Socks5Proxy, STRING, NULL),
|
V(Socks5Proxy, STRING, NULL),
|
||||||
V(Socks5ProxyUsername, STRING, NULL),
|
V(Socks5ProxyUsername, STRING, NULL),
|
||||||
@ -304,13 +304,13 @@ static config_var_t _option_vars[] = {
|
|||||||
V(MyFamily, STRING, NULL),
|
V(MyFamily, STRING, NULL),
|
||||||
V(NewCircuitPeriod, INTERVAL, "30 seconds"),
|
V(NewCircuitPeriod, INTERVAL, "30 seconds"),
|
||||||
VAR("NamingAuthoritativeDirectory",BOOL, NamingAuthoritativeDir, "0"),
|
VAR("NamingAuthoritativeDirectory",BOOL, NamingAuthoritativeDir, "0"),
|
||||||
V(NatdListenAddress, LINELIST, NULL),
|
V(NATDListenAddress, LINELIST, NULL),
|
||||||
V(NatdPort, UINT, "0"),
|
V(NATDPort, UINT, "0"),
|
||||||
V(Nickname, STRING, NULL),
|
V(Nickname, STRING, NULL),
|
||||||
V(WarnUnsafeSocks, BOOL, "1"),
|
V(WarnUnsafeSocks, BOOL, "1"),
|
||||||
V(NoPublish, BOOL, "0"),
|
OBSOLETE("NoPublish"),
|
||||||
VAR("NodeFamily", LINELIST, NodeFamilies, NULL),
|
VAR("NodeFamily", LINELIST, NodeFamilies, NULL),
|
||||||
V(NumCpus, UINT, "0"),
|
V(NumCPUs, UINT, "0"),
|
||||||
V(NumEntryGuards, UINT, "3"),
|
V(NumEntryGuards, UINT, "3"),
|
||||||
V(ORListenAddress, LINELIST, NULL),
|
V(ORListenAddress, LINELIST, NULL),
|
||||||
V(ORPort, UINT, "0"),
|
V(ORPort, UINT, "0"),
|
||||||
@ -343,7 +343,8 @@ static config_var_t _option_vars[] = {
|
|||||||
V(RephistTrackTime, INTERVAL, "24 hours"),
|
V(RephistTrackTime, INTERVAL, "24 hours"),
|
||||||
OBSOLETE("RouterFile"),
|
OBSOLETE("RouterFile"),
|
||||||
V(RunAsDaemon, BOOL, "0"),
|
V(RunAsDaemon, BOOL, "0"),
|
||||||
V(RunTesting, BOOL, "0"),
|
// V(RunTesting, BOOL, "0"),
|
||||||
|
OBSOLETE("RunTesting"), // currently unused
|
||||||
V(SafeLogging, STRING, "1"),
|
V(SafeLogging, STRING, "1"),
|
||||||
V(SafeSocks, BOOL, "0"),
|
V(SafeSocks, BOOL, "0"),
|
||||||
V(ServerDNSAllowBrokenConfig, BOOL, "1"),
|
V(ServerDNSAllowBrokenConfig, BOOL, "1"),
|
||||||
@ -2952,8 +2953,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
|||||||
if (options->TransPort == 0 && options->TransListenAddress != NULL)
|
if (options->TransPort == 0 && options->TransListenAddress != NULL)
|
||||||
REJECT("TransPort must be defined if TransListenAddress is defined.");
|
REJECT("TransPort must be defined if TransListenAddress is defined.");
|
||||||
|
|
||||||
if (options->NatdPort == 0 && options->NatdListenAddress != NULL)
|
if (options->NATDPort == 0 && options->NATDListenAddress != NULL)
|
||||||
REJECT("NatdPort must be defined if NatdListenAddress is defined.");
|
REJECT("NATDPort must be defined if NATDListenAddress is defined.");
|
||||||
|
|
||||||
/* Don't gripe about SocksPort 0 with SocksListenAddress set; a standard
|
/* Don't gripe about SocksPort 0 with SocksListenAddress set; a standard
|
||||||
* configuration does this. */
|
* configuration does this. */
|
||||||
@ -2972,8 +2973,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
|||||||
old = old_options ? old_options->TransListenAddress : NULL;
|
old = old_options ? old_options->TransListenAddress : NULL;
|
||||||
tp = "transparent proxy";
|
tp = "transparent proxy";
|
||||||
} else {
|
} else {
|
||||||
opt = options->NatdListenAddress;
|
opt = options->NATDListenAddress;
|
||||||
old = old_options ? old_options->NatdListenAddress : NULL;
|
old = old_options ? old_options->NATDListenAddress : NULL;
|
||||||
tp = "natd proxy";
|
tp = "natd proxy";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3030,14 +3031,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
|||||||
if (options_init_logs(options, 1)<0) /* Validate the log(s) */
|
if (options_init_logs(options, 1)<0) /* Validate the log(s) */
|
||||||
REJECT("Failed to validate Log options. See logs for details.");
|
REJECT("Failed to validate Log options. See logs for details.");
|
||||||
|
|
||||||
if (options->NoPublish) {
|
|
||||||
log(LOG_WARN, LD_CONFIG,
|
|
||||||
"NoPublish is obsolete. Use PublishServerDescriptor instead.");
|
|
||||||
SMARTLIST_FOREACH(options->PublishServerDescriptor, char *, s,
|
|
||||||
tor_free(s));
|
|
||||||
smartlist_clear(options->PublishServerDescriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (authdir_mode(options)) {
|
if (authdir_mode(options)) {
|
||||||
/* confirm that our address isn't broken, so we can complain now */
|
/* confirm that our address isn't broken, so we can complain now */
|
||||||
uint32_t tmp;
|
uint32_t tmp;
|
||||||
@ -3065,14 +3058,14 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
|||||||
if (options->TransPort < 0 || options->TransPort > 65535)
|
if (options->TransPort < 0 || options->TransPort > 65535)
|
||||||
REJECT("TransPort option out of bounds.");
|
REJECT("TransPort option out of bounds.");
|
||||||
|
|
||||||
if (options->NatdPort < 0 || options->NatdPort > 65535)
|
if (options->NATDPort < 0 || options->NATDPort > 65535)
|
||||||
REJECT("NatdPort option out of bounds.");
|
REJECT("NATDPort option out of bounds.");
|
||||||
|
|
||||||
if (options->SocksPort == 0 && options->TransPort == 0 &&
|
if (options->SocksPort == 0 && options->TransPort == 0 &&
|
||||||
options->NatdPort == 0 && options->ORPort == 0 &&
|
options->NATDPort == 0 && options->ORPort == 0 &&
|
||||||
options->DNSPort == 0 && !options->RendConfigLines)
|
options->DNSPort == 0 && !options->RendConfigLines)
|
||||||
log(LOG_WARN, LD_CONFIG,
|
log(LOG_WARN, LD_CONFIG,
|
||||||
"SocksPort, TransPort, NatdPort, DNSPort, and ORPort are all "
|
"SocksPort, TransPort, NATDPort, DNSPort, and ORPort are all "
|
||||||
"undefined, and there aren't any hidden services configured. "
|
"undefined, and there aren't any hidden services configured. "
|
||||||
"Tor will still run, but probably won't do anything.");
|
"Tor will still run, but probably won't do anything.");
|
||||||
|
|
||||||
@ -3435,32 +3428,32 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
|||||||
if (accounting_parse_options(options, 1)<0)
|
if (accounting_parse_options(options, 1)<0)
|
||||||
REJECT("Failed to parse accounting options. See logs for details.");
|
REJECT("Failed to parse accounting options. See logs for details.");
|
||||||
|
|
||||||
if (options->HttpProxy) { /* parse it now */
|
if (options->HTTPProxy) { /* parse it now */
|
||||||
if (tor_addr_port_parse(options->HttpProxy,
|
if (tor_addr_port_parse(options->HTTPProxy,
|
||||||
&options->HttpProxyAddr, &options->HttpProxyPort) < 0)
|
&options->HTTPProxyAddr, &options->HTTPProxyPort) < 0)
|
||||||
REJECT("HttpProxy failed to parse or resolve. Please fix.");
|
REJECT("HTTPProxy failed to parse or resolve. Please fix.");
|
||||||
if (options->HttpProxyPort == 0) { /* give it a default */
|
if (options->HTTPProxyPort == 0) { /* give it a default */
|
||||||
options->HttpProxyPort = 80;
|
options->HTTPProxyPort = 80;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options->HttpProxyAuthenticator) {
|
if (options->HTTPProxyAuthenticator) {
|
||||||
if (strlen(options->HttpProxyAuthenticator) >= 48)
|
if (strlen(options->HTTPProxyAuthenticator) >= 48)
|
||||||
REJECT("HttpProxyAuthenticator is too long (>= 48 chars).");
|
REJECT("HTTPProxyAuthenticator is too long (>= 48 chars).");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options->HttpsProxy) { /* parse it now */
|
if (options->HTTPSProxy) { /* parse it now */
|
||||||
if (tor_addr_port_parse(options->HttpsProxy,
|
if (tor_addr_port_parse(options->HTTPSProxy,
|
||||||
&options->HttpsProxyAddr, &options->HttpsProxyPort) <0)
|
&options->HTTPSProxyAddr, &options->HTTPSProxyPort) <0)
|
||||||
REJECT("HttpsProxy failed to parse or resolve. Please fix.");
|
REJECT("HTTPSProxy failed to parse or resolve. Please fix.");
|
||||||
if (options->HttpsProxyPort == 0) { /* give it a default */
|
if (options->HTTPSProxyPort == 0) { /* give it a default */
|
||||||
options->HttpsProxyPort = 443;
|
options->HTTPSProxyPort = 443;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options->HttpsProxyAuthenticator) {
|
if (options->HTTPSProxyAuthenticator) {
|
||||||
if (strlen(options->HttpsProxyAuthenticator) >= 48)
|
if (strlen(options->HTTPSProxyAuthenticator) >= 48)
|
||||||
REJECT("HttpsProxyAuthenticator is too long (>= 48 chars).");
|
REJECT("HTTPSProxyAuthenticator is too long (>= 48 chars).");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options->Socks4Proxy) { /* parse it now */
|
if (options->Socks4Proxy) { /* parse it now */
|
||||||
@ -3661,10 +3654,10 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
|||||||
REJECT("Must set TunnelDirConns if PreferTunneledDirConns is set.");
|
REJECT("Must set TunnelDirConns if PreferTunneledDirConns is set.");
|
||||||
|
|
||||||
if ((options->Socks4Proxy || options->Socks5Proxy) &&
|
if ((options->Socks4Proxy || options->Socks5Proxy) &&
|
||||||
!options->HttpProxy && !options->PreferTunneledDirConns)
|
!options->HTTPProxy && !options->PreferTunneledDirConns)
|
||||||
REJECT("When Socks4Proxy or Socks5Proxy is configured, "
|
REJECT("When Socks4Proxy or Socks5Proxy is configured, "
|
||||||
"PreferTunneledDirConns and TunnelDirConns must both be "
|
"PreferTunneledDirConns and TunnelDirConns must both be "
|
||||||
"set to 1, or HttpProxy must be configured.");
|
"set to 1, or HTTPProxy must be configured.");
|
||||||
|
|
||||||
if (options->AutomapHostsSuffixes) {
|
if (options->AutomapHostsSuffixes) {
|
||||||
SMARTLIST_FOREACH(options->AutomapHostsSuffixes, char *, suf,
|
SMARTLIST_FOREACH(options->AutomapHostsSuffixes, char *, suf,
|
||||||
@ -3845,7 +3838,7 @@ options_transition_affects_workers(or_options_t *old_options,
|
|||||||
or_options_t *new_options)
|
or_options_t *new_options)
|
||||||
{
|
{
|
||||||
if (!opt_streq(old_options->DataDirectory, new_options->DataDirectory) ||
|
if (!opt_streq(old_options->DataDirectory, new_options->DataDirectory) ||
|
||||||
old_options->NumCpus != new_options->NumCpus ||
|
old_options->NumCPUs != new_options->NumCPUs ||
|
||||||
old_options->ORPort != new_options->ORPort ||
|
old_options->ORPort != new_options->ORPort ||
|
||||||
old_options->ServerDNSSearchDomains !=
|
old_options->ServerDNSSearchDomains !=
|
||||||
new_options->ServerDNSSearchDomains ||
|
new_options->ServerDNSSearchDomains ||
|
||||||
@ -3877,7 +3870,6 @@ options_transition_affects_descriptor(or_options_t *old_options,
|
|||||||
old_options->ORPort != new_options->ORPort ||
|
old_options->ORPort != new_options->ORPort ||
|
||||||
old_options->DirPort != new_options->DirPort ||
|
old_options->DirPort != new_options->DirPort ||
|
||||||
old_options->ClientOnly != new_options->ClientOnly ||
|
old_options->ClientOnly != new_options->ClientOnly ||
|
||||||
old_options->NoPublish != new_options->NoPublish ||
|
|
||||||
old_options->_PublishServerDescriptor !=
|
old_options->_PublishServerDescriptor !=
|
||||||
new_options->_PublishServerDescriptor ||
|
new_options->_PublishServerDescriptor ||
|
||||||
get_effective_bwrate(old_options) != get_effective_bwrate(new_options) ||
|
get_effective_bwrate(old_options) != get_effective_bwrate(new_options) ||
|
||||||
@ -5000,11 +4992,11 @@ config_parse_interval(const char *s, int *ok)
|
|||||||
int
|
int
|
||||||
get_num_cpus(const or_options_t *options)
|
get_num_cpus(const or_options_t *options)
|
||||||
{
|
{
|
||||||
if (options->NumCpus == 0) {
|
if (options->NumCPUs == 0) {
|
||||||
int n = compute_num_cpus();
|
int n = compute_num_cpus();
|
||||||
return (n >= 1) ? n : 1;
|
return (n >= 1) ? n : 1;
|
||||||
} else {
|
} else {
|
||||||
return options->NumCpus;
|
return options->NumCPUs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -623,7 +623,7 @@ connection_about_to_close_connection(connection_t *conn)
|
|||||||
or_options_t *options = get_options();
|
or_options_t *options = get_options();
|
||||||
rep_hist_note_connect_failed(or_conn->identity_digest, now);
|
rep_hist_note_connect_failed(or_conn->identity_digest, now);
|
||||||
entry_guard_register_connect_status(or_conn->identity_digest,0,
|
entry_guard_register_connect_status(or_conn->identity_digest,0,
|
||||||
!options->HttpsProxy, now);
|
!options->HTTPSProxy, now);
|
||||||
if (conn->state >= OR_CONN_STATE_TLS_HANDSHAKING) {
|
if (conn->state >= OR_CONN_STATE_TLS_HANDSHAKING) {
|
||||||
int reason = tls_error_to_orconn_end_reason(or_conn->tls_error);
|
int reason = tls_error_to_orconn_end_reason(or_conn->tls_error);
|
||||||
control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED,
|
control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED,
|
||||||
@ -1413,7 +1413,7 @@ connection_proxy_connect(connection_t *conn, int type)
|
|||||||
case PROXY_CONNECT: {
|
case PROXY_CONNECT: {
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
char *base64_authenticator=NULL;
|
char *base64_authenticator=NULL;
|
||||||
const char *authenticator = options->HttpsProxyAuthenticator;
|
const char *authenticator = options->HTTPSProxyAuthenticator;
|
||||||
|
|
||||||
/* Send HTTP CONNECT and authentication (if available) in
|
/* Send HTTP CONNECT and authentication (if available) in
|
||||||
* one request */
|
* one request */
|
||||||
@ -1918,8 +1918,8 @@ retry_all_listeners(smartlist_t *replaced_conns,
|
|||||||
replaced_conns, new_conns, 0,
|
replaced_conns, new_conns, 0,
|
||||||
AF_INET)<0)
|
AF_INET)<0)
|
||||||
return -1;
|
return -1;
|
||||||
if (retry_listeners(CONN_TYPE_AP_NATD_LISTENER, options->NatdListenAddress,
|
if (retry_listeners(CONN_TYPE_AP_NATD_LISTENER, options->NATDListenAddress,
|
||||||
options->NatdPort, "127.0.0.1",
|
options->NATDPort, "127.0.0.1",
|
||||||
replaced_conns, new_conns, 0,
|
replaced_conns, new_conns, 0,
|
||||||
AF_INET)<0)
|
AF_INET)<0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -2004,13 +2004,13 @@ connection_ap_process_natd(edge_connection_t *conn)
|
|||||||
if (err == 0)
|
if (err == 0)
|
||||||
return 0;
|
return 0;
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
log_warn(LD_APP,"Natd handshake failed (DEST too long). Closing");
|
log_warn(LD_APP,"NATD handshake failed (DEST too long). Closing");
|
||||||
connection_mark_unattached_ap(conn, END_STREAM_REASON_INVALID_NATD_DEST);
|
connection_mark_unattached_ap(conn, END_STREAM_REASON_INVALID_NATD_DEST);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmpstart(tmp_buf, "[DEST ")) {
|
if (strcmpstart(tmp_buf, "[DEST ")) {
|
||||||
log_warn(LD_APP,"Natd handshake was ill-formed; closing. The client "
|
log_warn(LD_APP,"NATD handshake was ill-formed; closing. The client "
|
||||||
"said: %s",
|
"said: %s",
|
||||||
escaped(tmp_buf));
|
escaped(tmp_buf));
|
||||||
connection_mark_unattached_ap(conn, END_STREAM_REASON_INVALID_NATD_DEST);
|
connection_mark_unattached_ap(conn, END_STREAM_REASON_INVALID_NATD_DEST);
|
||||||
@ -2019,7 +2019,7 @@ connection_ap_process_natd(edge_connection_t *conn)
|
|||||||
|
|
||||||
daddr = tbuf = &tmp_buf[0] + 6; /* after end of "[DEST " */
|
daddr = tbuf = &tmp_buf[0] + 6; /* after end of "[DEST " */
|
||||||
if (!(tbuf = strchr(tbuf, ' '))) {
|
if (!(tbuf = strchr(tbuf, ' '))) {
|
||||||
log_warn(LD_APP,"Natd handshake was ill-formed; closing. The client "
|
log_warn(LD_APP,"NATD handshake was ill-formed; closing. The client "
|
||||||
"said: %s",
|
"said: %s",
|
||||||
escaped(tmp_buf));
|
escaped(tmp_buf));
|
||||||
connection_mark_unattached_ap(conn, END_STREAM_REASON_INVALID_NATD_DEST);
|
connection_mark_unattached_ap(conn, END_STREAM_REASON_INVALID_NATD_DEST);
|
||||||
@ -2033,7 +2033,7 @@ connection_ap_process_natd(edge_connection_t *conn)
|
|||||||
socks->port = (uint16_t)
|
socks->port = (uint16_t)
|
||||||
tor_parse_long(tbuf, 10, 1, 65535, &port_ok, &daddr);
|
tor_parse_long(tbuf, 10, 1, 65535, &port_ok, &daddr);
|
||||||
if (!port_ok) {
|
if (!port_ok) {
|
||||||
log_warn(LD_APP,"Natd handshake failed; port %s is ill-formed or out "
|
log_warn(LD_APP,"NATD handshake failed; port %s is ill-formed or out "
|
||||||
"of range.", escaped(tbuf));
|
"of range.", escaped(tbuf));
|
||||||
connection_mark_unattached_ap(conn, END_STREAM_REASON_INVALID_NATD_DEST);
|
connection_mark_unattached_ap(conn, END_STREAM_REASON_INVALID_NATD_DEST);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -326,7 +326,7 @@ connection_or_finished_connecting(or_connection_t *or_conn)
|
|||||||
|
|
||||||
proxy_type = PROXY_NONE;
|
proxy_type = PROXY_NONE;
|
||||||
|
|
||||||
if (get_options()->HttpsProxy)
|
if (get_options()->HTTPSProxy)
|
||||||
proxy_type = PROXY_CONNECT;
|
proxy_type = PROXY_CONNECT;
|
||||||
else if (get_options()->Socks4Proxy)
|
else if (get_options()->Socks4Proxy)
|
||||||
proxy_type = PROXY_SOCKS4;
|
proxy_type = PROXY_SOCKS4;
|
||||||
@ -842,10 +842,10 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port,
|
|||||||
control_event_or_conn_status(conn, OR_CONN_EVENT_LAUNCHED, 0);
|
control_event_or_conn_status(conn, OR_CONN_EVENT_LAUNCHED, 0);
|
||||||
|
|
||||||
/* use a proxy server if available */
|
/* use a proxy server if available */
|
||||||
if (options->HttpsProxy) {
|
if (options->HTTPSProxy) {
|
||||||
using_proxy = 1;
|
using_proxy = 1;
|
||||||
tor_addr_copy(&addr, &options->HttpsProxyAddr);
|
tor_addr_copy(&addr, &options->HTTPSProxyAddr);
|
||||||
port = options->HttpsProxyPort;
|
port = options->HTTPSProxyPort;
|
||||||
} else if (options->Socks4Proxy) {
|
} else if (options->Socks4Proxy) {
|
||||||
using_proxy = 1;
|
using_proxy = 1;
|
||||||
tor_addr_copy(&addr, &options->Socks4ProxyAddr);
|
tor_addr_copy(&addr, &options->Socks4ProxyAddr);
|
||||||
|
@ -860,7 +860,7 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr,
|
|||||||
|
|
||||||
/* ensure that we don't make direct connections when a SOCKS server is
|
/* ensure that we don't make direct connections when a SOCKS server is
|
||||||
* configured. */
|
* configured. */
|
||||||
if (!anonymized_connection && !use_begindir && !options->HttpProxy &&
|
if (!anonymized_connection && !use_begindir && !options->HTTPProxy &&
|
||||||
(options->Socks4Proxy || options->Socks5Proxy)) {
|
(options->Socks4Proxy || options->Socks5Proxy)) {
|
||||||
log_warn(LD_DIR, "Cannot connect to a directory server through a "
|
log_warn(LD_DIR, "Cannot connect to a directory server through a "
|
||||||
"SOCKS proxy!");
|
"SOCKS proxy!");
|
||||||
@ -891,9 +891,9 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr,
|
|||||||
if (!anonymized_connection && !use_begindir) {
|
if (!anonymized_connection && !use_begindir) {
|
||||||
/* then we want to connect to dirport directly */
|
/* then we want to connect to dirport directly */
|
||||||
|
|
||||||
if (options->HttpProxy) {
|
if (options->HTTPProxy) {
|
||||||
tor_addr_copy(&addr, &options->HttpProxyAddr);
|
tor_addr_copy(&addr, &options->HTTPProxyAddr);
|
||||||
dir_port = options->HttpProxyPort;
|
dir_port = options->HTTPProxyPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (connection_connect(TO_CONN(conn), conn->_base.address, &addr,
|
switch (connection_connect(TO_CONN(conn), conn->_base.address, &addr,
|
||||||
@ -1084,9 +1084,9 @@ directory_send_command(dir_connection_t *conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* come up with some proxy lines, if we're using one. */
|
/* come up with some proxy lines, if we're using one. */
|
||||||
if (direct && get_options()->HttpProxy) {
|
if (direct && get_options()->HTTPProxy) {
|
||||||
char *base64_authenticator=NULL;
|
char *base64_authenticator=NULL;
|
||||||
const char *authenticator = get_options()->HttpProxyAuthenticator;
|
const char *authenticator = get_options()->HTTPProxyAuthenticator;
|
||||||
|
|
||||||
tor_snprintf(proxystring, sizeof(proxystring),"http://%s", hoststring);
|
tor_snprintf(proxystring, sizeof(proxystring),"http://%s", hoststring);
|
||||||
if (authenticator) {
|
if (authenticator) {
|
||||||
|
28
src/or/or.h
28
src/or/or.h
@ -2535,7 +2535,7 @@ typedef struct {
|
|||||||
* connections. */
|
* connections. */
|
||||||
config_line_t *TransListenAddress;
|
config_line_t *TransListenAddress;
|
||||||
/** Addresses to bind for listening for transparent natd connections */
|
/** Addresses to bind for listening for transparent natd connections */
|
||||||
config_line_t *NatdListenAddress;
|
config_line_t *NATDListenAddress;
|
||||||
/** Addresses to bind for listening for SOCKS connections. */
|
/** Addresses to bind for listening for SOCKS connections. */
|
||||||
config_line_t *DNSListenAddress;
|
config_line_t *DNSListenAddress;
|
||||||
/** Addresses to bind for listening for OR connections. */
|
/** Addresses to bind for listening for OR connections. */
|
||||||
@ -2559,7 +2559,7 @@ typedef struct {
|
|||||||
int SocksPort; /**< Port to listen on for SOCKS connections. */
|
int SocksPort; /**< Port to listen on for SOCKS connections. */
|
||||||
/** Port to listen on for transparent pf/netfilter connections. */
|
/** Port to listen on for transparent pf/netfilter connections. */
|
||||||
int TransPort;
|
int TransPort;
|
||||||
int NatdPort; /**< Port to listen on for transparent natd connections. */
|
int NATDPort; /**< Port to listen on for transparent natd connections. */
|
||||||
int ControlPort; /**< Port to listen on for control connections. */
|
int ControlPort; /**< Port to listen on for control connections. */
|
||||||
config_line_t *ControlSocket; /**< List of Unix Domain Sockets to listen on
|
config_line_t *ControlSocket; /**< List of Unix Domain Sockets to listen on
|
||||||
* for control connections. */
|
* for control connections. */
|
||||||
@ -2603,8 +2603,6 @@ typedef struct {
|
|||||||
int AvoidDiskWrites; /**< Boolean: should we never cache things to disk?
|
int AvoidDiskWrites; /**< Boolean: should we never cache things to disk?
|
||||||
* Not used yet. */
|
* Not used yet. */
|
||||||
int ClientOnly; /**< Boolean: should we never evolve into a server role? */
|
int ClientOnly; /**< Boolean: should we never evolve into a server role? */
|
||||||
/** Boolean: should we never publish a descriptor? Deprecated. */
|
|
||||||
int NoPublish;
|
|
||||||
/** To what authority types do we publish our descriptor? Choices are
|
/** To what authority types do we publish our descriptor? Choices are
|
||||||
* "v1", "v2", "v3", "bridge", or "". */
|
* "v1", "v2", "v3", "bridge", or "". */
|
||||||
smartlist_t *PublishServerDescriptor;
|
smartlist_t *PublishServerDescriptor;
|
||||||
@ -2703,24 +2701,24 @@ typedef struct {
|
|||||||
* use in a second for all relayed conns? */
|
* use in a second for all relayed conns? */
|
||||||
uint64_t PerConnBWRate; /**< Long-term bw on a single TLS conn, if set. */
|
uint64_t PerConnBWRate; /**< Long-term bw on a single TLS conn, if set. */
|
||||||
uint64_t PerConnBWBurst; /**< Allowed burst on a single TLS conn, if set. */
|
uint64_t PerConnBWBurst; /**< Allowed burst on a single TLS conn, if set. */
|
||||||
int NumCpus; /**< How many CPUs should we try to use? */
|
int NumCPUs; /**< How many CPUs should we try to use? */
|
||||||
int RunTesting; /**< If true, create testing circuits to measure how well the
|
//int RunTesting; /**< If true, create testing circuits to measure how well the
|
||||||
* other ORs are running. */
|
// * other ORs are running. */
|
||||||
config_line_t *RendConfigLines; /**< List of configuration lines
|
config_line_t *RendConfigLines; /**< List of configuration lines
|
||||||
* for rendezvous services. */
|
* for rendezvous services. */
|
||||||
config_line_t *HidServAuth; /**< List of configuration lines for client-side
|
config_line_t *HidServAuth; /**< List of configuration lines for client-side
|
||||||
* authorizations for hidden services */
|
* authorizations for hidden services */
|
||||||
char *ContactInfo; /**< Contact info to be published in the directory. */
|
char *ContactInfo; /**< Contact info to be published in the directory. */
|
||||||
|
|
||||||
char *HttpProxy; /**< hostname[:port] to use as http proxy, if any. */
|
char *HTTPProxy; /**< hostname[:port] to use as http proxy, if any. */
|
||||||
tor_addr_t HttpProxyAddr; /**< Parsed IPv4 addr for http proxy, if any. */
|
tor_addr_t HTTPProxyAddr; /**< Parsed IPv4 addr for http proxy, if any. */
|
||||||
uint16_t HttpProxyPort; /**< Parsed port for http proxy, if any. */
|
uint16_t HTTPProxyPort; /**< Parsed port for http proxy, if any. */
|
||||||
char *HttpProxyAuthenticator; /**< username:password string, if any. */
|
char *HTTPProxyAuthenticator; /**< username:password string, if any. */
|
||||||
|
|
||||||
char *HttpsProxy; /**< hostname[:port] to use as https proxy, if any. */
|
char *HTTPSProxy; /**< hostname[:port] to use as https proxy, if any. */
|
||||||
tor_addr_t HttpsProxyAddr; /**< Parsed addr for https proxy, if any. */
|
tor_addr_t HTTPSProxyAddr; /**< Parsed addr for https proxy, if any. */
|
||||||
uint16_t HttpsProxyPort; /**< Parsed port for https proxy, if any. */
|
uint16_t HTTPSProxyPort; /**< Parsed port for https proxy, if any. */
|
||||||
char *HttpsProxyAuthenticator; /**< username:password string, if any. */
|
char *HTTPSProxyAuthenticator; /**< username:password string, if any. */
|
||||||
|
|
||||||
char *Socks4Proxy; /**< hostname:port to use as a SOCKS4 proxy, if any. */
|
char *Socks4Proxy; /**< hostname:port to use as a SOCKS4 proxy, if any. */
|
||||||
tor_addr_t Socks4ProxyAddr; /**< Derived from Socks4Proxy. */
|
tor_addr_t Socks4ProxyAddr; /**< Derived from Socks4Proxy. */
|
||||||
|
@ -1104,7 +1104,7 @@ proxy_mode(or_options_t *options)
|
|||||||
{
|
{
|
||||||
return (options->SocksPort != 0 || options->SocksListenAddress ||
|
return (options->SocksPort != 0 || options->SocksListenAddress ||
|
||||||
options->TransPort != 0 || options->TransListenAddress ||
|
options->TransPort != 0 || options->TransListenAddress ||
|
||||||
options->NatdPort != 0 || options->NatdListenAddress ||
|
options->NATDPort != 0 || options->NATDListenAddress ||
|
||||||
options->DNSPort != 0 || options->DNSListenAddress);
|
options->DNSPort != 0 || options->DNSListenAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user