logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: 756bdef5f5a879d6a817d833e7b9428f8c7b0c22
parent 34cdbcbb644e14dde562c150fa8ae2881e6a899b
Author: rinpatch <rinpatch@sdf.org>
Date:   Mon, 25 Nov 2019 11:36:59 +0000

Merge branch 'feature/useragent-override' into 'develop'

Add ability to set a custom user-agent string

See merge request pleroma/pleroma!2009

Diffstat:

Mconfig/config.exs1+
Mdocs/configuration/cheatsheet.md12+++++++++++-
Mlib/pleroma/application.ex10++++++++--
Mtest/http/request_builder_test.exs10++++++++++
4 files changed, 30 insertions(+), 3 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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