def _save_as_config(self, path): conf = stem.util.conf.Config() conf.set('name', self.name) conf.set('synopsis', self.synopsis) conf.set('description', self.description) if self.man_commit: conf.set('man_commit', self.man_commit) if self.stem_commit: conf.set('stem_commit', self.stem_commit) for k, v in self.commandline_options.items(): conf.set('commandline_options', '%s => %s' % (k, v), overwrite = False) for k, v in self.signals.items(): conf.set('signals', '%s => %s' % (k, v), overwrite = False) for k, v in self.files.items(): conf.set('files', '%s => %s' % (k, v), overwrite = False) for k, v in self.config_options.items(): conf.set('config_options.%s.category' % k, v.category) conf.set('config_options.%s.name' % k, v.name) conf.set('config_options.%s.usage' % k, v.usage) conf.set('config_options.%s.summary' % k, v.summary) conf.set('config_options.%s.description' % k, v.description) conf.save(path)
def save(self, path): """ Persists the manual content to a given location. :param str path: path to save our manual content to :raises: **IOError** if unsuccessful """ conf = stem.util.conf.Config() conf.set('name', self.name) conf.set('synopsis', self.synopsis) conf.set('description', self.description) if self.man_commit: conf.set('man_commit', self.man_commit) if self.stem_commit: conf.set('stem_commit', self.stem_commit) for k, v in self.commandline_options.items(): conf.set('commandline_options', '%s => %s' % (k, v), overwrite=False) for k, v in self.signals.items(): conf.set('signals', '%s => %s' % (k, v), overwrite=False) for k, v in self.files.items(): conf.set('files', '%s => %s' % (k, v), overwrite=False) for k, v in self.config_options.items(): conf.set('config_options.%s.category' % k, v.category) conf.set('config_options.%s.name' % k, v.name) conf.set('config_options.%s.usage' % k, v.usage) conf.set('config_options.%s.summary' % k, v.summary) conf.set('config_options.%s.description' % k, v.description) conf.save(path)
def _write(fallbacks: Dict[str, 'stem.directory.Fallback'], tor_commit: str, stem_commit: str, headers: Mapping[str, str], path: str = FALLBACK_CACHE_PATH) -> None: """ Persists fallback directories to a location in a way that can be read by from_cache(). :param fallbacks: mapping of fingerprints to their fallback directory :param tor_commit: tor commit the fallbacks came from :param stem_commit: stem commit the fallbacks came from :param headers: metadata about the file these came from :param path: location fallbacks will be persisted to """ conf = stem.util.conf.Config() conf.set('tor_commit', tor_commit) conf.set('stem_commit', stem_commit) for k, v in headers.items(): conf.set('header.%s' % k, v) for directory in sorted(fallbacks.values(), key=lambda x: x.fingerprint): fingerprint = directory.fingerprint conf.set('%s.address' % fingerprint, directory.address) conf.set('%s.or_port' % fingerprint, str(directory.or_port)) conf.set('%s.dir_port' % fingerprint, str(directory.dir_port)) conf.set('%s.nickname' % fingerprint, directory.nickname) conf.set('%s.has_extrainfo' % fingerprint, 'true' if directory.has_extrainfo else 'false') if directory.orport_v6: conf.set('%s.orport6_address' % fingerprint, str(directory.orport_v6[0])) conf.set('%s.orport6_port' % fingerprint, str(directory.orport_v6[1])) conf.save(path)
def save(self, path): """ Persists the manual content to a given location. :param str path: path to save our manual content to :raises: **IOError** if unsuccessful """ conf = stem.util.conf.Config() conf.set('name', self.name) conf.set('synopsis', self.synopsis) conf.set('description', self.description) if self.man_commit: conf.set('man_commit', self.man_commit) if self.stem_commit: conf.set('stem_commit', self.stem_commit) for k, v in self.commandline_options.items(): conf.set('commandline_options', '%s => %s' % (k, v), overwrite = False) for k, v in self.signals.items(): conf.set('signals', '%s => %s' % (k, v), overwrite = False) for k, v in self.files.items(): conf.set('files', '%s => %s' % (k, v), overwrite = False) for k, v in self.config_options.items(): conf.set('config_options.%s.category' % k, v.category) conf.set('config_options.%s.name' % k, v.name) conf.set('config_options.%s.usage' % k, v.usage) conf.set('config_options.%s.summary' % k, v.summary) conf.set('config_options.%s.description' % k, v.description) conf.save(path)
print('Latest tor commit editing fallback directories: %s' % fallback_dir_commit) print('Current stem commit: %s' % stem_commit) print('') cached_fallback_directories = stem.descriptor.remote.FallbackDirectory.from_cache() latest_fallback_directories = stem.descriptor.remote.FallbackDirectory.from_remote() if cached_fallback_directories == latest_fallback_directories: print('Fallback directories are already up to date, nothing to do.') sys.exit(0) print('Differences detected...\n') print(stem.descriptor.remote._fallback_directory_differences(cached_fallback_directories, latest_fallback_directories)) conf = stem.util.conf.Config() conf.set('tor_commit', fallback_dir_commit) conf.set('stem_commit', stem_commit) for directory in sorted(latest_fallback_directories.values(), lambda x, y: cmp(x.fingerprint, y.fingerprint)): fingerprint = directory.fingerprint conf.set('%s.address' % fingerprint, directory.address) conf.set('%s.or_port' % fingerprint, str(directory.or_port)) conf.set('%s.dir_port' % fingerprint, str(directory.dir_port)) if directory.orport_v6: conf.set('%s.orport6_address' % fingerprint, str(directory.orport_v6[0])) conf.set('%s.orport6_port' % fingerprint, str(directory.orport_v6[1])) conf.save(stem.descriptor.remote.CACHE_PATH)
stem_commit = stem.util.system.call('git rev-parse HEAD')[0] except IOError as exc: print("Unable to determine stem's current commit: %s" % exc) sys.exit(1) print('Latest tor commit editing fallback directories: %s' % fallback_dir_commit) print('Current stem commit: %s' % stem_commit) print('') cached_fallback_directories = stem.descriptor.remote.FallbackDirectory.from_cache() latest_fallback_directories = stem.descriptor.remote.FallbackDirectory.from_remote() if cached_fallback_directories == latest_fallback_directories: print('Fallback directories are already up to date, nothing to do.') sys.exit(0) print('Differences detected...\n') print(stem.descriptor.remote._fallback_directory_differences(cached_fallback_directories, latest_fallback_directories)) conf = stem.util.conf.Config() conf.set('tor_commit', fallback_dir_commit) conf.set('stem_commit', stem_commit) for directory in latest_fallback_directories.values(): fingerprint = directory.fingerprint conf.set('%s.address' % fingerprint, directory.address) conf.set('%s.or_port' % fingerprint, str(directory.or_port)) conf.set('%s.dir_port' % fingerprint, str(directory.dir_port)) conf.save(stem.descriptor.remote.CACHE_PATH)