Fix tor configuration parsing to avoid loading of secrets

This commit is contained in:
Christophe Mehay 2021-02-20 14:34:40 +01:00 committed by Christophe Mehay
parent 3434863f10
commit a37645543f
5 changed files with 408 additions and 410 deletions

View file

@ -1 +1 @@
0.4.4.7 0.4.5.6

View file

@ -24,12 +24,8 @@ services:
# Set secret for key, use the same name as the service # Set secret for key, use the same name as the service
secrets: secrets:
- source: foo - foo
target: foo - bar
mode: 0400
- source: bar
target: bar
mode: 0400
hello: hello:
image: tutum/hello-world image: tutum/hello-world

View file

@ -113,9 +113,9 @@ class Setup(object):
assert len(key) > 800 assert len(key) > 800
self.setup[host]['key'] = key self.setup[host]['key'] = key
def _load_keys_in_services(self): def _load_keys_in_services(self, secret=True):
for service in self.services: for service in self.services:
service.load_key() service.load_key(secret=secret)
def _get_service(self, host, service): def _get_service(self, host, service):
self._add_host(host) self._add_host(host)
@ -437,7 +437,7 @@ class Onions(Setup):
service.add_ports(service_dict['ports']) service.add_ports(service_dict['ports'])
if service not in group.services: if service not in group.services:
group.add_service(service) group.add_service(service)
self._load_keys_in_services() self._load_keys_in_services(secret=False)
if not os.path.exists(self.torrc): if not os.path.exists(self.torrc):
return return
@ -489,16 +489,16 @@ def main():
logging.getLogger().setLevel(logging.WARNING) logging.getLogger().setLevel(logging.WARNING)
try: try:
onions = Onions() onions = Onions()
if args.setup:
onions.setup_hosts()
else:
onions.torrc_parser()
if args.vanguards: if args.vanguards:
onions.run_vanguards() onions.run_vanguards()
return return
if args.resolve_control_port: if args.resolve_control_port:
onions.resolve_control_port() onions.resolve_control_port()
return return
if args.setup:
onions.setup_hosts()
else:
onions.torrc_parser()
except BaseException as e: except BaseException as e:
logging.exception(e) logging.exception(e)
error_msg = str(e) error_msg = str(e)

View file

@ -113,9 +113,10 @@ class ServicesGroup(object):
with open(key_file, 'rb') as f: with open(key_file, 'rb') as f:
self._onion.set_private_key_from_file(f) self._onion.set_private_key_from_file(f)
def load_key(self, override=False): def load_key(self, override=False, secret=True):
if self.imported_key and not override: if self.imported_key and not override:
return return
if secret:
self.load_key_from_secrets() self.load_key_from_secrets()
self.load_key_from_conf() self.load_key_from_conf()

797
poetry.lock generated

File diff suppressed because it is too large Load diff