EM ANDAMENTO
Resumo técnico
Plugin NEXUS que integra a plataforma Intigriti — submissões são ingeridas via webhooks HMAC-SHA256 → Base64 (x-intigriti-digest) enquanto OAuth2 Authorization Code synca mensagens NEXUS → Intigriti e enriquece bounty; cria/atualiza tarefas com prioridade derivada da severidade (critical=4 → low=1) e enriquecimento no Intelligence Hub (bounty acumulado).
Escopo executado
- Backend
backend.php(879 linhas):intigriti_get_config()/intigriti_save_config()emDB::getConfig('plugin.intigriti')comwebhook_secret,client_id,client_secret,access_token,refresh_token,token_expires_at,environment(prod/uat),public_base_url,default_project,sync_comments,message_visibility(internal/external),enrich_tasks,auto_close_on_closed. - Webhook HMAC:
intigriti_verify_signature()validax-intigriti-digest=HMAC-SHA256(secret, raw_body)→ Base64 viahash_equals; eventosSubmissionCreated/SubmissionSeverityChanged/SubmissionStatusChanged/SubmissionMessagePlaced/TestEvent. - OAuth2 Authorization Code (
intigriti_oauth_callback) + refresh automático (intigriti_ensure_token, 60s de antecedência) — escoposcompany_external_api offline_access core_platform:read/write. - Severity → priority:
intigriti_severity_to_priority()— critical=4, high=3, medium=2, low/outros=1. - Sync NEXUS → Intigriti:
intigriti_on_comment_created(filtercomment_created) POST/v2/submissions/{code}/comments/internal|external; ignora system/status/attachment e autores intigriti/system (anti-loop). - Bounty enrich:
intigriti_extract_bounty_meta()extraitotalPayout(value/currency) do detalhe da submissão → cache em link + Intelligence Hub. - API client (
intigriti_api_request, cURL):Bearer <token>,Accept: application/json, baseapi.intigriti.com/external/company(ou.uat.), timeout 25s. - Lookup/refresh:
intigriti_refresh_submission(GET/v2/submissions/{code}→ upsert + atualiza priority/título). - API: 8 actions via
PluginManager::registerApiAction(intigriti_webhook, intigriti_oauth_callback, intigriti_settings/_save, intigriti_refresh, intigriti_post_message, intigriti_stats, intigriti_links) — sessão/Bearer + CSRF. - UI Alpine.js (
tab.php, 339 linhas): badge Webhook/OAuth, stats cards (Vinculadas/Eventos hoje/Webhook/OAuth), aba Submissões (7-col: código, programa, severidade, bounty, status, tarefa) + Configurções (secret/redirect/authorize/OAuth/client_id/secret/environment/picker/toggles/visibilidade/Salvar). - Intelligence Hub:
intigriti_intel_enrich(prioridade 37) —_task: sinalcode · P{sev} · {state}+ bounty (se > 0), score severity_score ou P1=85/P2=75/P3=55/Low=25. - Tables:
intigriti_submissions(link code↔task + cache severidade/status/bounty) eintigriti_webhook_log(auditoria). Seminstall.sqlversionado (carregado via file_get_contents emintigriti_install()). - Fastr
/intigriti(fastr.json):arg_required=false,pass_task_id=false→intigriti_stats. cronjob.jsonjobs vazio (on demand) — sem rotina periódica.
Stack e ferramentas
- PHP 8 (sem framework)
- MySQL 8 (config em admin_configs; intigriti_submissions + intigriti_webhook_log)
- Alpine.js + Tailwind CSS (premium light, ring teal)
- Sistema de plugins do NEXUS (PluginManager)
- cURL → API Intigriti (OAuth2 Authorization Code + HMAC webhooks)
Tags operacionais
- Intigriti
- Bug Bounty
- Segurança
- Webhooks
- OAuth2
- DevOps
Resultado operacional
- Ciclo fechado intigriti → NEXUS → intigriti: submissões ingeridas via webhook (HMAC-SHA256/Base64 verificado) viram tarefas no backlog com prioridade correta;
SubmissionStatusChanged(Closed) marca task done; severidade alterada update priority + comentário. - Sync bidirecional de mensagens: comentários no NEXUS viram mensagem internal/external na submissão Intigriti (visibilidade configurável; OAuth necessário).
- Intelligence Hub contextualizado: tasks com submissão vinculada mostram severidade, score, status e bounty acumulado sem sair do NEXUS.
- OAuth2 com refresh automático (60s de antecedência) — sync de mensagens e enrich de bounty operam sem intervenção manual após a autorização inicial.
- Auditoria completa: todos os deliveries logados (
intigriti_webhook_log).
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 NEXUS que ingeri submissões Intigriti via webhooks HMAC-SHA256 (Base64), OAuth2 Authorization Code para sync de mensagens + enrich de bounty, severity→priority e Intelligence Hub.
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.