mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 20:33:31 +01:00
Make preferred/excluded intro points configurable
svn:r1440
This commit is contained in:
parent
a981c4099a
commit
4cb21bab48
@ -215,8 +215,10 @@ static int config_assign(or_options_t *options, struct config_line_t *list) {
|
||||
|
||||
config_compare(list, "User", CONFIG_TYPE_STRING, &options->User) ||
|
||||
config_compare(list, "RunTesting", CONFIG_TYPE_BOOL, &options->RunTesting) ||
|
||||
config_compare(list, "HiddenServiceDir", CONFIG_TYPE_LINELIST, &options->RendConfigLines) ||
|
||||
config_compare(list, "HiddenServicePort", CONFIG_TYPE_LINELIST, &options->RendConfigLines)
|
||||
config_compare(list, "HiddenServiceDir", CONFIG_TYPE_LINELIST, &options->RendConfigLines)||
|
||||
config_compare(list, "HiddenServicePort", CONFIG_TYPE_LINELIST, &options->RendConfigLines)||
|
||||
config_compare(list, "HiddenServiceNodes", CONFIG_TYPE_LINELIST, &options->RendConfigLines)||
|
||||
config_compare(list, "HiddenServiceExcludeNodes", CONFIG_TYPE_LINELIST, &options->RendConfigLines)
|
||||
) {
|
||||
/* then we're ok. it matched something. */
|
||||
} else {
|
||||
|
@ -22,6 +22,8 @@ typedef struct rend_service_t {
|
||||
/* Fields specified in config file */
|
||||
char *directory;
|
||||
smartlist_t *ports;
|
||||
char *intro_nodes;
|
||||
char *intro_exclude_nodes;
|
||||
/* Other fields */
|
||||
crypto_pk_env_t *private_key;
|
||||
char service_id[REND_SERVICE_ID_LEN+1];
|
||||
@ -165,19 +167,33 @@ int rend_config_services(or_options_t *options)
|
||||
service = tor_malloc_zero(sizeof(rend_service_t));
|
||||
service->directory = tor_strdup(line->value);
|
||||
service->ports = smartlist_create();
|
||||
} else {
|
||||
assert(!strcasecmp(line->key, "HiddenServicePort"));
|
||||
if (!service) {
|
||||
log_fn(LOG_WARN, "HiddenServicePort with no preceeding HiddenServiceDir directive");
|
||||
rend_service_free(service);
|
||||
return -1;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (!service) {
|
||||
log_fn(LOG_WARN, "HiddenServicePort with no preceeding HiddenServiceDir directive");
|
||||
rend_service_free(service);
|
||||
return -1;
|
||||
}
|
||||
if (!strcasecmp(line->key, "HiddenServicePort")) {
|
||||
portcfg = parse_port_config(line->value);
|
||||
if (!portcfg) {
|
||||
rend_service_free(service);
|
||||
return -1;
|
||||
}
|
||||
smartlist_add(service->ports, portcfg);
|
||||
} else if (!strcasecmp(line->key, "HiddenServiceNodes")) {
|
||||
if (service->intro_nodes) {
|
||||
log_fn(LOG_WARN, "Got multiple HiddenServiceNodes lines for a single service");
|
||||
return -1;
|
||||
}
|
||||
service->intro_nodes = tor_strdup(line->value);
|
||||
} else {
|
||||
assert(!strcasecmp(line->key, "HiddenServiceExcludeNodes"));
|
||||
if (service->intro_exclude_nodes) {
|
||||
log_fn(LOG_WARN, "Got multiple HiddenServiceExcludedNodes lines for a single service");
|
||||
return -1;
|
||||
}
|
||||
service->intro_exclude_nodes = tor_strdup(line->value);
|
||||
}
|
||||
}
|
||||
if (service)
|
||||
|
Loading…
Reference in New Issue
Block a user