Skip to content

Commit

Permalink
feat: switch hCapture to Cloudflare Turnstile
Browse files Browse the repository at this point in the history
  • Loading branch information
yukimochi committed Feb 16, 2024
1 parent e140bb7 commit ecf3f6c
Show file tree
Hide file tree
Showing 47 changed files with 60 additions and 50 deletions.
5 changes: 5 additions & 0 deletions .env.production.sample
Expand Up @@ -75,3 +75,8 @@ S3_ALIAS_HOST=files.example.com
# -----------------------
IP_RETENTION_PERIOD=31556952
SESSION_RETENTION_PERIOD=31556952

# Turnstile secrets (optional)
# -----------------------
TURNSTILE_SITE_KEY=
TURNSTILE_SECRET_KEY=
2 changes: 1 addition & 1 deletion Gemfile
Expand Up @@ -210,4 +210,4 @@ gem 'cocoon', '~> 1.2'
gem 'net-http', '~> 0.3.2'
gem 'rubyzip', '~> 2.3'

gem 'hcaptcha', '~> 7.1'
gem 'hcaptcha', github: 'yukimochi/hcaptcha-turnstile', tag: 'v8.0.2'
12 changes: 9 additions & 3 deletions Gemfile.lock
Expand Up @@ -25,6 +25,14 @@ GIT
nokogiri (~> 1.5)
omniauth (>= 1.2, < 3)

GIT
remote: https://github.com/yukimochi/hcaptcha-turnstile.git
revision: 939c5fd6b2011a90a1e3168f845aeac8208b89e3
tag: v8.0.2
specs:
hcaptcha (8.0.2)
json

GEM
remote: https://rubygems.org/
specs:
Expand Down Expand Up @@ -333,8 +341,6 @@ GEM
sysexits (~> 1.1)
hashdiff (1.0.1)
hashie (5.0.0)
hcaptcha (7.1.0)
json
highline (2.1.0)
hiredis (0.6.3)
hkdf (0.3.0)
Expand Down Expand Up @@ -898,7 +904,7 @@ DEPENDENCIES
fuubar (~> 2.5)
haml-rails (~> 2.0)
haml_lint
hcaptcha (~> 7.1)
hcaptcha!
hiredis (~> 0.6)
htmlentities (~> 4.3)
http (~> 5.1)
Expand Down
5 changes: 2 additions & 3 deletions app/controllers/concerns/captcha_concern.rb
Expand Up @@ -10,7 +10,7 @@ module CaptchaConcern
end

def captcha_available?
ENV['HCAPTCHA_SECRET_KEY'].present? && ENV['HCAPTCHA_SITE_KEY'].present?
ENV['TURNSTILE_SECRET_KEY'].present? && ENV['TURNSTILE_SITE_KEY'].present?
end

def captcha_enabled?
Expand Down Expand Up @@ -49,8 +49,7 @@ def extend_csp_for_captcha!
%w(script_src frame_src style_src connect_src).each do |directive|
values = policy.send(directive)

values << 'https://hcaptcha.com' unless values.include?('https://hcaptcha.com') || values.include?('https:')
values << 'https://*.hcaptcha.com' unless values.include?('https://*.hcaptcha.com') || values.include?('https:')
values << 'https://challenges.cloudflare.com' unless values.include?('https://challenges.cloudflare.com') || values.include?('https:')

policy.send(directive, *values)
end
Expand Down
2 changes: 1 addition & 1 deletion app/helpers/admin/settings_helper.rb
Expand Up @@ -2,6 +2,6 @@

