add ability to set a custom user-agent string
authorSadposter <hannah+pleroma@coffee-and-dreams.uk>
Mon, 25 Nov 2019 09:53:11 +0000 (09:53 +0000)
committerSadposter <hannah+pleroma@coffee-and-dreams.uk>
Mon, 25 Nov 2019 09:53:11 +0000 (09:53 +0000)
config/config.exs
docs/configuration/cheatsheet.md
lib/pleroma/application.ex
test/http/request_builder_test.exs

index 1e36d3314bfdd8d9eed0381d6afd62d5120bf00b..b60ffef7dc9c7ad8a3690caf0fd7896d48b75613 100644 (file)
@@ -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
index 07d9a1d451765274f18633ff821fc31f4efab4c9..0829062938d93c46f4483feb9bca0fc0c61c44f9 100644 (file)
@@ -74,6 +74,13 @@ You shouldn't edit the base config directly to avoid breakages and merge conflic
 
 * `dynamic_configuration`: Allow transferring configuration to DB with the subsequent customization from Admin api.
 
+## :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
+
 ## Federation
 ### MRF policies
 
index 2b6a55f98fda23c120db6e170374a633fa92b1c3..9dbd1e26b699130c8b507d794de8191bcef530f7 100644 (file)
@@ -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
index 170ca916f6448ae75450295cda14df38e502c346..80ef25d7b1051f6651e6750054adbe4e3a6bc284 100644 (file)
@@ -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