mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-06-18 23:38:18 +00:00
Move the introducer config reading code into _Config
This commit is contained in:
@ -1,7 +1,6 @@
|
|||||||
import os, stat, time, weakref
|
import os, stat, time, weakref
|
||||||
from base64 import urlsafe_b64encode
|
from base64 import urlsafe_b64encode
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from errno import ENOENT, EPERM
|
|
||||||
|
|
||||||
# On Python 2 this will be the backported package:
|
# On Python 2 this will be the backported package:
|
||||||
from configparser import NoSectionError
|
from configparser import NoSectionError
|
||||||
@ -464,51 +463,13 @@ def create_introducer_clients(config, main_tub, _introducer_factory=None):
|
|||||||
# we return this list
|
# we return this list
|
||||||
introducer_clients = []
|
introducer_clients = []
|
||||||
|
|
||||||
introducers_yaml_filename = config.get_private_path("introducers.yaml")
|
introducers = config.get_introducer_configuration()
|
||||||
introducers_filepath = FilePath(introducers_yaml_filename)
|
|
||||||
|
|
||||||
try:
|
for petname, introducer_furl in introducers.items():
|
||||||
with introducers_filepath.open() as f:
|
|
||||||
introducers_yaml = yamlutil.safe_load(f)
|
|
||||||
if introducers_yaml is None:
|
|
||||||
raise EnvironmentError(
|
|
||||||
EPERM,
|
|
||||||
"Can't read '{}'".format(introducers_yaml_filename),
|
|
||||||
introducers_yaml_filename,
|
|
||||||
)
|
|
||||||
introducers = introducers_yaml.get("introducers", {})
|
|
||||||
log.msg(
|
|
||||||
"found {} introducers in private/introducers.yaml".format(
|
|
||||||
len(introducers),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
except EnvironmentError as e:
|
|
||||||
if e.errno != ENOENT:
|
|
||||||
raise
|
|
||||||
introducers = {}
|
|
||||||
|
|
||||||
if "default" in introducers.keys():
|
|
||||||
raise ValueError(
|
|
||||||
"'default' introducer furl cannot be specified in introducers.yaml;"
|
|
||||||
" please fix impossible configuration."
|
|
||||||
)
|
|
||||||
|
|
||||||
# read furl from tahoe.cfg
|
|
||||||
tahoe_cfg_introducer_furl = config.get_config("client", "introducer.furl", None)
|
|
||||||
if tahoe_cfg_introducer_furl == "None":
|
|
||||||
raise ValueError(
|
|
||||||
"tahoe.cfg has invalid 'introducer.furl = None':"
|
|
||||||
" to disable it, use 'introducer.furl ='"
|
|
||||||
" or omit the key entirely"
|
|
||||||
)
|
|
||||||
if tahoe_cfg_introducer_furl:
|
|
||||||
introducers[u'default'] = {'furl':tahoe_cfg_introducer_furl}
|
|
||||||
|
|
||||||
for petname, introducer in introducers.items():
|
|
||||||
introducer_cache_filepath = FilePath(config.get_private_path("introducer_{}_cache.yaml".format(petname)))
|
introducer_cache_filepath = FilePath(config.get_private_path("introducer_{}_cache.yaml".format(petname)))
|
||||||
ic = _introducer_factory(
|
ic = _introducer_factory(
|
||||||
main_tub,
|
main_tub,
|
||||||
introducer['furl'].encode("ascii"),
|
introducer_furl.encode("ascii"),
|
||||||
config.nickname,
|
config.nickname,
|
||||||
str(allmydata.__full_version__),
|
str(allmydata.__full_version__),
|
||||||
str(_Client.OLDEST_SUPPORTED_VERSION),
|
str(_Client.OLDEST_SUPPORTED_VERSION),
|
||||||
|
@ -21,10 +21,13 @@ import types
|
|||||||
import errno
|
import errno
|
||||||
import tempfile
|
import tempfile
|
||||||
from base64 import b32decode, b32encode
|
from base64 import b32decode, b32encode
|
||||||
|
from errno import ENOENT, EPERM
|
||||||
|
from warnings import warn
|
||||||
|
|
||||||
# On Python 2 this will be the backported package.
|
# On Python 2 this will be the backported package.
|
||||||
import configparser
|
import configparser
|
||||||
|
|
||||||
|
from twisted.python.filepath import FilePath
|
||||||
from twisted.python import log as twlog
|
from twisted.python import log as twlog
|
||||||
from twisted.application import service
|
from twisted.application import service
|
||||||
from twisted.python.failure import Failure
|
from twisted.python.failure import Failure
|
||||||
@ -37,6 +40,9 @@ from allmydata.util.assertutil import _assert
|
|||||||
from allmydata.util.fileutil import abspath_expanduser_unicode
|
from allmydata.util.fileutil import abspath_expanduser_unicode
|
||||||
from allmydata.util.encodingutil import get_filesystem_encoding, quote_output
|
from allmydata.util.encodingutil import get_filesystem_encoding, quote_output
|
||||||
from allmydata.util import configutil
|
from allmydata.util import configutil
|
||||||
|
from allmydata.util.yamlutil import (
|
||||||
|
safe_load,
|
||||||
|
)
|
||||||
|
|
||||||
def _common_valid_config():
|
def _common_valid_config():
|
||||||
return configutil.ValidConfiguration({
|
return configutil.ValidConfiguration({
|
||||||
@ -428,6 +434,65 @@ class _Config(object):
|
|||||||
os.path.join(self._basedir, *args)
|
os.path.join(self._basedir, *args)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get_introducer_configuration(self):
|
||||||
|
"""
|
||||||
|
Get configuration for introducers.
|
||||||
|
|
||||||
|
:return {unicode: unicode}: A mapping from introducer petname to the
|
||||||
|
introducer's fURL.
|
||||||
|
"""
|
||||||
|
introducers_yaml_filename = self.get_private_path("introducers.yaml")
|
||||||
|
introducers_filepath = FilePath(introducers_yaml_filename)
|
||||||
|
|
||||||
|
try:
|
||||||
|
with introducers_filepath.open() as f:
|
||||||
|
introducers_yaml = safe_load(f)
|
||||||
|
if introducers_yaml is None:
|
||||||
|
raise EnvironmentError(
|
||||||
|
EPERM,
|
||||||
|
"Can't read '{}'".format(introducers_yaml_filename),
|
||||||
|
introducers_yaml_filename,
|
||||||
|
)
|
||||||
|
introducers = {
|
||||||
|
petname: config["furl"]
|
||||||
|
for petname, config
|
||||||
|
in introducers_yaml.get("introducers", {}).items()
|
||||||
|
}
|
||||||
|
log.msg(
|
||||||
|
"found {} introducers in private/introducers.yaml".format(
|
||||||
|
len(introducers),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
except EnvironmentError as e:
|
||||||
|
if e.errno != ENOENT:
|
||||||
|
raise
|
||||||
|
introducers = {}
|
||||||
|
|
||||||
|
if "default" in introducers.keys():
|
||||||
|
raise ValueError(
|
||||||
|
"'default' introducer furl cannot be specified in introducers.yaml;"
|
||||||
|
" please fix impossible configuration."
|
||||||
|
)
|
||||||
|
|
||||||
|
# read furl from tahoe.cfg
|
||||||
|
tahoe_cfg_introducer_furl = self.get_config("client", "introducer.furl", None)
|
||||||
|
if tahoe_cfg_introducer_furl == "None":
|
||||||
|
raise ValueError(
|
||||||
|
"tahoe.cfg has invalid 'introducer.furl = None':"
|
||||||
|
" to disable it, use 'introducer.furl ='"
|
||||||
|
" or omit the key entirely"
|
||||||
|
)
|
||||||
|
if tahoe_cfg_introducer_furl:
|
||||||
|
warn(
|
||||||
|
"tahoe.cfg [client]introducer.furl is deprecated; "
|
||||||
|
"use private/introducers.yaml instead.",
|
||||||
|
category=DeprecationWarning,
|
||||||
|
stacklevel=-1,
|
||||||
|
)
|
||||||
|
introducers['default'] = tahoe_cfg_introducer_furl
|
||||||
|
|
||||||
|
return introducers
|
||||||
|
|
||||||
|
|
||||||
def create_tub_options(config):
|
def create_tub_options(config):
|
||||||
"""
|
"""
|
||||||
|
Reference in New Issue
Block a user