freedom

package
v1.251201.0 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2025 License: MPL-2.0 Imports: 29 Imported by: 71

Documentation

Index

Constants

This section is empty.

Variables

View Source
var File_proxy_freedom_config_proto protoreflect.FileDescriptor

Functions

func GenerateRandomBytes added in v1.8.24

func GenerateRandomBytes(n int64) ([]byte, error)

func NewPacketReader added in v1.1.5

func NewPacketReader(conn net.Conn, UDPOverride net.Destination, DialDest net.Destination) buf.Reader

func NewPacketWriter added in v1.1.5

func NewPacketWriter(conn net.Conn, h *Handler, UDPOverride net.Destination, DialDest net.Destination) buf.Writer

DialDest means the dial target used in the dialer when creating conn

Types

type Config

type Config struct {
	DomainStrategy      internet.DomainStrategy `` /* 148-byte string literal not displayed */
	DestinationOverride *DestinationOverride    `protobuf:"bytes,3,opt,name=destination_override,json=destinationOverride,proto3" json:"destination_override,omitempty"`
	UserLevel           uint32                  `protobuf:"varint,4,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"`
	Fragment            *Fragment               `protobuf:"bytes,5,opt,name=fragment,proto3" json:"fragment,omitempty"`
	ProxyProtocol       uint32                  `protobuf:"varint,6,opt,name=proxy_protocol,json=proxyProtocol,proto3" json:"proxy_protocol,omitempty"`
	Noises              []*Noise                `protobuf:"bytes,7,rep,name=noises,proto3" json:"noises,omitempty"`
	// contains filtered or unexported fields
}

func (*Config) Descriptor deprecated

func (*Config) Descriptor() ([]byte, []int)

Deprecated: Use Config.ProtoReflect.Descriptor instead.

func (*Config) GetDestinationOverride

func (x *Config) GetDestinationOverride() *DestinationOverride

func (*Config) GetDomainStrategy

func (x *Config) GetDomainStrategy() internet.DomainStrategy

func (*Config) GetFragment added in v1.8.2

func (x *Config) GetFragment() *Fragment

func (*Config) GetNoises added in v1.250306.0

func (x *Config) GetNoises() []*Noise

func (*Config) GetProxyProtocol added in v1.8.8

func (x *Config) GetProxyProtocol() uint32

func (*Config) GetUserLevel

func (x *Config) GetUserLevel() uint32

func (*Config) ProtoMessage

func (*Config) ProtoMessage()

func (*Config) ProtoReflect

func (x *Config) ProtoReflect() protoreflect.Message

func (*Config) Reset

func (x *Config) Reset()

func (*Config) String

func (x *Config) String() string

type DestinationOverride

