61 lines
2.2 KiB
Go
61 lines
2.2 KiB
Go
package mellaris
|
|
|
|
import (
|
|
"git.difuse.io/Difuse/Mellaris/analyzer"
|
|
"git.difuse.io/Difuse/Mellaris/engine"
|
|
gfwio "git.difuse.io/Difuse/Mellaris/io"
|
|
"git.difuse.io/Difuse/Mellaris/modifier"
|
|
"git.difuse.io/Difuse/Mellaris/ruleset"
|
|
)
|
|
|
|
// Config defines IO, worker, and ruleset settings for the engine.
|
|
type Config struct {
|
|
IO IOConfig `mapstructure:"io" yaml:"io"`
|
|
Workers WorkersConfig `mapstructure:"workers" yaml:"workers"`
|
|
Ruleset RulesetConfig `mapstructure:"ruleset" yaml:"ruleset"`
|
|
}
|
|
|
|
// IOConfig configures packet IO.
|
|
type IOConfig struct {
|
|
QueueSize uint32 `mapstructure:"queueSize" yaml:"queueSize"`
|
|
ReadBuffer int `mapstructure:"rcvBuf" yaml:"rcvBuf"`
|
|
WriteBuffer int `mapstructure:"sndBuf" yaml:"sndBuf"`
|
|
Local bool `mapstructure:"local" yaml:"local"`
|
|
RST bool `mapstructure:"rst" yaml:"rst"`
|
|
|
|
// PacketIO overrides NFQueue creation when set.
|
|
// When provided, App.Close will call PacketIO.Close.
|
|
PacketIO gfwio.PacketIO `mapstructure:"-" yaml:"-"`
|
|
}
|
|
|
|
// WorkersConfig configures engine worker behavior.
|
|
type WorkersConfig struct {
|
|
Count int `mapstructure:"count" yaml:"count"`
|
|
QueueSize int `mapstructure:"queueSize" yaml:"queueSize"`
|
|
TCPMaxBufferedPagesTotal int `mapstructure:"tcpMaxBufferedPagesTotal" yaml:"tcpMaxBufferedPagesTotal"`
|
|
TCPMaxBufferedPagesPerConn int `mapstructure:"tcpMaxBufferedPagesPerConn" yaml:"tcpMaxBufferedPagesPerConn"`
|
|
UDPMaxStreams int `mapstructure:"udpMaxStreams" yaml:"udpMaxStreams"`
|
|
}
|
|
|
|
// RulesetConfig configures built-in rule helpers.
|
|
type RulesetConfig struct {
|
|
GeoIp string `mapstructure:"geoip" yaml:"geoip"`
|
|
GeoSite string `mapstructure:"geosite" yaml:"geosite"`
|
|
}
|
|
|
|
// Options configures rules, analyzers, modifiers, and logging.
|
|
type Options struct {
|
|
// RulesFile is a YAML rules file on disk. Mutually exclusive with Rules.
|
|
RulesFile string
|
|
// Rules provides inline expression rules. Mutually exclusive with RulesFile.
|
|
Rules []ruleset.ExprRule
|
|
|
|
// Analyzers and Modifiers default to built-ins when nil.
|
|
Analyzers []analyzer.Analyzer
|
|
Modifiers []modifier.Modifier
|
|
|
|
// EngineLogger and RulesetLogger default to no-op loggers when nil.
|
|
EngineLogger engine.Logger
|
|
RulesetLogger ruleset.Logger
|
|
}
|