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 emDB::getConfig('plugin.cors')para os endpointsapieproxy;cors_save_config()com sanitização (trim, filtro de vazios e métodos normalizados para maiúsculas) e persistência emadmin_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 casaHTTP_ORIGINcontra a lista permitida (ignorando trailing slash) com fallback para a mesma origem. cors_apply_headers($endpoint)emiteAccess-Control-Allow-Origin/Headers/Methods; aplicado emapi.php:39(api) ep.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()varreplugins/*/cors.phpcom cache estático e avaliametpor endpoint contra a configuração atual. - 5 plugins já declaram requisitos:
aikido,github,nexus-security-scannerevirustotalno endpoint api;oci-cloud-storageno proxy — com origens comoapp.aikido.dev,api.github.comewww.virustotal.come headers comoX-Hub-Signature-256ex-apikey. - Aplicação automática:
cors_apply_requirement($slug)injeta origens/métodos/headers exigidos na regra correspondente e persiste;cors_requirements_met()ecors_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.php327 linhas +modals.php247 linhas): cards por endpoint (API Geralapi.php/ Proxy OCIp.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 contadorx/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 eventocors-configure.window. - Comando fastr
/cors→cors_get_requirements(sem argumento obrigatório) ecronjob.jsonsem 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.phpep.phppassam 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_configsviaDB::getConfig/setConfig.
Andamento no GitHub (issues)
Painel em tempo real com as issues mais recentes do repositório.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- Plugin NEXUS
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.