summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-11-25 11:36:59 +0000
committerrinpatch <rinpatch@sdf.org>2019-11-25 11:36:59 +0000
commit756bdef5f5a879d6a817d833e7b9428f8c7b0c22 (patch)
treeade7a694da974f0f1b094f1f3fe87d4b0d0243fe
parent34cdbcbb644e14dde562c150fa8ae2881e6a899b (diff)
parente2dc89069d6d77a10848e53f321e2e464f539a25 (diff)
Merge branch 'feature/useragent-override' into 'develop'
Add ability to set a custom user-agent string See merge request pleroma/pleroma!2009
-rw-r--r--config/config.exs1
-rw-r--r--docs/configuration/cheatsheet.md12
-rw-r--r--lib/pleroma/application.ex10
-rw-r--r--test/http/request_builder_test.exs10
4 files changed, 30 insertions, 3 deletions
diff --git a/config/config.exs b/config/config.exs
index 1e36d3314..b60ffef7d 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -209,6 +209,7 @@ config :tesla, adapter: Tesla.Adapter.Hackney
config :pleroma, :http,
proxy_url: nil,
send_user_agent: true,
+ user_agent: :default,
adapter: [
ssl_options: [
# Workaround for remote server certificate chain issues
diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md
index 07d9a1d45..dc2f55229 100644
--- a/docs/configuration/cheatsheet.md
+++ b/docs/configuration/cheatsheet.md
@@ -348,7 +348,17 @@ Available caches:
* `:activity_pub` - activity pub routes (except question activities). Defaults to `nil` (no expiration).
* `:activity_pub_question` - activity pub routes (question activities). Defaults to `30_000` (30 seconds).
-## :hackney_pools
+## HTTP client
+
+### :http
+
+* `proxy_url`: an upstream proxy to fetch posts and/or media with, (default: `nil`)
+* `send_user_agent`: should we include a user agent with HTTP requests? (default: `true`)
+* `user_agent`: what user agent should we use? (default: `:default`), must be string or `:default`
+* `adapter`: array of hackney options
+
+
+### :hackney_pools
Advanced. Tweaks Hackney (http client) connections pools.
diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex
index 2b6a55f98..9dbd1e26b 100644
--- a/lib/pleroma/application.ex
+++ b/lib/pleroma/application.ex
@@ -17,8 +17,14 @@ defmodule Pleroma.Application do
def repository, do: @repository
def user_agent do
- info = "#{Pleroma.Web.base_url()} <#{Pleroma.Config.get([:instance, :email], "")}>"
- named_version() <> "; " <> info
+ case Pleroma.Config.get([:http, :user_agent], :default) do
+ :default ->
+ info = "#{Pleroma.Web.base_url()} <#{Pleroma.Config.get([:instance, :email], "")}>"
+ named_version() <> "; " <> info
+
+ custom ->
+ custom
+ end
end
# See http://elixir-lang.org/docs/stable/elixir/Application.html
diff --git a/test/http/request_builder_test.exs b/test/http/request_builder_test.exs
index 170ca916f..80ef25d7b 100644
--- a/test/http/request_builder_test.exs
+++ b/test/http/request_builder_test.exs
@@ -16,11 +16,21 @@ defmodule Pleroma.HTTP.RequestBuilderTest do
test "send pleroma user agent" do
Pleroma.Config.put([:http, :send_user_agent], true)
+ Pleroma.Config.put([:http, :user_agent], :default)
assert RequestBuilder.headers(%{}, []) == %{
headers: [{"User-Agent", Pleroma.Application.user_agent()}]
}
end
+
+ test "send custom user agent" do
+ Pleroma.Config.put([:http, :send_user_agent], true)
+ Pleroma.Config.put([:http, :user_agent], "totally-not-pleroma")
+
+ assert RequestBuilder.headers(%{}, []) == %{
+ headers: [{"User-Agent", "totally-not-pleroma"}]
+ }
+ end
end
describe "add_optional_params/3" do