Documentation ¶
Overview ¶
Package core provides an entry point to use V2Ray core functionalities.
V2Ray makes it possible to accept incoming network connections with certain protocol, process the data, and send them through another connection with the same or a difference protocol on demand.
It may be configured to work with multiple protocols at the same time, and uses the internal router to tunnel through different inbound and outbound connections.
Index ¶
- Constants
- Variables
- func AddInboundHandler(server *Instance, config *InboundHandlerConfig) error
- func AddOutboundHandler(server *Instance, config *OutboundHandlerConfig) error
- func CreateObject(v *Instance, config interface{}) (interface{}, error)
- func CreateObjectWithEnvironment(v *Instance, config, environment interface{}) (interface{}, error)
- func Dial(ctx context.Context, v *Instance, dest net.Destination) (net.Conn, error)
- func DialUDP(ctx context.Context, v *Instance) (net.PacketConn, error)
- func GetAllExtensions() []string
- func GetLoaderExtensions(formatName string) ([]string, error)
- func RegisterConfigLoader(format *ConfigFormat) error
- func RequireFeatures(ctx context.Context, callback interface{}) error
- func ServerType() interface{}
- func ToBackgroundDetachedContext(ctx context.Context) context.Context
- func Version() string
- func VersionStatement() []string
- type Annotation
- type Config
- func (*Config) Descriptor() ([]byte, []int)deprecated
- func (x *Config) GetApp() []*anypb.Any
- func (x *Config) GetExtension() []*anypb.Any
- func (x *Config) GetInbound() []*InboundHandlerConfig
- func (x *Config) GetOutbound() []*OutboundHandlerConfig
- func (x *Config) GetTransport() *transport.Configdeprecated
- func (*Config) ProtoMessage()
- func (x *Config) ProtoReflect() protoreflect.Message
- func (x *Config) Reset()
- func (x *Config) String() string
- type ConfigFormat
- type ConfigLoader
- type InboundHandlerConfig
- func (*InboundHandlerConfig) Descriptor() ([]byte, []int)deprecated
- func (x *InboundHandlerConfig) GetProxySettings() *anypb.Any
- func (x *InboundHandlerConfig) GetReceiverSettings() *anypb.Any
- func (x *InboundHandlerConfig) GetTag() string
- func (*InboundHandlerConfig) ProtoMessage()
- func (x *InboundHandlerConfig) ProtoReflect() protoreflect.Message
- func (x *InboundHandlerConfig) Reset()
- func (x *InboundHandlerConfig) String() string
- type Instance
- func (s *Instance) AddFeature(feature features.Feature) error
- func (s *Instance) Close() error
- func (s *Instance) GetFeature(featureType interface{}) features.Feature
- func (s *Instance) RequireFeatures(callback interface{}) error
- func (s *Instance) Start() error
- func (s *Instance) Type() interface{}
- type OutboundHandlerConfig
- func (*OutboundHandlerConfig) Descriptor() ([]byte, []int)deprecated
- func (x *OutboundHandlerConfig) GetComment() string
- func (x *OutboundHandlerConfig) GetExpire() int64
- func (x *OutboundHandlerConfig) GetProxySettings() *anypb.Any
- func (x *OutboundHandlerConfig) GetSenderSettings() *anypb.Any
- func (x *OutboundHandlerConfig) GetTag() string
- func (*OutboundHandlerConfig) ProtoMessage()
- func (x *OutboundHandlerConfig) ProtoReflect() protoreflect.Message
- func (x *OutboundHandlerConfig) Reset()
- func (x *OutboundHandlerConfig) String() string
- type Server
Constants ¶
const ( // FormatAuto represents all available formats by auto selecting FormatAuto = "auto" // FormatJSON represents json format FormatJSON = "json" // FormatTOML represents toml format FormatTOML = "toml" // FormatYAML represents yaml format FormatYAML = "yaml" // FormatProtobuf represents protobuf format FormatProtobuf = "protobuf" // FormatProtobufShort is the short of FormatProtobuf FormatProtobufShort = "pb" )
Variables ¶
var File_config_proto protoreflect.FileDescriptor
Functions ¶
func AddInboundHandler ¶ added in v1.1.0
func AddInboundHandler(server *Instance, config *InboundHandlerConfig) error
func AddOutboundHandler ¶ added in v1.1.0
func AddOutboundHandler(server *Instance, config *OutboundHandlerConfig) error
func CreateObject ¶ added in v1.1.0
CreateObject creates a new object based on the given V2Ray instance and config. The V2Ray instance may be nil.
func CreateObjectWithEnvironment ¶ added in v1.1.0
func Dial ¶ added in v1.1.0
Dial provides an easy way for upstream caller to create net.Conn through V2Ray. It dispatches the request to the given destination by the given V2Ray instance. Since it is under a proxy context, the LocalAddr() and RemoteAddr() in returned net.Conn will not show real addresses being used for communication.
v2ray:api:stable
func DialUDP ¶ added in v1.1.0
DialUDP provides a way to exchange UDP packets through V2Ray instance to remote servers. Since it is under a proxy context, the LocalAddr() in returned PacketConn will not show the real address.
TODO: SetDeadline() / SetReadDeadline() / SetWriteDeadline() are not implemented.
v2ray:api:beta
func GetAllExtensions ¶ added in v1.1.0
func GetAllExtensions() []string
GetAllExtensions get all extensions supported
func GetLoaderExtensions ¶ added in v1.1.0
GetLoaderExtensions get config loader extensions.
func RegisterConfigLoader ¶ added in v1.1.0
func RegisterConfigLoader(format *ConfigFormat) error
RegisterConfigLoader add a new ConfigLoader.
func RequireFeatures ¶ added in v1.1.0
RequireFeatures is a helper function to require features from Instance in context. See Instance.RequireFeatures for more information.
func ServerType ¶ added in v1.1.0
func ServerType() interface{}
ServerType returns the type of the server.
func ToBackgroundDetachedContext ¶ added in v1.1.0
ToBackgroundDetachedContext create a detached context from another context Internal API
func Version ¶
func Version() string
Version returns V2Ray's version as a string, in the form of "x.y.z" where x, y and z are numbers. ".z" part may be omitted in regular releases.
func VersionStatement ¶ added in v1.1.0
func VersionStatement() []string
VersionStatement returns a list of strings representing the full version info.
Types ¶
type Annotation ¶ added in v1.1.0
type Annotation struct { // API is for types or functions that can be used in other libs. Possible values are: // // * v2ray:api:beta for types or functions that are ready for use, but maybe changed in the future. // * v2ray:api:stable for types or functions with guarantee of backward compatibility. // * v2ray:api:deprecated for types or functions that should not be used anymore. // // Types or functions without api annotation should not be used externally. API string }
Annotation is a concept in V2Ray. This struct is only for documentation. It is not used anywhere. Annotations begin with "v2ray:" in comment, as metadata of functions or types.
type Config ¶ added in v1.1.0
type Config struct { // Inbound handler configurations. Must have at least one item. Inbound []*InboundHandlerConfig `protobuf:"bytes,1,rep,name=inbound,proto3" json:"inbound,omitempty"` // Outbound handler configurations. Must have at least one item. The first // item is used as default for routing. Outbound []*OutboundHandlerConfig `protobuf:"bytes,2,rep,name=outbound,proto3" json:"outbound,omitempty"` // App is for configurations of all features in V2Ray. A feature must // implement the Feature interface, and its config type must be registered // through common.RegisterConfig. App []*anypb.Any `protobuf:"bytes,4,rep,name=app,proto3" json:"app,omitempty"` // Transport settings. // Deprecated. Each inbound and outbound should choose their own transport // config. Date to remove: 2020-01-13 // // Deprecated: Do not use. Transport *transport.Config `protobuf:"bytes,5,opt,name=transport,proto3" json:"transport,omitempty"` // Configuration for extensions. The config may not work if corresponding // extension is not loaded into V2Ray. V2Ray will ignore such config during // initialization. Extension []*anypb.Any `protobuf:"bytes,6,rep,name=extension,proto3" json:"extension,omitempty"` // contains filtered or unexported fields }
Config is the master config of V2Ray. V2Ray takes this config as input and functions accordingly.
func LoadConfig ¶ added in v1.1.0
LoadConfig loads multiple config with given format from given source. input accepts: * string of a single filename/url(s) to open to read * []string slice of multiple filename/url(s) to open to read * io.Reader that reads a config content (the original way)
func (*Config) Descriptor
deprecated
added in
v1.1.0
func (*Config) GetExtension ¶ added in v1.1.0
func (*Config) GetInbound ¶ added in v1.1.0
func (x *Config) GetInbound() []*InboundHandlerConfig
func (*Config) GetOutbound ¶ added in v1.1.0
func (x *Config) GetOutbound() []*OutboundHandlerConfig
func (*Config) GetTransport
deprecated
added in
v1.1.0
func (*Config) ProtoMessage ¶ added in v1.1.0
func (*Config) ProtoMessage()
func (*Config) ProtoReflect ¶ added in v1.1.0
func (x *Config) ProtoReflect() protoreflect.Message
type ConfigFormat ¶ added in v1.1.0
type ConfigFormat struct { Name []string Extension []string Loader ConfigLoader }
ConfigFormat is a configurable format of V2Ray config file.
type ConfigLoader ¶ added in v1.1.0
ConfigLoader is a utility to load V2Ray config from external source.
type InboundHandlerConfig ¶ added in v1.1.0
type InboundHandlerConfig struct { // Tag of the inbound handler. The tag must be unique among all inbound // handlers Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` // Settings for how this inbound proxy is handled. ReceiverSettings *anypb.Any `protobuf:"bytes,2,opt,name=receiver_settings,json=receiverSettings,proto3" json:"receiver_settings,omitempty"` // Settings for inbound proxy. Must be one of the inbound proxies. ProxySettings *anypb.Any `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings,proto3" json:"proxy_settings,omitempty"` // contains filtered or unexported fields }
InboundHandlerConfig is the configuration for inbound handler.
func (*InboundHandlerConfig) Descriptor
deprecated
added in
v1.1.0
func (*InboundHandlerConfig) Descriptor() ([]byte, []int)
Deprecated: Use InboundHandlerConfig.ProtoReflect.Descriptor instead.
func (*InboundHandlerConfig) GetProxySettings ¶ added in v1.1.0
func (x *InboundHandlerConfig) GetProxySettings() *anypb.Any
func (*InboundHandlerConfig) GetReceiverSettings ¶ added in v1.1.0
func (x *InboundHandlerConfig) GetReceiverSettings() *anypb.Any
func (*InboundHandlerConfig) GetTag ¶ added in v1.1.0
func (x *InboundHandlerConfig) GetTag() string
func (*InboundHandlerConfig) ProtoMessage ¶ added in v1.1.0
func (*InboundHandlerConfig) ProtoMessage()
func (*InboundHandlerConfig) ProtoReflect ¶ added in v1.1.0
func (x *InboundHandlerConfig) ProtoReflect() protoreflect.Message
func (*InboundHandlerConfig) Reset ¶ added in v1.1.0
func (x *InboundHandlerConfig) Reset()
func (*InboundHandlerConfig) String ¶ added in v1.1.0
func (x *InboundHandlerConfig) String() string
type Instance ¶ added in v1.1.0
type Instance struct {
// contains filtered or unexported fields
}
Instance combines all functionalities in V2Ray.
func FromContext ¶ added in v1.1.0
FromContext returns an Instance from the given context, or nil if the context doesn't contain one.
func MustFromContext ¶ added in v1.1.0
MustFromContext returns an Instance from the given context, or panics if not present.
func New ¶ added in v1.1.0
New returns a new V2Ray instance based on given configuration. The instance is not started at this point. To ensure V2Ray instance works properly, the config must contain one Dispatcher, one InboundHandlerManager and one OutboundHandlerManager. Other features are optional.
func NewWithContext ¶ added in v1.1.0
func StartInstance ¶ added in v1.1.0
StartInstance starts a new V2Ray instance with given serialized config. By default V2Ray only support config in protobuf format, i.e., configFormat = "protobuf". Caller need to load other packages to add JSON support.
v2ray:api:stable
func (*Instance) AddFeature ¶ added in v1.1.0
AddFeature registers a feature into current Instance.
func (*Instance) GetFeature ¶ added in v1.1.0
GetFeature returns a feature of the given type, or nil if such feature is not registered.
func (*Instance) RequireFeatures ¶ added in v1.1.0
RequireFeatures registers a callback, which will be called when all dependent features are registered. The callback must be a func(). All its parameters must be features.Feature.
type OutboundHandlerConfig ¶ added in v1.1.0
type OutboundHandlerConfig struct { // Tag of this outbound handler. Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` // Settings for how to dial connection for this outbound handler. SenderSettings *anypb.Any `protobuf:"bytes,2,opt,name=sender_settings,json=senderSettings,proto3" json:"sender_settings,omitempty"` // Settings for this outbound proxy. Must be one of the outbound proxies. ProxySettings *anypb.Any `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings,proto3" json:"proxy_settings,omitempty"` // If not zero, this outbound will be expired in seconds. Not used for now. Expire int64 `protobuf:"varint,4,opt,name=expire,proto3" json:"expire,omitempty"` // Comment of this outbound handler. Not used for now. Comment string `protobuf:"bytes,5,opt,name=comment,proto3" json:"comment,omitempty"` // contains filtered or unexported fields }
OutboundHandlerConfig is the configuration for outbound handler.
func (*OutboundHandlerConfig) Descriptor
deprecated
added in
v1.1.0
func (*OutboundHandlerConfig) Descriptor() ([]byte, []int)
Deprecated: Use OutboundHandlerConfig.ProtoReflect.Descriptor instead.
func (*OutboundHandlerConfig) GetComment ¶ added in v1.1.0
func (x *OutboundHandlerConfig) GetComment() string
func (*OutboundHandlerConfig) GetExpire ¶ added in v1.1.0
func (x *OutboundHandlerConfig) GetExpire() int64
func (*OutboundHandlerConfig) GetProxySettings ¶ added in v1.1.0
func (x *OutboundHandlerConfig) GetProxySettings() *anypb.Any
func (*OutboundHandlerConfig) GetSenderSettings ¶ added in v1.1.0
func (x *OutboundHandlerConfig) GetSenderSettings() *anypb.Any
func (*OutboundHandlerConfig) GetTag ¶ added in v1.1.0
func (x *OutboundHandlerConfig) GetTag() string
func (*OutboundHandlerConfig) ProtoMessage ¶ added in v1.1.0
func (*OutboundHandlerConfig) ProtoMessage()
func (*OutboundHandlerConfig) ProtoReflect ¶ added in v1.1.0
func (x *OutboundHandlerConfig) ProtoReflect() protoreflect.Message
func (*OutboundHandlerConfig) Reset ¶ added in v1.1.0
func (x *OutboundHandlerConfig) Reset()
func (*OutboundHandlerConfig) String ¶ added in v1.1.0
func (x *OutboundHandlerConfig) String() string
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package app contains feature implementations of V2Ray.
|
Package app contains feature implementations of V2Ray. |
dns
Package dns is an implementation of core.DNS feature.
|
Package dns is an implementation of core.DNS feature. |
policy
Package policy is an implementation of policy.Manager feature.
|
Package policy is an implementation of policy.Manager feature. |
Package common contains common utilities that are shared among other packages.
|
Package common contains common utilities that are shared among other packages. |
buf
Package buf provides a light-weight memory allocation mechanism.
|
Package buf provides a light-weight memory allocation mechanism. |
crypto
Package crypto provides common crypto libraries for V2Ray.
|
Package crypto provides common crypto libraries for V2Ray. |
dice
Package dice contains common functions to generate random number.
|
Package dice contains common functions to generate random number. |
errors
Package errors is a drop-in replacement for Golang lib 'errors'.
|
Package errors is a drop-in replacement for Golang lib 'errors'. |
net
Package net is a drop-in replacement to Golang's net package, with some more functionalities.
|
Package net is a drop-in replacement to Golang's net package, with some more functionalities. |
session
Package session provides functions for sessions of incoming requests.
|
Package session provides functions for sessions of incoming requests. |
infra
|
|
conf/merge
Package merge provides the capability to merge multiple JSON files or contents into one output.
|
Package merge provides the capability to merge multiple JSON files or contents into one output. |
commands/base
Package base defines shared basic pieces of the commands, in particular logging and the Command structure.
|
Package base defines shared basic pieces of the commands, in particular logging and the Command structure. |
Package proxy contains all proxies used by V2Ray.
|
Package proxy contains all proxies used by V2Ray. |
blackhole
Package blackhole is an outbound handler that blocks all connections.
|
Package blackhole is an outbound handler that blocks all connections. |
shadowsocks
Package shadowsocks provides compatible functionality to Shadowsocks.
|
Package shadowsocks provides compatible functionality to Shadowsocks. |
socks
Package socks provides implements of Socks protocol 4, 4a and 5.
|
Package socks provides implements of Socks protocol 4, 4a and 5. |
vless
Package vless contains the implementation of VLess protocol and transportation.
|
Package vless contains the implementation of VLess protocol and transportation. |
vlite
Package vlite contains the integration code for VLite protocol variety
|
Package vlite contains the integration code for VLite protocol variety |
vmess
Package vmess contains the implementation of VMess protocol and transportation.
|
Package vmess contains the implementation of VMess protocol and transportation. |
testing
|
|
mocks
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |
internet/kcp
Package kcp - A Fast and Reliable ARQ Protocol
|
Package kcp - A Fast and Reliable ARQ Protocol |
internet/websocket
Package websocket implements Websocket transport
|
Package websocket implements Websocket transport |