Removing external hub completely, fix #333 fixing digit-only hashtags,
removing web app capability from non-webapp pagesgh/stable
parent
c4ffffbeed
commit
6de079a5af
|
@ -52,7 +52,6 @@ If you would like, you can [support the development of this project on Patreon][
|
||||||
|
|
||||||
- `LOCAL_DOMAIN` should be the domain/hostname of your instance. This is **absolutely required** as it is used for generating unique IDs for everything federation-related
|
- `LOCAL_DOMAIN` should be the domain/hostname of your instance. This is **absolutely required** as it is used for generating unique IDs for everything federation-related
|
||||||
- `LOCAL_HTTPS` set it to `true` if HTTPS works on your website. This is used to generate canonical URLs, which is also important when generating and parsing federation-related IDs
|
- `LOCAL_HTTPS` set it to `true` if HTTPS works on your website. This is used to generate canonical URLs, which is also important when generating and parsing federation-related IDs
|
||||||
- `HUB_URL` should be the URL of the PubsubHubbub service that your instance is going to use. By default it is the open service of Superfeedr
|
|
||||||
|
|
||||||
Consult the example configuration file, `.env.production.sample` for the full list. Among other things you need to set details for the SMTP server you are going to use.
|
Consult the example configuration file, `.env.production.sample` for the full list. Among other things you need to set details for the SMTP server you are going to use.
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
class Tag < ApplicationRecord
|
class Tag < ApplicationRecord
|
||||||
has_and_belongs_to_many :statuses
|
has_and_belongs_to_many :statuses
|
||||||
|
|
||||||
HASHTAG_RE = /(?:^|[^\/\w])#([[:word:]_]+)/i
|
HASHTAG_RE = /(?:^|[^\/\w])#([[:word:]_]*[[:alpha:]_][[:word:]_]*)/i
|
||||||
|
|
||||||
validates :name, presence: true, uniqueness: true
|
validates :name, presence: true, uniqueness: true
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ class FavouriteService < BaseService
|
||||||
def call(account, status)
|
def call(account, status)
|
||||||
favourite = Favourite.create!(account: account, status: status)
|
favourite = Favourite.create!(account: account, status: status)
|
||||||
|
|
||||||
HubPingWorker.perform_async(account.id)
|
|
||||||
Pubsubhubbub::DistributionWorker.perform_async(favourite.stream_entry.id)
|
Pubsubhubbub::DistributionWorker.perform_async(favourite.stream_entry.id)
|
||||||
|
|
||||||
if status.local?
|
if status.local?
|
||||||
|
|
|
@ -20,7 +20,6 @@ class FollowService < BaseService
|
||||||
|
|
||||||
merge_into_timeline(target_account, source_account)
|
merge_into_timeline(target_account, source_account)
|
||||||
|
|
||||||
HubPingWorker.perform_async(source_account.id)
|
|
||||||
Pubsubhubbub::DistributionWorker.perform_async(follow.stream_entry.id)
|
Pubsubhubbub::DistributionWorker.perform_async(follow.stream_entry.id)
|
||||||
|
|
||||||
follow
|
follow
|
||||||
|
|
|
@ -16,7 +16,6 @@ class PostStatusService < BaseService
|
||||||
process_hashtags_service.call(status)
|
process_hashtags_service.call(status)
|
||||||
|
|
||||||
DistributionWorker.perform_async(status.id)
|
DistributionWorker.perform_async(status.id)
|
||||||
HubPingWorker.perform_async(account.id)
|
|
||||||
Pubsubhubbub::DistributionWorker.perform_async(status.stream_entry.id)
|
Pubsubhubbub::DistributionWorker.perform_async(status.stream_entry.id)
|
||||||
|
|
||||||
status
|
status
|
||||||
|
|
|
@ -9,7 +9,6 @@ class ReblogService < BaseService
|
||||||
reblog = account.statuses.create!(reblog: reblogged_status, text: '')
|
reblog = account.statuses.create!(reblog: reblogged_status, text: '')
|
||||||
|
|
||||||
DistributionWorker.perform_async(reblog.id)
|
DistributionWorker.perform_async(reblog.id)
|
||||||
HubPingWorker.perform_async(account.id)
|
|
||||||
Pubsubhubbub::DistributionWorker.perform_async(reblog.stream_entry.id)
|
Pubsubhubbub::DistributionWorker.perform_async(reblog.stream_entry.id)
|
||||||
|
|
||||||
if reblogged_status.local?
|
if reblogged_status.local?
|
||||||
|
|
|
@ -13,7 +13,6 @@ class RemoveStatusService < BaseService
|
||||||
|
|
||||||
return unless status.account.local?
|
return unless status.account.local?
|
||||||
|
|
||||||
HubPingWorker.perform_async(status.account.id)
|
|
||||||
Pubsubhubbub::DistributionWorker.perform_async(status.stream_entry.id)
|
Pubsubhubbub::DistributionWorker.perform_async(status.stream_entry.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@ Nokogiri::XML::Builder.new do |xml|
|
||||||
link_alternate xml, TagManager.instance.url_for(@account)
|
link_alternate xml, TagManager.instance.url_for(@account)
|
||||||
link_self xml, account_url(@account, format: 'atom')
|
link_self xml, account_url(@account, format: 'atom')
|
||||||
link_hub xml, api_push_url
|
link_hub xml, api_push_url
|
||||||
link_hub xml, Rails.configuration.x.hub_url
|
|
||||||
link_salmon xml, api_salmon_url(@account.id)
|
link_salmon xml, api_salmon_url(@account.id)
|
||||||
|
|
||||||
@entries.each do |stream_entry|
|
@entries.each do |stream_entry|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
- content_for :header_tags do
|
- content_for :header_tags do
|
||||||
|
%meta{:name => "apple-mobile-web-app-capable", :content => "yes"}/
|
||||||
= javascript_include_tag 'application'
|
= javascript_include_tag 'application'
|
||||||
|
|
||||||
= react_component 'Mastodon', default_props, class: 'app-holder', prerender: false
|
= react_component 'Mastodon', default_props, class: 'app-holder', prerender: false
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
%link{:rel => "manifest", :href => "/manifest.json"}/
|
%link{:rel => "manifest", :href => "/manifest.json"}/
|
||||||
%meta{:name => "msapplication-config", :content => "/browserconfig.xml"}/
|
%meta{:name => "msapplication-config", :content => "/browserconfig.xml"}/
|
||||||
%meta{:name => "theme-color", :content => "#2b90d9"}/
|
%meta{:name => "theme-color", :content => "#2b90d9"}/
|
||||||
%meta{:name => "apple-mobile-web-app-capable", :content => "yes"}/
|
|
||||||
|
|
||||||
%title
|
%title
|
||||||
= "#{yield(:page_title)} - " if content_for?(:page_title)
|
= "#{yield(:page_title)} - " if content_for?(:page_title)
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
class HubPingWorker
|
|
||||||
include Sidekiq::Worker
|
|
||||||
include RoutingHelper
|
|
||||||
|
|
||||||
def perform(account_id)
|
|
||||||
account = Account.find(account_id)
|
|
||||||
return unless account.local?
|
|
||||||
OStatus2::Publication.new(account_url(account, format: 'atom'), [Rails.configuration.x.hub_url]).publish
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -6,7 +6,6 @@ https = ENV['LOCAL_HTTPS'] == 'true'
|
||||||
|
|
||||||
Rails.application.configure do
|
Rails.application.configure do
|
||||||
config.x.local_domain = host
|
config.x.local_domain = host
|
||||||
config.x.hub_url = ENV.fetch('HUB_URL') { 'https://pubsubhubbub.superfeedr.com' }
|
|
||||||
config.x.use_https = https
|
config.x.use_https = https
|
||||||
config.x.use_s3 = ENV['S3_ENABLED'] == 'true'
|
config.x.use_s3 = ENV['S3_ENABLED'] == 'true'
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ RSpec.describe Api::V1::FollowsController, type: :controller do
|
||||||
stub_request(:get, "https://quitter.no/avatar/7477-300-20160211190340.png").to_return(request_fixture('avatar.txt'))
|
stub_request(:get, "https://quitter.no/avatar/7477-300-20160211190340.png").to_return(request_fixture('avatar.txt'))
|
||||||
stub_request(:post, "https://quitter.no/main/push/hub").to_return(:status => 200, :body => "", :headers => {})
|
stub_request(:post, "https://quitter.no/main/push/hub").to_return(:status => 200, :body => "", :headers => {})
|
||||||
stub_request(:post, "https://quitter.no/main/salmon/user/7477").to_return(:status => 200, :body => "", :headers => {})
|
stub_request(:post, "https://quitter.no/main/salmon/user/7477").to_return(:status => 200, :body => "", :headers => {})
|
||||||
stub_request(:post, "https://pubsubhubbub.superfeedr.com/").to_return(:status => 200, :body => "", :headers => {})
|
|
||||||
|
|
||||||
post :create, params: { uri: 'gargron@quitter.no' }
|
post :create, params: { uri: 'gargron@quitter.no' }
|
||||||
end
|
end
|
||||||
|
@ -39,10 +38,6 @@ RSpec.describe Api::V1::FollowsController, type: :controller do
|
||||||
expect(a_request(:post, "https://quitter.no/main/salmon/user/7477")).to have_been_made
|
expect(a_request(:post, "https://quitter.no/main/salmon/user/7477")).to have_been_made
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'notifies own hub' do
|
|
||||||
expect(a_request(:post, "https://pubsubhubbub.superfeedr.com/")).to have_been_made
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'subscribes to remote hub' do
|
it 'subscribes to remote hub' do
|
||||||
expect(a_request(:post, "https://quitter.no/main/push/hub")).to have_been_made
|
expect(a_request(:post, "https://quitter.no/main/push/hub")).to have_been_made
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,7 +8,6 @@ RSpec.describe ReblogService do
|
||||||
subject { ReblogService.new }
|
subject { ReblogService.new }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_request(:post, Rails.configuration.x.hub_url)
|
|
||||||
stub_request(:post, 'http://salmon.example.com')
|
stub_request(:post, 'http://salmon.example.com')
|
||||||
|
|
||||||
subject.(alice, status)
|
subject.(alice, status)
|
||||||
|
@ -18,10 +17,6 @@ RSpec.describe ReblogService do
|
||||||
expect(status.reblogs.count).to eq 1
|
expect(status.reblogs.count).to eq 1
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'pings PubSubHubbub hubs' do
|
|
||||||
expect(a_request(:post, Rails.configuration.x.hub_url)).to have_been_made
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sends a Salmon slap for a remote reblog' do
|
it 'sends a Salmon slap for a remote reblog' do
|
||||||
expect(a_request(:post, 'http://salmon.example.com')).to have_been_made
|
expect(a_request(:post, 'http://salmon.example.com')).to have_been_made
|
||||||
end
|
end
|
||||||
|
|
Reference in New Issue