mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-12-23 19:22:45 +01:00
Add support of IP-binding in non-IRC connections.
This commit is contained in:
parent
0fc2675139
commit
108b0de0d1
@ -1055,7 +1055,11 @@ registerGlobalValue(supybot.protocols.irc, 'umodes',
|
||||
|
||||
registerGlobalValue(supybot.protocols.irc, 'vhost',
|
||||
registry.String('', _("""Determines what vhost the bot will bind to before
|
||||
connecting to the IRC server.""")))
|
||||
connecting a server (IRC, HTTP, …) via IPv4.""")))
|
||||
|
||||
registerGlobalValue(supybot.protocols.irc, 'vhostv6',
|
||||
registry.String('', _("""Determines what vhost the bot will bind to before
|
||||
connecting a server (IRC, HTTP, …) via IPv6.""")))
|
||||
|
||||
registerGlobalValue(supybot.protocols.irc, 'maxHistoryLength',
|
||||
registry.Integer(1000, _("""Determines how many old messages the bot will
|
||||
|
@ -293,8 +293,6 @@ class SocketDriver(drivers.IrcDriver, drivers.ServersMixin):
|
||||
drivers.log.connect(self.currentServer)
|
||||
try:
|
||||
self.conn = utils.net.getSocket(address, socks_proxy)
|
||||
vhost = conf.supybot.protocols.irc.vhost()
|
||||
self.conn.bind((vhost, 0))
|
||||
except socket.error as e:
|
||||
drivers.log.connectError(self.currentServer, e)
|
||||
self.scheduleReconnect()
|
||||
|
@ -48,7 +48,7 @@ def getAddressFromHostname(host, attempt=0):
|
||||
addresses.append(sockaddr[0])
|
||||
return addresses[attempt % len(addresses)]
|
||||
|
||||
def getSocket(host, socks_proxy=None):
|
||||
def getSocket(host, socks_proxy=None, vhost=None, vhostv6=None):
|
||||
"""Returns a socket of the correct AF_INET type (v4 or v6) in order to
|
||||
communicate with host.
|
||||
"""
|
||||
@ -62,10 +62,21 @@ def getSocket(host, socks_proxy=None):
|
||||
s.setproxy(socks.PROXY_TYPE_SOCKS5, hostname, int(port),
|
||||
rdns=True)
|
||||
return s
|
||||
import supybot.conf as conf
|
||||
if isIPV4(host):
|
||||
return socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
if not vhost:
|
||||
vhost = conf.supybot.protocols.irc.vhost()
|
||||
if vhost:
|
||||
s.bind((vhost, 0))
|
||||
return s
|
||||
elif isIPV6(host):
|
||||
return socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
|
||||
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
|
||||
if not vhostv6:
|
||||
vhostv6 = conf.supybot.protocols.irc.vhostv6()
|
||||
if vhostv6:
|
||||
s.bind((vhostv6, 0))
|
||||
return s
|
||||
else:
|
||||
raise socket.error('Something wonky happened.')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user