from allmydata.util.time_format import parse_duration, parse_date
from allmydata.stats import StatsProvider
from allmydata.history import History
-from allmydata.interfaces import IStatsProducer, RIStubClient
+from allmydata.interfaces import IStatsProducer, RIStubClient, \
+ SDMF_VERSION, MDMF_VERSION
from allmydata.nodemaker import NodeMaker
+from allmydata.blacklist import Blacklist
KiB=1024
mutable files which don't otherwise specify a size. This will affect
all subsequent calls to generate() without a keysize= argument. The
default size is 2048 bits. Test cases should call this method once
- during setup, to cause me to create smaller (522 bit) keys, so the
- unit tests run faster."""
+ during setup, to cause me to create smaller keys, so the unit tests
+ run faster."""
self.default_keysize = keysize
def generate(self, keysize=None):
"""I return a Deferred that fires with a (verifyingkey, signingkey)
- pair. I accept a keysize in bits (522 bit keys are fast for testing,
- 2048 bit keys are standard). If you do not provide a keysize, I will
+ pair. I accept a keysize in bits (2048 bit keys are standard, smaller
+ keys are used for testing). If you do not provide a keysize, I will
use my default, which is set by a call to set_default_keysize(). If
set_default_keysize() has never been called, I will create 2048 bit
keys."""
self.terminator.setServiceParent(self)
self.add_service(Uploader(helper_furl, self.stats_provider))
self.init_stub_client()
+ self.init_blacklist()
self.init_nodemaker()
def init_client_storage_broker(self):
d.addErrback(log.err, facility="tahoe.init",
level=log.BAD, umid="OEHq3g")
+ def init_blacklist(self):
+ fn = os.path.join(self.basedir, "access.blacklist")
+ self.blacklist = Blacklist(fn)
+
def init_nodemaker(self):
self.nodemaker = NodeMaker(self.storage_broker,
self._secret_holder,
self.getServiceNamed("uploader"),
self.terminator,
self.get_encoding_parameters(),
- self._key_generator)
+ self._key_generator,
+ self.blacklist)
+ default = self.get_config("client", "mutable.format", default="sdmf")
+ if default == "mdmf":
+ self.mutable_file_default = MDMF_VERSION
+ else:
+ self.mutable_file_default = SDMF_VERSION
def get_history(self):
return self.history
def init_drop_uploader(self):
if self.get_config("drop_upload", "enabled", False, boolean=True):
- upload_uri = self.get_config("drop_upload", "upload.uri", None)
+ upload_dircap = self.get_config("drop_upload", "upload.dircap", None)
local_dir_utf8 = self.get_config("drop_upload", "local.directory", None)
- if upload_uri and local_dir_utf8:
+ if upload_dircap and local_dir_utf8:
try:
from allmydata.frontends import drop_upload
- s = drop_upload.DropUploader(self, upload_uri, local_dir_utf8)
+ s = drop_upload.DropUploader(self, upload_dircap, local_dir_utf8)
s.setServiceParent(self)
- s.start()
+ s.startService()
except Exception, e:
self.log("couldn't start drop-uploader: %r", args=(e,))
else:
- self.log("couldn't start drop-uploader: upload.uri or local.directory not specified")
+ self.log("couldn't start drop-uploader: upload.dircap or local.directory not specified")
def _check_hotline(self, hotline_file):
if os.path.exists(hotline_file):
# may get an opaque node if there were any problems.
return self.nodemaker.create_from_cap(write_uri, read_uri, deep_immutable=deep_immutable, name=name)
- def create_dirnode(self, initial_children={}):
- d = self.nodemaker.create_new_mutable_directory(initial_children)
+ def create_dirnode(self, initial_children={}, version=SDMF_VERSION):
+ d = self.nodemaker.create_new_mutable_directory(initial_children, version=version)
return d
def create_immutable_dirnode(self, children, convergence=None):
return self.nodemaker.create_immutable_directory(children, convergence)
- def create_mutable_file(self, contents=None, keysize=None):
- return self.nodemaker.create_mutable_file(contents, keysize)
+ def create_mutable_file(self, contents=None, keysize=None, version=None):
+ if not version:
+ version = self.mutable_file_default
+ return self.nodemaker.create_mutable_file(contents, keysize,
+ version=version)
def upload(self, uploadable):
uploader = self.getServiceNamed("uploader")