libbox

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2023 License: GPL-2.0 Imports: 65 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CommandLog int32 = iota
	CommandStatus
	CommandServiceReload
	CommandCloseConnections
	CommandGroup
	CommandSelectOutbound
	CommandURLTest
	CommandGroupExpand
	CommandClashMode
	CommandSetClashMode
	CommandGetSystemProxyStatus
	CommandSetSystemProxyEnabled
)
View Source
const (
	MessageTypeError = iota
	MessageTypeProfileList
	MessageTypeProfileContentRequest
	MessageTypeProfileContent
)
View Source
const (
	ProfileTypeLocal int32 = iota
	ProfileTypeiCloud
	ProfileTypeRemote
)

Variables

This section is empty.

Functions

func CheckConfig

func CheckConfig(configContent string) error

func DecodeLengthChunk

func DecodeLengthChunk(data []byte) int32

func EncodeChunkedMessage

func EncodeChunkedMessage(data []byte) []byte

func FormatBytes

func FormatBytes(length int64) string

func FormatConfig

func FormatConfig(configContent string) (string, error)
func GenerateRemoteProfileImportLink(name string, remoteURL string) string

func ProxyDisplayType

func ProxyDisplayType(proxyType string) string

func RedirectStderr

func RedirectStderr(path string) error

func RegisterLocalDNSTransport

func RegisterLocalDNSTransport(transport LocalDNSTransport)

func SetMemoryLimit

func SetMemoryLimit(enabled bool)

func Setup

func Setup(basePath string, workingPath string, tempPath string, isTVOS bool)

func SetupWithUsername

func SetupWithUsername(basePath string, workingPath string, tempPath string, username string) error

func Version

func Version() string

Types

type BoxService

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

func NewService

func NewService(configContent string, platformInterface PlatformInterface) (*BoxService, error)

func (*BoxService) Close

func (s *BoxService) Close() error

func (*BoxService) Sleep

func (s *BoxService) Sleep()

func (*BoxService) Start

func (s *BoxService) Start() error

func (*BoxService) Wake

func (s *BoxService) Wake()

type CommandClient

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

func NewCommandClient

func NewCommandClient(handler CommandClientHandler, options *CommandClientOptions) *CommandClient

func NewStandaloneCommandClient

func NewStandaloneCommandClient() *CommandClient

func (*CommandClient) CloseConnections

func (c *CommandClient) CloseConnections() error

func (*CommandClient) Connect

func (c *CommandClient) Connect() error

func (*CommandClient) Disconnect

func (c *CommandClient) Disconnect() error

func (*CommandClient) GetSystemProxyStatus

func (c *CommandClient) GetSystemProxyStatus() (*SystemProxyStatus, error)

func (*CommandClient) SelectOutbound

func (c *CommandClient) SelectOutbound(groupTag string, outboundTag string) error

func (*CommandClient) ServiceReload

func (c *CommandClient) ServiceReload() error

func (*CommandClient) SetClashMode

func (c *CommandClient) SetClashMode(newMode string) error

func (*CommandClient) SetGroupExpand

func (c *CommandClient) SetGroupExpand(groupTag string, isExpand bool) error

func (*CommandClient) SetSystemProxyEnabled

func (c *CommandClient) SetSystemProxyEnabled(isEnabled bool) error

func (*CommandClient) URLTest

func (c *CommandClient) URLTest(groupTag string) error

type CommandClientHandler

type CommandClientHandler interface {
	Connected()
	Disconnected(message string)
	WriteLog(message string)
	WriteStatus(message *StatusMessage)
	WriteGroups(message OutboundGroupIterator)
	InitializeClashMode(modeList StringIterator, currentMode string)
	UpdateClashMode(newMode string)
}

type CommandClientOptions

type CommandClientOptions struct {
	Command        int32
	StatusInterval int64
}

type CommandServer

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

func NewCommandServer

func NewCommandServer(handler CommandServerHandler, maxLines int32) *CommandServer

func (*CommandServer) Close

func (s *CommandServer) Close() error

func (*CommandServer) SetService

