Ir para o conteúdo
CatSuite

Idioma

Escolha se o site segue o navegador ou se deve forçar português do Brasil ou inglês.

Baixar grátis

Extensões

Manifesto do pacote .catplug

Estrutura do arquivo .catplug, campos do manifest.json, regras de validação, permissões, destinos, hashes SHA-256 e o formato 2.

4 min de leitura

Estrutura do pacote #

Um .catplug é um arquivo ZIP com manifest.json na raiz e os arquivos listados em hashes.

Texto
auditor.catplug
├── manifest.json
├── main.js
├── fixtures.json
├── README.pt-BR.md
└── README.en.md

Exemplo completo #

manifest.jsonJSON
{
  "formatVersion": 1,
  "apiVersion": 1,
  "id": "lab.auditor",
  "version": "1.0.0",
  "author": "NetCatTest",
  "entry": "main.js",
  "name": {"pt-BR": "Auditor de respostas", "en": "Response auditor"},
  "description": {"pt-BR": "Audita cabeçalhos de cache.", "en": "Audits cache headers."},
  "permissions": ["traffic.read", "traffic.modify", "findings", "commands", "ui.tab"],
  "targets": ["api.aurora.test"],
  "externalHosts": [],
  "settings": {"laboratory": true},
  "hashes": {
    "main.js": "84f7f8620e4ccde480b3a929483f51a0d051c2fe89443ecd4409faea663e071b"
  }
}

Campos #

CampoTipoRegra
formatVersionnúmero1 ou 2
apiVersionnúmero1
idtexto[a-z][a-z0-9.-]{2,63}, estável entre versões
versiontextoMAIOR.MENOR.CORREÇÃO, por exemplo 1.0.0
authortextoobrigatório
entrytextoarquivo .js do próprio pacote, até 128 KiB
nameobjetopt-BR e en obrigatórios
descriptionobjetopt-BR e en obrigatórios
permissionslistacapacidades conhecidas, sem repetição
targetslistadestinos de cat.http.send, até 100
externalHostslistadestinos de cat.external.call, até 100
settingsobjetovalores iniciais lidos por cat.settings.get
settingsSchemaobjetoopcional, até 32 campos
hashesobjetoSHA-256 de cada arquivo, exceto o manifesto

Permissões #

CapacidadeLibera
traffic.readcat.events.on e conteúdo HTTP em menus
traffic.modifycat.proxy.onRequest e cat.proxy.onResponse
http.sendcat.http.send e cat.http.cancel
external.callcat.external.call
ui.menucat.ui.menu.register
ui.tabcat.ui.tab.register e cat.ui.update
storagecat.storage
findingscat.findings.add
repeatercat.tools.repeater.open
commandscat.commands.register e cat.commands.execute
pipeline.stepcat.pipeline.registerStep
parserscat.parsers.register
connector.runcat.connectors dentro de fluxos aprovados

Destinos #

targets e externalHosts aceitam domínio em IDNA, IPv4 decimal, IPv6 entre colchetes e porta explícita, com esquema e caminho opcionais.

ExemploAlcance
api.exemplo.testdomínio exato, HTTP ou HTTPS, qualquer porta
https://api.exemplo.testsomente HTTPS na porta 443
https://api.exemplo.test:8443somente HTTPS na porta 8443
https://api.exemplo.test/v1somente HTTPS em /v1 e abaixo
*.exemplo.testsubdomínios de exemplo.test, sem incluir o próprio domínio

São recusados credenciais na URL, ?, #, %, espaços, curinga global, curinga em IP, caminhos com .. e barras codificadas. Caminhos exigem esquema. Redes privadas e loopback precisam de escopo explícito, e DNS e redirecionamentos são revalidados: um domínio público não pode passar a apontar para um endereço privado.

Hashes #

Cada arquivo do pacote, exceto o manifesto, precisa de uma entrada em hashes com o SHA-256 dos seus bytes em hexadecimal minúsculo. A quantidade de hashes deve ser igual à quantidade de arquivos. A IDE web calcula tudo automaticamente na exportação, e no CatSuite Studio o comando CatSuite: Atualizar hashes do manifesto faz o mesmo no VS Code.

Configurações com settingsSchema #

JSON
{
  "settingsSchema": {
    "laboratory": {"title": {"pt-BR": "Modo laboratório", "en": "Laboratory mode"}, "type": "boolean"},
    "limite": {"title": {"pt-BR": "Limite", "en": "Limit"}, "type": "integer", "minimum": 1, "maximum": 50},
    "chave": {"title": {"pt-BR": "Credencial", "en": "Credential"}, "type": "credential"}
  }
}

Tipos aceitos: string, boolean, integer, number e credential. O alias secret significa referência a credencial, não o seu conteúdo. enum aceita de 1 a 50 valores e as chaves seguem [a-zA-Z0-9_.-]{1,64}.

Formato 2 #

formatVersion: 2 acrescenta revisionId e lineageId em UUID, parentHash, requiresSdk (de 1.0.0 a 1.4.0), assinatura Ed25519 opcional sobre JSON canônico e proteção opcional com senha. Editar no aplicativo remove a assinatura antiga e cria uma nova revisão; exportar assina com a identidade local. Veja Segurança, cofre e proteção de dados.

Limites do pacote #

ItemLimite
Arquivo .catplug10 MiB
Conteúdo expandido40 MiB
Arquivos500
manifest.json64 KiB
Cada arquivo4 MiB
Caminhosrelativos, até 200 caracteres, sem / inicial, \, : ou ..

Links simbólicos e arquivos duplicados são recusados com E_PATH.