X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=apt_p2p%2Fapt_p2p_conf.py;h=8e6f27417d1e10a30f8110702db8533ae2cc8310;hb=1b6577e26171c89d44636e3773398d6281a97346;hp=fe56d7c9c456f7460ae517c38c116e7ff154021c;hpb=1b2b271f65329a6bfaf7a5c935b9971834662865;p=quix0rs-apt-p2p.git diff --git a/apt_p2p/apt_p2p_conf.py b/apt_p2p/apt_p2p_conf.py index fe56d7c..8e6f274 100644 --- a/apt_p2p/apt_p2p_conf.py +++ b/apt_p2p/apt_p2p_conf.py @@ -23,7 +23,7 @@ class ConfigError(Exception): def __str__(self): return repr(self.message) -version = versions.Version('apt-p2p', 0, 0, 0) +version = versions.Version('apt-p2p', 0, 1, 2) # Set the home parameter home = os.path.expandvars('${HOME}') @@ -44,6 +44,12 @@ DEFAULTS = { # Set this to 0 to not limit the upload bandwidth. 'UPLOAD_LIMIT': '0', + # The minimum number of peers before the mirror is not used. + # If there are fewer peers than this for a file, the mirror will also be + # used to speed up the download. Set to 0 to never use the mirror if + # there are peers. + 'MIN_DOWNLOAD_PEERS': '3', + # Directory to store the downloaded files in 'CACHE_DIR': home + '/.apt-p2p/cache', @@ -52,12 +58,12 @@ DEFAULTS = { # for everybody to download 'OTHER_DIRS': """""", - # User name to try and run as - 'USERNAME': '', - # Whether it's OK to use an IP address from a known local/private range 'LOCAL_OK': 'no', + # Whether a remote peer can access the statistics page + 'REMOTE_STATS': 'yes', + # Unload the packages cache after an interval of inactivity this long. # The packages cache uses a lot of memory, and only takes a few seconds # to reload when a new request arrives. @@ -65,8 +71,11 @@ DEFAULTS = { # Refresh the DHT keys after this much time has passed. # This should be a time slightly less than the DHT's KEY_EXPIRE value. - 'KEY_REFRESH': '57m', + 'KEY_REFRESH': '2.5h', + # The user name to try and run as (leave blank to run as current user) + 'USERNAME': 'apt-p2p', + # Which DHT implementation to use. # It must be possible to do "from .DHT import DHT" to get a class that # implements the IDHT interface. @@ -83,12 +92,6 @@ DHT_DEFAULTS = { # whether this node is a bootstrap node 'BOOTSTRAP_NODE': "no", - # Kademlia "K" constant, this should be an even number - 'K': '8', - - # SHA1 is 160 bits long - 'HASH_LENGTH': '160', - # checkpoint every this many seconds 'CHECKPOINT_INTERVAL': '5m', # five minutes @@ -118,10 +121,21 @@ DHT_DEFAULTS = { 'BUCKET_STALENESS': '1h', # one hour # expire entries older than this - 'KEY_EXPIRE': '1h', # 60 minutes + 'KEY_EXPIRE': '3h', # 3 hours + + # Timeout KRPC requests to nodes after this time. + 'KRPC_TIMEOUT': '9s', + # KRPC requests are resent using exponential backoff starting with this delay. + # The request will first be resent after the delay set here. + # The request will be resent again after twice the delay set here. etc. + # e.g. if TIMEOUT is 9 sec., and INITIAL_DELAY is 2 sec., then requests will + # be resent at times 0, 2 (2 sec. later), and 6 (4 sec. later), and then will + # timeout at 9. + 'KRPC_INITIAL_DELAY': '2s', + # whether to spew info about the requests/responses in the protocol - 'SPEW': 'yes', + 'SPEW': 'no', } class AptP2PConfigParser(SafeConfigParser): @@ -148,7 +162,7 @@ class AptP2PConfigParser(SafeConfigParser): if suffix in self.time_multipliers.keys(): mult = self.time_multipliers[suffix] value = value[:-1] - return int(value)*mult + return int(float(value)*mult) def getstring(self, section, option): """Read the config parameter as a string.""" @@ -194,6 +208,14 @@ class TestConfigParser(unittest.TestCase): config.set('DEFAULT', 'time_tester_4', '37s') self.failUnless(config.gettime('DEFAULT', 'time_tester_4') == 37) + def test_floating_time(self): + config.set('DEFAULT', 'time_float_tester_1', '2.5d') + self.failUnless(config.gettime('DEFAULT', 'time_float_tester_1') == int(2.5*86400)) + config.set('DEFAULT', 'time_float_tester_2', '0.5h') + self.failUnless(config.gettime('DEFAULT', 'time_float_tester_2') == int(0.5*3600)) + config.set('DEFAULT', 'time_float_tester_3', '4.3333m') + self.failUnless(config.gettime('DEFAULT', 'time_float_tester_3') == int(4.3333*60)) + def test_string(self): config.set('DEFAULT', 'string_test', 'foobar') self.failUnless(type(config.getstring('DEFAULT', 'string_test')) == str)