Ejemplo n.º 1
0
    def test_sync_server_side_client_ip(self):
        service_config = get_service_config([
            Service("ownCloud", "http", "_http._tcp", 80, url="owncloud"),
            Service("SSH", "https", "_http._tcp", 81, url=None)
        ])
        port_config = get_port_config([Port(80, 80), Port(81, 81)])
        upnpc = get_upnpc(external_ip='10.1.1.1')
        upnpc.mapped_external_ports = MagicMock(side_effect=[[], [80]])

        port_mapper = get_port_mapper(port_config, upnpc)
        domain_config = get_domain_config(Domain('boris', 'some_update_token'))

        responses.add(responses.POST,
                      "http://api.domain.com/domain/update",
                      status=200,
                      body="{'message': 'Domain was updated'}",
                      content_type="application/json")

        insider_config = get_insider_config('domain.com', 'http://api.domain.com')
        dns = Dns(insider_config, domain_config, service_config, port_mapper, '127.0.0.1')
        dns.sync()

        expected_request = '''
{
    "services": [
        {"name": "ownCloud", "protocol": "http", "type": "_http._tcp", "port": 80, "local_port": 80, "url": "owncloud"},
        {"name": "SSH", "protocol": "https", "type": "_http._tcp", "port": 81, "local_port": 81, "url": null}
    ],
    "token": "some_update_token",
    "local_ip": "127.0.0.1"
}
'''
        self.assertSingleRequest(expected_request)
Ejemplo n.º 2
0
    def test_get_not_existing_service(self):
        service_config = get_service_config([])
        port_config = get_port_config([])
        upnpc = get_upnpc(external_ip='192.167.44.52')
        port_mapper = get_port_mapper(port_config, upnpc)

        domain_config = get_domain_config(None)
        insider_config = get_insider_config('domain.com', 'http://api.domain.com')
        dns = Dns(insider_config, domain_config, service_config, port_mapper, '127.0.0.1')

        service = dns.get_service("ownCloud")

        self.assertIsNone(service)
Ejemplo n.º 3
0
    def test_get_service(self):
        service_config = get_service_config([])
        port_config = get_port_config([])
        upnpc = get_upnpc(external_ip='192.167.44.52')
        port_mapper = get_port_mapper(port_config, upnpc)

        domain_config = get_domain_config(None)

        insider_config = get_insider_config('domain.com', 'http://api.domain.com')
        dns = Dns(insider_config, domain_config, service_config, port_mapper, '127.0.0.1')
        dns.add_service("ownCloud", "http", "_http._tcp", 80, url="owncloud")

        service = dns.get_service("ownCloud")

        self.assertIsNotNone(service)
        self.assertEquals("ownCloud", service.name)
        self.assertEquals("_http._tcp", service.type)
        self.assertEquals(80, service.port)
        self.assertEquals("owncloud", service.url)
Ejemplo n.º 4
0
    def test_endpoints(self):
        service_config = get_service_config([
            Service("ownCloud", "http", "_http._tcp", 80, url="owncloud"),
            Service("SSH", "https", "_http._tcp", 81, url=None)
        ])
        port_config = get_port_config([Port(80, 8080), Port(81, 8181)])
        upnpc = get_upnpc(external_ip='10.1.1.1')
        # upnpc.mapped_external_ports = MagicMock(side_effect=[[], [80]])

        port_mapper = get_port_mapper(port_config, upnpc)
        domain_config = get_domain_config(Domain('boris', 'some_update_token'))
        insider_config = get_insider_config('domain.com', 'http://api.domain.com')
        dns = Dns(insider_config, domain_config, service_config, port_mapper, '127.0.0.1')

        endpoints = dns.endpoints()
        assert len(endpoints) == 2
        assert endpoints[0].service.name == 'ownCloud'
        assert endpoints[0].external_port == 8080
        assert endpoints[1].service.name == 'SSH'
        assert endpoints[1].external_port == 8181
Ejemplo n.º 5
0
    def test_sync_server_error(self):
        service_config = get_service_config([Service("ownCloud", "http", "_http._tcp", 80, url="owncloud")])
        port_config = get_port_config([Port(80, 10000)])
        upnpc = get_upnpc(external_ip='192.167.44.52')
        port_mapper = get_port_mapper(port_config, upnpc)
        domain_config = get_domain_config(Domain('boris', 'some_update_token'))

        responses.add(responses.POST,
                      "http://api.domain.com/domain/update",
                      status=400,
                      body='{"message": "Unknown update token"}',
                      content_type="application/json")

        insider_config = get_insider_config('domain.com', 'http://api.domain.com')
        dns = Dns(insider_config, domain_config, service_config, port_mapper, '127.0.0.1')

        with self.assertRaises(Exception) as context:
            dns.sync()

        self.assertEquals(context.exception.message, "Unknown update token")
Ejemplo n.º 6
0
    def test_add_service(self):
        service_config = get_service_config([])
        port_config = get_port_config([])
        upnpc = get_upnpc(external_ip='192.167.44.52')
        port_mapper = get_port_mapper(port_config, upnpc)

        domain_config = get_domain_config(None)

        insider_config = get_insider_config('domain.com', 'http://api.domain.com')
        dns = Dns(insider_config, domain_config, service_config, port_mapper, '127.0.0.1')
        dns.add_service("ownCloud", "http", "_http._tcp", 80, url="owncloud")

        services = service_config.load()
        self.assertEquals(1, len(services))
        service = services[0]
        self.assertEquals("ownCloud", service.name)
        self.assertEquals("_http._tcp", service.type)
        self.assertEquals(80, service.port)
        self.assertEquals("owncloud", service.url)

        mappings = port_config.load()
        self.assertEquals(1, len(mappings))
        mapping = mappings[0]
        self.assertEquals(80, mapping.local_port)