Software / code / prosody
Comparison
plugins/mod_websocket.lua @ 7761:e0e1f6d6fb4f
mod_websocket: Use contains_token from util.http for checking if the requested WebSocket sub-protocols include XMPP
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 04 Dec 2016 11:57:26 +0100 |
| parent | 7760:801d4c8e0f58 |
| child | 7762:2208e6cd0d9f |
comparison
equal
deleted
inserted
replaced
| 7760:801d4c8e0f58 | 7761:e0e1f6d6fb4f |
|---|---|
| 12 local add_filter = require "util.filters".add_filter; | 12 local add_filter = require "util.filters".add_filter; |
| 13 local sha1 = require "util.hashes".sha1; | 13 local sha1 = require "util.hashes".sha1; |
| 14 local base64 = require "util.encodings".base64.encode; | 14 local base64 = require "util.encodings".base64.encode; |
| 15 local st = require "util.stanza"; | 15 local st = require "util.stanza"; |
| 16 local parse_xml = require "util.xml".parse; | 16 local parse_xml = require "util.xml".parse; |
| 17 local contains_token = require "util.http".contains_token; | |
| 17 local portmanager = require "core.portmanager"; | 18 local portmanager = require "core.portmanager"; |
| 18 local sm_destroy_session = require"core.sessionmanager".destroy_session; | 19 local sm_destroy_session = require"core.sessionmanager".destroy_session; |
| 19 local log = module._log; | 20 local log = module._log; |
| 20 | 21 |
| 21 local websocket_frames = require"net.websocket.frames"; | 22 local websocket_frames = require"net.websocket.frames"; |
| 140 return [[<!DOCTYPE html><html><head><title>Websocket</title></head><body> | 141 return [[<!DOCTYPE html><html><head><title>Websocket</title></head><body> |
| 141 <p>It works! Now point your WebSocket client to this URL to connect to Prosody.</p> | 142 <p>It works! Now point your WebSocket client to this URL to connect to Prosody.</p> |
| 142 </body></html>]]; | 143 </body></html>]]; |
| 143 end | 144 end |
| 144 | 145 |
| 145 local wants_xmpp = false; | 146 local wants_xmpp = contains_token(request.headers.sec_websocket_protocol or "", "xmpp"); |
| 146 (request.headers.sec_websocket_protocol or ""):gsub("([^,]*),?", function (proto) | |
| 147 if proto == "xmpp" then wants_xmpp = true; end | |
| 148 end); | |
| 149 | 147 |
| 150 if not wants_xmpp then | 148 if not wants_xmpp then |
| 151 module:log("debug", "Client didn't want to talk XMPP, list of protocols was %s", request.headers.sec_websocket_protocol or "(empty)"); | 149 module:log("debug", "Client didn't want to talk XMPP, list of protocols was %s", request.headers.sec_websocket_protocol or "(empty)"); |
| 152 return 501; | 150 return 501; |
| 153 end | 151 end |