autonatv2

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jan 23, 2025 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ServiceName = "dep2p.autonatv2"
	// DialBackProtocol 是用于回拨的协议标识符
	DialBackProtocol = "/dep2p/autonat/2/dial-back"
	// DialProtocol 是用于拨号请求的协议标识符
	DialProtocol = "/dep2p/autonat/2/dial-request"
)

ServiceName 是 AutoNAT v2 服务的名称

Variables

View Source
var (
	// ErrNoValidPeers 表示没有有效的 AutoNAT v2 对等节点
	ErrNoValidPeers = errors.New("没有有效的 AutoNAT v2 对等节点")
	// ErrDialRefused 表示拨号被拒绝
	ErrDialRefused = errors.New("拨号被拒绝")
)

Functions

This section is empty.

Types

type AutoNAT

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

AutoNAT 实现了 AutoNAT v2 客户端和服务器 用户可以使用 CheckReachability 方法检查其地址的可达性 服务器提供放大攻击防护和速率限制

func New

func New(host host.Host, dialerHost host.Host, opts ...AutoNATOption) (*AutoNAT, error)

New 返回一个新的 AutoNAT 实例 参数:

  • host: dep2p 主机
  • dialerHost: 用于拨号的主机
  • opts: AutoNAT 选项

返回值:

  • *AutoNAT: 新创建的 AutoNAT 实例
  • error: 如果创建失败则返回错误

注意:

  • host 和 dialerHost 应具有相同的拨号能力
  • 如果主机不支持某个传输,则该传输的地址的回拨请求将被忽略

func (*AutoNAT) Close

func (an *AutoNAT) Close()

Close 关闭 AutoNAT 服务

func (*AutoNAT) GetReachability

func (an *AutoNAT) GetReachability(ctx context.Context, reqs []Request) (Result, error)

GetReachability 发起单个拨号请求以检查请求地址的可达性 参数:

  • ctx: 上下文
  • reqs: 要检查的地址请求列表

返回值:

  • Result: 可达性检查结果
  • error: 如果检查失败则返回错误

func (*AutoNAT) Start

func (an *AutoNAT) Start() error

Start 启动 AutoNAT 服务 返回值:

  • error: 如果启动失败则返回错误

type AutoNATOption

type AutoNATOption func(s *autoNATSettings) error

AutoNATOption 定义了修改 AutoNAT 设置的函数类型

func WithMetricsTracer

func WithMetricsTracer(m MetricsTracer) AutoNATOption

WithMetricsTracer 设置指标追踪器

参数:

  • m: MetricsTracer 指标追踪器接口

返回值:

  • AutoNATOption 用于修改设置的函数

func WithServerRateLimit

func WithServerRateLimit(rpm, perPeerRPM, dialDataRPM int) AutoNATOption

WithServerRateLimit 设置服务器的速率限制

参数:

  • rpm: int 服务器每分钟请求数限制
  • perPeerRPM: int 每个对等节点每分钟请求数限制
  • dialDataRPM: int 服务器每分钟拨号数据请求限制

返回值:

  • AutoNATOption 用于修改设置的函数

type EventDialRequestCompleted

type EventDialRequestCompleted struct {
	Error            error                          // 错误信息
	ResponseStatus   pb.DialResponse_ResponseStatus // 响应状态
	DialStatus       pb.DialStatus                  // 拨号状态
	DialDataRequired bool                           // 是否需要拨号数据
	DialedAddr       ma.Multiaddr                   // 拨号地址
}

EventDialRequestCompleted 表示拨号请求完成的事件 包含了请求的结果信息

type MetricsTracer

type MetricsTracer interface {
	// CompletedRequest 记录已完成的请求事件
	// 参数:
	//   - e: EventDialRequestCompleted 拨号请求完成事件
	CompletedRequest(EventDialRequestCompleted)
}

MetricsTracer 定义了指标追踪器的接口

func NewMetricsTracer

func NewMetricsTracer(reg prometheus.Registerer) MetricsTracer

NewMetricsTracer 创建一个新的指标追踪器 参数:

  • reg: prometheus.Registerer Prometheus 注册器

返回值:

  • MetricsTracer 指标追踪器实例

type Request

type Request struct {
	// Addr 是要验证的多地址
	Addr ma.Multiaddr
	// SendDialData 表示如果服务器请求 Addr 的拨号数据,是否发送
	SendDialData bool
}

Request 是验证单个地址可达性的请求 参数:

  • Addr: 要验证的多地址
  • SendDialData: 如果服务器请求 Addr 的拨号数据,是否发送

type Result

type Result struct {
	// Addr 是已拨号的地址
	Addr ma.Multiaddr
	// Reachability 是已拨号地址的可达性
	Reachability network.Reachability
	// Status 是回拨的结果状态
	Status pb.DialStatus
}

Result 是 CheckReachability 调用的结果 参数:

  • Addr: 已拨号的地址
  • Reachability: 已拨号地址的可达性
  • Status: 回拨的结果状态

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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