diff --git a/README.md b/README.md index 11e5a4eb9b8081238396c23ea968ba92bdc2a1d0..c3d706041e498f2fafad9ebf9f7629e89475ddfa 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,6 @@ an exact match is required. If a generated domain address doesn't match the list ```sh docker run --rm -it --hostname test alpine # test.docker ``` - When the hostname is in the list of _allowed domains_ (`ALLOWED_DOMAINS=.docker,some-host`), then the `default_domain` - will not be appended: - ```sh - docker run --rm -it --hostname some-host alpine # some-host - ``` Glob matching is supported in the `--hostname`, with which wildcard domains are supported: ```sh docker run --hostname '*.test' --rm -it alpine # anything.test diff --git a/src/systemd_resolved_docker/cli.py b/src/systemd_resolved_docker/cli.py index 30556af8ce3ec1fe8817988bed0e7c3b4eb9d6d7..1489c60cebbbbb6fad17058fb182b07422e10fbb 100644 --- a/src/systemd_resolved_docker/cli.py +++ b/src/systemd_resolved_docker/cli.py @@ -9,7 +9,7 @@ from systemd import daemon from .dockerdnsconnector import DockerDNSConnector from .resolvedconnector import SystemdResolvedConnector from .utils import find_default_docker_bridge_gateway, parse_ip_port, parse_listen_address, remove_dummy_interface, \ - create_dummy_interface + create_dummy_interface, sanify_domain class Handler: @@ -44,7 +44,7 @@ def main(): if tld is None or len(tld.strip()) == 0: domains = [".docker"] else: - domains = [item.strip() for item in tld.split(',')] + domains = [sanify_domain(item) for item in tld.split(',')] cli = docker.from_env() docker_gateway = find_default_docker_bridge_gateway(cli) diff --git a/src/systemd_resolved_docker/test_utils.py b/src/systemd_resolved_docker/test_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..4b14d7fc3f67d836f4d91e61c1b11f82ae06be06 --- /dev/null +++ b/src/systemd_resolved_docker/test_utils.py @@ -0,0 +1,12 @@ +from unittest import TestCase + +from .utils import sanify_domain + + +class TestUtils(TestCase): + def test_sanify_domain(self): + self.assertEquals(".domain", sanify_domain(".domain")) + self.assertEquals(".domain", sanify_domain("domain")) + + self.assertEquals(".domain", sanify_domain(" .domain ")) + self.assertEquals(".domain", sanify_domain(" domain ")) diff --git a/src/systemd_resolved_docker/utils.py b/src/systemd_resolved_docker/utils.py index 7c07a4505c221662e1bd01669e0392725f968dbe..a46e6d1e7f100cfc1cae036f40e4fef720875f5b 100644 --- a/src/systemd_resolved_docker/utils.py +++ b/src/systemd_resolved_docker/utils.py @@ -74,3 +74,11 @@ def remove_dummy_interface(interface): ndbif = ndb.interfaces.get(interface) if ndbif is not None: ndbif.remove().commit() + + +def sanify_domain(domain: str): + domain = domain.strip() + if domain[0] == '.': + return domain + else: + return '.' + domain