Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master

This commit is contained in:
Jenkins 2017-12-22 04:17:14 +00:00
commit 6d00ca1c71
4 changed files with 24 additions and 13 deletions

View file

@ -11,10 +11,11 @@ DB_PASS=
DB_PORT=5432 DB_PORT=5432
# Federation # Federation
# Note: Changing LOCAL_DOMAIN or LOCAL_HTTPS at a later time will cause unwanted side effects. # Note: Changing LOCAL_DOMAIN at a later time will cause unwanted side effects, including breaking all existing federation.
# LOCAL_DOMAIN should *NOT* contain the protocol part of the domain e.g https://example.com. # LOCAL_DOMAIN should *NOT* contain the protocol part of the domain e.g https://example.com.
LOCAL_DOMAIN=example.com LOCAL_DOMAIN=example.com
LOCAL_HTTPS=true
# Changing LOCAL_HTTPS in production is no longer supported. (Mastodon will always serve https:// links)
# Use this only if you need to run mastodon on a different domain than the one used for federation. # Use this only if you need to run mastodon on a different domain than the one used for federation.
# You can read more about this option on https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Serving_a_different_domain.md # You can read more about this option on https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Serving_a_different_domain.md

View file

@ -11,18 +11,20 @@ class ProcessMentionsService < BaseService
return unless status.local? return unless status.local?
status.text = status.text.gsub(Account::MENTION_RE) do |match| status.text = status.text.gsub(Account::MENTION_RE) do |match|
username, domain = $1.split('@')
mentioned_account = Account.find_remote(username, domain)
if mention_undeliverable?(status, mentioned_account)
begin begin
mentioned_account = resolve_remote_account_service.call($1) mentioned_account = resolve_remote_account_service.call($1)
rescue Goldfinger::Error, HTTP::Error rescue Goldfinger::Error, HTTP::Error
mentioned_account = nil mentioned_account = nil
end end
if mentioned_account.nil?
username, domain = $1.split('@')
mentioned_account = Account.find_remote(username, domain)
end end
next match if mentioned_account.nil? || (!mentioned_account.local? && mentioned_account.ostatus? && status.stream_entry.hidden?) mentioned_account ||= Account.find_remote(username, domain)
next match if mention_undeliverable?(status, mentioned_account)
mentioned_account.mentions.where(status: status).first_or_create(status: status) mentioned_account.mentions.where(status: status).first_or_create(status: status)
"@#{mentioned_account.acct}" "@#{mentioned_account.acct}"
@ -37,6 +39,10 @@ class ProcessMentionsService < BaseService
private private
def mention_undeliverable?(status, mentioned_account)
mentioned_account.nil? || (!mentioned_account.local? && mentioned_account.ostatus? && status.stream_entry.hidden?)
end
def create_notification(status, mention) def create_notification(status, mention)
mentioned_account = mention.account mentioned_account = mention.account

View file

@ -6,7 +6,10 @@
= link_to account.domain, admin_accounts_path(by_domain: account.domain) = link_to account.domain, admin_accounts_path(by_domain: account.domain)
%td %td
- if account.local? - if account.local?
= t("admin.accounts.roles.#{account.user&.role}") - if account.user.nil?
= t("admin.accounts.moderation.suspended")
- else
= t("admin.accounts.roles.#{account.user.role}")
- else - else
= account.protocol.humanize = account.protocol.humanize
%td %td

View file

@ -3,11 +3,12 @@
port = ENV.fetch('PORT') { 3000 } port = ENV.fetch('PORT') { 3000 }
host = ENV.fetch('LOCAL_DOMAIN') { "localhost:#{port}" } host = ENV.fetch('LOCAL_DOMAIN') { "localhost:#{port}" }
web_host = ENV.fetch('WEB_DOMAIN') { host } web_host = ENV.fetch('WEB_DOMAIN') { host }
https = ENV['LOCAL_HTTPS'] == 'true'
alternate_domains = ENV.fetch('ALTERNATE_DOMAINS') { '' } alternate_domains = ENV.fetch('ALTERNATE_DOMAINS') { '' }
Rails.application.configure do Rails.application.configure do
https = Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'
config.x.local_domain = host config.x.local_domain = host
config.x.web_domain = web_host config.x.web_domain = web_host
config.x.use_https = https config.x.use_https = https