type DestinationOverride struct {
	Server *protocol.ServerEndpoint `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
	// contains filtered or unexported fields
}

func (*DestinationOverride) Descriptor deprecated

func (*DestinationOverride) Descriptor() ([]byte, []int)

Deprecated: Use DestinationOverride.ProtoReflect.Descriptor instead.

func (*DestinationOverride) GetServer

func (*DestinationOverride) ProtoMessage

func (*DestinationOverride) ProtoMessage()

func (*DestinationOverride) ProtoReflect

func (x *DestinationOverride) ProtoReflect() protoreflect.Message

func (*DestinationOverride) Reset

func (x *DestinationOverride) Reset()

func (*DestinationOverride) String

func (x *DestinationOverride) String() string

type Fragment added in v1.8.2

type Fragment struct {
	PacketsFrom uint64 `protobuf:"varint,1,opt,name=packets_from,json=packetsFrom,proto3" json:"packets_from,omitempty"`
	PacketsTo   uint64 `protobuf:"varint,2,opt,name=packets_to,json=packetsTo,proto3" json:"packets_to,omitempty"`
	LengthMin   uint64 `protobuf:"varint,3,opt,name=length_min,json=lengthMin,proto3" json:"length_min,omitempty"`
	LengthMax   uint64 `protobuf:"varint,4,opt,name=length_max,json=lengthMax,proto3" json:"length_max,omitempty"`
	IntervalMin uint64 `protobuf:"varint,5,opt,name=interval_min,json=intervalMin,proto3" json:"interval_min,omitempty"`
	IntervalMax uint64 `protobuf:"varint,6,opt,name=interval_max,json=intervalMax,proto3" json:"interval_max,omitempty"`
	MaxSplitMin uint64 `protobuf:"varint,7,opt,name=max_split_min,json=maxSplitMin,proto3" json:"max_split_min,omitempty"`
	MaxSplitMax uint64 `protobuf:"varint,8,opt,name=max_split_max,json=maxSplitMax,proto3" json:"max_split_max,omitempty"`
	// contains filtered or unexported fields
}

func (*Fragment) Descriptor deprecated added in v1.8.2

func (*Fragment) Descriptor() ([]byte, []int)

Deprecated: Use Fragment.ProtoReflect.Descriptor instead.

func (*Fragment) GetIntervalMax added in v1.8.4

func (x *Fragment) GetIntervalMax() uint64

func (*Fragment) GetIntervalMin added in v1.8.4

func (x *Fragment) GetIntervalMin() uint64

func (*Fragment) GetLengthMax added in v1.8.4

func (x *Fragment) GetLengthMax() uint64

func (*Fragment) GetLengthMin added in v1.8.4

func (x *Fragment) GetLengthMin() uint64

func (*Fragment) GetMaxSplitMax added in v1.250831.0

func (x *Fragment) GetMaxSplitMax() uint64

func (*Fragment) GetMaxSplitMin added in v1.250831.0

func (x *Fragment) GetMaxSplitMin() uint64

func (*Fragment) GetPacketsFrom added in v1.8.4

func (x *Fragment) GetPacketsFrom() uint64

func (*Fragment) GetPacketsTo added in v1.8.4

func (x *Fragment) GetPacketsTo() uint64

func (*Fragment) ProtoMessage added in v1.8.2

func (*Fragment) ProtoMessage()

func (*Fragment) ProtoReflect added in v1.8.2

func (x *Fragment) ProtoReflect() protoreflect.Message

func (*Fragment) Reset added in v1.8.2

func (x *Fragment) Reset()

func (*Fragment) String added in v1.8.2

func (x *Fragment) String() string

type FragmentWriter added in v1.8.2

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

func (*FragmentWriter) Write added in v1.8.2

func (f *FragmentWriter) Write(b []byte) (int, error)

type Handler

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

Handler handles Freedom connections.

func (*Handler) Init

func (h *Handler) Init(config *Config, pm policy.Manager) error

Init initializes the Handler with necessary parameters.

func (*Handler) Process

func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error

Process implements proxy.Outbound.

type Noise added in v1.8.24

type Noise struct {
	LengthMin uint64 `protobuf:"varint,1,opt,name=length_min,json=lengthMin,proto3" json:"length_min,omitempty"`
	LengthMax uint64 `protobuf:"varint,2,opt,name=length_max,json=lengthMax,proto3" json:"length_max,omitempty"`
	DelayMin  uint64 `protobuf:"varint,3,opt,name=delay_min,json=delayMin,proto3" json:"delay_min,omitempty"`
	DelayMax  uint64 `protobuf:"varint,4,opt,name=delay_max,json=delayMax,proto3" json:"delay_max,omitempty"`
	Packet    []byte `protobuf:"bytes,5,opt,name=packet,proto3" json:"packet,omitempty"`
	ApplyTo   string `protobuf:"bytes,6,opt,name=apply_to,json=applyTo,proto3" json:"apply_to,omitempty"`
	// contains filtered or unexported fields
}

func (*Noise) Descriptor deprecated added in v1.8.24

func (*Noise) Descriptor() ([]byte, []int)

Deprecated: Use Noise.ProtoReflect.Descriptor instead.

func (*Noise) GetApplyTo added in v1.250831.0

func (x *Noise) GetApplyTo() string

func (*Noise) GetDelayMax added in v1.8.24

func (x *Noise) GetDelayMax() uint64

func (*Noise) GetDelayMin added in v1.8.24

func (x *Noise) GetDelayMin() uint64

func (*Noise) GetLengthMax added in v1.8.24

func (x *Noise) GetLengthMax() uint64

func (*Noise) GetLengthMin added in v1.8.24

func (x *Noise) GetLengthMin() uint64

func (*Noise) GetPacket added in v1.250306.0

func (x *Noise) GetPacket() []byte

func (*Noise) ProtoMessage added in v1.8.24

func (*Noise) ProtoMessage()

func (*Noise) ProtoReflect added in v1.8.24

func (x *Noise) ProtoReflect() protoreflect.Message

func (*Noise) Reset added in v1.8.24

func (x *Noise) Reset()

func (*Noise) String added in v1.8.24

func (x *Noise) String() string

type NoisePacketWriter added in v1.8.24

type NoisePacketWriter struct {
	buf.Writer

	UDPOverride net.Destination
	// contains filtered or unexported fields
}

func (*NoisePacketWriter) WriteMultiBuffer added in v1.8.24

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

MultiBuffer writer with Noise before first packet

type PacketReader added in v1.1.5

type PacketReader struct {
	*internet.PacketConnWrapper
	stats.Counter
	IsOverridden      bool
	InitUnchangedAddr net.Address
	InitChangedAddr   net.Address
}

func (*PacketReader) ReadMultiBuffer added in v1.1.5

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

type PacketWriter added in v1.1.5

type PacketWriter struct {
	*internet.PacketConnWrapper
	stats.Counter
	*Handler
	UDPOverride net.Destination

	// Dest of udp packets might be a domain, we will resolve them to IP
	// But resolver will return a random one if the domain has many IPs
	// Resulting in these packets being sent to many different IPs randomly
	// So, cache and keep the resolve result
	ResolvedUDPAddr *utils.TypedSyncMap[string, net.Address]
	LocalAddr       net.Address
}

func (*PacketWriter) WriteMultiBuffer added in v1.1.5

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

Jump to

Keyboard shortcuts

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