mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
If anybody set DirFetchPostPeriod, give them StatuFetchPeriod instead. Impose minima and maxima for all *Period options; impose even tighter maxima for fetching if we are a caching dirserver. Clip rather than rejecting. arma: are these good?
svn:r3024
This commit is contained in:
parent
ce505f5033
commit
e764d00e15
4
doc/TODO
4
doc/TODO
@ -15,10 +15,10 @@ N&R- bring tor-spec up to date
|
|||||||
o cache and serve running-routers on other nodes?
|
o cache and serve running-routers on other nodes?
|
||||||
o cache running-routers
|
o cache running-routers
|
||||||
o download running-routers from servers running rc5-cvs or later
|
o download running-routers from servers running rc5-cvs or later
|
||||||
N - pump up periods for fetching things; figure out how to do this
|
o pump up periods for fetching things; figure out how to do this
|
||||||
backward-compatibily, so that people who did set dirfetchpostperiod
|
backward-compatibily, so that people who did set dirfetchpostperiod
|
||||||
get the right behavior.
|
get the right behavior.
|
||||||
- If dirport is set, we should have a maximum dirfetchperiod and
|
o If dirport is set, we should have a maximum dirfetchperiod and
|
||||||
a maximum statusfetchperiod, or else we'll serve very stale stuff.
|
a maximum statusfetchperiod, or else we'll serve very stale stuff.
|
||||||
o Adapt version parsing code to handle new version scheme; document new
|
o Adapt version parsing code to handle new version scheme; document new
|
||||||
version scheme.
|
version scheme.
|
||||||
|
@ -67,7 +67,7 @@ rather than connecting directly to any directory servers.
|
|||||||
.TP
|
.TP
|
||||||
\fBKeepalivePeriod \fR\fINUM\fP
|
\fBKeepalivePeriod \fR\fINUM\fP
|
||||||
To keep firewalls from expiring connections, send a padding keepalive
|
To keep firewalls from expiring connections, send a padding keepalive
|
||||||
cell on open connections every NUM seconds. (Default: 300)
|
cell on open connections every NUM seconds. (Default: 5 minutes.)
|
||||||
.TP
|
.TP
|
||||||
\fBMaxConn \fR\fINUM\fP
|
\fBMaxConn \fR\fINUM\fP
|
||||||
Maximum number of simultaneous sockets allowed. You probably don't need
|
Maximum number of simultaneous sockets allowed. You probably don't need
|
||||||
@ -119,7 +119,7 @@ information about the current state of known servers. (Default: 20 minutes.)
|
|||||||
\fBRendPostPeriod \fR\fIN\fR \fBseconds\fR|\fBminutes\fR|\fBhours\fR|\fBdays\fR|\fBweeks\fP
|
\fBRendPostPeriod \fR\fIN\fR \fBseconds\fR|\fBminutes\fR|\fBhours\fR|\fBdays\fR|\fBweeks\fP
|
||||||
Every time the specified period elapses, Tor uploads any rendezvous
|
Every time the specified period elapses, Tor uploads any rendezvous
|
||||||
service descriptors to the directory servers. This information is also
|
service descriptors to the directory servers. This information is also
|
||||||
uploaded whenever it changes. (Default: 10 minutes.)
|
uploaded whenever it changes. (Default: 20 minutes.)
|
||||||
|
|
||||||
.SH CLIENT OPTIONS
|
.SH CLIENT OPTIONS
|
||||||
.PP
|
.PP
|
||||||
@ -282,7 +282,7 @@ considered.
|
|||||||
\fBDirPostPeriod \fR\fIN\fR \fBseconds\fR|\fBminutes\fR|\fBhours\fR|\fBdays\fR|\fBweeks\fP
|
\fBDirPostPeriod \fR\fIN\fR \fBseconds\fR|\fBminutes\fR|\fBhours\fR|\fBdays\fR|\fBweeks\fP
|
||||||
Every time the specified period elapses, Tor uploads its server
|
Every time the specified period elapses, Tor uploads its server
|
||||||
descriptors to the directory servers. This information is also
|
descriptors to the directory servers. This information is also
|
||||||
uploaded whenever it changes. (Default: 10 minutes.)
|
uploaded whenever it changes. (Default: 20 minutes.)
|
||||||
.TP
|
.TP
|
||||||
\fBAccountingMax \fR\fIN\fR \fBbytes\fR|\fBKB\fR|\fBMB\fR|\fBGB\fR|\fBTB\fP
|
\fBAccountingMax \fR\fIN\fR \fBbytes\fR|\fBKB\fR|\fBMB\fR|\fBGB\fR|\fBTB\fP
|
||||||
Never send more than the specified number of bytes in a given
|
Never send more than the specified number of bytes in a given
|
||||||
|
@ -63,7 +63,7 @@ static config_abbrev_t config_abbrevs[] = {
|
|||||||
{ "l", "Log", 1},
|
{ "l", "Log", 1},
|
||||||
{ "BandwidthRateBytes", "BandwidthRate", 0},
|
{ "BandwidthRateBytes", "BandwidthRate", 0},
|
||||||
{ "BandwidthBurstBytes", "BandwidthBurst", 0},
|
{ "BandwidthBurstBytes", "BandwidthBurst", 0},
|
||||||
{ "DirFetchPostPeriod", "DirFetchPeriod", 0},
|
{ "DirFetchPostPeriod", "StatusFetchPeriod", 0},
|
||||||
{ NULL, NULL , 0},
|
{ NULL, NULL , 0},
|
||||||
};
|
};
|
||||||
#undef PLURAL
|
#undef PLURAL
|
||||||
@ -106,9 +106,9 @@ static config_var_t config_vars[] = {
|
|||||||
VAR("DataDirectory", STRING, DataDirectory, NULL),
|
VAR("DataDirectory", STRING, DataDirectory, NULL),
|
||||||
VAR("DirPort", UINT, DirPort, "0"),
|
VAR("DirPort", UINT, DirPort, "0"),
|
||||||
VAR("DirBindAddress", LINELIST, DirBindAddress, NULL),
|
VAR("DirBindAddress", LINELIST, DirBindAddress, NULL),
|
||||||
VAR("DirFetchPeriod", INTERVAL, DirFetchPeriod, "1 hour"),
|
VAR("DirFetchPeriod", INTERVAL, DirFetchPeriod, "1 hours"),
|
||||||
VAR("DirPostPeriod", INTERVAL, DirPostPeriod, "10 minutes"),
|
VAR("DirPostPeriod", INTERVAL, DirPostPeriod, "20 minutes"),
|
||||||
VAR("RendPostPeriod", INTERVAL, RendPostPeriod, "10 minutes"),
|
VAR("RendPostPeriod", INTERVAL, RendPostPeriod, "20 minutes"),
|
||||||
VAR("DirPolicy", LINELIST, DirPolicy, NULL),
|
VAR("DirPolicy", LINELIST, DirPolicy, NULL),
|
||||||
VAR("DirServer", LINELIST, DirServers, NULL),
|
VAR("DirServer", LINELIST, DirServers, NULL),
|
||||||
VAR("ExitNodes", STRING, ExitNodes, NULL),
|
VAR("ExitNodes", STRING, ExitNodes, NULL),
|
||||||
@ -1282,26 +1282,60 @@ options_validate(or_options_t *options)
|
|||||||
result = -1;
|
result = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MIN_DIRFETCHPOSTPERIOD 60
|
#define MIN_DIR_FETCH_PERIOD 600
|
||||||
if (options->DirFetchPeriod < MIN_DIRFETCHPOSTPERIOD) {
|
#define MIN_DIR_POST_PERIOD 300
|
||||||
log(LOG_WARN, "DirFetchPeriod option must be at least %d.", MIN_DIRFETCHPOSTPERIOD);
|
#define MIN_REND_POST_PERIOD 300
|
||||||
result = -1;
|
#define MIN_STATUS_FETCH_PERIOD 60
|
||||||
|
|
||||||
|
#define MAX_DIR_PERIOD (MIN_ONION_KEY_LIFETIME/2)
|
||||||
|
#define MAX_CACHE_DIR_FETCH_PERIOD 3600
|
||||||
|
#define MAX_CACHE_STATUS_FETCH_PERIOD 900
|
||||||
|
|
||||||
|
if (options->DirFetchPeriod < MIN_DIR_FETCH_PERIOD) {
|
||||||
|
log(LOG_WARN, "DirFetchPeriod option must be at least %d seconds. Clipping.", MIN_DIR_FETCH_PERIOD);
|
||||||
|
options->DirFetchPeriod = MIN_DIR_FETCH_PERIOD;
|
||||||
}
|
}
|
||||||
if (options->StatusFetchPeriod < MIN_DIRFETCHPOSTPERIOD) {
|
if (options->StatusFetchPeriod < MIN_STATUS_FETCH_PERIOD) {
|
||||||
log(LOG_WARN, "StatusFetchPeriod option must be at least %d.", MIN_DIRFETCHPOSTPERIOD);
|
log(LOG_WARN, "StatusFetchPeriod option must be at least %d seconds. Clipping.", MIN_STATUS_FETCH_PERIOD);
|
||||||
result = -1;
|
options->StatusFetchPeriod = MIN_STATUS_FETCH_PERIOD;
|
||||||
}
|
}
|
||||||
if (options->DirPostPeriod < MIN_DIRFETCHPOSTPERIOD) {
|
if (options->DirPostPeriod < MIN_DIR_POST_PERIOD) {
|
||||||
log(LOG_WARN, "DirPostPeriod option must be at least %d.", MIN_DIRFETCHPOSTPERIOD);
|
log(LOG_WARN, "DirPostPeriod option must be at least %d seconds. Clipping.",
|
||||||
result = -1;
|
MIN_DIR_POST_PERIOD);
|
||||||
|
options->DirPostPeriod = MIN_DIR_POST_PERIOD;
|
||||||
}
|
}
|
||||||
if (options->DirFetchPeriod > MIN_ONION_KEY_LIFETIME / 2) {
|
if (options->RendPostPeriod < MIN_REND_POST_PERIOD) {
|
||||||
|
log(LOG_WARN,"RendPostPeriod option must be at least %d seconds. Clipping.",
|
||||||
|
MIN_REND_POST_PERIOD);
|
||||||
|
options->RendPostPeriod = MIN_REND_POST_PERIOD;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options->DirPort && ! options->AuthoritativeDir) {
|
||||||
|
if (options->DirFetchPeriod > MAX_CACHE_DIR_FETCH_PERIOD) {
|
||||||
|
log(LOG_WARN, "Caching directory servers must have DirFetchPeriod less than %d seconds. Clipping.", MAX_CACHE_DIR_FETCH_PERIOD);
|
||||||
|
options->DirFetchPeriod = MAX_CACHE_DIR_FETCH_PERIOD;
|
||||||
|
}
|
||||||
|
if (options->StatusFetchPeriod > MAX_CACHE_STATUS_FETCH_PERIOD) {
|
||||||
|
log(LOG_WARN, "Caching directory servers must have StatusFetchPeriod less than %d seconds. Clipping.", MAX_CACHE_STATUS_FETCH_PERIOD);
|
||||||
|
options->StatusFetchPeriod = MAX_CACHE_STATUS_FETCH_PERIOD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options->DirFetchPeriod > MAX_DIR_PERIOD) {
|
||||||
log(LOG_WARN, "DirFetchPeriod is too large; clipping.");
|
log(LOG_WARN, "DirFetchPeriod is too large; clipping.");
|
||||||
options->DirFetchPeriod = MIN_ONION_KEY_LIFETIME / 2;
|
options->DirFetchPeriod = MAX_DIR_PERIOD;
|
||||||
}
|
}
|
||||||
if (options->DirPostPeriod > MIN_ONION_KEY_LIFETIME / 2) {
|
if (options->DirPostPeriod > MAX_DIR_PERIOD) {
|
||||||
log(LOG_WARN, "DirPostPeriod is too large; clipping.");
|
log(LOG_WARN, "DirPostPeriod is too large; clipping.");
|
||||||
options->DirPostPeriod = MIN_ONION_KEY_LIFETIME / 2;
|
options->DirPostPeriod = MAX_DIR_PERIOD;
|
||||||
|
}
|
||||||
|
if (options->StatusFetchPeriod > MAX_DIR_PERIOD) {
|
||||||
|
log(LOG_WARN, "StatusFetchPeriod is too large; clipping.");
|
||||||
|
options->StatusFetchPeriod = MAX_DIR_PERIOD;
|
||||||
|
}
|
||||||
|
if (options->RendPostPeriod > MAX_DIR_PERIOD) {
|
||||||
|
log(LOG_WARN, "RendPostPeriod is too large; clipping.");
|
||||||
|
options->RendPostPeriod = MAX_DIR_PERIOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options->KeepalivePeriod < 1) {
|
if (options->KeepalivePeriod < 1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user