config loader

This commit is contained in:
Darien Raymond 2016-10-14 23:41:41 +02:00
parent 84f660bbbc
commit 35a0ed6fb4
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
4 changed files with 111 additions and 63 deletions

View File

@ -1,9 +1,6 @@
package core
import (
"io"
"v2ray.com/core/common"
"v2ray.com/core/proxy/registry"
)
@ -31,16 +28,3 @@ func (this *InboundConnectionConfig) GetAllocationStrategyValue() *AllocationStr
func (this *InboundConnectionConfig) GetTypedSettings() (interface{}, error) {
return registry.MarshalInboundConfig(this.Protocol, this.Settings)
}
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)
}

View File

@ -41,6 +41,27 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type ConfigFormat int32
const (
ConfigFormat_Protobuf ConfigFormat = 0
ConfigFormat_JSON ConfigFormat = 1
)
var ConfigFormat_name = map[int32]string{
0: "Protobuf",
1: "JSON",
}
var ConfigFormat_value = map[string]int32{
"Protobuf": 0,
"JSON": 1,
}
func (x ConfigFormat) String() string {
return proto.EnumName(ConfigFormat_name, int32(x))
}
func (ConfigFormat) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
type AllocationStrategy_Type int32
const (
@ -262,57 +283,59 @@ func init() {
proto.RegisterType((*InboundConnectionConfig)(nil), "v2ray.core.InboundConnectionConfig")
proto.RegisterType((*OutboundConnectionConfig)(nil), "v2ray.core.OutboundConnectionConfig")
proto.RegisterType((*Config)(nil), "v2ray.core.Config")
proto.RegisterEnum("v2ray.core.ConfigFormat", ConfigFormat_name, ConfigFormat_value)
proto.RegisterEnum("v2ray.core.AllocationStrategy_Type", AllocationStrategy_Type_name, AllocationStrategy_Type_value)
}
func init() { proto.RegisterFile("v2ray.com/core/config.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 723 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x95, 0xdb, 0x6e, 0xd3, 0x30,
0x18, 0xc7, 0xe9, 0x61, 0x5d, 0xfb, 0x75, 0x8c, 0xca, 0x4c, 0x90, 0x15, 0x86, 0x4a, 0x77, 0xa0,
0x88, 0x29, 0x81, 0xa1, 0x09, 0x84, 0x04, 0x63, 0x07, 0x2e, 0x26, 0x2e, 0x5a, 0x65, 0xbb, 0xe2,
0xa6, 0xf2, 0x12, 0x2f, 0x8b, 0x94, 0xda, 0x91, 0xed, 0x6e, 0xe4, 0x11, 0x78, 0x01, 0x5e, 0x6e,
0x2f, 0x83, 0x62, 0x3b, 0xe9, 0x79, 0x0c, 0x71, 0x17, 0xd7, 0xff, 0xdf, 0xe7, 0xcf, 0xff, 0xbf,
0x3f, 0x15, 0x9e, 0x5d, 0xef, 0x71, 0x9c, 0xd8, 0x1e, 0x1b, 0x38, 0x1e, 0xe3, 0xc4, 0xf1, 0x18,
0xbd, 0x0c, 0x03, 0x3b, 0xe6, 0x4c, 0x32, 0x04, 0xd9, 0x26, 0x27, 0xcd, 0x9d, 0x29, 0x21, 0x8e,
0x63, 0x87, 0xb3, 0xa1, 0x24, 0x7c, 0x82, 0x69, 0x6e, 0xce, 0xd1, 0xf9, 0x54, 0x4c, 0x8a, 0xb6,
0x66, 0x4e, 0x1d, 0x0c, 0x18, 0x75, 0x28, 0x91, 0x4e, 0xcc, 0xb8, 0x34, 0xaa, 0x57, 0x8b, 0x55,
0xd8, 0xf7, 0x39, 0x11, 0xc2, 0x08, 0x77, 0xe6, 0x0b, 0x23, 0x16, 0x4c, 0x1e, 0x6b, 0x4f, 0xe9,
0x24, 0xc7, 0x54, 0xa4, 0x07, 0x3a, 0x21, 0x95, 0x84, 0xa7, 0x85, 0x27, 0xf4, 0xdb, 0x0b, 0xf5,
0x13, 0xb2, 0xf5, 0x80, 0xb1, 0x20, 0x22, 0x8e, 0x5a, 0x5d, 0x0c, 0x2f, 0x1d, 0x4c, 0x13, 0xbd,
0xd5, 0xde, 0x87, 0x8d, 0xc3, 0x28, 0x62, 0x1e, 0x96, 0x21, 0xa3, 0x67, 0x92, 0x63, 0x49, 0x82,
0xe4, 0x98, 0x51, 0x6f, 0xc8, 0x39, 0xa1, 0x5e, 0x82, 0xd6, 0x60, 0xe9, 0x1a, 0x47, 0x43, 0x62,
0x15, 0x5a, 0x85, 0xce, 0x43, 0x57, 0x2f, 0xda, 0xef, 0x60, 0x7d, 0x16, 0x73, 0xc9, 0x25, 0x27,
0xe2, 0x6a, 0x01, 0xf2, 0xab, 0x08, 0x68, 0x96, 0x41, 0x1f, 0xa0, 0x2c, 0x93, 0x58, 0x6b, 0x57,
0xf7, 0x36, 0xed, 0x51, 0xa2, 0xf6, 0xac, 0xda, 0x3e, 0x4f, 0x62, 0xe2, 0x2a, 0x00, 0x7d, 0x87,
0xba, 0x37, 0xea, 0xd3, 0x2a, 0xb6, 0x0a, 0x9d, 0xfa, 0xde, 0xeb, 0xbb, 0xf9, 0xb1, 0x8b, 0xb9,
0xe3, 0x34, 0x3a, 0x80, 0x65, 0xae, 0xbb, 0xb7, 0x4a, 0xaa, 0xd0, 0xf6, 0xdd, 0x85, 0xcc, 0x55,
0xdd, 0x8c, 0x6a, 0xef, 0x42, 0x39, 0xed, 0x0d, 0x01, 0x54, 0x0e, 0xa3, 0x1b, 0x9c, 0x88, 0xc6,
0x83, 0xf4, 0xdb, 0xc5, 0xd4, 0x67, 0x83, 0x46, 0x01, 0xad, 0x40, 0xf5, 0xdb, 0xcf, 0x34, 0x42,
0x1c, 0x35, 0x8a, 0xed, 0xdb, 0x12, 0x3c, 0x3d, 0xa5, 0x17, 0x6c, 0x48, 0xfd, 0x63, 0x46, 0x29,
0xf1, 0xd2, 0xda, 0xc7, 0x2a, 0x32, 0xd4, 0x84, 0xaa, 0x8a, 0xc6, 0x63, 0x91, 0x32, 0xa5, 0xe6,
0xe6, 0x6b, 0x74, 0x00, 0x90, 0xa6, 0xdb, 0xe7, 0x98, 0x06, 0xc4, 0x5c, 0xb9, 0x35, 0xde, 0xa9,
0x7e, 0x58, 0x36, 0x25, 0xd2, 0xee, 0x31, 0x2e, 0xdd, 0x54, 0xe7, 0xd6, 0xe2, 0xec, 0x13, 0x7d,
0x81, 0x5a, 0x14, 0x0a, 0x49, 0x68, 0x9f, 0x51, 0x73, 0xd3, 0x97, 0x0b, 0xf8, 0xd3, 0x5e, 0x97,
0x9f, 0xb0, 0x01, 0x0e, 0xa9, 0x5b, 0xd5, 0x4c, 0x97, 0xa2, 0x06, 0x94, 0x24, 0x0e, 0xac, 0xb2,
0xea, 0x2b, 0xfd, 0x44, 0x5d, 0x78, 0x8c, 0x73, 0x7b, 0xfa, 0xc2, 0xf8, 0x63, 0x2d, 0xa9, 0xda,
0x2f, 0xfe, 0xe2, 0x22, 0xc2, 0xb3, 0x0f, 0xe2, 0x1c, 0x1e, 0x09, 0xc9, 0x09, 0x1e, 0xf4, 0x05,
0x91, 0x32, 0xa4, 0x81, 0xb0, 0x2a, 0xaa, 0xd8, 0x9b, 0xf1, 0x62, 0xf9, 0x4b, 0xb7, 0xb3, 0xc9,
0xb0, 0xcf, 0x14, 0xa5, 0x5d, 0x74, 0x57, 0x75, 0x8d, 0x33, 0x53, 0x02, 0xbd, 0x85, 0x6a, 0x5e,
0x6e, 0x59, 0x95, 0x5b, 0xb3, 0xf5, 0x54, 0xd8, 0xd9, 0x54, 0xd8, 0x87, 0x34, 0x71, 0x73, 0x15,
0xfa, 0x08, 0x56, 0xda, 0xdd, 0x4d, 0x3f, 0xc6, 0x42, 0x84, 0xd7, 0xa4, 0xef, 0xe5, 0x49, 0x59,
0xd5, 0x56, 0xa1, 0x53, 0x75, 0x9f, 0xa8, 0xfd, 0x9e, 0xde, 0x1e, 0xe5, 0xd8, 0xfe, 0x5d, 0x04,
0xab, 0x3b, 0x94, 0xff, 0x1e, 0xef, 0x09, 0xac, 0x08, 0x42, 0xfd, 0xbe, 0xbc, 0xe2, 0x6c, 0x18,
0x5c, 0x99, 0x80, 0xef, 0x11, 0x50, 0x3d, 0xc5, 0xce, 0x35, 0x35, 0xcf, 0xc0, 0xd2, 0xff, 0x1b,
0x38, 0x9b, 0xfc, 0xb8, 0xa5, 0x4b, 0xf7, 0xb1, 0xb4, 0x7d, 0x5b, 0x84, 0x8a, 0xb1, 0xe1, 0x33,
0x2c, 0x87, 0x7a, 0x00, 0xac, 0x42, 0xab, 0xd4, 0xa9, 0x4f, 0x4e, 0xfe, 0x82, 0xd9, 0x70, 0x33,
0x06, 0x7d, 0x85, 0x2a, 0x33, 0x0e, 0x5b, 0x45, 0xc5, 0x6f, 0x8d, 0xf3, 0x8b, 0xdc, 0x77, 0x73,
0x0a, 0x39, 0x50, 0x8a, 0x58, 0x60, 0x9c, 0xd9, 0x98, 0x63, 0x71, 0xc4, 0x02, 0xdb, 0x50, 0xa9,
0x12, 0xed, 0x43, 0x45, 0xff, 0x9d, 0x28, 0x0f, 0xa6, 0x18, 0x1c, 0xc7, 0xb6, 0xde, 0xcd, 0x18,
0x23, 0x46, 0xbb, 0x50, 0xf2, 0x69, 0x66, 0x50, 0x73, 0x9a, 0xf1, 0xa9, 0xc8, 0x0f, 0xf1, 0xa9,
0x40, 0x9f, 0xa0, 0x96, 0x07, 0x63, 0x9e, 0xfd, 0xf3, 0xf9, 0xa9, 0x19, 0x6a, 0x24, 0x3f, 0xda,
0x84, 0x55, 0x8f, 0x0d, 0xc6, 0xd4, 0x47, 0x75, 0x2d, 0xea, 0xa5, 0x69, 0xfc, 0x28, 0xa7, 0x3f,
0x5d, 0x54, 0x54, 0x34, 0xef, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x05, 0x33, 0xc3, 0x7f, 0x57,
0x07, 0x00, 0x00,
// 751 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x95, 0xed, 0x6e, 0xeb, 0x34,
0x1c, 0xc6, 0xd7, 0x97, 0x75, 0xe9, 0xbf, 0x63, 0x54, 0x66, 0x82, 0xac, 0x30, 0x54, 0xba, 0x17,
0x0a, 0x4c, 0x09, 0x0c, 0x4d, 0x20, 0x24, 0x18, 0x7b, 0x01, 0x69, 0x20, 0xd1, 0x2a, 0xdd, 0x27,
0xbe, 0x54, 0x5e, 0xe2, 0x65, 0x91, 0x12, 0x3b, 0xb2, 0xdd, 0x8d, 0x5c, 0x02, 0x37, 0x70, 0x6e,
0x6e, 0x37, 0x73, 0x14, 0xdb, 0x49, 0xdf, 0x77, 0x76, 0x74, 0xbe, 0x25, 0xf1, 0xf3, 0x7b, 0x6c,
0x3f, 0x8f, 0xdd, 0xc2, 0xe7, 0x8f, 0xa7, 0x1c, 0x67, 0x8e, 0xcf, 0x12, 0xd7, 0x67, 0x9c, 0xb8,
0x3e, 0xa3, 0xf7, 0x51, 0xe8, 0xa4, 0x9c, 0x49, 0x86, 0xa0, 0x18, 0xe4, 0xa4, 0x73, 0xbc, 0x20,
0xc4, 0x69, 0xea, 0x72, 0x36, 0x91, 0x84, 0xcf, 0x31, 0x9d, 0x83, 0x15, 0xba, 0x80, 0x8a, 0x79,
0xd1, 0xe1, 0xd2, 0xac, 0x49, 0xc2, 0xa8, 0x4b, 0x89, 0x74, 0x53, 0xc6, 0xa5, 0x51, 0x7d, 0xbd,
0x5e, 0x85, 0x83, 0x80, 0x13, 0x21, 0x8c, 0xf0, 0x78, 0xb5, 0x30, 0x66, 0xe1, 0xfc, 0xb4, 0xce,
0x82, 0x4e, 0x72, 0x4c, 0x45, 0x3e, 0xa1, 0x1b, 0x51, 0x49, 0x78, 0x6e, 0x3c, 0xa7, 0x3f, 0x5a,
0xab, 0x9f, 0x93, 0xed, 0x85, 0x8c, 0x85, 0x31, 0x71, 0xd5, 0xdb, 0xdd, 0xe4, 0xde, 0xc5, 0x34,
0xd3, 0x43, 0xbd, 0x33, 0xd8, 0xbf, 0x88, 0x63, 0xe6, 0x63, 0x19, 0x31, 0x3a, 0x92, 0x1c, 0x4b,
0x12, 0x66, 0x57, 0x8c, 0xfa, 0x13, 0xce, 0x09, 0xf5, 0x33, 0xb4, 0x0b, 0x9b, 0x8f, 0x38, 0x9e,
0x10, 0xbb, 0xd2, 0xad, 0xf4, 0x3f, 0xf2, 0xf4, 0x4b, 0xef, 0x07, 0xd8, 0x5b, 0xc6, 0x3c, 0x72,
0xcf, 0x89, 0x78, 0x58, 0x83, 0xfc, 0x5f, 0x05, 0xb4, 0xcc, 0xa0, 0x9f, 0xa0, 0x2e, 0xb3, 0x54,
0x6b, 0x77, 0x4e, 0x0f, 0x9c, 0x69, 0xa3, 0xce, 0xb2, 0xda, 0xb9, 0xcd, 0x52, 0xe2, 0x29, 0x00,
0xfd, 0x0d, 0x2d, 0x7f, 0xba, 0x4e, 0xbb, 0xda, 0xad, 0xf4, 0x5b, 0xa7, 0xdf, 0xbc, 0xcc, 0xcf,
0x6c, 0xcc, 0x9b, 0xa5, 0xd1, 0x39, 0x6c, 0x71, 0xbd, 0x7a, 0xbb, 0xa6, 0x8c, 0x8e, 0x5e, 0x36,
0x32, 0x5b, 0xf5, 0x0a, 0xaa, 0x77, 0x02, 0xf5, 0x7c, 0x6d, 0x08, 0xa0, 0x71, 0x11, 0x3f, 0xe1,
0x4c, 0xb4, 0x37, 0xf2, 0x67, 0x0f, 0xd3, 0x80, 0x25, 0xed, 0x0a, 0xda, 0x06, 0xeb, 0x8f, 0xff,
0xf2, 0x0a, 0x71, 0xdc, 0xae, 0xf6, 0x9e, 0x6b, 0xf0, 0xd9, 0x0d, 0xbd, 0x63, 0x13, 0x1a, 0x5c,
0x31, 0x4a, 0x89, 0x9f, 0x7b, 0x5f, 0xa9, 0xca, 0x50, 0x07, 0x2c, 0x55, 0x8d, 0xcf, 0x62, 0x15,
0x4a, 0xd3, 0x2b, 0xdf, 0xd1, 0x39, 0x40, 0xde, 0xee, 0x98, 0x63, 0x1a, 0x12, 0xb3, 0xe5, 0xee,
0xec, 0x4a, 0xf5, 0xc1, 0x72, 0x28, 0x91, 0xce, 0x90, 0x71, 0xe9, 0xe5, 0x3a, 0xaf, 0x99, 0x16,
0x8f, 0xe8, 0x37, 0x68, 0xc6, 0x91, 0x90, 0x84, 0x8e, 0x19, 0x35, 0x3b, 0xfd, 0x6a, 0x0d, 0x7f,
0x33, 0x1c, 0xf0, 0x6b, 0x96, 0xe0, 0x88, 0x7a, 0x96, 0x66, 0x06, 0x14, 0xb5, 0xa1, 0x26, 0x71,
0x68, 0xd7, 0xd5, 0xba, 0xf2, 0x47, 0x34, 0x80, 0x4f, 0x70, 0x19, 0xcf, 0x58, 0x98, 0x7c, 0xec,
0x4d, 0xe5, 0xfd, 0xe5, 0x3b, 0x52, 0x44, 0x78, 0xf9, 0x40, 0xdc, 0xc2, 0xc7, 0x42, 0x72, 0x82,
0x93, 0xb1, 0x20, 0x52, 0x46, 0x34, 0x14, 0x76, 0x43, 0x99, 0x7d, 0x37, 0x6b, 0x56, 0x9e, 0x74,
0xa7, 0xb8, 0x19, 0xce, 0x48, 0x51, 0x3a, 0x45, 0x6f, 0x47, 0x7b, 0x8c, 0x8c, 0x05, 0xfa, 0x1e,
0xac, 0xd2, 0x6e, 0x4b, 0xd9, 0xed, 0x3a, 0xfa, 0x56, 0x38, 0xc5, 0xad, 0x70, 0x2e, 0x68, 0xe6,
0x95, 0x2a, 0xf4, 0x33, 0xd8, 0xf9, 0xea, 0x9e, 0xc6, 0x29, 0x16, 0x22, 0x7a, 0x24, 0x63, 0xbf,
0x6c, 0xca, 0xb6, 0xba, 0x95, 0xbe, 0xe5, 0x7d, 0xaa, 0xc6, 0x87, 0x7a, 0x78, 0xda, 0x63, 0xef,
0x4d, 0x15, 0xec, 0xc1, 0x44, 0xbe, 0x7f, 0xbd, 0xd7, 0xb0, 0x2d, 0x08, 0x0d, 0xc6, 0xf2, 0x81,
0xb3, 0x49, 0xf8, 0x60, 0x0a, 0x7e, 0x45, 0x41, 0xad, 0x1c, 0xbb, 0xd5, 0xd4, 0xaa, 0x00, 0x6b,
0x1f, 0x1e, 0xe0, 0x72, 0xf3, 0xb3, 0x91, 0x6e, 0xbe, 0x26, 0xd2, 0xde, 0x73, 0x15, 0x1a, 0x26,
0x86, 0x5f, 0x61, 0x2b, 0xd2, 0x17, 0xc0, 0xae, 0x74, 0x6b, 0xfd, 0xd6, 0xfc, 0xcd, 0x5f, 0x73,
0x37, 0xbc, 0x82, 0x41, 0xbf, 0x83, 0xc5, 0x4c, 0xc2, 0x76, 0x55, 0xf1, 0x87, 0xb3, 0xfc, 0xba,
0xf4, 0xbd, 0x92, 0x42, 0x2e, 0xd4, 0x62, 0x16, 0x9a, 0x64, 0xf6, 0x57, 0x44, 0x1c, 0xb3, 0xd0,
0x31, 0x54, 0xae, 0x44, 0x67, 0xd0, 0xd0, 0x7f, 0x27, 0x2a, 0x83, 0x05, 0x06, 0xa7, 0xa9, 0xa3,
0x47, 0x0b, 0xc6, 0x88, 0xd1, 0x09, 0xd4, 0x02, 0x5a, 0x04, 0xd4, 0x59, 0x64, 0x02, 0x2a, 0xca,
0x49, 0x02, 0x2a, 0xd0, 0x2f, 0xd0, 0x2c, 0x8b, 0x31, 0xc7, 0xfe, 0x8b, 0xd5, 0xad, 0x19, 0x6a,
0x2a, 0xff, 0xf6, 0x18, 0xb6, 0xf5, 0xc7, 0x3f, 0x19, 0x4f, 0xb0, 0xcc, 0x7f, 0x72, 0x86, 0xa6,
0x87, 0xf6, 0x06, 0xb2, 0xa0, 0xfe, 0xd7, 0x68, 0xf0, 0x4f, 0xbb, 0x72, 0x79, 0x00, 0x3b, 0x3e,
0x4b, 0x66, 0x5c, 0x2f, 0x5b, 0x9a, 0x53, 0xea, 0x7f, 0xeb, 0xf9, 0xa7, 0xbb, 0x86, 0xaa, 0xf0,
0xc7, 0xb7, 0x01, 0x00, 0x00, 0xff, 0xff, 0xba, 0x3e, 0xa7, 0x09, 0x7f, 0x07, 0x00, 0x00,
}

View File

@ -15,6 +15,11 @@ import "v2ray.com/core/transport/config.proto";
import "google/protobuf/any.proto";
enum ConfigFormat {
Protobuf = 0;
JSON = 1;
}
message AllocationStrategyConcurrency {
uint32 value = 1;
}

36
config_loader.go Normal file
View File

@ -0,0 +1,36 @@
package core
import (
"io"
"io/ioutil"
"v2ray.com/core/common"
"github.com/golang/protobuf/proto"
)
type ConfigLoader func(input io.Reader) (*Config, error)
var configLoaderCache map[ConfigFormat]ConfigLoader
func RegisterConfigLoader(format ConfigFormat, loader ConfigLoader) error {
configLoaderCache[format] = loader
return nil
}
func LoadConfig(format ConfigFormat, input io.Reader) (*Config, error) {
loader, found := configLoaderCache[format]
if !found {
return nil, common.ErrBadConfiguration
}
return loader(input)
}
func LoadProtobufConfig(input io.Reader) (*Config, error) {
config := new(Config)
data, _ := ioutil.ReadAll(input)
if err := proto.Unmarshal(data, config); err != nil {
return nil, err
}
return config, nil
}