Documentation
¶
Overview ¶
Package archive valida la ESTRUCTURA de los JAR/ZIP que se van a instalar como plugins o mods, con límites de recursos.
Nunca descomprime ni extrae nada: solo lee la firma y el directorio central del archivo. Un "zip bomb" declarado se detecta por sus cabeceras y se rechaza sin materializar un solo byte descomprimido, y jamás se escribe en el directorio de ejecución.
Lo que NO garantiza: que el contenido sea seguro, esté libre de código malicioso o sea compatible con el motor. Solo comprueba forma y tamaño.
Index ¶
Constants ¶
const ( // DefaultMaxEntries es el número máximo de entradas del archivo. DefaultMaxEntries = 4096 // DefaultMaxUncompressedBytes es la suma máxima de tamaños declarados. DefaultMaxUncompressedBytes int64 = 512 << 20 // DefaultMaxEntryBytes es el tamaño declarado máximo de una entrada. DefaultMaxEntryBytes int64 = 128 << 20 // DefaultMaxRatio es la ratio descomprimido/comprimido máxima tolerada en // entradas de 1 MiB o más (compresión "sospechosa"). DefaultMaxRatio = 200.0 // DefaultMaxNameLen es la longitud máxima del nombre de una entrada. DefaultMaxNameLen = 512 )
Límites por defecto al inspeccionar un JAR/ZIP.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Limits ¶
type Limits struct {
// MaxEntries 0 ⇒ DefaultMaxEntries.
MaxEntries int
// MaxUncompressedBytes 0 ⇒ DefaultMaxUncompressedBytes.
MaxUncompressedBytes int64
// MaxEntryBytes 0 ⇒ DefaultMaxEntryBytes.
MaxEntryBytes int64
// MaxRatio 0 ⇒ DefaultMaxRatio (en entradas de 1 MiB o más).
MaxRatio float64
// MaxNameLen 0 ⇒ DefaultMaxNameLen.
MaxNameLen int
}
Limits son los límites de recursos aplicables a la inspección.
func (Limits) WithDefaults ¶
WithDefaults completa los límites no indicados.
type Report ¶
type Report struct {
// Entries es el número de entradas del archivo.
Entries int `json:"entries"`
// UncompressedBytes es la suma de tamaños declarados (no verificados byte a
// byte: no se descomprime).
UncompressedBytes int64 `json:"uncompressed_bytes"`
// CompressedBytes es la suma de tamaños comprimidos declarados.
CompressedBytes int64 `json:"compressed_bytes"`
// MaxRatio es la mayor ratio descomprimido/comprimido observada.
MaxRatio float64 `json:"max_ratio"`
// HasManifest indica si contiene META-INF/MANIFEST.MF.
HasManifest bool `json:"has_manifest"`
// Descriptor nombra el descriptor de plugin/mod encontrado (vacío si no hay).
Descriptor string `json:"descriptor,omitempty"`
}
Report resume lo observado en el artefacto. Es informativo y aditivo: se incluye en el documento JSON de `plugin add`.