scanner

package
v1.5.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 18, 2026 License: GPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsOfficeFile

func IsOfficeFile(header []byte) bool

IsOfficeFile verifica se o arquivo é um documento Office

func IsPDF

func IsPDF(header []byte) bool

IsPDF verifica se o arquivo é um PDF

func IsWebFile

func IsWebFile(header []byte, filename ...string) bool

IsWebFile verifica se o arquivo é um arquivo web (HTML, JS, CSS, PHP, JSP, ASP, etc)

func IsZip

func IsZip(header []byte) bool

IsZip verifica se o arquivo é um ZIP

Types

type BaseScanner

type BaseScanner struct {
	// contains filtered or unexported fields
}

BaseScanner implementação base para todos os scanners

func NewBaseScanner

func NewBaseScanner(config *ScanConfig) (*BaseScanner, error)

NewBaseScanner cria nova instância do scanner base

func (*BaseScanner) AddPattern

func (s *BaseScanner) AddPattern(pattern Pattern)

AddPattern adiciona novo padrão ao scanner

func (*BaseScanner) Scan

func (s *BaseScanner) Scan(ctx context.Context, file *os.File, config *ScanConfig) <-chan ScanResult

Scan implementa o scanner assíncrono

func (*BaseScanner) SetCopyPriority

func (s *BaseScanner) SetCopyPriority(priority CopyPriority)

SetCopyPriority configura prioridade de cópia

type BinaryScanner

type BinaryScanner struct {
	// contains filtered or unexported fields
}

func (*BinaryScanner) Scan

func (s *BinaryScanner) Scan(callback func(content string) error) error

Scan extrai strings legíveis do binário (ASCII e UTF-16) e chama o callback para cada uma

type ChunkProcessor

type ChunkProcessor struct {
	// contains filtered or unexported fields
}

ChunkProcessor gerencia o processamento de chunks de arquivo

func NewChunkProcessor

func NewChunkProcessor(config *ProcessorConfig) *ChunkProcessor

NewChunkProcessor cria nova instância do processador de chunks

func (*ChunkProcessor) ProcessFile

func (p *ChunkProcessor) ProcessFile(ctx context.Context, file *os.File) <-chan []byte

ProcessFile processa o arquivo em chunks

func (*ChunkProcessor) ValidateConfig

func (p *ChunkProcessor) ValidateConfig() error

ValidateConfig valida a configuração do processador

type CopyConfig

type CopyConfig struct {
	DefaultPriority PatternPriority
	PriorityRules   []CopyPriorityRule
	OutputDir       string
	PreservePath    bool
}

CopyConfig configuração específica para cópia

type CopyPriority

type CopyPriority struct {
	Level     PatternPriority
	Immediate bool  // Se true, copia imediatamente ao encontrar match
	MaxSize   int64 // Tamanho máximo em bytes para esta prioridade
}

CopyPriority define os níveis de prioridade para cópia de arquivos

type CopyPriorityRule

type CopyPriorityRule struct {
	Pattern   string
	Priority  PatternPriority
	Immediate bool
	MaxSize   int64
}

CopyPriorityRule regra para determinar prioridade de cópia

type CopyStatus

type CopyStatus struct {
	ShouldCopy bool
	Priority   PatternPriority
	Immediate  bool
}

CopyStatus status da cópia do arquivo

type FileContentCache

type FileContentCache struct {
	// contains filtered or unexported fields
}

FileContentCache armazena conteúdo de arquivos lidos frequentemente O valor pode ser []byte (header, chunk ou arquivo inteiro)

func NewFileContentCache

func NewFileContentCache(size int) (*FileContentCache, error)

NewFileContentCache cria um novo cache LRU para arquivos

func (*FileContentCache) Get

func (c *FileContentCache) Get(key string) ([]byte, bool)

Get retorna o conteúdo do arquivo se estiver no cache

func (*FileContentCache) Set

func (c *FileContentCache) Set(key string, data []byte)

Set armazena o conteúdo do arquivo no cache

type FileScanner

type FileScanner interface {
	Scan(callback func(content string) error) error
}

FileScanner interface para processamento de arquivos

