aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2018-01-30 12:21:05 +0100
committerRoger Braun <roger@rogerbraun.net>2018-01-30 12:21:05 +0100
commit5e37adedfb718264fbc3eb3353ccee5244e82a89 (patch)
treed509572f7428c641ef148867a3ea6ebfe12bdd33
parentad0ab3a57bc5591806cae0201d8077ffb10b6634 (diff)
parent2f23ae5b684a363b6090a45c4b1b9685c9ed614a (diff)
downloadpleroma-5e37adedfb718264fbc3eb3353ccee5244e82a89.tar.gz
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into develop
-rw-r--r--README.md9
-rw-r--r--config/config.exs6
-rw-r--r--installation/Caddyfile5
-rw-r--r--lib/pleroma/http/http.ex14
-rw-r--r--lib/pleroma/web/media_proxy/controller.ex4
5 files changed, 36 insertions, 2 deletions
diff --git a/README.md b/README.md
index 664b8b475..da528e1a2 100644
--- a/README.md
+++ b/README.md
@@ -50,3 +50,12 @@ Logs can be watched by using `journalctl -fu pleroma.service`
### Standalone/run by other means
Run `mix phx.server` in repository's root, it will output log into stdout/stderr
+
+### Using an upstream proxy for federation
+
+Add the following to your `dev.secret.exs` or `prod.secret.exs` if you want to proxify all http requests that pleroma makes to an upstream proxy server:
+
+ config :pleroma, :http,
+ proxy_url: "127.0.0.1:8123"
+
+This is useful for running pleroma inside Tor or i2p.
diff --git a/config/config.exs b/config/config.exs
index 503ce8d64..e71d5e5a0 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -32,7 +32,7 @@ config :mime, :types, %{
config :pleroma, :websub, Pleroma.Web.Websub
config :pleroma, :ostatus, Pleroma.Web.OStatus
-config :pleroma, :httpoison, HTTPoison
+config :pleroma, :httpoison, Pleroma.HTTP
version = with {version, 0} <- System.cmd("git", ["rev-parse", "HEAD"]) do
"Pleroma #{String.trim(version)}"
@@ -40,6 +40,10 @@ version = with {version, 0} <- System.cmd("git", ["rev-parse", "HEAD"]) do
_ -> "Pleroma dev"
end
+# Configures http settings, upstream proxy etc.
+config :pleroma, :http,
+ proxy_url: nil
+
config :pleroma, :instance,
version: version,
name: "Pleroma",
diff --git a/installation/Caddyfile b/installation/Caddyfile
new file mode 100644
index 000000000..08d5e6169
--- /dev/null
+++ b/installation/Caddyfile
@@ -0,0 +1,5 @@
+instance.example.com { # Your instance's domain
+ proxy / localhost:4000 {
+ websocket
+ }
+}
diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http/http.ex
new file mode 100644
index 000000000..8b8a82353
--- /dev/null
+++ b/lib/pleroma/http/http.ex
@@ -0,0 +1,14 @@
+
+defmodule Pleroma.HTTP do
+ use HTTPoison.Base
+
+ 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
+
+end
diff --git a/lib/pleroma/web/media_proxy/controller.ex b/lib/pleroma/web/media_proxy/controller.ex
index 560a65353..9327e7253 100644
--- a/lib/pleroma/web/media_proxy/controller.ex
+++ b/lib/pleroma/web/media_proxy/controller.ex
@@ -2,6 +2,8 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
use Pleroma.Web, :controller
require Logger
+ @httpoison Application.get_env(:pleroma, :httpoison)
+
@max_body_length 25 * 1048576
@cache_control %{
@@ -29,7 +31,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
defp proxy_request(link) do
headers = [{"user-agent", "Pleroma/MediaProxy; #{Pleroma.Web.base_url()} <#{Application.get_env(:pleroma, :instance)[:email]}>"}]
- options = [:insecure, {:follow_redirect, true}]
+ options = @httpoison.process_request_options([:insecure, {:follow_redirect, true}])
with \
{:ok, 200, headers, client} <- :hackney.request(:get, link, headers, "", options),
headers = Enum.into(headers, Map.new),