Fix typo, add test for v2 secret key in env, fix docker build scripts

This commit is contained in:
Christophe Mehay 2019-08-03 16:33:21 +02:00 committed by Christophe Mehay
parent b0564669ac
commit 5ae69fe761
13 changed files with 108 additions and 18 deletions

View file

@ -8,6 +8,7 @@ import re
from pytor import OnionV2
from pytor import OnionV3
from pytor.onion import EmptyDirException
class ServicesGroup(object):
@ -16,7 +17,6 @@ class ServicesGroup(object):
version = None
imported_key = False
_default_version = 2
_imported_key = False
_onion = None
_hidden_service_dir = "/var/lib/tor/hidden_service/"
@ -75,7 +75,7 @@ class ServicesGroup(object):
return service
def add_key(self, key):
if self._imported_key:
if self.imported_key:
logging.warning('Secret key already set, overriding')
# Try to decode key from base64 encoding
# import the raw data if the input cannot be decoded as base64
@ -84,7 +84,7 @@ class ServicesGroup(object):
except binascii.Error:
pass
self._onion.set_private_key(key)
self._imported_key = True
self.imported_key = True
def __iter__(self):
yield 'name', self.name
@ -120,7 +120,7 @@ class ServicesGroup(object):
self._onion.set_private_key_from_file(f)
def load_key(self, override=False):
if self._imported_key and not override:
if self.imported_key and not override:
return
self.load_key_from_secrets()
self.load_key_from_conf()
@ -132,7 +132,7 @@ class ServicesGroup(object):
return
try:
self._load_key(secret_file)
self._imported_key = True
self.imported_key = True
except BaseException as e:
logging.exception(e)
logging.warning('Fail to load key from secret, '
@ -144,7 +144,11 @@ class ServicesGroup(object):
hidden_service_dir = self.hidden_service_dir
if not os.path.isdir(hidden_service_dir):
return
self._onion.load_hidden_service(hidden_service_dir)
try:
self._onion.load_hidden_service(hidden_service_dir)
self.imported_key = True
except EmptyDirException:
pass
def gen_key(self):
self.imported_key = False

View file

@ -208,6 +208,30 @@ def test_key(monkeypatch):
assert onion.services[0].onion_url == onion_url
def test_key_v2(monkeypatch):
key, onion_url = get_key_and_onion(version=2)
envs = [{
'GROUP1_TOR_SERVICE_HOSTS': '80:service1:80,81:service2:80',
'GROUP1_TOR_SERVICE_VERSION': '2',
'GROUP1_TOR_SERVICE_KEY': key,
}, {
'GROUP1_TOR_SERVICE_HOSTS': '80:service1:80,81:service2:80',
'GROUP1_TOR_SERVICE_KEY': key,
}]
for env in envs:
monkeypatch.setattr(os, 'environ', env)
onion = Onions()
onion._get_setup_from_env()
onion._load_keys_in_services()
assert len(os.environ) == len(env)
assert len(onion.services) == 1
assert onion.services[0].onion_url == onion_url
def test_key_v3(monkeypatch):
key, onion_url = get_key_and_onion(version=3)
env = {