diff options
author | William Pitcock <nenolod@dereferenced.org> | 2018-08-24 20:01:13 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2018-08-24 20:04:50 +0000 |
commit | 290798b8215c2f61ad6e6ccb5463ce599486f2a5 (patch) | |
tree | 72ef646c15a2ff01ab23ef986b3d7d748988012a /lib | |
parent | be7a6db1f54a033afb7cb564f9cf0c9bdafe5055 (diff) | |
download | pleroma-290798b8215c2f61ad6e6ccb5463ce599486f2a5.tar.gz |
http: fix TLS server name indication
by default, hackney only sent TLS server name indication if TLS was locked
to TLS 1.2.
since there are many instances out there not speaking TLS 1.2, it is not
acceptable to lock SNI to TLS 1.2.
closes #261
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/http/http.ex | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http/http.ex index 84f34eb4a..c19bccf60 100644 --- a/lib/pleroma/http/http.ex +++ b/lib/pleroma/http/http.ex @@ -1,5 +1,23 @@ defmodule Pleroma.HTTP do - use HTTPoison.Base + require HTTPoison + + def request(method, url, body \\ "", headers \\ [], options \\ []) do + options = + process_request_options(options) + |> process_sni_options(url) + + HTTPoison.request(method, url, body, headers, options) + end + + defp process_sni_options(options, url) do + uri = URI.parse(url) + host = uri.host |> to_charlist() + + case uri.scheme do + "https" -> options ++ [ssl: [server_name_indication: host]] + _ -> options + end + end def process_request_options(options) do config = Application.get_env(:pleroma, :http, []) @@ -10,4 +28,9 @@ defmodule Pleroma.HTTP do _ -> options ++ [proxy: proxy] end end + + def get(url, headers \\ [], options \\ []), do: request(:get, url, "", headers, options) + + def post(url, body, headers \\ [], options \\ []), + do: request(:post, url, body, headers, options) end |