akkoma/lib/pleroma/http/http.ex
William Pitcock 290798b821 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
2018-08-24 20:04:50 +00:00

36 lines
941 B
Elixir

defmodule Pleroma.HTTP do
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, [])
proxy = Keyword.get(config, :proxy_url, nil)
case proxy do
nil -> options
_ -> 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