From: Chris Porter Date: Mon, 18 Aug 2014 16:54:30 +0000 (+0100) Subject: fixup autobahn compatibility with use 0.8.14 X-Git-Url: https://jfr.im/git/irc/quakenet/qwebirc.git/commitdiff_plain/5a0fb86db83104982d1cd23099c2b59eea3d893a fixup autobahn compatibility with use 0.8.14 --- diff --git a/bin/dependencies_b.py b/bin/dependencies_b.py index 4a3ab00..b3b82b0 100644 --- a/bin/dependencies_b.py +++ b/bin/dependencies_b.py @@ -126,10 +126,15 @@ def check_json(): def check_autobahn(): try: - import autobahn.websocket + import autobahn, autobahn.websocket + x = autobahn.version.split(".") + if len(x) != 3: + raise ImportError("Unknown version: %s", autobahn.vesrion) + if (int(x[1]) < 8) or (int(x[1]) == 8 and int(x[2]) < 14): + raise ImportError() return 0 except ImportError: - warn("autobahn not installed; websocket support will be disabled.", + warn("autobahn 0.8.14 (minimum) not installed; websocket support will be disabled.", "consider installing autobahn from:", "http://autobahn.ws/python/getstarted/") return 1 diff --git a/qwebirc/engines/ajaxengine.py b/qwebirc/engines/ajaxengine.py index 26aa7ad..2d3769e 100644 --- a/qwebirc/engines/ajaxengine.py +++ b/qwebirc/engines/ajaxengine.py @@ -13,8 +13,15 @@ import urlparse TRANSPORTS = ["longpoll"] try: - import autobahn.websocket - import autobahn.resource + import autobahn + x = autobahn.version.split(".") + if len(x) != 3: + raise ImportError("Unknown version: %s", autobahn.vesrion) + if (int(x[1]) < 8) or (int(x[1]) == 8 and int(x[2]) < 14): + raise ImportError() + + import autobahn.twisted.websocket + import autobahn.twisted.resource has_websocket = True TRANSPORTS.append("websocket") except ImportError: @@ -355,7 +362,7 @@ if has_websocket: def close(self): self.channel.close() - class WebSocketEngineProtocol(autobahn.websocket.WebSocketServerProtocol): + class WebSocketEngineProtocol(autobahn.twisted.websocket.WebSocketServerProtocol): AWAITING_AUTH, AUTHED = 0, 1 def __init__(self, *args, **kwargs): @@ -446,23 +453,14 @@ if has_websocket: def send(self, message_type, message): self.sendMessage(message_type + message) - class WebSocketResource(autobahn.resource.WebSocketResource): + class WebSocketResource(autobahn.twisted.resource.WebSocketResource): def render(self, request): request.channel.setTimeout(None) - return autobahn.resource.WebSocketResource.render(self, request) + return autobahn.twisted.resource.WebSocketResource.render(self, request) def WebSocketEngine(path=None): - parsed = urlparse.urlparse(config.BASE_URL) - port = parsed.port - if port is None: - if parsed.scheme == "http": - port = 80 - elif parsed.scheme == "https": - port = 443 - else: - raise Exception("Unable to determine port from BASE_URL: " + config.BASE_URL) - - factory = autobahn.websocket.WebSocketServerFactory("ws://localhost:%d" % port) + factory = autobahn.twisted.websocket.WebSocketServerFactory("ws://localhost") + factory.externalPort = None factory.protocol = WebSocketEngineProtocol factory.setProtocolOptions(maxMessagePayloadSize=512, maxFramePayloadSize=512, tcpNoDelay=False) resource = WebSocketResource(factory)