Revision 981732fb
b/lib/daemon.py | ||
---|---|---|
143 | 143 |
# is passed in from accept anyway |
144 | 144 |
client_address = netutils.GetSocketCredentials(connected_socket) |
145 | 145 |
logging.info("Accepted connection from %s", |
146 |
netutils.FormatAddress(self.family, client_address))
|
|
146 |
netutils.FormatAddress(client_address, family=self.family))
|
|
147 | 147 |
self.handle_connection(connected_socket, client_address) |
148 | 148 |
|
149 | 149 |
def handle_connection(self, connected_socket, client_address): |
... | ... | |
274 | 274 |
|
275 | 275 |
def close_log(self): |
276 | 276 |
logging.info("Closing connection from %s", |
277 |
netutils.FormatAddress(self.family, self.peer_address))
|
|
277 |
netutils.FormatAddress(self.peer_address, family=self.family))
|
|
278 | 278 |
self.close() |
279 | 279 |
|
280 | 280 |
# this method is overriding an asyncore.dispatcher method |
b/lib/http/client.py | ||
---|---|---|
106 | 106 |
|
107 | 107 |
""" |
108 | 108 |
if netutils.IPAddress.IsValid(self.host): |
109 |
family = netutils.IPAddress.GetAddressFamily(self.host) |
|
110 |
address = netutils.FormatAddress(family, (self.host, self.port)) |
|
109 |
address = netutils.FormatAddress((self.host, self.port)) |
|
111 | 110 |
else: |
112 | 111 |
address = "%s:%s" % (self.host, self.port) |
113 | 112 |
# TODO: Support for non-SSL requests |
b/lib/netutils.py | ||
---|---|---|
490 | 490 |
return address_int |
491 | 491 |
|
492 | 492 |
|
493 |
def FormatAddress(family, address):
|
|
493 |
def FormatAddress(address, family=None):
|
|
494 | 494 |
"""Format a socket address |
495 | 495 |
|
496 |
@type family: integer |
|
497 |
@param family: socket family (one of socket.AF_*) |
|
498 | 496 |
@type address: family specific (usually tuple) |
499 | 497 |
@param address: address, as reported by this class |
498 |
@type family: integer |
|
499 |
@param family: socket family (one of socket.AF_*) or None |
|
500 | 500 |
|
501 | 501 |
""" |
502 |
if family is None: |
|
503 |
try: |
|
504 |
family = IPAddress.GetAddressFamily(address[0]) |
|
505 |
except errors.IPAddressError: |
|
506 |
raise errors.ParameterError(address) |
|
507 |
|
|
502 | 508 |
if family == socket.AF_UNIX and len(address) == 3: |
503 | 509 |
return "pid=%s, uid=%s, gid=%s" % address |
504 | 510 |
|
b/test/ganeti.netutils_unittest.py | ||
---|---|---|
388 | 388 |
"""Testcase for FormatAddress""" |
389 | 389 |
|
390 | 390 |
def testFormatAddressUnixSocket(self): |
391 |
res1 = netutils.FormatAddress(socket.AF_UNIX, ("12352", 0, 0))
|
|
391 |
res1 = netutils.FormatAddress(("12352", 0, 0), family=socket.AF_UNIX)
|
|
392 | 392 |
self.assertEqual(res1, "pid=12352, uid=0, gid=0") |
393 | 393 |
|
394 | 394 |
def testFormatAddressIP4(self): |
395 |
res1 = netutils.FormatAddress(socket.AF_INET, ("127.0.0.1", 1234))
|
|
395 |
res1 = netutils.FormatAddress(("127.0.0.1", 1234), family=socket.AF_INET)
|
|
396 | 396 |
self.assertEqual(res1, "127.0.0.1:1234") |
397 |
res2 = netutils.FormatAddress(socket.AF_INET, ("192.0.2.32", None))
|
|
397 |
res2 = netutils.FormatAddress(("192.0.2.32", None), family=socket.AF_INET)
|
|
398 | 398 |
self.assertEqual(res2, "192.0.2.32") |
399 | 399 |
|
400 | 400 |
def testFormatAddressIP6(self): |
401 |
res1 = netutils.FormatAddress(socket.AF_INET6, ("::1", 1234))
|
|
401 |
res1 = netutils.FormatAddress(("::1", 1234), family=socket.AF_INET6)
|
|
402 | 402 |
self.assertEqual(res1, "[::1]:1234") |
403 |
res2 = netutils.FormatAddress(socket.AF_INET6, ("::1", None))
|
|
403 |
res2 = netutils.FormatAddress(("::1", None), family=socket.AF_INET6)
|
|
404 | 404 |
self.assertEqual(res2, "[::1]") |
405 |
res2 = netutils.FormatAddress(socket.AF_INET6, ("2001:db8::beef", "80")) |
|
405 |
res2 = netutils.FormatAddress(("2001:db8::beef", "80"), |
|
406 |
family=socket.AF_INET6) |
|
406 | 407 |
self.assertEqual(res2, "[2001:db8::beef]:80") |
407 | 408 |
|
409 |
def testFormatAddressWithoutFamily(self): |
|
410 |
res1 = netutils.FormatAddress(("127.0.0.1", 1234)) |
|
411 |
self.assertEqual(res1, "127.0.0.1:1234") |
|
412 |
res2 = netutils.FormatAddress(("::1", 1234)) |
|
413 |
self.assertEqual(res2, "[::1]:1234") |
|
414 |
|
|
415 |
|
|
408 | 416 |
def testInvalidFormatAddress(self): |
409 |
self.assertRaises(errors.ParameterError, |
|
410 |
netutils.FormatAddress, None, ("::1", None))
|
|
411 |
self.assertRaises(errors.ParameterError, |
|
412 |
netutils.FormatAddress, socket.AF_INET, "127.0.0.1")
|
|
413 |
self.assertRaises(errors.ParameterError, |
|
414 |
netutils.FormatAddress, socket.AF_INET, ("::1"))
|
|
417 |
self.assertRaises(errors.ParameterError, netutils.FormatAddress,
|
|
418 |
"127.0.0.1")
|
|
419 |
self.assertRaises(errors.ParameterError, netutils.FormatAddress,
|
|
420 |
"127.0.0.1", family=socket.AF_INET)
|
|
421 |
self.assertRaises(errors.ParameterError, netutils.FormatAddress,
|
|
422 |
("::1"), family=socket.AF_INET )
|
|
415 | 423 |
|
416 | 424 |
|
417 | 425 |
if __name__ == "__main__": |
Also available in: Unified diff