/usr/lib/python2.7/dist-packages/twext/backport/internet/address.py is in calendarserver 5.2+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | # Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
"""
Address objects for network connections.
"""
import warnings, os
from zope.interface import implements
from twisted.internet.interfaces import IAddress
from twisted.python import util
class _IPAddress(object, util.FancyEqMixin):
"""
An L{_IPAddress} represents the address of an IP socket endpoint, providing
common behavior for IPv4 and IPv6.
@ivar type: A string describing the type of transport, either 'TCP' or
'UDP'.
@ivar host: A string containing the presentation format of the IP address;
for example, "127.0.0.1" or "::1".
@type host: C{str}
@ivar port: An integer representing the port number.
@type port: C{int}
"""
implements(IAddress)
compareAttributes = ('type', 'host', 'port')
def __init__(self, type, host, port):
assert type in ('TCP', 'UDP')
self.type = type
self.host = host
self.port = port
def __repr__(self):
return '%s(%s, %r, %d)' % (
self.__class__.__name__, self.type, self.host, self.port)
def __hash__(self):
return hash((self.type, self.host, self.port))
class IPv4Address(_IPAddress):
"""
An L{IPv4Address} represents the address of an IPv4 socket endpoint.
@ivar host: A string containing a dotted-quad IPv4 address; for example,
"127.0.0.1".
@type host: C{str}
"""
def __init__(self, type, host, port, _bwHack=None):
_IPAddress.__init__(self, type, host, port)
if _bwHack is not None:
warnings.warn("twisted.internet.address.IPv4Address._bwHack "
"is deprecated since Twisted 11.0",
DeprecationWarning, stacklevel=2)
class IPv6Address(_IPAddress):
"""
An L{IPv6Address} represents the address of an IPv6 socket endpoint.
@ivar host: A string containing a colon-separated, hexadecimal formatted
IPv6 address; for example, "::1".
@type host: C{str}
"""
class UNIXAddress(object, util.FancyEqMixin):
"""
Object representing a UNIX socket endpoint.
@ivar name: The filename associated with this socket.
@type name: C{str}
"""
implements(IAddress)
compareAttributes = ('name', )
def __init__(self, name, _bwHack = None):
self.name = name
if _bwHack is not None:
warnings.warn("twisted.internet.address.UNIXAddress._bwHack is deprecated since Twisted 11.0",
DeprecationWarning, stacklevel=2)
if getattr(os.path, 'samefile', None) is not None:
def __eq__(self, other):
"""
overriding L{util.FancyEqMixin} to ensure the os level samefile
check is done if the name attributes do not match.
"""
res = super(UNIXAddress, self).__eq__(other)
if res == False:
try:
return os.path.samefile(self.name, other.name)
except OSError:
pass
return res
def __repr__(self):
return 'UNIXAddress(%r)' % (self.name,)
def __hash__(self):
try:
s1 = os.stat(self.name)
return hash((s1.st_ino, s1.st_dev))
except OSError:
return hash(self.name)
# These are for buildFactory backwards compatability due to
# stupidity-induced inconsistency.
class _ServerFactoryIPv4Address(IPv4Address):
"""Backwards compatability hack. Just like IPv4Address in practice."""
def __eq__(self, other):
if isinstance(other, tuple):
warnings.warn("IPv4Address.__getitem__ is deprecated. Use attributes instead.",
category=DeprecationWarning, stacklevel=2)
return (self.host, self.port) == other
elif isinstance(other, IPv4Address):
a = (self.type, self.host, self.port)
b = (other.type, other.host, other.port)
return a == b
return False
|