services

package
v0.5.3 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Services

type Services struct {
	// Options contains CLI configuration
	Options *types.Options

	// HostLimiter limits concurrent requests per hostname
	HostLimiter *hostlimit.HostRateLimiter

	// RateLimiter, when non-nil, caps the GLOBAL outbound request rate (requests
	// per second) across all hosts — distinct from HostLimiter's per-host
	// concurrency. It is on by default: Options.RateLimit carries the documented
	// 100 rps default (scanning_pace.rate_limit) even when --rate-limit is not
	// typed, and only a rate of 0 ("unlimited") leaves it nil. Shared across every
	// Requester built from these Services (and their WithContext clones), so one
	// token bucket governs the whole scan.
	RateLimiter *rate.Limiter

	// HostErrors tracks host failures for circuit breaking
	HostErrors *hosterrors.Cache

	// Egress is the scan's egress gate over RateLimiter, HostLimiter and
	// HostErrors, built once per scan so every sender shares one wire-attempt
	// counter. Read it through EgressGate, which also covers a Services that
	// never set it or that replaced one of the three components.
	Egress *egress.Gate

	// Notifier sends notifications (Telegram, Discord, etc.)
	Notifier *notify.Manager

	// Dialer is the fastdialer instance for DNS resolution
	Dialer *fastdialer.Dialer

	// DedupManager manages deduplication for modules
	DedupManager *dedup.Manager
}

Services contains runtime services used across the application.

func (*Services) EgressGate added in v0.5.3

func (s *Services) EgressGate() *egress.Gate

EgressGate returns the gate that applies these Services' rate limiter, host limiter and breaker.

It is s.Egress when that gate applies exactly those three. When a caller has copied the Services and swapped one of them (the probe phase runs on its own rate and host limiter), it is a view over the new components that still counts into s.Egress's wire-attempt counter. With no Egress set it is a fresh gate over the components. Nil-safe: a nil Services yields an ungated gate.

Jump to

Keyboard shortcuts

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