mirror of
https://github.com/cmehay/docker-tor-hidden-service.git
synced 2025-04-21 22:39:10 +00:00
Do not exit if matched environment variable cannot be parsed
This commit is contained in:
parent
76af34c5af
commit
8c3b1f0b06
6 changed files with 54 additions and 68 deletions
13
Dockerfile
13
Dockerfile
|
@ -23,19 +23,24 @@ RUN apk add --no-cache git libevent-dev openssl-dev gcc make automake ca-cer
|
||||||
|
|
||||||
RUN mkdir -p /etc/tor/
|
RUN mkdir -p /etc/tor/
|
||||||
|
|
||||||
COPY onions /usr/local/src/onions/onions
|
COPY pyproject.toml /usr/local/src/onions/
|
||||||
COPY poetry.lock pyproject.toml /usr/local/src/onions/
|
|
||||||
COPY assets/torrc /var/local/tor/torrc.tpl
|
|
||||||
|
|
||||||
RUN cd /usr/local/src/onions && apk add --no-cache openssl-dev libffi-dev gcc libc-dev && \
|
RUN cd /usr/local/src/onions && apk add --no-cache openssl-dev libffi-dev gcc libc-dev && \
|
||||||
poetry install --no-dev && \
|
poetry install --no-dev --no-root && \
|
||||||
apk del libffi-dev gcc libc-dev openssl-dev
|
apk del libffi-dev gcc libc-dev openssl-dev
|
||||||
|
|
||||||
|
COPY onions /usr/local/src/onions/onions
|
||||||
|
COPY poetry.lock /usr/local/src/onions/
|
||||||
|
RUN cd /usr/local/src/onions && poetry install --no-dev
|
||||||
|
|
||||||
RUN mkdir -p ${HOME}/.tor && \
|
RUN mkdir -p ${HOME}/.tor && \
|
||||||
addgroup -S -g 107 tor && \
|
addgroup -S -g 107 tor && \
|
||||||
adduser -S -G tor -u 104 -H -h ${HOME} tor
|
adduser -S -G tor -u 104 -H -h ${HOME} tor
|
||||||
|
|
||||||
COPY assets/entrypoint-config.yml /
|
COPY assets/entrypoint-config.yml /
|
||||||
|
COPY assets/torrc /var/local/tor/torrc.tpl
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VOLUME ["/var/lib/tor/hidden_service/"]
|
VOLUME ["/var/lib/tor/hidden_service/"]
|
||||||
|
|
||||||
|
|
5
Makefile
5
Makefile
|
@ -25,7 +25,7 @@ rebuild:
|
||||||
docker-compose -f docker-compose.build.yml build --no-cache
|
docker-compose -f docker-compose.build.yml build --no-cache
|
||||||
|
|
||||||
run: build
|
run: build
|
||||||
docker-compose -f docker-compose-v1.yml up --force-recreate
|
docker-compose -f docker-compose.v1.yml up --force-recreate
|
||||||
run-v2: build
|
run-v2: build
|
||||||
docker-compose -f docker-compose.v2.yml up --force-recreate
|
docker-compose -f docker-compose.v2.yml up --force-recreate
|
||||||
|
|
||||||
|
@ -35,5 +35,8 @@ run-v2-socket: build
|
||||||
run-v3: build
|
run-v3: build
|
||||||
docker-compose -f docker-compose.v3.yml up --force-recreate
|
docker-compose -f docker-compose.v3.yml up --force-recreate
|
||||||
|
|
||||||
|
shell-v3: build
|
||||||
|
docker-compose -f docker-compose.v3.yml run tor--rm tor sh
|
||||||
|
|
||||||
run-v3-latest:
|
run-v3-latest:
|
||||||
docker-compose -f docker-compose.v3.latest.yml up --force-recreate
|
docker-compose -f docker-compose.v3.latest.yml up --force-recreate
|
||||||
|
|
|
@ -116,7 +116,11 @@ class Setup(object):
|
||||||
for key, val in os.environ.items():
|
for key, val in os.environ.items():
|
||||||
m = match(reg, key)
|
m = match(reg, key)
|
||||||
if m:
|
if m:
|
||||||
self.add_new_service(host=m.groups()[0].lower(), name=val)
|
try:
|
||||||
|
self.add_new_service(host=m.groups()[0].lower(), name=val)
|
||||||
|
except BaseException as e:
|
||||||
|
logging.error(f"Fail to setup from {key} environment")
|
||||||
|
logging.error(e)
|
||||||
|
|
||||||
def _set_ports(self, host, ports):
|
def _set_ports(self, host, ports):
|
||||||
self.add_new_service(host=host, ports=ports)
|
self.add_new_service(host=host, ports=ports)
|
||||||
|
@ -129,7 +133,11 @@ class Setup(object):
|
||||||
for key, val in os.environ.items():
|
for key, val in os.environ.items():
|
||||||
m = match(reg, key)
|
m = match(reg, key)
|
||||||
if m:
|
if m:
|
||||||
call(m.groups()[0].lower(), val)
|
try:
|
||||||
|
call(m.groups()[0].lower(), val)
|
||||||
|
except BaseException as e:
|
||||||
|
logging.error(f"Fail to setup from {key} environment")
|
||||||
|
logging.error(e)
|
||||||
|
|
||||||
def _setup_keys_and_ports_from_env(self):
|
def _setup_keys_and_ports_from_env(self):
|
||||||
self._setup_from_env(
|
self._setup_from_env(
|
||||||
|
@ -228,29 +236,33 @@ class Setup(object):
|
||||||
self.apply_conf()
|
self.apply_conf()
|
||||||
|
|
||||||
def check_services(self):
|
def check_services(self):
|
||||||
|
to_remove = set()
|
||||||
for group in self.services:
|
for group in self.services:
|
||||||
for service in group.services:
|
try:
|
||||||
if not service.ports:
|
for service in group.services:
|
||||||
raise Exception(
|
if not service.ports:
|
||||||
'Service {name} has not ports set'.format(
|
raise Exception(
|
||||||
name=service.host
|
'Service {name} has not ports set'.format(
|
||||||
|
name=service.host
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
if len(group.services) > 1 and [
|
||||||
if len(group.services) > 1 and [
|
True for p in service.ports if p.is_socket
|
||||||
True for p in service.ports if p.is_socket
|
]:
|
||||||
]:
|
raise Exception(
|
||||||
raise Exception(
|
f'Cannot use socket and ports '
|
||||||
'Cannot use socket and ports '
|
f'in the same {service.host}'
|
||||||
'in the same service'.format(
|
|
||||||
name=service.host
|
|
||||||
)
|
)
|
||||||
|
if len(set(dict(group)['urls'])) != len(dict(group)['urls']):
|
||||||
|
raise Exception(
|
||||||
|
f'Same port for multiple services in '
|
||||||
|
f'{group.name} group'
|
||||||
)
|
)
|
||||||
if len(set(dict(group)['urls'])) != len(dict(group)['urls']):
|
except Exception as e:
|
||||||
raise Exception(
|
logging.error(e)
|
||||||
'Same port for multiple services in {name} group'.format(
|
to_remove.add(group)
|
||||||
name=group.name
|
for group in to_remove:
|
||||||
)
|
self.services.remove(group)
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Onions(Setup):
|
class Onions(Setup):
|
||||||
|
|
43
poetry.lock
generated
43
poetry.lock
generated
|
@ -171,9 +171,8 @@ version = "1.4.15"
|
||||||
license = ["editdistance"]
|
license = ["editdistance"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
category = "main"
|
||||||
description = "Read metadata from Python packages"
|
description = "Read metadata from Python packages"
|
||||||
marker = "python_version < \"3.8\""
|
|
||||||
name = "importlib-metadata"
|
name = "importlib-metadata"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
||||||
|
@ -186,27 +185,6 @@ zipp = ">=0.5"
|
||||||
docs = ["sphinx", "rst.linker"]
|
docs = ["sphinx", "rst.linker"]
|
||||||
testing = ["packaging", "importlib-resources"]
|
testing = ["packaging", "importlib-resources"]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
category = "dev"
|
|
||||||
description = "Read resources from Python packages"
|
|
||||||
marker = "python_version < \"3.7\""
|
|
||||||
name = "importlib-resources"
|
|
||||||
optional = false
|
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
|
||||||
version = "1.5.0"
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
[package.dependencies.importlib-metadata]
|
|
||||||
python = "<3.8"
|
|
||||||
version = "*"
|
|
||||||
|
|
||||||
[package.dependencies.zipp]
|
|
||||||
python = "<3.8"
|
|
||||||
version = ">=0.4"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs = ["sphinx", "rst.linker", "jaraco.packaging"]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "A Python utility / library to sort Python imports."
|
description = "A Python utility / library to sort Python imports."
|
||||||
|
@ -365,10 +343,6 @@ virtualenv = ">=15.2"
|
||||||
python = "<3.8"
|
python = "<3.8"
|
||||||
version = "*"
|
version = "*"
|
||||||
|
|
||||||
[package.dependencies.importlib-resources]
|
|
||||||
python = "<3.7"
|
|
||||||
version = "*"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "Library for building powerful interactive command lines in Python"
|
description = "Library for building powerful interactive command lines in Python"
|
||||||
|
@ -604,10 +578,6 @@ six = ">=1.9.0,<2"
|
||||||
python = "<3.8"
|
python = "<3.8"
|
||||||
version = ">=0.12,<2"
|
version = ">=0.12,<2"
|
||||||
|
|
||||||
[package.dependencies.importlib-resources]
|
|
||||||
python = "<3.7"
|
|
||||||
version = ">=1.0,<2"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
docs = ["sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=19.9.0rc1)", "proselint (>=0.10.2)"]
|
docs = ["sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=19.9.0rc1)", "proselint (>=0.10.2)"]
|
||||||
testing = ["pytest (>=4)", "coverage (>=5)", "coverage-enable-subprocess (>=1)", "pytest-xdist (>=1.31.0)", "pytest-mock (>=2)", "pytest-env (>=0.6.2)", "pytest-randomly (>=1)", "pytest-timeout", "packaging (>=20.0)", "xonsh (>=0.9.16)"]
|
testing = ["pytest (>=4)", "coverage (>=5)", "coverage-enable-subprocess (>=1)", "pytest-xdist (>=1.31.0)", "pytest-mock (>=2)", "pytest-env (>=0.6.2)", "pytest-randomly (>=1)", "pytest-timeout", "packaging (>=20.0)", "xonsh (>=0.9.16)"]
|
||||||
|
@ -643,9 +613,8 @@ python-versions = "*"
|
||||||
version = "1.12.1"
|
version = "1.12.1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
category = "main"
|
||||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
description = "Backport of pathlib-compatible object wrapper for zip files"
|
||||||
marker = "python_version < \"3.8\""
|
|
||||||
name = "zipp"
|
name = "zipp"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
|
@ -656,8 +625,8 @@ docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
|
||||||
testing = ["jaraco.itertools", "func-timeout"]
|
testing = ["jaraco.itertools", "func-timeout"]
|
||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
content-hash = "d633e7f5e1330a54e28f987277095aa445a44f022d4407e2da8588fdff49ee2f"
|
content-hash = "6e1eec0c17109c00a24dd51d3bb7a6a47fe528bd4ef6a0da0679fd513dbf8adc"
|
||||||
python-versions = ">= 3.6.1, < 3.8"
|
python-versions = ">= 3.7, < 3.8"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
appdirs = [
|
appdirs = [
|
||||||
|
@ -765,10 +734,6 @@ importlib-metadata = [
|
||||||
{file = "importlib_metadata-1.6.0-py2.py3-none-any.whl", hash = "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f"},
|
{file = "importlib_metadata-1.6.0-py2.py3-none-any.whl", hash = "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f"},
|
||||||
{file = "importlib_metadata-1.6.0.tar.gz", hash = "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e"},
|
{file = "importlib_metadata-1.6.0.tar.gz", hash = "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e"},
|
||||||
]
|
]
|
||||||
importlib-resources = [
|
|
||||||
{file = "importlib_resources-1.5.0-py2.py3-none-any.whl", hash = "sha256:85dc0b9b325ff78c8bef2e4ff42616094e16b98ebd5e3b50fe7e2f0bbcdcde49"},
|
|
||||||
{file = "importlib_resources-1.5.0.tar.gz", hash = "sha256:6f87df66833e1942667108628ec48900e02a4ab4ad850e25fbf07cb17cf734ca"},
|
|
||||||
]
|
|
||||||
isort = [
|
isort = [
|
||||||
{file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"},
|
{file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"},
|
||||||
{file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"},
|
{file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"},
|
||||||
|
|
|
@ -12,7 +12,7 @@ classifiers=[
|
||||||
"Natural Language :: English",
|
"Natural Language :: English",
|
||||||
"Operating System :: POSIX :: Linux",
|
"Operating System :: POSIX :: Linux",
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"Programming Language :: Python :: 3.4",
|
"Programming Language :: Python :: 3.7",
|
||||||
"Topic :: System :: Installation/Setup",
|
"Topic :: System :: Installation/Setup",
|
||||||
]
|
]
|
||||||
packages = [
|
packages = [
|
||||||
|
@ -23,10 +23,11 @@ packages = [
|
||||||
onions = "onions:main"
|
onions = "onions:main"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = ">= 3.6.1, < 3.8"
|
python = ">= 3.7, < 3.8"
|
||||||
pytor = "^0.1.5"
|
pytor = "^0.1.5"
|
||||||
Jinja2 = "^2.10"
|
Jinja2 = "^2.10"
|
||||||
pyentrypoint = "^0.5.2"
|
pyentrypoint = "^0.5.2"
|
||||||
|
importlib_metadata = "^1.6.0"
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
autopep8 = "^1.5.2"
|
autopep8 = "^1.5.2"
|
||||||
|
|
2
tox.ini
2
tox.ini
|
@ -1,6 +1,6 @@
|
||||||
[tox]
|
[tox]
|
||||||
isolated_build = true
|
isolated_build = true
|
||||||
envlist = py36, py37
|
envlist = py37
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
whitelist_externals = poetry
|
whitelist_externals = poetry
|
||||||
|
|
Loading…
Add table
Reference in a new issue