Followers-only post federation (#2111)

* Make private toots get PuSHed to subscription URLs that belong to domains where you have approved followers

* Authorized followers controller, stub for bulk action

* Soft block in the background

* Add simple test for new controller

* Rename Settings::FollowersController to Settings::FollowerDomainsController, paginate results,
rename "private" post setting to "followers-only", fix pagination style, improve post privacy
preferences style, improve warning style

* Extract compose form warnings into own container, show warning when posting to followers-only with unlocked account
This commit is contained in:
Eugen
2017-04-24 00:38:37 +02:00
committed by GitHub
parent ef5937da1f
commit 501514960a
27 changed files with 394 additions and 134 deletions

View File

@ -41,14 +41,14 @@ en:
remote_follow: Remote follow
unfollow: Unfollow
activitypub:
outbox:
name: "%{account_name}'s Outbox"
summary: "A collection of activities from user %{account_name}."
activity:
create:
name: "%{account_name} created a note."
announce:
name: "%{account_name} announced an activity."
create:
name: "%{account_name} created a note."
outbox:
name: "%{account_name}'s Outbox"
summary: A collection of activities from user %{account_name}.
admin:
accounts:
are_you_sure: Are you sure?
@ -227,6 +227,18 @@ en:
follows: You follow
mutes: You mute
storage: Media storage
followers:
domain: Domain
explanation_html: If you want to ensure the privacy of your statuses, you must be aware of who is following you. <strong>Your private statuses are delivered to all instances where you have followers</strong>. You may wish to review them, and remove followers if you do not trust your privacy to be respected by the staff or software of those instances.
followers_count: Number of followers
lock_link: Lock your account
purge: Remove from followers
success:
one: In the process of soft-blocking followers from one domain...
other: In the process of soft-blocking followers from %{count} domains...
true_privacy_html: Please mind that <strong>true privacy can only be achieved with end-to-end encryption</strong>.
unlocked_warning_html: Anyone can follow you to immediately view your private statuses. %{lock_link} to be able to review and reject followers.
unlocked_warning_title: Your account is not locked
generic:
changes_saved_msg: Changes successfully saved!
powered_by: powered by %{link}
@ -286,6 +298,7 @@ en:
back: Back to Mastodon
edit_profile: Edit profile
export: Data export
followers: Authorized followers
import: Import
preferences: Preferences
settings: Settings
@ -295,9 +308,12 @@ en:
over_character_limit: character limit of %{max} exceeded
show_more: Show more
visibilities:
private: Only show to followers
private: Followers-only
private_long: Only show to followers
public: Public
unlisted: Public, but do not display on the public timeline
public_long: Everyone can see
unlisted: Unlisted
unlisted_long: Everyone can see, but not listed on public timelines
stream_entries:
click_to_show: Click to show
reblogged: boosted

View File

@ -39,6 +39,48 @@ nl:
posts: Berichten
remote_follow: Extern volgen
unfollow: Ontvolgen
admin:
settings:
click_to_edit: Klik om te bewerken
contact_information:
email: Vul een openbaar gebruikt e-mailadres in
label: Contactgegevens
username: Vul een gebruikersnaam in
registrations:
closed_message:
desc_html: Wordt op de voorpagina weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld<br>En ook hier kan je HTML gebruiken
title: Bericht wanneer registratie is uitgeschakeld
open:
disabled: Uitgeschakeld
enabled: Ingeschakeld
title: Open registratie
setting: Instelling
site_description:
desc_html: Dit wordt als een alinea op de voorpagina getoond en gebruikt als meta-tag in de paginabron.<br>Je kan HTML gebruiken, zoals <code>&lt;a&gt;</code> en <code>&lt;em&gt;</code>.
title: Omschrijving Mastodon-server
site_description_extended:
desc_html: Wordt op de uitgebreide informatiepagina weergegeven<br>Je kan ook hier HTML gebruiken
title: Uitgebreide omschrijving Mastodon-server
site_title: Naam Mastodon-server
title: Server-instellingen
admin.reports:
comment:
label: Opmerking
none: Geen
delete: Verwijderen
id: ID
mark_as_resolved: Markeer als opgelost
report: 'Gerapporteerde toot #%{id}'
reported_account: Gerapporteerde account
reported_by: Gerapporteerd door
resolved: Opgelost
silence_account: Account stilzwijgen
status: Toot
suspend_account: Account blokkeren
target: Target
title: Gerapporteerde toots
unresolved: Onopgelost
view: Weergeven
application_mailer:
settings: 'E-mailvoorkeuren wijzigen: %{link}'
signature: Mastodon-meldingen van %{instance}
@ -74,6 +116,12 @@ nl:
x_minutes: "%{count}m"
x_months: "%{count}ma"
x_seconds: "%{count}s"
errors:
'404': De pagina waarnaar jij op zoek bent bestaat niet.
'410': De pagina waarnaar jij op zoek bent bestaat niet meer.
'422':
content: Veiligheidsverificatie mislukt. Blokkeer je toevallig cookies?
title: Veiligheidsverificatie mislukt
exports:
blocks: Jij blokkeert
csv: CSV
@ -161,52 +209,3 @@ nl:
users:
invalid_email: E-mailadres is ongeldig
invalid_otp_token: Ongeldige tweestaps-aanmeldcode
errors:
404: De pagina waarnaar jij op zoek bent bestaat niet.
410: De pagina waarnaar jij op zoek bent bestaat niet meer.
422:
title: Veiligheidsverificatie mislukt
content: Veiligheidsverificatie mislukt. Blokkeer je toevallig cookies?
admin.reports:
title: Gerapporteerde toots
status: Toot
unresolved: Onopgelost
resolved: Opgelost
id: ID
target: Target
reported_by: Gerapporteerd door
comment:
label: Opmerking
none: Geen
view: Weergeven
report: 'Gerapporteerde toot #%{id}'
delete: Verwijderen
reported_account: Gerapporteerde account
reported_by: Gerapporteerd door
silence_account: Account stilzwijgen
suspend_account: Account blokkeren
mark_as_resolved: Markeer als opgelost
admin:
settings:
title: Server-instellingen
setting: Instelling
click_to_edit: Klik om te bewerken
contact_information:
label: Contactgegevens
username: Vul een gebruikersnaam in
email: Vul een openbaar gebruikt e-mailadres in
site_title: Naam Mastodon-server
site_description:
title: Omschrijving Mastodon-server
desc_html: "Dit wordt als een alinea op de voorpagina getoond en gebruikt als meta-tag in de paginabron.<br>Je kan HTML gebruiken, zoals <code>&lt;a&gt;</code> en <code>&lt;em&gt;</code>."
site_description_extended:
title: Uitgebreide omschrijving Mastodon-server
desc_html: "Wordt op de uitgebreide informatiepagina weergegeven<br>Je kan ook hier HTML gebruiken"
registrations:
open:
title: Open registratie
enabled: Ingeschakeld
disabled: Uitgeschakeld
closed_message:
title: Bericht wanneer registratie is uitgeschakeld
desc_html: "Wordt op de voorpagina weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld<br>En ook hier kan je HTML gebruiken"

View File

@ -22,8 +22,8 @@ pt-BR:
features_headline: O que torna Mastodon diferente
get_started: Comece aqui
links: Links
source_code: Source code
other_instances: Outras instâncias
source_code: Source code
terms: Termos
user_count_after: usuários
user_count_before: Lugar de

View File

@ -23,7 +23,7 @@ en:
email: E-mail address
header: Header
locale: Language
locked: Make account private
locked: Lock account
new_password: New password
note: Bio
otp_attempt: Two-factor code

View File

@ -30,8 +30,8 @@ zh-CN:
user_count_before: 这里共注册有
accounts:
follow: 关注
followers: 粉丝 # "Fans"
following: 关注 # "Follow"
followers: 粉丝
following: 关注
nothing_here: 神马都没有!
people_followed_by: 正关注
people_who_follow: 粉丝
@ -80,15 +80,14 @@ zh-CN:
web: 用户页面
domain_blocks:
add_new: 添加
domain: 域名阻隔
created_msg: 正处理域名阻隔
destroyed_msg: 已撤销域名阻隔
domain: 域名阻隔
new:
create: 添加域名阻隔
hint: 「域名阻隔」不会隔绝该域名用户的嘟账户入本站数据库,但会嘟文抵达后,自动套用特定的审批操作。
hint: "「域名阻隔」不会隔绝该域名用户的嘟账户入本站数据库,但会嘟文抵达后,自动套用特定的审批操作。"
severity:
desc_html: 「<strong>自动静音</strong>」令该域名用户的嘟文,设为只对关注者显示,没有关注的人会看不到。
「<strong>自动除名</strong>」会自动将该域名用户的嘟文、媒体文件、个人资料自本服务站删除。
desc_html: "「<strong>自动静音</strong>」令该域名用户的嘟文,设为只对关注者显示,没有关注的人会看不到。 「<strong>自动除名</strong>」会自动将该域名用户的嘟文、媒体文件、个人资料自本服务站删除。"
silence: 自动静音
suspend: 自动除名
title: 添加域名阻隔
@ -99,10 +98,8 @@ zh-CN:
suspend: 自动除名
severity: 阻隔程度
show:
# It turns out that Chinese only uses an "other"
# Well, we don't have these -s magic anyway...
affected_accounts:
other: "数据库中有%{count}个账户受影响"
other: 数据库中有%{count}个账户受影响
retroactive:
silence: 对此域名的所有账户取消静音
suspend: 对此域名的所有账户取消除名
@ -147,8 +144,7 @@ zh-CN:
username: 输入用户名称
registrations:
closed_message:
desc_html: 当本站暂停接受注册时,会显示这个消息。<br/>
可使用 HTML
desc_html: 当本站暂停接受注册时,会显示这个消息。<br/> 可使用 HTML
title: 暂停注册消息
open:
disabled: 停用
@ -187,11 +183,10 @@ zh-CN:
title: 关注 %{acct}
datetime:
distance_in_words:
# Ditching "about" as in en
about_x_hours: "%{count} 小时"
about_x_months: "%{count} 个月"
about_x_years: "%{count} 年"
almost_x_years: "接近 %{count} 年"
almost_x_years: 接近 %{count} 年
half_a_minute: 刚刚
less_than_x_minutes: "%{count} 分不到"
less_than_x_seconds: 刚刚
@ -232,7 +227,6 @@ zh-CN:
body: 自从你在%{since}使用%{instance}以后,错过了这些嘟嘟滴滴:
mention: "%{name} 在此提及了你︰"
new_followers_summary:
# censorship note: Better not mention "don't move your chicken", even if it's a phonetic joke
one: 有人关注你了!耶!
other: 有 %{count} 个人关注了你!别激动!
subject:
@ -271,7 +265,6 @@ zh-CN:
settings: 设置
two_factor_authentication: 两步认证
statuses:
# Hey, this is already in a web browser!
open_in_web: 打开网页
over_character_limit: 超过了 %{max} 字的限制
show_more: 显示更多

View File

@ -12,6 +12,7 @@ SimpleNavigation::Configuration.run do |navigation|
settings.item :import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_url
settings.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_url
settings.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_url
settings.item :follower_domains, safe_join([fa_icon('users fw'), t('settings.followers')]), settings_follower_domains_url
end
primary.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), admin_reports_url, if: proc { current_user.admin? } do |admin|

View File

@ -63,6 +63,8 @@ Rails.application.routes.draw do
resources :recovery_codes, only: [:create]
resource :confirmation, only: [:new, :create]
end
resource :follower_domains, only: [:show, :update]
end
resources :media, only: [:show]
@ -109,9 +111,7 @@ Rails.application.routes.draw do
# ActivityPub
namespace :activitypub do
get '/users/:id/outbox', to: 'outbox#show', as: :outbox
get '/statuses/:id', to: 'activities#show_status', as: :status
resources :notes, only: [:show]
end