3434-export ([start /2 , stop /1 , reload /3 , process /2 ,
3535 mod_opt_type /1 , mod_options /1 , depends /2 ]).
3636-export ([mod_doc /0 ]).
37- -export ([get_url /4 , get_auto_url /2 ]).
3837
3938-include (" logger.hrl" ).
4039
@@ -85,15 +84,15 @@ process(_Path, _Request) ->
8584% % When set to 'auto', it only takes the first valid listener options it finds
8685
8786file_xml (Host ) ->
88- BoshList = case get_url (? MODULE , bosh , true , Host ) of
87+ BoshList = case ejabberd_http : get_url (? MODULE , bosh , true , Host ) of
8988 undefined -> [];
9089 BoshUrl ->
9190 [? XA (<<" Link" >>,
9291 [{<<" rel" >>, <<" urn:xmpp:alt-connections:xbosh" >>},
9392 {<<" href" >>, BoshUrl }]
9493 )]
9594 end ,
96- WsList = case get_url (? MODULE , websocket , true , Host ) of
95+ WsList = case ejabberd_http : get_url (? MODULE , websocket , true , Host ) of
9796 undefined -> [];
9897 WsUrl ->
9998 [? XA (<<" Link" >>,
@@ -112,12 +111,12 @@ file_xml(Host) ->
112111 )]}.
113112
114113file_json (Host ) ->
115- BoshList = case get_url (? MODULE , bosh , true , Host ) of
114+ BoshList = case ejabberd_http : get_url (? MODULE , bosh , true , Host ) of
116115 undefined -> [];
117116 BoshUrl -> [#{rel => <<" urn:xmpp:alt-connections:xbosh" >>,
118117 href => BoshUrl }]
119118 end ,
120- WsList = case get_url (? MODULE , websocket , true , Host ) of
119+ WsList = case ejabberd_http : get_url (? MODULE , websocket , true , Host ) of
121120 undefined -> [];
122121 WsUrl -> [#{rel => <<" urn:xmpp:alt-connections:websocket" >>,
123122 href => WsUrl }]
@@ -127,60 +126,9 @@ file_json(Host) ->
127126 {<<" Access-Control-Allow-Origin" >>, <<" *" >>}],
128127 [misc :json_encode (#{links => BoshList ++ WsList })]}.
129128
130- get_url (M , bosh , Tls , Host ) ->
131- get_url (M , Tls , Host , bosh_service_url , mod_bosh );
132- get_url (M , websocket , Tls , Host ) ->
133- get_url (M , Tls , Host , websocket_url , ejabberd_http_ws );
134- get_url (M , Option , Tls , Host ) ->
135- get_url (M , Tls , Host , Option , M ).
136-
137- get_url (M , Tls , Host , Option , Handler ) ->
138- case get_url_preliminar (M , Tls , Host , Option , Handler ) of
139- undefined -> undefined ;
140- Url -> misc :expand_keyword (<<" @HOST@" >>, Url , Host )
141- end .
142-
143- get_url_preliminar (M , Tls , Host , Option , Handler ) ->
144- case gen_mod :get_module_opt (Host , M , Option ) of
145- undefined -> undefined ;
146- auto -> get_auto_url (Tls , Handler );
147- <<" auto" >> -> get_auto_url (Tls , Handler );
148- U when is_binary (U ) -> U
149- end .
150-
151- get_auto_url (Tls , Handler ) ->
152- case find_handler_port_path (Tls , Handler ) of
153- [] -> undefined ;
154- [{ThisTls , Port , Path } | _ ] ->
155- Protocol = case {ThisTls , Handler } of
156- {false , ejabberd_http_ws } -> <<" ws" >>;
157- {true , ejabberd_http_ws } -> <<" wss" >>;
158- {false , _ } -> <<" http" >>;
159- {true , _ } -> <<" https" >>
160- end ,
161- <<Protocol /binary ,
162- " ://@HOST@:" ,
163- (integer_to_binary (Port ))/binary ,
164- " /" ,
165- (str :join (Path , <<" /" >>))/binary >>
166- end .
167-
168- find_handler_port_path (Tls , Handler ) ->
169- lists :filtermap (
170- fun ({{Port , _ , _ },
171- ejabberd_http ,
172- #{tls := ThisTls , request_handlers := Handlers }})
173- when is_integer (Port ) and ((Tls == any ) or (Tls == ThisTls )) ->
174- case lists :keyfind (Handler , 2 , Handlers ) of
175- false -> false ;
176- {Path , Handler } -> {true , {ThisTls , Port , Path }}
177- end ;
178- (_ ) -> false
179- end , ets :tab2list (ejabberd_listener )).
180-
181129report_hostmeta_listener () ->
182- case {find_handler_port_path (false , ? MODULE ),
183- find_handler_port_path (true , ? MODULE )} of
130+ case {ejabberd_http : find_handler_port_path (false , ? MODULE ),
131+ ejabberd_http : find_handler_port_path (true , ? MODULE )} of
184132 {[], []} ->
185133 ? CRITICAL_MSG (" It seems you enabled ~p in 'modules' but forgot to "
186134 " add it as a request_handler in an ejabberd_http "
0 commit comments