Resolve conflicts
authorRoman Chvanikov <chvanikoff@pm.me>
Fri, 28 Jun 2019 21:52:50 +0000 (00:52 +0300)
committerRoman Chvanikov <chvanikoff@pm.me>
Fri, 28 Jun 2019 21:52:50 +0000 (00:52 +0300)
17 files changed:
1  2 
CHANGELOG.md
config/config.exs
config/test.exs
docs/config.md
lib/mix/tasks/pleroma/digest.ex
lib/mix/tasks/pleroma/instance.ex
lib/pleroma/application.ex
lib/pleroma/emails/user_email.ex
lib/pleroma/notification.ex
lib/pleroma/user.ex
lib/pleroma/web/router.ex
mix.exs
mix.lock
priv/templates/sample_config.eex
test/notification_test.exs
test/support/factory.ex
test/user_test.exs

diff --cc CHANGELOG.md
index df387e8ac2e514931b0241e514bba49548c6ad38,a65988991732fa270c1551f37c9410ffd3207680..8913f7e9dfd6a5cf66e8b3875870968cd3a6b734
@@@ -3,9 -3,12 +3,13 @@@ All notable changes to this project wil
  
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
  
- ## [unreleased]
+ ## [1.0.0] - 2019-06-29
+ ### Security
+ - Mastodon API: Fix display names not being sanitized
+ - Rich media: Do not crawl private IP ranges
  ### Added
 +- Digest email for inactive users
  - Add a generic settings store for frontends / clients to use.
  - Explicit addressing option for posting.
  - Optional SSH access mode. (Needs `erlang-ssh` package on some distributions).
@@@ -28,8 -35,7 +36,8 @@@
  - Configuration: `notify_email` option
  - Configuration: Media proxy `whitelist` option
  - Configuration: `report_uri` option
- - Configuration: `limit_unauthenticated_to_local_content` option
 +- Configuration: `email_notifications` option
+ - Configuration: `limit_to_local_content` option
  - Pleroma API: User subscriptions
  - Pleroma API: Healthcheck endpoint
  - Pleroma API: `/api/v1/pleroma/mascot` per-user frontend mascot configuration endpoints
Simple merge
diff --cc config/test.exs
Simple merge
diff --cc docs/config.md
Simple merge
index 7ac3df5c7b9a48be8a4da92b7b4804c0a2a4f72b,0000000000000000000000000000000000000000..19c4ce71e58940c5793b38889ca6dd4c0e81cac8
mode 100644,000000..100644
--- /dev/null
@@@ -1,34 -1,0 +1,33 @@@
-   alias Mix.Tasks.Pleroma.Common
 +defmodule Mix.Tasks.Pleroma.Digest do
 +  use Mix.Task
-     Common.start_pleroma()
 +
 +  @shortdoc "Manages digest emails"
 +  @moduledoc """
 +  Manages digest emails
 +
 +  ## Send digest email since given date (user registration date by default)
 +  ignoring user activity status.
 +
 +  ``mix pleroma.digest test <nickname> <since_date>``
 +
 +  Example: ``mix pleroma.digest test donaldtheduck 2019-05-20``
 +  """
 +  def run(["test", nickname | opts]) do
++    Mix.Pleroma.start_pleroma()
 +
 +    user = Pleroma.User.get_by_nickname(nickname)
 +
 +    last_digest_emailed_at =
 +      with [date] <- opts,
 +           {:ok, datetime} <- Timex.parse(date, "{YYYY}-{0M}-{0D}") do
 +        datetime
 +      else
 +        _ -> user.inserted_at
 +      end
 +
 +    patched_user = %{user | last_digest_emailed_at: last_digest_emailed_at}
 +
 +    :ok = Pleroma.DigestEmailWorker.run([patched_user])
 +    Mix.shell().info("Digest email have been sent to #{nickname} (#{user.email})")
 +  end
 +end