func NewBinaryScanner

func NewBinaryScanner(reader io.ReadCloser, minLen int) FileScanner

func NewOfficeScanner

func NewOfficeScanner(reader io.ReadCloser) FileScanner

NewOfficeScanner cria um novo scanner para arquivos Office

func NewPDFScanner

func NewPDFScanner(reader io.ReadCloser) FileScanner

NewPDFScanner cria um novo scanner para arquivos PDF

func NewWebScanner

func NewWebScanner(reader io.ReadCloser) FileScanner

NewWebScanner cria um novo scanner para arquivos web

func NewZipScanner

func NewZipScanner(reader io.ReadCloser) FileScanner

NewZipScanner cria um novo scanner para arquivos ZIP

type FileType

type FileType string

FileType representa o tipo de arquivo

const (
	TypeText FileType = "text"
	TypePDF  FileType = "pdf"
	TypeWeb  FileType = "web"
	TypeZip  FileType = "zip"
)

type OfficeScanner

type OfficeScanner struct {
	// contains filtered or unexported fields
}

OfficeScanner implementa o scanner para arquivos Office (DOCX, XLSX, PPTX)

func (*OfficeScanner) Scan

func (s *OfficeScanner) Scan(callback func(content string) error) error

Scan processa o conteúdo do arquivo Office

type PDFScanner

type PDFScanner struct {
	// contains filtered or unexported fields
}

PDFScanner implementa o scanner para arquivos PDF

func (*PDFScanner) Scan

func (s *PDFScanner) Scan(callback func(content string) error) error

Scan processa o conteúdo do arquivo PDF

type Pattern

type Pattern struct {
	Value    string
	Type     string // regex, text, binary
	Priority PatternPriority
}

Pattern define um padrão de busca

type PatternPriority

type PatternPriority int

PatternPriority define os níveis de prioridade para padrões e cópia

const (
	PriorityLow PatternPriority = iota
	PriorityMedium
	PriorityHigh
	PriorityCritical
)

type ProcessorConfig

type ProcessorConfig struct {
	ChunkSize   int
	MaxChunks   int
	UseMemMap   bool
	BufferPool  *sync.Pool
	ReadTimeout time.Duration
}

ProcessorConfig configuração para o processador de chunks

type ScanConfig

type ScanConfig struct {
	ChunkSize   int
	MaxChunks   int
	UseMemMap   bool
	Patterns    []Pattern
	BufferPool  *sync.Pool
	ReadTimeout time.Duration
	CopyConfig  *CopyConfig
}

ScanConfig configuração para o scanner

type ScanResult

type ScanResult struct {
	Content    string
	LineNumber int
	MatchType  string
	Pattern    string
	Priority   PatternPriority
	CopyStatus CopyStatus
	Error      error
}

ScanResult resultado do scan

type Scanner

type Scanner interface {
	Scan(ctx context.Context, file *os.File, config *ScanConfig) <-chan ScanResult
	AddPattern(pattern Pattern)
	SetCopyPriority(priority CopyPriority)
}

Scanner interface principal para todos os scanners

type ScannerCache

type ScannerCache struct {
	// contains filtered or unexported fields
}

ScannerCache implementa cache para padrões compilados

func NewScannerCache

func NewScannerCache(size int) (*ScannerCache, error)

NewScannerCache cria nova instância do cache

func (*ScannerCache) GetPattern

func (c *ScannerCache) GetPattern(pattern string) *regexp.Regexp

GetPattern retorna padrão compilado do cache

type WebScanner

type WebScanner struct {
	// contains filtered or unexported fields
}

WebScanner implementa o scanner para arquivos web (HTML, JS, CSS)

func (*WebScanner) Scan

func (s *WebScanner) Scan(callback func(content string) error) error

Scan processa o conteúdo do arquivo web

type ZipScanner

type ZipScanner struct {
	// contains filtered or unexported fields
}

ZipScanner implementa o scanner para arquivos ZIP

func (*ZipScanner) Scan

func (s *ZipScanner) Scan(callback func(content string) error) error

Scan processa o conteúdo do arquivo ZIP

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL