Imagem de capa do projeto: Nexus Cloudflare Turnstile EM ANDAMENTO

Resumo técnico

Plugin adicional do NEXUS que protege o login contra bots com Cloudflare Turnstile, sem desafios intrusivos para o usuário. Hooks do PluginManager injetam o widget e validam o token no servidor pela API siteverify; ambientes de laboratório recebem bypass automático para não bloquear desenvolvimento e testes.

Escopo executado

  • Integração com o formulário de login por dois filtros do PluginManager:
  • - before_login (prioridade 5): exige o token cf-turnstile-response e invalida o login se a verificação falhar. - login_form_after_fields: injeta container estilizado (#turnstile-container), widget #turnstile-widget com data-sitekey, input hidden cf-turnstile-response e os scripts do Turnstile (api.js com render=explicit e callback global onloadTurnstileCallback).

  • Render explícito do widget com tema claro; o botão de submit fica desabilitado até o token ser obtido (impede requisições sem desafio).
  • Verificação server-side turnstile_verify_token(): curl POST para https://challenges.cloudflare.com/turnstile/v0/siteverify com secret, response e remoteip (timeout 10s), com tratamento de error-codes e de respostas HTTP não-200.
  • Bypass automático em hosts de laboratório via nx_is_lab_host() — o Turnstile não bloqueia ambientes de desenvolvimento.
  • Configuração persistida em admin_configs (chave plugin.cloudflare-turnstile): site_key, secret_key, enabled e protected_pages (padrão ['login']), com merge parcial ao salvar e validação de chaves obrigatórias ao habilitar.
  • Modal de configuração no painel (Alpine.js): badge Configurado/Não configurado, preview da site key, campos site/secret key e link oficial "Como obter as chaves".
  • 4 actions de API registradas: turnstile_save_config, turnstile_get_config (expõe secret_key_masked no formato primeiros8...últimos4), turnstile_verify e turnstile_sitekey.
  • Arquitetura enxuta: plugin.php (hooks + actions), backend.php (110 linhas), modals.php (UI do modal) e assets/turnstile.js (render do widget no cliente) — sem tabelas dedicadas.

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (configuração em admin_configs; sem tabelas dedicadas)
  • Alpine.js + Tailwind CSS
  • cURL (verificação siteverify da Cloudflare)
  • Cloudflare Turnstile (widget client-side + API de verificação server-side)
  • Sistema de plugins do NEXUS (PluginManager — filtros e modais)

Tags operacionais

  • Cloudflare
  • Turnstile
  • CAPTCHA
  • Segurança

Resultado operacional

  • Blindou o login do NEXUS contra bots e ataques de força bruta automatizados sem degradar a experiência do usuário (desafio invisível/managed do Turnstile).
  • Integração 100% via hooks do plugin — o core do NEXUS não precisou ser alterado e a proteção pode ser ligada/desligada no painel.
  • Bypass automático em hosts de laboratório garante que desenvolvimento e testes não sejam bloqueados pelo CAPTCHA.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin do NEXUS que adiciona proteção anti-bot ao login com Cloudflare Turnstile — desafio não intrusivo, verificação server-side via siteverify e bypass automático em hosts de laboratório.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.