logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 5e37adedfb718264fbc3eb3353ccee5244e82a89
parent: ad0ab3a57bc5591806cae0201d8077ffb10b6634
Author: Roger Braun <roger@rogerbraun.net>
Date:   Tue, 30 Jan 2018 12:21:05 +0100

Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into develop

Diffstat:

MREADME.md9+++++++++
Mconfig/config.exs6+++++-
Ainstallation/Caddyfile5+++++
Alib/pleroma/http/http.ex14++++++++++++++
Mlib/pleroma/web/media_proxy/controller.ex4+++-
5 files changed, 36 insertions(+), 2 deletions(-)

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