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()emDB::getConfig('plugin.intigriti-researcher')compat,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>ouBasic base64(PAT:PAT), baseapi.intigriti.com/external/researcher/v1, timeout 45s; 401/403 → "verifique PAT/auth_mode". - Sync de programas (
intigriti_researcher_sync_programs): paginaGET /programs?limit=100(cap 500) → cacheintigriti_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 viacreatedSince) → dedup poractivity_key(sha1 do payload) → priorizafollowing→ cria tasks (máx 20/sync,maxTasksPerSync=20) viaintigriti_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 metaplugin.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). Seminstall.sqlversionado (file_get_contents emintigriti_researcher_install()). cronjob.json: jobintigriti_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 poractivity_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.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- 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.