func (s *CommandServer) SetService(newService *BoxService)

func (*CommandServer) Start

func (s *CommandServer) Start() error

func (*CommandServer) WriteMessage

func (s *CommandServer) WriteMessage(message string)

type CommandServerHandler

type CommandServerHandler interface {
	ServiceReload() error
	GetSystemProxyStatus() *SystemProxyStatus
	SetSystemProxyEnabled(isEnabled bool) error
}

type ErrorMessage

type ErrorMessage struct {
	Message string
}

func DecodeErrorMessage

func DecodeErrorMessage(data []byte) (*ErrorMessage, error)

func (*ErrorMessage) Encode

func (e *ErrorMessage) Encode() []byte

type ExchangeContext

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

func (*ExchangeContext) ErrnoCode

func (c *ExchangeContext) ErrnoCode(code int32)

func (*ExchangeContext) ErrorCode

func (c *ExchangeContext) ErrorCode(code int32)

func (*ExchangeContext) OnCancel

func (c *ExchangeContext) OnCancel(callback Func)

func (*ExchangeContext) RawSuccess

func (c *ExchangeContext) RawSuccess(result []byte)

func (*ExchangeContext) Success

func (c *ExchangeContext) Success(result string)

type Func

type Func interface {
	Invoke() error
}

type HTTPClient

type HTTPClient interface {
	RestrictedTLS()
	ModernTLS()
	PinnedTLS12()
	PinnedSHA256(sumHex string)
	TrySocks5(port int32)
	KeepAlive()
	NewRequest() HTTPRequest
	Close()
}

func NewHTTPClient

func NewHTTPClient() HTTPClient

type HTTPRequest

type HTTPRequest interface {
	SetURL(link string) error
	SetMethod(method string)
	SetHeader(key string, value string)
	SetContent(content []byte)
	SetContentString(content string)
	RandomUserAgent()
	SetUserAgent(userAgent string)
	Execute() (HTTPResponse, error)
}

type HTTPResponse

type HTTPResponse interface {
	GetContent() ([]byte, error)
	GetContentString() (string, error)
	WriteTo(path string) error
}

type ImportRemoteProfile

type ImportRemoteProfile struct {
	Name string
	URL  string
	Host string
}
func ParseRemoteProfileImportLink(importLink string) (*ImportRemoteProfile, error)

type InterfaceUpdateListener

type InterfaceUpdateListener interface {
	UpdateDefaultInterface(interfaceName string, interfaceIndex int32)
}

type LocalDNSTransport

type LocalDNSTransport interface {
	Raw() bool
	Lookup(ctx *ExchangeContext, network string, domain string) error
	Exchange(ctx *ExchangeContext, message []byte) error
}

type NetworkInterface

type NetworkInterface struct {
	Index     int32
	MTU       int32
	Name      string
	Addresses StringIterator
}

type NetworkInterfaceIterator

type NetworkInterfaceIterator interface {
	Next() *NetworkInterface
	HasNext() bool
}

type OnDemandRule

type OnDemandRule interface {
	Target() int32
	DNSSearchDomainMatch() StringIterator
	DNSServerAddressMatch() StringIterator
	InterfaceTypeMatch() int32
	SSIDMatch() StringIterator
	ProbeURL() string
}

type OnDemandRuleIterator

type OnDemandRuleIterator interface {
	Next() OnDemandRule
	HasNext() bool
}

type OutboundGroup

type OutboundGroup struct {
	Tag        string
	Type       string
	Selectable bool
	Selected   string
	IsExpand   bool
	// contains filtered or unexported fields
}

func (*OutboundGroup) GetItems

type OutboundGroupItem

type OutboundGroupItem struct {
	Tag          string
	Type         string
	URLTestTime  int64
	URLTestDelay int32
}

type OutboundGroupItemIterator

type OutboundGroupItemIterator interface {
	Next() *OutboundGroupItem
	HasNext() bool
}

type OutboundGroupIterator

type OutboundGroupIterator interface {
	Next() *OutboundGroup
	HasNext() bool
}

type PProfServer

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

