From 8cc2c9554f40533e0d42892ac89ef6dc2cd7236c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Mon, 12 Aug 2024 10:15:18 +0200 Subject: [PATCH 1/4] Revert "Fix Ruby in Docker container on Apple silicon" This reverts commit bbf3fb91a0389ab4c3fd9440b049a703425b28e7. --- Dockerfile | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index a6f8081..ba6b162 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,11 @@ # syntax=docker/dockerfile:1 -FROM debian:bullseye-slim as base +FROM ruby:3.3.0 SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# TODO Remove when upstream Ruby works properly on Apple silicon -RUN apt update && apt install -y build-essential wget autoconf libpq-dev pkg-config -RUN wget https://github.com/postmodern/ruby-install/releases/download/v0.9.3/ruby-install-0.9.3.tar.gz \ - && tar -xzvf ruby-install-0.9.3.tar.gz \ - && cd ruby-install-0.9.3/ \ - && make install -RUN ruby-install -p https://github.com/ruby/ruby/pull/9371.diff ruby 3.3.0 -ENV PATH="/opt/rubies/ruby-3.3.0/bin:${PATH}" +RUN apt-get update -qq && apt-get install -y --no-install-recommends curl \ + ldap-utils tini libvips -RUN apt-get install -y --no-install-recommends curl ldap-utils tini libvips RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - RUN apt-get update && apt-get install -y nodejs From e08ea64f47f0226fdd17455f4d8d078664165eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Mon, 12 Aug 2024 10:34:02 +0200 Subject: [PATCH 2/4] Update Docker base image Fixes the bug with Ruby on Apple silicon --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ba6b162..dbc24f7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # syntax=docker/dockerfile:1 -FROM ruby:3.3.0 +FROM ruby:3.3.4 SHELL ["/bin/bash", "-o", "pipefail", "-c"] From 717fe931041bc17fc355de064be330a59016424e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Thu, 22 Aug 2024 14:07:54 +0200 Subject: [PATCH 3/4] Fix spec --- spec/models/user_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 04af369..9271b7b 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -178,7 +178,7 @@ RSpec.describe User, type: :model do after { clear_enqueued_jobs } it "enables default services" do - expect(user).to receive(:enable_service).with(%w[ discourse gitea mastodon mediawiki xmpp ]) + expect(user).to receive(:enable_service).with(%w[ discourse gitea mastodon mediawiki remotestorage xmpp ]) user.send :devise_after_confirmation end From af3da0a26cb6d6018a9e2f9087b0b2a84406b12c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Tue, 10 Sep 2024 16:06:11 +0200 Subject: [PATCH 4/4] Set CORS headers for all .well-known responses So we don't have to consider it for reverse proxies etc. --- app/controllers/webfinger_controller.rb | 10 +--------- app/controllers/well_known_controller.rb | 8 ++++++++ spec/requests/webfinger_spec.rb | 6 ++++++ spec/requests/well_known_spec.rb | 6 ++++++ 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/controllers/webfinger_controller.rb b/app/controllers/webfinger_controller.rb index 2369313..dd6a9eb 100644 --- a/app/controllers/webfinger_controller.rb +++ b/app/controllers/webfinger_controller.rb @@ -1,8 +1,6 @@ -class WebfingerController < ApplicationController +class WebfingerController < WellKnownController before_action :allow_cross_origin_requests, only: [:show] - layout false - def show resource = params[:resource] @@ -91,10 +89,4 @@ class WebfingerController < ApplicationController } } end - - def allow_cross_origin_requests - return unless Rails.env.development? - headers['Access-Control-Allow-Origin'] = "*" - headers['Access-Control-Allow-Methods'] = "GET" - end end diff --git a/app/controllers/well_known_controller.rb b/app/controllers/well_known_controller.rb index 72443be..fd3c31d 100644 --- a/app/controllers/well_known_controller.rb +++ b/app/controllers/well_known_controller.rb @@ -1,5 +1,8 @@ class WellKnownController < ApplicationController before_action :require_nostr_enabled, only: [ :nostr ] + before_action :allow_cross_origin_requests, only: [ :nostr ] + + layout false def nostr http_status :unprocessable_entity and return if params[:name].blank? @@ -30,4 +33,9 @@ class WellKnownController < ApplicationController def require_nostr_enabled http_status :not_found unless Setting.nostr_enabled? end + + def allow_cross_origin_requests + headers['Access-Control-Allow-Origin'] = "*" + headers['Access-Control-Allow-Methods'] = "GET" + end end diff --git a/spec/requests/webfinger_spec.rb b/spec/requests/webfinger_spec.rb index 8bb0d93..ffc9b1b 100644 --- a/spec/requests/webfinger_spec.rb +++ b/spec/requests/webfinger_spec.rb @@ -94,6 +94,12 @@ RSpec.describe "WebFinger", type: :request do oauth_url = rs_link["properties"]["http://tools.ietf.org/html/rfc6749#section-4.2"] expect(oauth_url).to eql("http://www.example.com/rs/oauth/tony") end + + it "returns CORS headers" do + get "/.well-known/nostr.json?name=bobdylan" + expect(response.headers['Access-Control-Allow-Origin']).to eq("*") + expect(response.headers['Access-Control-Allow-Methods']).to eq('GET') + end end context "remoteStorage not enabled for user" do diff --git a/spec/requests/well_known_spec.rb b/spec/requests/well_known_spec.rb index 97c617f..a27f14c 100644 --- a/spec/requests/well_known_spec.rb +++ b/spec/requests/well_known_spec.rb @@ -46,6 +46,12 @@ RSpec.describe "Well-known URLs", type: :request do expect(res["names"]["bobdylan"]).to eq(user.nostr_pubkey) end + it "returns CORS headers" do + get "/.well-known/nostr.json?name=bobdylan" + expect(response.headers['Access-Control-Allow-Origin']).to eq("*") + expect(response.headers['Access-Control-Allow-Methods']).to eq('GET') + end + context "without relay configured" do before do Setting.nostr_relay_url = ""