commit: 1f18ab36b541e62234ca63648dfce1b4a591f4aa
parent fff7571e0d4713e4ae44e43405cb501f243db414
Author: Haelwenn <contact+git.pleroma.social@hacktivis.me>
Date:   Wed, 20 Jul 2022 16:57:05 +0000
Merge branch 'resolve/notice-compatibility-routes-nginx' into 'develop'
Document way to do notice compatibility routes with Nginx reverse-proxy, fixes #2900
Closes #2900
See merge request pleroma/pleroma!3701
Diffstat:
5 files changed, 13 insertions(+), 66 deletions(-)
diff --git a/installation/pleroma.nginx b/installation/pleroma.nginx
@@ -81,6 +81,19 @@ server {
         proxy_pass http://phoenix;
     }
 
+    # Uncomment this if you want notice compatibility routes for frontends like Soapbox.
+    # location ~ ^/@[^/]+/([^/]+)$ {
+    #     proxy_pass http://phoenix/notice/$1;
+    # }
+    #
+    # location ~ ^/@[^/]+/posts/([^/]+)$ {
+    #     proxy_pass http://phoenix/notice/$1;
+    # }
+    #
+    # location ~ ^/[^/]+/status/([^/]+)$ {
+    #     proxy_pass http://phoenix/notice/$1;
+    # }
+
     location ~ ^/(media|proxy) {
         proxy_cache        pleroma_media_cache;
         slice              1m;
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
@@ -678,11 +678,6 @@ defmodule Pleroma.Web.Router do
     get("/activities/:uuid", OStatus.OStatusController, :activity)
     get("/notice/:id", OStatus.OStatusController, :notice)
 
-    # Notice compatibility routes for other frontends
-    get("/@:nickname/:id", OStatus.OStatusController, :notice)
-    get("/@:nickname/posts/:id", OStatus.OStatusController, :notice)
-    get("/:nickname/status/:id", OStatus.OStatusController, :notice)
-
     # Mastodon compatibility routes
     get("/users/:nickname/statuses/:id", OStatus.OStatusController, :object)
     get("/users/:nickname/statuses/:id/activity", OStatus.OStatusController, :activity)
diff --git a/lib/pleroma/web/static_fe/static_fe_controller.ex b/lib/pleroma/web/static_fe/static_fe_controller.ex
@@ -167,15 +167,6 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do
   defp assign_id(%{path_info: ["notice", notice_id]} = conn, _opts),
     do: assign(conn, :notice_id, notice_id)
 
-  defp assign_id(%{path_info: ["@" <> _nickname, notice_id]} = conn, _opts),
-    do: assign(conn, :notice_id, notice_id)
-
-  defp assign_id(%{path_info: ["@" <> _nickname, "posts", notice_id]} = conn, _opts),
-    do: assign(conn, :notice_id, notice_id)
-
-  defp assign_id(%{path_info: [_nickname, "status", notice_id]} = conn, _opts),
-    do: assign(conn, :notice_id, notice_id)
-
   defp assign_id(%{path_info: ["users", user_id]} = conn, _opts),
     do: assign(conn, :username_or_id, user_id)
 
diff --git a/test/pleroma/web/o_status/o_status_controller_test.exs b/test/pleroma/web/o_status/o_status_controller_test.exs
@@ -343,54 +343,4 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
       |> response(200)
     end
   end
-
-  describe "notice compatibility routes" do
-    test "Soapbox FE", %{conn: conn} do
-      user = insert(:user)
-      note_activity = insert(:note_activity, user: user)
-
-      resp =
-        conn
-        |> put_req_header("accept", "text/html")
-        |> get("/@#{user.nickname}/posts/#{note_activity.id}")
-        |> response(200)
-
-      expected =
-        "<meta content=\"#{Endpoint.url()}/notice/#{note_activity.id}\" property=\"og:url\">"
-
-      assert resp =~ expected
-    end
-
-    test "Mastodon", %{conn: conn} do
-      user = insert(:user)
-      note_activity = insert(:note_activity, user: user)
-
-      resp =
-        conn
-        |> put_req_header("accept", "text/html")
-        |> get("/@#{user.nickname}/#{note_activity.id}")
-        |> response(200)
-
-      expected =
-        "<meta content=\"#{Endpoint.url()}/notice/#{note_activity.id}\" property=\"og:url\">"
-
-      assert resp =~ expected
-    end
-
-    test "Twitter", %{conn: conn} do
-      user = insert(:user)
-      note_activity = insert(:note_activity, user: user)
-
-      resp =
-        conn
-        |> put_req_header("accept", "text/html")
-        |> get("/#{user.nickname}/status/#{note_activity.id}")
-        |> response(200)
-
-      expected =
-        "<meta content=\"#{Endpoint.url()}/notice/#{note_activity.id}\" property=\"og:url\">"
-
-      assert resp =~ expected
-    end
-  end
 end
diff --git a/test/pleroma/web/plugs/frontend_static_plug_test.exs b/test/pleroma/web/plugs/frontend_static_plug_test.exs
@@ -86,8 +86,6 @@ defmodule Pleroma.Web.Plugs.FrontendStaticPlugTest do
       "objects",
       "activities",
       "notice",
-      "@:nickname",
-      ":nickname",
       "users",
       "tags",
       "mailer",