module Admin::SettingsHelper
def captcha_available?
ENV['HCAPTCHA_SECRET_KEY'].present? && ENV['HCAPTCHA_SITE_KEY'].present?
ENV['TURNSTILE_SECRET_KEY'].present? && ENV['TURNSTILE_SITE_KEY'].present?
end
end
2 changes: 1 addition & 1 deletion config/locales/be.yml
Expand Up @@ -770,7 +770,7 @@ be:
preamble: Брэндынг вашага сервера адрознівае яго ад іншых сервераў у сетцы. Гэтая інфармацыя можа адлюстроўвацца ў розных асяроддзях, напрыклад, у вэб-інтэрфейсе Mastodon, уласных праграмах, у папярэднім праглядзе спасылак на іншых вэб-сайтах і ў праграмах абмену паведамленнямі і гэтак далей. Па гэтай прычыне лепш трымаць гэтую інфармацыю яснай, кароткай і сціслай.
title: Брэндынг
captcha_enabled:
desc_html: Гэта функцыянальнасць залежыць ад знешніх скрыптоў hCaptcha, што можа быць праблемай бяспекі і прыватнасці. Акрамя таго, <strong>гэта можа зрабіць працэс рэгістрацыі значна менш даступным для некаторых людзей, асабліва інвалідаў</strong>. Па гэтых прычынах, калі ласка, разгледзьце альтэрнатыўныя меры, такія як рэгістрацыя на аснове зацвярджэння або запрашэння.
desc_html: Гэта функцыянальнасць залежыць ад знешніх скрыптоў Cloudflare Turnstile, што можа быць праблемай бяспекі і прыватнасці. Акрамя таго, <strong>гэта можа зрабіць працэс рэгістрацыі значна менш даступным для некаторых людзей, асабліва інвалідаў</strong>. Па гэтых прычынах, калі ласка, разгледзьце альтэрнатыўныя меры, такія як рэгістрацыя на аснове зацвярджэння або запрашэння.
title: Патрабаваць ад новых карыстальнікаў рашэння CAPTCHA для пацверджання іх уліковага запісу
content_retention:
preamble: Кантралюйце, як створаны карыстальнікамі кантэнт захоўваецца ў Mastodon.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/bg.yml
Expand Up @@ -742,7 +742,7 @@ bg:
preamble: Брандирането на вашия сървър го различава от другите сървъри в мрежата. Тази информация може да се види на различни места, като уеб интерфейса на Mastodon, собствени приложения, в прегледите на линкове от други сайтове и в приложения за съобщения, и т.н. По тази причина е добре тази информация да е кратка и ясна.
title: Брандиране
captcha_enabled:
desc_html: Това разчита на външни скриптове от hCaptcha, което може да е проблем за сигурността и поверителността. В допълнение <strong>това може да направи процеса на регистриране значимо по-малко достъпно за някои хора (особено с увреждания).</strong>. Заради тези причини, то обмислете алтернативни мерки такива като регистрация на базата на одобрение или на покана.
desc_html: Това разчита на външни скриптове от Cloudflare Turnstile, което може да е проблем за сигурността и поверителността. В допълнение <strong>това може да направи процеса на регистриране значимо по-малко достъпно за някои хора (особено с увреждания).</strong>. Заради тези причини, то обмислете алтернативни мерки такива като регистрация на базата на одобрение или на покана.
title: Изисква се новите потребители да разгадават капчата, за да потвърдят акаунтите си
content_retention:
preamble: Управление на това как съдържание, породено от потребители, се съхранява в Mastodon.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/ca.yml
Expand Up @@ -742,7 +742,7 @@ ca:
preamble: La marca del teu servidor el diferencia dels altres servidors de la xarxa. Aquesta informació es pot mostrar en diversos entorns com ara en la interfície web, en les aplicacions natives, en les previsualitzacions dels enllaços en altres webs, dins les aplicacions de missatgeria i d'altres. Per aquesta raó, val més mantenir aquesta informació clara, breu i precisa.
title: Marca
captcha_enabled:
desc_html: Això es basa en scripts externs de hCaptcha, que poden ser un problema de privacitat i seguretat. A més, <strong>això pot fer que el procés de registre sigui significativament menys accesible per algunes (especialment discapacitades) persones</strong>. Per aquestes raons, si us plau considera alternatives com ara registre amb aprovació necessària o basada en invitacions.
desc_html: Això es basa en scripts externs de Cloudflare Turnstile, que poden ser un problema de privacitat i seguretat. A més, <strong>això pot fer que el procés de registre sigui significativament menys accesible per algunes (especialment discapacitades) persones</strong>. Per aquestes raons, si us plau considera alternatives com ara registre amb aprovació necessària o basada en invitacions.
title: Demana als nous usuaris que resolguin un CAPTCHA per a confirmar el seu compte
content_retention:
preamble: Controla com es desa a Mastodon el contingut generat per l'usuari.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/cy.yml
Expand Up @@ -798,7 +798,7 @@ cy:
preamble: Mae brandio eich gweinydd yn ei wahaniaethu oddi wrth weinyddion eraill yn y rhwydwaith. Gall y wybodaeth hon gael ei dangos ar draws amrywiaeth o amgylcheddau, megis rhyngwyneb gwe Mastodon, rhaglenni brodorol, mewn rhagolygon cyswllt ar wefannau eraill ac o fewn apiau negeseuon, ac ati. Am y rheswm hwn, mae'n well cadw'r wybodaeth hon yn glir, yn fyr ac yn gryno.
title: Brandio
captcha_enabled:
desc_html: Mae hyn yn dibynnu ar sgriptiau allanol gan hCaptcha, a all fod yn bryder diogelwch a phreifatrwydd. Yn ogystal, <strong>gall hyn wneud y broses gofrestru yn llawer llai hygyrch i rai pobl (yn enwedig yr anabl)</strong>. Am y rhesymau hyn, ystyriwch fesurau eraill fel cofrestru ar sail cymeradwyaeth neu ar sail gwahoddiad.
desc_html: Mae hyn yn dibynnu ar sgriptiau allanol gan Cloudflare Turnstile, a all fod yn bryder diogelwch a phreifatrwydd. Yn ogystal, <strong>gall hyn wneud y broses gofrestru yn llawer llai hygyrch i rai pobl (yn enwedig yr anabl)</strong>. Am y rhesymau hyn, ystyriwch fesurau eraill fel cofrestru ar sail cymeradwyaeth neu ar sail gwahoddiad.
title: Ei gwneud yn ofynnol i ddefnyddwyr newydd ddatrys CAPTCHA i gadarnhau eu cyfrif
content_retention:
preamble: Rheoli sut mae cynnwys sy'n cael ei gynhyrchu gan ddefnyddwyr yn cael ei storio yn Mastodon.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/da.yml
Expand Up @@ -742,7 +742,7 @@ da:
preamble: Serverens branding adskiller den fra andres i netværket. Oplysningerne kan vises på tværs af div. miljøer, såsom Mastodon-webgrænsefladen, dedikerede applikationer, i-link forhåndsvisninger på andre websteder og i besked-apps mv. Oplysningerne bør derfor være klare og detaljerede, men samtidig kortfattede.
title: Branding
captcha_enabled:
desc_html: Dette er afhængig af eksterne scripts fra hCaptcha, som kan være en sikkerhed og privatlivets fred. Derudover kan <strong>dette gøre registreringsprocessen betydeligt mindre tilgængelig for nogle (især deaktiveret) personer</strong>. Af disse grunde bedes De overveje alternative foranstaltninger såsom godkendelsesbaseret eller inviteret til at blive registreret.
desc_html: Dette er afhængig af eksterne scripts fra Cloudflare Turnstile, som kan være en sikkerhed og privatlivets fred. Derudover kan <strong>dette gøre registreringsprocessen betydeligt mindre tilgængelig for nogle (især deaktiveret) personer</strong>. Af disse grunde bedes De overveje alternative foranstaltninger såsom godkendelsesbaseret eller inviteret til at blive registreret.
title: Kræv nye brugere for at løse en CAPTCHA for at bekræfte deres konto
content_retention:
preamble: Styr, hvordan Mastodon gemmer brugergenereret indhold.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/de.yml
Expand Up @@ -742,7 +742,7 @@ de:
preamble: Das Branding deines Servers unterscheidet ihn von anderen Servern im Netzwerk. Diese Informationen können in einer Vielzahl von Umgebungen angezeigt werden, z. B. in der Weboberfläche von Mastodon, in nativen Anwendungen, in Linkvorschauen auf anderen Websites und in Messaging-Apps und so weiter. Aus diesem Grund ist es am besten, diese Informationen klar, kurz und prägnant zu halten.
title: Branding
captcha_enabled:
desc_html: Dies beruht auf externen Skripten von hCaptcha, die ein Sicherheits- und Datenschutzproblem darstellen könnten. Darüber hinaus <strong>kann das den Registrierungsprozess für manche Menschen (insbesondere für Menschen mit Behinderung) erheblich erschweren</strong>. Aus diesen Gründen solltest du alternative Maßnahmen in Betracht ziehen, z. B. eine Registrierung basierend auf einer Einladung oder auf Genehmigungen.
desc_html: Dies beruht auf externen Skripten von Cloudflare Turnstile, die ein Sicherheits- und Datenschutzproblem darstellen könnten. Darüber hinaus <strong>kann das den Registrierungsprozess für manche Menschen (insbesondere für Menschen mit Behinderung) erheblich erschweren</strong>. Aus diesen Gründen solltest du alternative Maßnahmen in Betracht ziehen, z. B. eine Registrierung basierend auf einer Einladung oder auf Genehmigungen.
title: Neue Nutzer*innen müssen ein CAPTCHA lösen, um das Konto zu bestätigen
content_retention:
preamble: Lege fest, wie lange Inhalte von Nutzer*innen auf deinem Mastodon-Server gespeichert bleiben.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/en-GB.yml
Expand Up @@ -742,7 +742,7 @@ en-GB:
preamble: Your server's branding differentiates it from other servers in the network. This information may be displayed across a variety of environments, such as Mastodon's web interface, native applications, in link previews on other websites and within messaging apps, and so on. For this reason, it is best to keep this information clear, short and concise.
title: Branding
captcha_enabled:
desc_html: This relies on external scripts from hCaptcha, which may be a security and privacy concern. In addition, <strong>this can make the registration process significantly less accessible to some (especially disabled) people</strong>. For these reasons, please consider alternative measures such as approval-based or invite-based registration.
desc_html: This relies on external scripts from Cloudflare Turnstile, which may be a security and privacy concern. In addition, <strong>this can make the registration process significantly less accessible to some (especially disabled) people</strong>. For these reasons, please consider alternative measures such as approval-based or invite-based registration.
title: Require new users to solve a CAPTCHA to confirm their account
content_retention:
preamble: Control how user-generated content is stored in Mastodon.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/en.yml
Expand Up @@ -742,7 +742,7 @@ en:
preamble: Your server's branding differentiates it from other servers in the network. This information may be displayed across a variety of environments, such as Mastodon's web interface, native applications, in link previews on other websites and within messaging apps, and so on. For this reason, it is best to keep this information clear, short and concise.
title: Branding
captcha_enabled:
desc_html: This relies on external scripts from hCaptcha, which may be a security and privacy concern. In addition, <strong>this can make the registration process significantly less accessible to some (especially disabled) people</strong>. For these reasons, please consider alternative measures such as approval-based or invite-based registration.
desc_html: This relies on external scripts from Cloudflare Turnstile, which may be a security and privacy concern. In addition, <strong>this can make the registration process significantly less accessible to some (especially disabled) people</strong>. For these reasons, please consider alternative measures such as approval-based or invite-based registration.
title: Require new users to solve a CAPTCHA to confirm their account
content_retention:
preamble: Control how user-generated content is stored in Mastodon.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/eo.yml
Expand Up @@ -741,7 +741,7 @@ eo:
preamble: Via markeco de servilo malsamigas ĝin de aliaj servilojn en la reto. Do, la informo devus esti simpla kaj mallonga.
title: Markeco
captcha_enabled:
desc_html: Ĉi tio dependas de eksteraj hCaptcha-skriptoj, kiuj povas esti problemo pri sekureco kaj privateco. Ankaŭ, <strong>ĝi povas igi la registran procezon multe malpli alirebla por iuj homoj (precipe homoj kun handikapoj)</strong>. Pro ĉi tiuj kialoj, bonvolu konsideri alternativajn rimedojn kiel registradon per aprobo aŭ per invito.
desc_html: Ĉi tio dependas de eksteraj Cloudflare Turnstile-skriptoj, kiuj povas esti problemo pri sekureco kaj privateco. Ankaŭ, <strong>ĝi povas igi la registran procezon multe malpli alirebla por iuj homoj (precipe homoj kun handikapoj)</strong>. Pro ĉi tiuj kialoj, bonvolu konsideri alternativajn rimedojn kiel registradon per aprobo aŭ per invito.
title: Postuli novajn uzantojn solvi CAPTCHA por konfirmi sian konton
content_retention:
preamble: Regi kiel uzantogenerita enhavo konservitis en Mastodon.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/es-AR.yml
Expand Up @@ -742,7 +742,7 @@ es-AR:
preamble: La marca de tu servidor lo diferencia de otros servidores de la red. Esta información puede mostrarse a través de una variedad de entornos, como en la interface web de Mastodon, en aplicaciones nativas, en previsualizaciones de enlaces en otros sitios web y en aplicaciones de mensajería, etc. Por esta razón, es mejor mantener esta información clara, breve y concisa.
title: Marca
captcha_enabled:
desc_html: Esto depende de scripts externos de hCaptcha, que pueden ser una preocupación de seguridad y privacidad. Además, <strong>esto puede hacer el proceso de registro significativamente menos accesible para algunas personas (especialmente para gente con discapacidades)</strong>. Por estas razones, por favor, considerá medidas alternativas, como el registro basado en la aprobación o la invitación.
desc_html: Esto depende de scripts externos de Cloudflare Turnstile, que pueden ser una preocupación de seguridad y privacidad. Además, <strong>esto puede hacer el proceso de registro significativamente menos accesible para algunas personas (especialmente para gente con discapacidades)</strong>. Por estas razones, por favor, considerá medidas alternativas, como el registro basado en la aprobación o la invitación.
title: Solicitar a los nuevos usuarios que resuelvan una CAPTCHA para confirmar su cuenta
content_retention:
preamble: Controlá cómo el contenido generado por el usuario se almacena en Mastodon.
Expand Down
2 changes: 1 addition & 1 deletion config/locales/es-MX.yml
Expand Up @@ -742,7 +742,7 @@ es-MX:
preamble: La marca de tu servidor lo diferencia de otros servidores de la red. Esta información puede mostrarse a través de una variedad de entornos, como en la interfaz web de Mastodon, en aplicaciones nativas, en previsualizaciones de enlaces en otros sitios web y en aplicaciones de mensajería, etc. Por esta razón, es mejor mantener esta información clara, breve y concisa.
title: Marca
captcha_enabled:
desc_html: Esto se basa en scripts externos de hCaptcha, que pueden suponer una preocupación de seguridad y privacidad. Además, <strong>esto puede volver el proceso de registro significativamente menos accesible para algunas personas (especialmente con discapacidades)</strong>. Por estas razones, por favor, considera medidas alternativas como el registro por aprobación manual o con invitación.
desc_html: Esto se basa en scripts externos de Cloudflare Turnstile, que pueden suponer una preocupación de seguridad y privacidad. Además, <strong>esto puede volver el proceso de registro significativamente menos accesible para algunas personas (especialmente con discapacidades)</strong>. Por estas razones, por favor, considera medidas alternativas como el registro por aprobación manual o con invitación.
title: Solicita a los nuevos usuarios que resuelvan un CAPTCHA para confirmar su cuenta
content_retention:
preamble: Controlar cómo el contenido generado por el usuario se almacena en Mastodon.
Expand Down

0 comments on commit ecf3f6c

Please sign in to comment.