def get_config(defaults, section): dir_root = get_config_dir() if dir_root is None and os.name == 'nt': tmp_dir_root = os.path.split(sys.executable)[0] if os.access(tmp_dir_root, os.R_OK | os.W_OK): dir_root = tmp_dir_root if dir_root is None: return {} configdir = os.path.join(dir_root, '.bittorrent') if not os.path.isdir(configdir): try: os.mkdir(configdir, 0700) except: pass p = _read_config(os.path.join(configdir, 'config')) values = {} if p.has_section(section): for name, value in p.items(section): if name in defaults: values[name] = value if p.has_section('common'): for name, value in p.items('common'): if name in defaults and name not in values: values[name] = value if defaults.get('data_dir') == '' and \ 'data_dir' not in values and os.path.isdir(configdir): datadir = os.path.join(configdir, 'data') values['data_dir'] = datadir parseargs.parse_options(defaults, values) return values
def get_config(defaults, section): dir_root = get_config_dir() if dir_root is None: return {} configdir = os.path.join(dir_root, '.bittorrent') if not os.path.isdir(configdir): try: os.mkdir(configdir, 0700) except: pass p = _read_config(os.path.join(configdir, 'config')) values = {} if p.has_section(section): for name, value in p.items(section): if name in defaults: values[name] = value if p.has_section('common'): for name, value in p.items('common'): if name in defaults and name not in values: values[name] = value if defaults.get('data_dir') == '' and \ 'data_dir' not in values and os.path.isdir(configdir): datadir = os.path.join(configdir, 'data') values['data_dir'] = datadir parseargs.parse_options(defaults, values) return values
def get_config(defaults, section): dir_root = get_config_dir() if dir_root is None and os.name == 'nt': tmp_dir_root = os.path.split(sys.executable)[0] if os.access(tmp_dir_root, os.R_OK|os.W_OK): dir_root = tmp_dir_root if dir_root is None: return {} configdir = os.path.join(dir_root, '.bittorrent') if not os.path.isdir(configdir): try: os.mkdir(configdir, 0700) except: pass p = RawConfigParser() p.read(os.path.join(configdir, 'config')) values = {} if p.has_section(section): for name, value in p.items(section): if name in defaults: values[name] = value if p.has_section('common'): for name, value in p.items('common'): if name in defaults and name not in values: values[name] = value if defaults.get('data_dir') == '' and \ 'data_dir' not in values and os.path.isdir(configdir): datadir = os.path.join(configdir, 'data') values['data_dir'] = datadir parseargs.parse_options(defaults, values) return values
def parse_configuration_and_args(defaults, uiname, arglist=[], minargs=0, maxargs=0): defconfig = dict([(name, value) for (name, value, doc) in defaults]) if arglist[0:] == ['--version']: print version sys.exit(0) if arglist[0:] in (['--help'], ['-h'], ['--usage'], ['-?']): parseargs.printHelp(uiname, defaults) sys.exit(0) presets = get_config(defconfig, uiname) config, args = parseargs.parseargs(arglist, defaults, minargs, maxargs, presets) datadir = config['data_dir'] if datadir: if uiname in ('bittorrent', 'maketorrent'): values = {} p = _read_config(os.path.join(datadir, MAIN_CONFIG_FILE)) if not p.has_section(uiname) and p.has_section(alt_uiname[uiname]): uiname = alt_uiname[uiname] if p.has_section(uiname): for name, value in p.items(uiname): if name in defconfig: values[name] = value parseargs.parse_options(defconfig, values) presets.update(values) config, args = parseargs.parseargs(arglist, defaults, minargs, maxargs, presets) for d in ('', 'resume', 'metainfo'): ddir = os.path.join(datadir, d) try: if not os.path.exists(ddir): os.mkdir(ddir, 0700) except: pass if config['language'] != '': try: lang = gettext.translation('bittorrent', locale_root, languages=[config['language']]) lang.install() except IOError: # don't raise an error, just continue untranslated sys.stderr.write( _('Could not find translation for language "%s"\n') % config['language']) if config.has_key('bind') and ['bind'] != '': bind_tracker_connection(config['bind']) return config, args
def get_config(defaults, section): """This reads the key-value pairs from the specified section in the config file and from the common section. It then places those appearing in the defaults into a dict, which is then returned. @type defaults: dict @param defaults: dict of name-value pairs derived from the defaults list for this application (see defaultargs.py). Only the names in the name-value pairs are used. get_config only reads variables from the config file with matching names. @type section: str @param section: in the configuration from which to read options. So far, the sections have been named after applications, e.g., bittorrent, bittorrent-console, etc. @return: a dict containing option-value pairs. """ assert type(defaults)==dict assert type(section)==str configdir = get_dot_dir() if configdir is None: return {} if not os.path.isdir(configdir): try: os.mkdir(configdir, 0700) except: pass p = _read_config(os.path.join(configdir, 'config')) # returns parser. if p.has_section('format'): encoding = p.get('format', 'encoding') else: encoding = old_broken_config_subencoding values = {} if p.has_section(section): for name, value in p.items(section): if name in defaults: values[name] = value if p.has_section('common'): for name, value in p.items('common'): if name in defaults and name not in values: values[name] = value if defaults.get('data_dir') == '' and \ 'data_dir' not in values and os.path.isdir(configdir): datadir = os.path.join(configdir, 'data') values['data_dir'] = decode_from_filesystem(datadir) parseargs.parse_options(defaults, values, encoding) return values
def parse_configuration_and_args(defaults, uiname, arglist=[], minargs=0, maxargs=0): defconfig = dict([(name, value) for (name, value, doc) in defaults]) if arglist[0:] == ['--version']: print version sys.exit(0) if arglist[0:] in (['--help'], ['-h'], ['--usage'], ['-?']): parseargs.printHelp(uiname, defaults) sys.exit(0) presets = get_config(defconfig, uiname) config, args = parseargs.parseargs(arglist, defaults, minargs, maxargs, presets) datadir = config['data_dir'] if datadir: if uiname in ('bittorrent', 'maketorrent'): values = {} p = _read_config(os.path.join(datadir, MAIN_CONFIG_FILE)) if not p.has_section(uiname) and p.has_section(alt_uiname[uiname]): uiname = alt_uiname[uiname] if p.has_section(uiname): for name, value in p.items(uiname): if name in defconfig: values[name] = value parseargs.parse_options(defconfig, values) presets.update(values) config, args = parseargs.parseargs(arglist, defaults, minargs, maxargs, presets) for d in ('', 'resume', 'metainfo'): ddir = os.path.join(datadir, d) try: if not os.path.exists(ddir): os.mkdir(ddir, 0700) except: pass if config['language'] != '': try: lang = gettext.translation('bittorrent', locale_root, languages=[config['language']]) lang.install() except IOError: # don't raise an error, just continue untranslated sys.stderr.write(_('Could not find translation for language "%s"\n') % config['language']) if config.has_key('bind') and ['bind'] != '': bind_tracker_connection(config['bind']) return config, args
def parse_configuration_and_args(defaults, uiname, arglist=[], minargs=0, maxargs=0): defconfig = dict([(name, value) for (name, value, doc) in defaults]) if arglist[0:] == ['--version']: print version sys.exit(0) if arglist[0:] in (['--help'], ['-h'], ['--usage'], ['-?']): parseargs.printHelp(uiname, defaults) sys.exit(0) presets = get_config(defconfig, uiname) config, args = parseargs.parseargs(arglist, defaults, minargs, maxargs, presets) datadir = config['data_dir'] if datadir: if uiname in ('btdownloadgui', 'btmaketorrentgui'): p = RawConfigParser() values = {} p.read(os.path.join(datadir, 'ui_config')) if p.has_section(uiname): for name, value in p.items(uiname): if name in defconfig: values[name] = value parseargs.parse_options(defconfig, values) presets.update(values) config, args = parseargs.parseargs(arglist, defaults, minargs, maxargs, presets) rdir = os.path.join(datadir, 'resume') mdir = os.path.join(datadir, 'metainfo') try: if not os.path.exists(datadir): os.mkdir(datadir, 0700) if not os.path.exists(mdir): os.mkdir(mdir, 0700) if not os.path.exists(rdir): os.mkdir(rdir, 0700) except: pass return config, args
def get_config(defaults, section): def check_sysvars(x): y = os.path.expandvars(x) if y != x and os.path.isdir(y): return y return None for d in ['${APPDATA}', '${HOME}', '${HOMEPATH}', '${USERPROFILE}']: dir_root = check_sysvars(d) if dir_root is not None: break else: dir_root = os.path.expanduser('~') if dir_root == '~' or not os.path.isdir(dir_root): dir_root = None if dir_root is None: return {} configdir = os.path.join(dir_root, '.bittorrent') if not os.path.isdir(configdir): try: os.mkdir(configdir, 0700) except: pass p = RawConfigParser() p.read(os.path.join(configdir, 'config')) values = {} if p.has_section(section): for name, value in p.items(section): if name in defaults: values[name] = value if p.has_section('common'): for name, value in p.items('common'): if name in defaults and name not in values: values[name] = value if defaults.get('data_dir') == '' and \ 'data_dir' not in values and os.path.isdir(configdir): datadir = os.path.join(configdir, 'data') values['data_dir'] = datadir parseargs.parse_options(defaults, values) return values
if p.has_section(uiname): for name, value in p.items(uiname): if name in defconfig: values[name] = value elif not found_4x_config: # identify 4.x version config file if name in ('start_torrent_behavior', 'seed_forever', 'progressbar_hack', 'seed_last_forever', 'next_torrent_ratio', 'next_torrent_time', 'last_torrent_ratio', ): found_4x_config = True parseargs.parse_options(defconfig, values, encoding) presets.update(values) config, args = parseargs.parseargs(arglist, defaults, minargs, maxargs, presets) for d in ('', 'resume', 'metainfo', 'torrents'): ddir = os.path.join(datadir, d) if not os.path.exists(ddir): os.mkdir(ddir, 0700) else: assert(os.path.isdir(ddir)) if found_4x_config: # version 4.x stored KB/s, < version 4.x stores B/s config['max_upload_rate'] *= 1024