index d276df93acf0ace3caf5593a909f4d9ef46c2b42,a27c4b897fe0e9aa506b313b7f1237de4eef1c91..0231b76cdeb67a7ebb2cdb1fe002c96ba83432df
@@@ -124,10 -138,34 +138,35 @@@ defmodule Mix.Tasks.Pleroma.Instance d
            "autogenerated"
          )
  
+       rum_enabled =
+         get_option(
+           options,
+           :rum,
+           "Would you like to use RUM indices?",
+           "n"
+         ) === "y"
+       uploads_dir =
+         get_option(
+           options,
+           :upload_dir,
+           "What directory should media uploads go in (when using the local uploader)?",
+           Pleroma.Config.get([Pleroma.Uploaders.Local, :uploads])
+         )
+       static_dir =
+         get_option(
+           options,
+           :static_dir,
+           "What directory should custom public files be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)?",
+           Pleroma.Config.get([:instance, :static_dir])
+         )
        secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
 +      jwt_secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
        signing_salt = :crypto.strong_rand_bytes(8) |> Base.encode64() |> binary_part(0, 8)
        {web_push_public_key, web_push_private_key} = :crypto.generate_key(:ecdh, :prime256v1)
+       template_dir = Application.app_dir(:pleroma, "priv") <> "/templates"
  
        result_config =
          EEx.eval_file(
            dbname: dbname,
            dbuser: dbuser,
            dbpass: dbpass,
-           version: Pleroma.Mixfile.project() |> Keyword.get(:version),
            secret: secret,
 +          jwt_secret: jwt_secret,
            signing_salt: signing_salt,
            web_push_public_key: Base.url_encode64(web_push_public_key, padding: false),
-           web_push_private_key: Base.url_encode64(web_push_private_key, padding: false)
+           web_push_private_key: Base.url_encode64(web_push_private_key, padding: false),
+           db_configurable?: db_configurable?,
+           static_dir: static_dir,
+           uploads_dir: uploads_dir,
+           rum_enabled: rum_enabled
          )
  
        result_psql =
Simple merge
Simple merge
Simple merge
Simple merge
index ddab9925484e356ad4e11982331647a2efe11667,055289dc56bfbfb31d336f9096fb7c06877d72b8..9cb8db7fdfe8343afc227e012a4c7bc85c7c5f57
@@@ -602,16 -608,8 +608,10 @@@ defmodule Pleroma.Web.Router d
      post("/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request)
      get("/push/subscriptions/:id", Websub.WebsubController, :websub_subscription_confirmation)
      post("/push/subscriptions/:id", Websub.WebsubController, :websub_incoming)
 +
 +    get("/mailer/unsubscribe/:token", Mailer.SubscriptionController, :unsubscribe)
    end
  
-   scope "/", Pleroma.Web do
-     pipe_through(:oembed)
-     get("/oembed", OEmbed.OEmbedController, :url)
-   end
    pipeline :activitypub do
      plug(:accepts, ["activity+json", "json"])
      plug(Pleroma.Web.Plugs.HTTPSignaturePlug)
diff --cc mix.exs
index 3f1ab37d076c04ea8cd49a1da979b8b4c1e7b199,19a80ffb205a2e68e35442b82eb0474f88dd6c1b..45717ba07d23f2998c39e924ed0e77a047040559
+++ b/mix.exs
@@@ -125,14 -145,11 +146,13 @@@ defmodule Pleroma.Mixfile d
        {:prometheus_plugs, "~> 1.1"},
        {:prometheus_phoenix, "~> 1.2"},
        {:prometheus_ecto, "~> 1.4"},
-       {:prometheus_process_collector, "~> 1.4"},
        {:recon, github: "ferd/recon", tag: "2.4.0"},
        {:quack, "~> 0.1.1"},
 +      {:quantum, "~> 2.3"},
 +      {:joken, "~> 2.0"},
        {:benchee, "~> 1.0"},
        {:esshd, "~> 0.1.0", runtime: Application.get_env(:esshd, :enabled, false)},
-       {:ex_rated, "~> 1.2"},
+       {:ex_rated, "~> 1.3"},
        {:plug_static_index_html, "~> 1.0.0"},
        {:excoveralls, "~> 0.11.1", only: :test}
      ] ++ oauth_deps()
