Imagem de capa do projeto: Nexus CORS EM ANDAMENTO

Resumo técnico

Plugin nativo do NEXUS que centraliza o controle de Cross-Origin Resource Sharing dos endpoints públicos api.php (API geral) e p.php (proxy OCI), substituindo os blocos CORS estáticos por regras gerenciadas no painel. Cada endpoint tem enabled, allow_all, origins, allow_headers e allow_methods independentes, resolução de origem em tempo de execução (incluindo fallback para a mesma origem do painel) e integração com requisitos declarativos que os plugins expõem em cors.php — com aplicação automática de um clique.

Escopo executado

  • Backend backend.php (269 linhas): cors_get_config() com defaults em DB::getConfig('plugin.cors') para os endpoints api e proxy; cors_save_config() com sanitização (trim, filtro de vazios e métodos normalizados para maiúsculas) e persistência em admin_configs — sem tabelas dedicadas.
  • Resolução de origem em runtime (cors_get_origin): plugin desativado → *; allow_all → *; sem origens configuradas → mesma origem (SITE_URL); caso contrário casa HTTP_ORIGIN contra a lista permitida (ignorando trailing slash) com fallback para a mesma origem.
  • cors_apply_headers($endpoint) emite Access-Control-Allow-Origin/Headers/Methods; aplicado em api.php:39 (api) e p.php:19 (proxy), com os blocos estáticos anteriores mantidos como fallback quando o plugin está inativo.
  • Requisitos declarativos: cada plugin pode expor cors.php (endpoint, label, origins, methods, headers, reason, help); cors_get_plugin_requirements() varre plugins/*/cors.php com cache estático e avalia met por endpoint contra a configuração atual.
  • 5 plugins já declaram requisitos: aikido, github, nexus-security-scanner e virustotal no endpoint api; oci-cloud-storage no proxy — com origens como app.aikido.dev, api.github.com e www.virustotal.com e headers como X-Hub-Signature-256 e x-apikey.
  • Aplicação automática: cors_apply_requirement($slug) injeta origens/métodos/headers exigidos na regra correspondente e persiste; cors_requirements_met() e cors_render_warning() permitem que tabs de outros plugins exibam banner de configuração pendente com botão "Configurar".
  • API: 4 actions registradas via PluginManager::registerApiAction — cors_get_config, cors_save_config, cors_get_requirements, cors_apply_requirement (autenticadas por sessão/Bearer com CSRF).
  • UI Alpine.js (tab.php 327 linhas + modals.php 247 linhas): cards por endpoint (API Geral api.php / Proxy OCI p.php) com toggle de ativação, modo "Permitir todas" com aviso âmbar, lista editável de origens, chips de headers e métodos, preview do CORS Efetivo em terminal, seção "Requisitos dos Plugins" com contador x/y OK, badges Ativo/Inativo e botão "Configurar Automaticamente", indicador de status (inativo / API / Proxy / API+Proxy, âmbar em allow-all), barra sticky de salvar com Restaurar e modal reutilizável aberto via evento cors-configure.window.
  • Comando fastr /cors → cors_get_requirements (sem argumento obrigatório) e cronjob.json sem rotinas (plugin sob demanda).

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (configuração em admin_configs; sem tabelas dedicadas)
  • Alpine.js + Tailwind CSS
  • Sistema de plugins do NEXUS (PluginManager)

Tags operacionais

  • CORS
  • API
  • Segurança
  • Proxy

Resultado operacional

  • Centralizou o controle de CORS do NEXUS: api.php e p.php passam a responder conforme regras gerenciadas no painel, em vez de blocos estáticos por arquivo.
  • Resolução de origem em runtime elimina o Access-Control-Allow-Origin: * inseguro: com o plugin ativo o acesso pode ser restrito por origem, com fallback seguro para a mesma origem do painel.
  • Requisitos declarativos: integrações que precisam de CORS (Aikido, GitHub, VirusTotal, Security Scanner, OCI) declaram o que exigem e o painel mostra exatamente o que falta — com um clique para aplicar.
  • Proteção contra configuração permissiva acidental: o modo "Permitir todas" exibe aviso na interface e muda o indicador de status para âmbar.
  • Sem novas tabelas: configuração persistida em admin_configs via DB::getConfig/setConfig.

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 nativo do NEXUS (is_core) de controle de Cross-Origin Resource Sharing para os endpoints api.php (API) e p.php (proxy OCI), com origens permitidas, headers e métodos por endpoint, resolução de origem em runtime e aplicação automática dos requisitos declarados pelos plugins.

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.