limiter

package
v0.0.0-...-794c571 Latest Latest
Warning

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

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

Documentation

Overview

Package limiter is to control the links that go into the dispatcher

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IPData

type IPData struct {
	UID   int
	Tag   string
	Email string
}

type InboundInfo

type InboundInfo struct {
	Tag              string
	NodeSpeedLimit   uint64
	SubscriptionInfo *sync.Map // key: email → SubscriptionInfo
	BucketHub        *sync.Map // key: email → *rate.Limiter
	GlobalIPLimit    struct {
		// contains filtered or unexported fields
	}
}

type Limiter

type Limiter struct {
	InboundInfo *sync.Map
	// contains filtered or unexported fields
}

func New

func New(server *core.Instance) *Limiter

func (*Limiter) AddInboundLimiter

func (l *Limiter) AddInboundLimiter(tag string, expiry int, nodeSpeedLimit uint64, subscriptionList *[]api.SubscriptionInfo, redisConfig *RedisConfig) error

func (*Limiter) DeleteInboundLimiter

func (l *Limiter) DeleteInboundLimiter(tag string) error

func (*Limiter) DeleteSubscriptionBuckets

func (l *Limiter) DeleteSubscriptionBuckets(tag string, emails []string)

func (*Limiter) DrainDeltas

func (l *Limiter) DrainDeltas(tag string, tc *counter.TrafficCounter) *PendingTraffic

func (*Limiter) GetLimiter

func (l *Limiter) GetLimiter(tag string, email string, ip string) (limiter *rate.Limiter, isSpeedLimited bool, Reject bool)

func (*Limiter) GetOnlineIPs

func (l *Limiter) GetOnlineIPs(tag string) (*[]api.OnlineIP, error)

func (*Limiter) RateTimeoutReader

func (l *Limiter) RateTimeoutReader(reader buf.TimeoutReader, limiter *rate.Limiter) buf.TimeoutReader

func (*Limiter) RateWriter

func (l *Limiter) RateWriter(writer buf.Writer, limiter *rate.Limiter) buf.Writer

func (*Limiter) ResetTraffic

func (l *Limiter) ResetTraffic(pending *PendingTraffic)

func (*Limiter) UpdateInboundLimiter

func (l *Limiter) UpdateInboundLimiter(tag string, updatedServiceList *[]api.SubscriptionInfo) error

type PendingTraffic

type PendingTraffic struct {
	Result   []api.SubscriptionTraffic
	Counters []pendingCounter
}

type RedisConfig

type RedisConfig struct {
	Enable   bool   `mapstructure:"Enable"`
	Network  string `mapstructure:"Network"` // tcp or unix
	Addr     string `mapstructure:"Addr"`    // host:port, or /path/to/unix.sock
	Username string `mapstructure:"Username"`
	Password string `mapstructure:"Password"`
	DB       int    `mapstructure:"DB"`
	Timeout  int    `mapstructure:"Timeout"`
}

type SubscriptionInfo

type SubscriptionInfo struct {
	Id         int
	SpeedLimit uint64
	IPLimit    int
}

type TimeoutReader

type TimeoutReader struct {
	Reader  buf.TimeoutReader
	Limiter *rate.Limiter
}

func (*TimeoutReader) Interrupt

func (r *TimeoutReader) Interrupt()

func (*TimeoutReader) ReadMultiBuffer

func (r *TimeoutReader) ReadMultiBuffer() (buf.MultiBuffer, error)

func (*TimeoutReader) ReadMultiBufferTimeout

func (r *TimeoutReader) ReadMultiBufferTimeout(timeout time.Duration) (buf.MultiBuffer, error)

type Writer

type Writer struct {
	Writer  buf.Writer
	Limiter *rate.Limiter
}

func (*Writer) Close

func (w *Writer) Close() error

func (*Writer) WriteMultiBuffer

func (w *Writer) WriteMultiBuffer(mb buf.MultiBuffer) error

Jump to

Keyboard shortcuts

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