mirror of
https://github.com/Mikaela/Limnoria.git
synced 2025-01-11 20:52:42 +01:00
HTTP server: use two single-stack servers instead of a dual-stack one, and add a config variable to disable this behavior. Closes GH-945.
This commit is contained in:
parent
543732af3a
commit
a39238aba9
@ -1155,8 +1155,12 @@ class IP(registry.String):
|
|||||||
else:
|
else:
|
||||||
registry.String.setValue(self, v)
|
registry.String.setValue(self, v)
|
||||||
|
|
||||||
|
registerGlobalValue(supybot.servers.http, 'singleStack',
|
||||||
|
registry.Boolean(True, _("""If true, uses IPV6_V6ONLY to disable
|
||||||
|
forwaring of IPv4 traffic to IPv6 sockets. On *nix, has the same
|
||||||
|
effect as setting kernel variable net.ipv6.bindv6only to 1.""")))
|
||||||
registerGlobalValue(supybot.servers.http, 'hosts4',
|
registerGlobalValue(supybot.servers.http, 'hosts4',
|
||||||
IP('', _("""Space-separated list of IPv4 hosts the HTTP server
|
IP('0.0.0.0', _("""Space-separated list of IPv4 hosts the HTTP server
|
||||||
will bind.""")))
|
will bind.""")))
|
||||||
registerGlobalValue(supybot.servers.http, 'hosts6',
|
registerGlobalValue(supybot.servers.http, 'hosts6',
|
||||||
IP('::0', _("""Space-separated list of IPv6 hosts the HTTP server will
|
IP('::0', _("""Space-separated list of IPv6 hosts the HTTP server will
|
||||||
|
@ -171,6 +171,7 @@ class RealSupyHTTPServer(HTTPServer):
|
|||||||
running = False
|
running = False
|
||||||
|
|
||||||
def __init__(self, address, protocol, callback):
|
def __init__(self, address, protocol, callback):
|
||||||
|
self.protocol = protocol
|
||||||
if protocol == 4:
|
if protocol == 4:
|
||||||
self.address_family = socket.AF_INET
|
self.address_family = socket.AF_INET
|
||||||
elif protocol == 6:
|
elif protocol == 6:
|
||||||
@ -180,6 +181,12 @@ class RealSupyHTTPServer(HTTPServer):
|
|||||||
HTTPServer.__init__(self, address, callback)
|
HTTPServer.__init__(self, address, callback)
|
||||||
self.callbacks = {}
|
self.callbacks = {}
|
||||||
|
|
||||||
|
def server_bind(self):
|
||||||
|
if self.protocol == 6:
|
||||||
|
v = conf.supybot.servers.http.singleStack()
|
||||||
|
self.socket.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, v)
|
||||||
|
HTTPServer.server_bind(self)
|
||||||
|
|
||||||
def hook(self, subdir, callback):
|
def hook(self, subdir, callback):
|
||||||
if subdir in self.callbacks:
|
if subdir in self.callbacks:
|
||||||
log.warning(('The HTTP subdirectory `%s` was already hooked but '
|
log.warning(('The HTTP subdirectory `%s` was already hooked but '
|
||||||
|
Loading…
Reference in New Issue
Block a user