| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- package core
 
- import (
 
- 	"io"
 
- 	"v2ray.com/core/app/dns"
 
- 	"v2ray.com/core/app/router"
 
- 	"v2ray.com/core/common"
 
- 	"v2ray.com/core/common/log"
 
- 	v2net "v2ray.com/core/common/net"
 
- 	"v2ray.com/core/transport"
 
- 	"v2ray.com/core/transport/internet"
 
- )
 
- type InboundConnectionConfig struct {
 
- 	Port                   v2net.Port
 
- 	ListenOn               v2net.Address
 
- 	StreamSettings         *internet.StreamConfig
 
- 	Protocol               string
 
- 	Settings               []byte
 
- 	AllowPassiveConnection bool
 
- }
 
- type OutboundConnectionConfig struct {
 
- 	Protocol       string
 
- 	SendThrough    v2net.Address
 
- 	StreamSettings *internet.StreamConfig
 
- 	Settings       []byte
 
- }
 
- const (
 
- 	AllocationStrategyAlways   = "always"
 
- 	AllocationStrategyRandom   = "random"
 
- 	AllocationStrategyExternal = "external"
 
- )
 
- type InboundDetourAllocationConfig struct {
 
- 	Strategy    string // Allocation strategy of this inbound detour.
 
- 	Concurrency int    // Number of handlers (ports) running in parallel.
 
- 	Refresh     int    // Number of minutes before a handler is regenerated.
 
- }
 
- type InboundDetourConfig struct {
 
- 	Protocol               string
 
- 	PortRange              v2net.PortRange
 
- 	ListenOn               v2net.Address
 
- 	Tag                    string
 
- 	Allocation             *InboundDetourAllocationConfig
 
- 	StreamSettings         *internet.StreamConfig
 
- 	Settings               []byte
 
- 	AllowPassiveConnection bool
 
- }
 
- type OutboundDetourConfig struct {
 
- 	Protocol       string
 
- 	SendThrough    v2net.Address
 
- 	StreamSettings *internet.StreamConfig
 
- 	Tag            string
 
- 	Settings       []byte
 
- }
 
- type Config struct {
 
- 	Port            v2net.Port
 
- 	LogConfig       *log.Config
 
- 	RouterConfig    *router.Config
 
- 	DNSConfig       *dns.Config
 
- 	InboundConfig   *InboundConnectionConfig
 
- 	OutboundConfig  *OutboundConnectionConfig
 
- 	InboundDetours  []*InboundDetourConfig
 
- 	OutboundDetours []*OutboundDetourConfig
 
- 	TransportConfig *transport.Config
 
- }
 
- type ConfigLoader func(input io.Reader) (*Config, error)
 
- var (
 
- 	configLoader ConfigLoader
 
- )
 
- func LoadConfig(input io.Reader) (*Config, error) {
 
- 	if configLoader == nil {
 
- 		return nil, common.ErrBadConfiguration
 
- 	}
 
- 	return configLoader(input)
 
- }
 
 
  |