rule

package
v0.0.0-...-5ab0ef6 Latest Latest
Warning

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

Go to latest
Published: May 28, 2024 License: GPL-3.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetPageContent

func GetPageContent(url string) (content string, err error)

func ListDir

func ListDir(dirPth string, suffix string) (files []string, err error)

ListDir returns file list named with suffix in dirPth.

Types

type Checker

type Checker interface {
	Check(fwdr *Forwarder) (elap time.Duration, err error)
}

Checker is a forwarder health checker.

type Config

type Config struct {
	RulePath string

	Forward  []string
	Strategy Strategy

	DNSServers []string
	IPSet      string

	Domain []string
	IP     []string
	CIDR   []string
}

Config is config of rule.

func NewConfFromFile

func NewConfFromFile(ruleFile string) (*Config, error)

NewConfFromFile returns a new config from file.

type Forwarder

type Forwarder struct {
	proxy.Dialer
	// contains filtered or unexported fields
}

Forwarder associates with a `-forward` command, usually a dialer or a chain of dialers.

func DirectForwarder

func DirectForwarder(intface string, dialTimeout, relayTimeout time.Duration) (*Forwarder, error)

DirectForwarder returns a direct forwarder.

func ForwarderFromURL

func ForwarderFromURL(s, intface string, dialTimeout, relayTimeout time.Duration) (f *Forwarder, err error)

ForwarderFromURL parses `forward=` command value and returns a new forwarder.

func (*Forwarder) AddHandler

func (f *Forwarder) AddHandler(h StatusHandler)

AddHandler adds a custom handler to handle the status change event.

func (*Forwarder) Addr

func (f *Forwarder) Addr() string

Addr returns the forwarder's addr. NOTE: addr returns for chained dialers: dialer1Addr,dialer2Addr,...

func (*Forwarder) Dial

func (f *Forwarder) Dial(network, addr string) (c net.Conn, err error)

Dial dials to addr and returns conn.

func (*Forwarder) Disable

func (f *Forwarder) Disable()

Disable the forwarder.

func (*Forwarder) Enable

func (f *Forwarder) Enable()

Enable the forwarder.

func (*Forwarder) Enabled

func (f *Forwarder) Enabled() bool

Enabled returns the status of forwarder.

func (*Forwarder) Failures

func (f *Forwarder) Failures() uint32

Failures returns the failuer count of forwarder.

func (*Forwarder) IncFailures

func (f *Forwarder) IncFailures()

IncFailures increase the failuer count by 1.

func (*Forwarder) Latency

func (f *Forwarder) Latency() int64

Latency returns the latency of forwarder.

func (*Forwarder) MaxFailures

func (f *Forwarder) MaxFailures() uint32

MaxFailures returns the maxFailures of forwarder.

func (*Forwarder) Priority

func (f *Forwarder) Priority() uint32

Priority returns the priority of forwarder.

func (*Forwarder) SetLatency

func (f *Forwarder) SetLatency(l int64)

SetLatency sets the latency of forwarder.

func (*Forwarder) SetMaxFailures

func (f *Forwarder) SetMaxFailures(l uint32)

SetMaxFailures sets the maxFailures of forwarder.

func (*Forwarder) SetPriority

func (f *Forwarder) SetPriority(l uint32)

SetPriority sets the priority of forwarder.

func (*Forwarder) URL

func (f *Forwarder) URL() string

URL returns the forwarder's full url.

type FwdrGroup

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

FwdrGroup is a forwarder group.

func NewFwdrGroup

func NewFwdrGroup(rulePath string, s []string, c *Strategy) *FwdrGroup

NewFwdrGroup returns a new forward group.

func (*FwdrGroup) Check

func (p *FwdrGroup) Check()

Check runs the forwarder checks.

func (*FwdrGroup) Dial

func (p *FwdrGroup) Dial(network, addr string) (net.Conn, proxy.Dialer, error)

Dial connects to the address addr on the network net.

func (*FwdrGroup) DialUDP

func (p *FwdrGroup) DialUDP(network, addr string) (pc net.PacketConn, dialer proxy.UDPDialer, err error)

DialUDP connects to the given address.

func (*FwdrGroup) NextDialer

func (p *FwdrGroup) NextDialer(dstAddr string) proxy.Dialer

NextDialer returns the next dialer.

func (*FwdrGroup) OnStatusChanged

func (p *FwdrGroup) OnStatusChanged(fwdr *Forwarder)

onStatusChanged will be called when fwdr's status changed.

func (*FwdrGroup) Priority

func (p *FwdrGroup) Priority() uint32

Priority returns the active priority of dialer.

func (*FwdrGroup) SetPriority

func (p *FwdrGroup) SetPriority(pri uint32)

SetPriority sets the active priority of daler.

type ProviderGroup

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

func NewProviderGroup

func NewProviderGroup(providers []string, excludes []string, includes []string) *ProviderGroup

type Proxy

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

Proxy implements the proxy.Proxy interface with rule support.

func NewProxy

func NewProxy(mainForwarders []string, mainStrategy *Strategy, rules []*Config, ForwardsProvider []string, ForwardsExclude []string, ForwardsInclude []string) *Proxy

NewProxy returns a new rule proxy.

func (*Proxy) AddDomainIP

func (p *Proxy) AddDomainIP(domain string, ip netip.Addr) error

AddDomainIP used to update ipMap rules according to domainMap rule.

func (*Proxy) Check

func (p *Proxy) Check()

Check checks availability of forwarders inside proxy.

func (*Proxy) Dial

func (p *Proxy) Dial(network, addr string) (net.Conn, proxy.Dialer, error)

Dial dials to targer addr and return a conn.

func (*Proxy) DialUDP

func (p *Proxy) DialUDP(network, addr string) (pc net.PacketConn, dialer proxy.UDPDialer, err error)

DialUDP connects to the given address via the proxy.

func (*Proxy) Fetch

func (p *Proxy) Fetch()

func (*Proxy) NextDialer

func (p *Proxy) NextDialer(dstAddr string) proxy.Dialer

NextDialer returns next dialer according to rule.

func (*Proxy) Record

func (p *Proxy) Record(dialer proxy.Dialer, success bool)

Record records result while using the dialer from proxy.

type StatusHandler

type StatusHandler func(*Forwarder)

StatusHandler function will be called when the forwarder's status changed.

type Strategy

type Strategy struct {
	Strategy            string
	Check               string
	CheckInterval       int
	CheckTimeout        int
	CheckTolerance      int
	CheckLatencySamples int
	CheckDisabledOnly   bool
	MaxFailures         int
	DialTimeout         int
	RelayTimeout        int
	IntFace             string
}

Strategy configurations.

Jump to

Keyboard shortcuts

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