Merge "Fix VNC access, when reverse DNS lookups fail"
This commit is contained in:
@@ -35,6 +35,12 @@ LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class NovaProxyRequestHandlerBase(object):
|
||||
def address_string(self):
|
||||
# NOTE(rpodolyaka): override the superclass implementation here and
|
||||
# explicitly disable the reverse DNS lookup, which might fail on some
|
||||
# deployments due to DNS configuration and break VNC access completely
|
||||
return str(self.client_address[0])
|
||||
|
||||
def new_websocket_client(self):
|
||||
"""Called after a new WebSocket connection has been established."""
|
||||
# Reopen the eventlet hub to make sure we don't share an epoll
|
||||
|
||||
@@ -155,3 +155,20 @@ class NovaProxyRequestHandlerBaseTestCase(test.TestCase):
|
||||
|
||||
self.assertRaises(exception.NovaException,
|
||||
self.wh.new_websocket_client)
|
||||
|
||||
@mock.patch('socket.getfqdn')
|
||||
def test_address_string_doesnt_do_reverse_dns_lookup(self, getfqdn):
|
||||
request_mock = mock.MagicMock()
|
||||
request_mock.makefile().readline.side_effect = [
|
||||
'GET /vnc.html?token=123-456-789 HTTP/1.1\r\n',
|
||||
''
|
||||
]
|
||||
server_mock = mock.MagicMock()
|
||||
client_address = ('8.8.8.8', 54321)
|
||||
|
||||
handler = websocketproxy.NovaProxyRequestHandler(
|
||||
request_mock, client_address, server_mock)
|
||||
handler.log_message('log message using client address context info')
|
||||
|
||||
self.assertFalse(getfqdn.called) # no reverse dns look up
|
||||
self.assertEqual(handler.address_string(), '8.8.8.8') # plain address
|
||||
|
||||
Reference in New Issue
Block a user