diff options
author | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-04-23 16:21:06 +0300 |
---|---|---|
committer | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-04-23 16:21:06 +0300 |
commit | 5faae61befb9cc85b5d58d14dc5cc270c91ebdd7 (patch) | |
tree | 4b7f2eddd98c2b1fa8055f5d2d78b321406e4116 /src/ejabberd_websocket.erl | |
parent | Improve request_handlers validator (diff) |
Move websocket options
Diffstat (limited to '')
-rw-r--r-- | src/ejabberd_websocket.erl | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/ejabberd_websocket.erl b/src/ejabberd_websocket.erl index 767c3837b..7a05cd0f8 100644 --- a/src/ejabberd_websocket.erl +++ b/src/ejabberd_websocket.erl @@ -37,12 +37,12 @@ %%%---------------------------------------------------------------------- -module(ejabberd_websocket). - +-behaviour(ejabberd_config). -protocol({rfc, 6455}). -author('ecestari@process-one.net'). --export([check/2, socket_handoff/5]). +-export([check/2, socket_handoff/5, opt_type/1]). -include("logger.hrl"). @@ -409,4 +409,22 @@ websocket_close(Socket, WsHandleLoopPid, SocketMode, _CloseCode) -> SocketMode:close(Socket). get_origin() -> - ejabberd_config:get_option({websocket_origin, ejabberd_config:get_myname()}, ignore).
\ No newline at end of file + ejabberd_config:get_option(websocket_origin, ignore). + +opt_type(websocket_ping_interval) -> + fun (I) when is_integer(I), I >= 0 -> I end; +opt_type(websocket_timeout) -> + fun (I) when is_integer(I), I > 0 -> I end; +opt_type(websocket_origin) -> + %% Accept only values conforming to RFC6454 section 7.1 + fun (<<"null">>) -> <<"null">>; + (null) -> <<"null">>; + (Origin) -> + URIs = [_|_] = lists:flatmap( + fun(<<>>) -> []; + (URI) -> [misc:try_url(URI)] + end, re:split(Origin, "\\s")), + str:join(URIs, <<" ">>) + end; +opt_type(_) -> + [websocket_ping_interval, websocket_timeout, websocket_origin]. |