func NewPProfServer

func NewPProfServer(port int) *PProfServer

func (*PProfServer) Close

func (s *PProfServer) Close() error

func (*PProfServer) Start

func (s *PProfServer) Start() error

type PlatformInterface

type PlatformInterface interface {
	UsePlatformAutoDetectInterfaceControl() bool
	AutoDetectInterfaceControl(fd int32) error
	OpenTun(options TunOptions) (int32, error)
	WriteLog(message string)
	UseProcFS() bool
	FindConnectionOwner(ipProtocol int32, sourceAddress string, sourcePort int32, destinationAddress string, destinationPort int32) (int32, error)
	PackageNameByUid(uid int32) (string, error)
	UIDByPackageName(packageName string) (int32, error)
	UsePlatformDefaultInterfaceMonitor() bool
	StartDefaultInterfaceMonitor(listener InterfaceUpdateListener) error
	CloseDefaultInterfaceMonitor(listener InterfaceUpdateListener) error
	UsePlatformInterfaceGetter() bool
	GetInterfaces() (NetworkInterfaceIterator, error)
	UnderNetworkExtension() bool
	ClearDNSCache()
}

type ProfileContent

type ProfileContent struct {
	Name        string
	Type        int32
	Config      string
	RemotePath  string
	AutoUpdate  bool
	LastUpdated int64
}

func DecodeProfileContent

func DecodeProfileContent(data []byte) (*ProfileContent, error)

func (*ProfileContent) Encode

func (c *ProfileContent) Encode() []byte

type ProfileContentRequest

type ProfileContentRequest struct {
	ProfileID int64
}

func DecodeProfileContentRequest

func DecodeProfileContentRequest(data []byte) (*ProfileContentRequest, error)

func (*ProfileContentRequest) Encode

func (r *ProfileContentRequest) Encode() []byte

type ProfileDecoder

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

func (*ProfileDecoder) Decode

func (d *ProfileDecoder) Decode(data []byte) error

func (*ProfileDecoder) Iterator

func (d *ProfileDecoder) Iterator() ProfilePreviewIterator

type ProfileEncoder

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

func (*ProfileEncoder) Append

func (e *ProfileEncoder) Append(profile *ProfilePreview)

func (*ProfileEncoder) Encode

func (e *ProfileEncoder) Encode() []byte

type ProfilePreview

type ProfilePreview struct {
	ProfileID int64
	Name      string
	Type      int32
}

type ProfilePreviewIterator

type ProfilePreviewIterator interface {
	Next() *ProfilePreview
	HasNext() bool
}

type RoutePrefix

type RoutePrefix struct {
	Address string
	Prefix  int32
}

func (*RoutePrefix) Mask

func (p *RoutePrefix) Mask() string

type RoutePrefixIterator

type RoutePrefixIterator interface {
	Next() *RoutePrefix
	HasNext() bool
}

type StatusMessage

type StatusMessage struct {
	Memory           int64
	Goroutines       int32
	ConnectionsIn    int32
	ConnectionsOut   int32
	TrafficAvailable bool
	Uplink           int64
	Downlink         int64
	UplinkTotal      int64
	DownlinkTotal    int64
}

type StringIterator

type StringIterator interface {
	Next() string
	HasNext() bool
}

type SystemProxyStatus

type SystemProxyStatus struct {
	Available bool
	Enabled   bool
}

type TunInterface

type TunInterface interface {
	FileDescriptor() int32
	Close() error
}

type TunOptions

type TunOptions interface {
	GetInet4Address() RoutePrefixIterator
	GetInet6Address() RoutePrefixIterator
	GetDNSServerAddress() (string, error)
	GetMTU() int32
	GetAutoRoute() bool
	GetStrictRoute() bool
	GetInet4RouteAddress() RoutePrefixIterator
	GetInet6RouteAddress() RoutePrefixIterator
	GetIncludePackage() StringIterator
	GetExcludePackage() StringIterator
	IsHTTPProxyEnabled() bool
	GetHTTPProxyServer() string
	GetHTTPProxyServerPort() int32
}

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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