diff --cc mix.lock
index 270b92fbfbc4d3e358048e31f6d021d411bb74c2,cae8d7d8459713857e8e6df57b865d3df31cfa92..02932b2c067cc673ff88d31fb64d6e7e39354a97
+++ b/mix.lock
@@@ -1,15 -1,15 +1,15 @@@
  %{
    "accept": {:hex, :accept, "0.3.5", "b33b127abca7cc948bbe6caa4c263369abf1347cfa9d8e699c6d214660f10cd1", [:rebar3], [], "hexpm"},
-   "auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "c00c4e75b35367fa42c95ffd9b8c455bf9995829", [ref: "c00c4e75b35367fa42c95ffd9b8c455bf9995829"]},
+   "auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "95e8188490e97505c56636c1379ffdf036c1fdde", [ref: "95e8188490e97505c56636c1379ffdf036c1fdde"]},
    "base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
-   "bbcode": {:hex, :bbcode, "0.1.0", "400e618b640b635261611d7fb7f79d104917fc5b084aae371ab6b08477cb035b", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"},
+   "bbcode": {:hex, :bbcode, "0.1.1", "0023e2c7814119b2e620b7add67182e3f6019f92bfec9a22da7e99821aceba70", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"},
    "benchee": {:hex, :benchee, "1.0.1", "66b211f9bfd84bd97e6d1beaddf8fc2312aaabe192f776e8931cb0c16f53a521", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm"},
    "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm"},
 -  "cachex": {:hex, :cachex, "3.0.2", "1351caa4e26e29f7d7ec1d29b53d6013f0447630bbf382b4fb5d5bad0209f203", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm"},
 -  "calendar": {:hex, :calendar, "0.17.4", "22c5e8d98a4db9494396e5727108dffb820ee0d18fed4b0aa8ab76e4f5bc32f1", [:mix], [{:tzdata, "~> 0.5.8 or ~> 0.1.201603", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"},
 +  "cachex": {:hex, :cachex, "3.0.3", "4e2d3e05814a5738f5ff3903151d5c25636d72a3527251b753f501ad9c657967", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm"},
 +  "calendar": {:hex, :calendar, "0.17.5", "0ff5b09a60b9677683aa2a6fee948558660501c74a289103ea099806bc41a352", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"},
    "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
    "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm"},
 -  "comeonin": {:hex, :comeonin, "4.1.1", "c7304fc29b45b897b34142a91122bc72757bc0c295e9e824999d5179ffc08416", [:mix], [{:argon2_elixir, "~> 1.2", [hex: :argon2_elixir, repo: "hexpm", optional: true]}, {:bcrypt_elixir, "~> 0.12.1 or ~> 1.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: true]}, {:pbkdf2_elixir, "~> 0.12", [hex: :pbkdf2_elixir, repo: "hexpm", optional: true]}], "hexpm"},
 +  "comeonin": {:hex, :comeonin, "4.1.2", "3eb5620fd8e35508991664b4c2b04dd41e52f1620b36957be837c1d7784b7592", [:mix], [{:argon2_elixir, "~> 1.2", [hex: :argon2_elixir, repo: "hexpm", optional: true]}, {:bcrypt_elixir, "~> 0.12.1 or ~> 1.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: true]}, {:pbkdf2_elixir, "~> 0.12", [hex: :pbkdf2_elixir, repo: "hexpm", optional: true]}], "hexpm"},
    "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm"},
    "cors_plug": {:hex, :cors_plug, "1.5.2", "72df63c87e4f94112f458ce9d25800900cc88608c1078f0e4faddf20933eda6e", [:mix], [{:plug, "~> 1.3 or ~> 1.4 or ~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"},
    "cowboy": {:hex, :cowboy, "2.6.3", "99aa50e94e685557cad82e704457336a453d4abcb77839ad22dbe71f311fcc06", [:rebar3], [{:cowlib, "~> 2.7.3", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm"},
    "mogrify": {:hex, :mogrify, "0.6.1", "de1b527514f2d95a7bbe9642eb556061afb337e220cf97adbf3a4e6438ed70af", [:mix], [], "hexpm"},
    "nimble_parsec": {:hex, :nimble_parsec, "0.5.0", "90e2eca3d0266e5c53f8fbe0079694740b9c91b6747f2b7e3c5d21966bba8300", [:mix], [], "hexpm"},
    "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm"},
-   "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "0.12.4", "8dd29ed783f2e12195d7e0a4640effc0a7c37e6537da491f1db01839eee6d053", [:mix], [], "hexpm"},
-   "phoenix": {:hex, :phoenix, "1.4.3", "8eed4a64ff1e12372cd634724bddd69185938f52c18e1396ebac76375d85677d", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm"},
+   "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "0.12.3", "6706a148809a29c306062862c803406e88f048277f6e85b68faf73291e820b84", [:mix], [], "hexpm"},
+   "phoenix": {:hex, :phoenix, "1.4.8", "c72dc3adeb49c70eb963a0ea24f7a064ec1588e651e84e1b7ad5ed8253c0b4a2", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"},
    "phoenix_ecto": {:hex, :phoenix_ecto, "4.0.0", "c43117a136e7399ea04ecaac73f8f23ee0ffe3e07acfcb8062fe5f4c9f0f6531", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.9", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"},
-   "phoenix_html": {:hex, :phoenix_html, "2.13.2", "f5d27c9b10ce881a60177d2b5227314fc60881e6b66b41dfe3349db6ed06cf57", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"},
+   "phoenix_html": {:hex, :phoenix_html, "2.13.1", "fa8f034b5328e2dfa0e4131b5569379003f34bc1fafdaa84985b0b9d2f12e68b", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"},
    "phoenix_pubsub": {:hex, :phoenix_pubsub, "1.1.2", "496c303bdf1b2e98a9d26e89af5bba3ab487ba3a3735f74bf1f4064d2a845a3e", [:mix], [], "hexpm"},
 +  "phoenix_swoosh": {:hex, :phoenix_swoosh, "0.2.0", "a7e0b32077cd6d2323ae15198839b05d9caddfa20663fd85787479e81f89520e", [:mix], [{:phoenix, "~> 1.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.2", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:swoosh, "~> 0.1", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm"},
    "pleroma_job_queue": {:hex, :pleroma_job_queue, "0.2.0", "879e660aa1cebe8dc6f0aaaa6aa48b4875e89cd961d4a585fd128e0773b31a18", [:mix], [], "hexpm"},
-   "plug": {:hex, :plug, "1.7.2", "d7b7db7fbd755e8283b6c0a50be71ec0a3d67d9213d74422d9372effc8e87fd1", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}], "hexpm"},
+   "plug": {:hex, :plug, "1.8.2", "0bcce1daa420f189a6491f3940cc77ea7fb1919761175c9c3b59800d897440fc", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"},
    "plug_cowboy": {:hex, :plug_cowboy, "2.0.2", "6055f16868cc4882b24b6e1d63d2bada94fb4978413377a3b32ac16c18dffba2", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"},
    "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"},
    "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"},
Simple merge
index 9047b6eec00576e765cac1e5621cfa3f7830c32d,1d36f14bfcb076de8b113a6371ad6bf606f61f58..1a1ecfc40d558f2e4afe5b441520ae634b22ec14
@@@ -11,7 -8,9 +11,8 @@@ defmodule Pleroma.NotificationTest d
    alias Pleroma.User
    alias Pleroma.Web.ActivityPub.Transmogrifier
    alias Pleroma.Web.CommonAPI
+   alias Pleroma.Web.Streamer
    alias Pleroma.Web.TwitterAPI.TwitterAPI
 -  import Pleroma.Factory
  
    describe "create_notifications" do
      test "notifies someone when they are directly addressed" do
Simple merge
Simple merge