+"""Loading of configuration files and parameters.
+
+@type version: L{twisted.python.versions.Version}
+@var version: the version of this program
+@type DEFAULT_CONFIG_FILES: C{list} of C{string}
+@var DEFAULT_CONFIG_FILES: the default config files to load (in order)
+@var DEFAULTS: the default config parameter values for the main program
+@var DHT_DEFAULTS: the default config parameter values for the default DHT
+
+"""
+
import os, sys
from ConfigParser import SafeConfigParser
from twisted.python import log, versions
class ConfigError(Exception):
+ """Errors that occur in the loading of configuration variables."""
def __init__(self, message):
self.message = message
def __str__(self):
return repr(self.message)
version = versions.Version('apt-dht', 0, 0, 0)
+
+# Set the home parameter
home = os.path.expandvars('${HOME}')
if home == '${HOME}' or not os.path.isdir(home):
home = os.path.expanduser('~')
if not os.path.isdir(home):
home = os.path.abspath(os.path.dirname(sys.argv[0]))
+
DEFAULT_CONFIG_FILES=['/etc/apt-dht/apt-dht.conf',
home + '/.apt-dht/apt-dht.conf']
}
class AptDHTConfigParser(SafeConfigParser):
+ """Adds 'gettime' and 'getstringlist' to ConfigParser objects.
+
+ @param time_multipliers: the 'gettime' suffixes and the multipliers needed
+ to convert them to seconds
"""
- Adds 'gettime' to ConfigParser to interpret the suffixes.
- """
+
time_multipliers={
's': 1, #seconds
'm': 60, #minutes
}
def gettime(self, section, option):
+ """Read the config parameter as a time value."""
mult = 1
value = self.get(section, option)
if len(value) == 0:
mult = self.time_multipliers[suffix]
value = value[:-1]
return int(value)*mult
+
def getstring(self, section, option):
+ """Read the config parameter as a string."""
return self.get(section,option)
+
def getstringlist(self, section, option):
+ """Read the multi-line config parameter as a list of strings."""
return self.get(section,option).split()
+
def optionxform(self, option):
+ """Use all uppercase in the config parameters names."""
return option.upper()
+# Initialize the default config parameters
config = AptDHTConfigParser(DEFAULTS)
config.add_section(config.get('DEFAULT', 'DHT'))
for k in DHT_DEFAULTS: