Imagem de capa do projeto: NEXUS Intigriti Researcher EM ANDAMENTO

Resumo técnico

Plugin separado do Intigriti Company (plugins/intigriti/): o Intigriti Researcher (plugins/intigriti-researcher/) usa a Researcher API com Personal Access Token (PAT) — sem webhooks — para consultar programas, scopes/domains, RoE e activities e criar tarefas NEXUS (até 20/sync, throttle 6h). Alinha com o princípio de que a Intigriti é a fonte de verdade.

Escopo executado

  • Backend backend.php (1011 linhas): intigriti_researcher_get_config()/intigriti_researcher_save_config() em DB::getConfig('plugin.intigriti-researcher') com pat, auth_mode (bearer/basic PAT:PAT), following_only, sync_activities, create_tasks_on_change, default_project, last_activity_since, last_sync_at.
  • API client (intigriti_researcher_api, cURL): Bearer <PAT> ou Basic base64(PAT:PAT), base api.intigriti.com/external/researcher/v1, timeout 45s; 401/403 → "verifique PAT/auth_mode".
  • Sync de programas (intigriti_researcher_sync_programs): pagina GET /programs?limit=100 (cap 500) → cache intigriti_researcher_programs (handle/name/following/status/type/industry/bounty range/domains_json+version/RoE version/detail_url/raw_json); não busca detalhe em massa (domains/RoE no modal via enrich).
  • Sync de activities (intigriti_researcher_sync_activities): GET /programs/activities (incremental via createdSince) → dedup por activity_key (sha1 do payload) → prioriza following → cria tasks (máx 20/sync, maxTasksPerSync=20) via intigriti_researcher_task_from_activity() + intigriti_researcher_build_task_content() (severity→priority critical=4/high=3/medium=2/low=1; título [Intigriti] {programa} — {tipo} ({date}); descrição com severity/score/bounty/domains/RoE + bloco "Como explorar").
  • Throttle: intigriti_researcher_cron_check() (soft-cron, 6h) salva meta plugin.intigriti-researcher.last_cron ({ts, at, ok}); full sync via tick.
  • Enrich ao vivo (intigriti_researcher_enrich_program): GET /programs/{id} → domains detalhados + RoE → atualiza cache (usado no modal).
  • API: 11 actions via PluginManager::registerApiAction — intigriti_researcher_settings/_save, _stats, _programs, _program (+enrich), _activities, _test, _sync (mode full|programs|activities), _refresh_briefing — sessão + CSRF.
  • UI Alpine.js (tab.php, 339 linhas, ring teal): badge PAT, stats cards (Programas/Seguidos/Activities/PAT/Último sync), aba Programas (tabela + filtros following/status + modal enrich) + Config (PAT, auth_mode, toggles, default_project picker, Testar/Sincronizar/Salvar).
  • Tables: intigriti_researcher_programs + intigriti_researcher_activities (cache dedup). Sem install.sql versionado (file_get_contents em intigriti_researcher_install()).
  • cronjob.json: job intigriti_researcher_sync (tick, throttle 6h, functions check=intigriti_researcher_cron_check/run=intigriti_researcher_full_sync) + cli_options → cli.php (full sync off-line).

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (config em admin_configs; intigriti_researcher_programs + intigriti_researcher_activities)
  • Alpine.js + Tailwind CSS (premium light, ring teal)
  • Sistema de plugins do NEXUS (PluginManager)
  • cURL → Researcher API Intigriti (PAT Bearer/Basic)

Tags operacionais

  • Intigriti
  • Bug Bounty
  • Researcher API
  • PAT
  • Plugin NEXUS
  • OSINT

Resultado operacional

  • Pipeline on-demand: configurar PAT → Testar conexão → Sincronizar (full) → activities novas viram tarefas no projeto default com prioridade correta (critical=4 … low=1); tasks priorizam programs seguidos.
  • Incremental sem perda: last_activity_since (epoch) filtra activities — sync repetido traz apenas novidades; dedup por activity_key (sha1 do payload) impede tarefas duplicadas.
  • Sync resiliente: cap de 500 programas no loop + 20 tasks/sync evita sobrecarga; cron com throttle de 6h e CLI para runners sem browser.
  • Intelligence Hub contextualizado: tasks vinculadas mostram severity + score + bounty acumulado + status da submissão Intigriti.
  • Segurança do PAT: nunca exposto na UI pública (apenas pat_set); auth_mode configurável (Bearer ou Basic); 401/403 com mensagem direcionada.

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 Intigriti Researcher separado do Company — Researcher API (PAT) para query de programs/activities e criação de tarefas NEXUS (até 20/sync, throttle 6h).

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.