checkpoint

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package checkpoint provides scan state persistence and recovery

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Exists

func Exists(filePath string) bool

Exists checks if a checkpoint file exists

Types

type Manager

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

Manager handles checkpoint operations

func LoadAndResume

func LoadAndResume(filePath string) (*Manager, error)

LoadAndResume loads a checkpoint and prepares for resume

func NewManager

func NewManager(config *ManagerConfig) *Manager

NewManager creates a new checkpoint manager

func (*Manager) AddError

func (m *Manager) AddError(err types.ScanError)

AddError adds an error to the checkpoint

func (*Manager) AddFinding

func (m *Manager) AddFinding(finding types.Finding)

AddFinding adds a finding to the checkpoint

func (*Manager) Cleanup

func (m *Manager) Cleanup() error

Cleanup removes the checkpoint file

func (*Manager) FilterPendingRequests

func (m *Manager) FilterPendingRequests(requests []payloads.FuzzRequest, fingerprinter func(payloads.FuzzRequest) string) []payloads.FuzzRequest

FilterPendingRequests filters out completed requests

func (*Manager) GetFindings

func (m *Manager) GetFindings() []types.Finding

GetFindings returns current findings

func (*Manager) GetResumeInfo

func (m *Manager) GetResumeInfo() *ResumeInfo

GetResumeInfo returns information about a checkpoint for resuming

func (*Manager) GetState

func (m *Manager) GetState() *ScanState

GetState returns the current state

func (*Manager) Initialize

func (m *Manager) Initialize(scanID string, inputFile, inputType, target string, config *types.ScanConfig)

Initialize initializes the checkpoint state

func (*Manager) IsCompleted

func (m *Manager) IsCompleted(fingerprint string) bool

IsCompleted checks if a request has been completed

func (*Manager) Load

func (m *Manager) Load(filePath string) error

Load loads state from a checkpoint file

func (*Manager) RecordCompletion

func (m *Manager) RecordCompletion(fingerprint string)

RecordCompletion records a completed request

func (*Manager) Save

func (m *Manager) Save() error

Save saves the current state to file

func (*Manager) SetProgress

func (m *Manager) SetProgress(total, completed, totalReqs, completedReqs int)

SetProgress updates progress information

func (*Manager) StartAutoSave

func (m *Manager) StartAutoSave()

StartAutoSave starts automatic saving at intervals

func (*Manager) StopAutoSave

func (m *Manager) StopAutoSave()

StopAutoSave stops automatic saving (safe to call multiple times)

type ManagerConfig

type ManagerConfig struct {
	FilePath string
	Interval time.Duration
	AutoSave bool
}

ManagerConfig holds checkpoint manager configuration

func DefaultManagerConfig

func DefaultManagerConfig() *ManagerConfig

DefaultManagerConfig returns default configuration

type RequestState

type RequestState struct {
	Fingerprint string `json:"fingerprint"`
	Endpoint    string `json:"endpoint"`
	Method      string `json:"method"`
	Parameter   string `json:"parameter,omitempty"`
	PayloadType string `json:"payload_type"`
}

RequestState represents a pending request state

type ResumeInfo

type ResumeInfo struct {
	ScanID        string
	StartTime     time.Time
	LastUpdate    time.Time
	Target        string
	Progress      ScanProgress
	FindingsCount int
	ErrorsCount   int
}

GetResumeInfo returns information for displaying resume status

type ScanProgress

type ScanProgress struct {
	TotalEndpoints    int     `json:"total_endpoints"`
	ScannedEndpoints  int     `json:"scanned_endpoints"`
	TotalRequests     int     `json:"total_requests"`
	CompletedRequests int     `json:"completed_requests"`
	PercentComplete   float64 `json:"percent_complete"`
}

ScanProgress tracks scan progress

type ScanState

type ScanState struct {
	Version       string            `json:"version"`
	ScanID        string            `json:"scan_id"`
	StartTime     time.Time         `json:"start_time"`
	LastUpdate    time.Time         `json:"last_update"`
	InputFile     string            `json:"input_file"`
	InputType     string            `json:"input_type"`
	Target        string            `json:"target"`
	Config        *types.ScanConfig `json:"config,omitempty"`
	Progress      ScanProgress      `json:"progress"`
	Findings      []types.Finding   `json:"findings"`
	CompletedReqs []string          `json:"completed_requests"` // Fingerprints of completed requests
	PendingReqs   []RequestState    `json:"pending_requests,omitempty"`
	Errors        []types.ScanError `json:"errors,omitempty"`
}

ScanState represents the saved scan state

Jump to

Keyboard shortcuts

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