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

rebase/4.0.0rc2
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
# 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=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.
# 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?
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
mentioned_account = resolve_remote_account_service.call($1)
rescue Goldfinger::Error, HTTP::Error
mentioned_account = nil
end
if mentioned_account.nil?
username, domain = $1.split('@')
mentioned_account = Account.find_remote(username, domain)
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.acct}"
@ -37,6 +39,10 @@ class ProcessMentionsService < BaseService
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)
mentioned_account = mention.account

View File

@ -6,7 +6,10 @@
= link_to account.domain, admin_accounts_path(by_domain: account.domain)
%td
- 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
= account.protocol.humanize
%td

View File

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