support stats in policy

pull/1008/head
Darien Raymond 2018-03-30 23:39:54 +02:00
parent f7dd7e6279
commit 695a4f8493
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
4 changed files with 72 additions and 23 deletions

View File

@ -46,6 +46,10 @@ func (p *Policy) overrideWith(another *Policy) {
if another.Timeout != nil { if another.Timeout != nil {
p.Timeout.overrideWith(another.Timeout) p.Timeout.overrideWith(another.Timeout)
} }
if another.Stats != nil && p.Stats == nil {
p.Stats = new(Policy_Stats)
*p.Stats = *another.Stats
}
} }
func (p *Policy) ToCorePolicy() core.Policy { func (p *Policy) ToCorePolicy() core.Policy {
@ -56,5 +60,8 @@ func (p *Policy) ToCorePolicy() core.Policy {
cp.Timeouts.DownlinkOnly = p.Timeout.DownlinkOnly.Duration() cp.Timeouts.DownlinkOnly = p.Timeout.DownlinkOnly.Duration()
cp.Timeouts.UplinkOnly = p.Timeout.UplinkOnly.Duration() cp.Timeouts.UplinkOnly = p.Timeout.UplinkOnly.Duration()
} }
if p.Stats != nil {
cp.Stats.EnablePerUser = p.Stats.EnablePerUser
}
return cp return cp
} }

View File

@ -33,6 +33,7 @@ func (m *Second) GetValue() uint32 {
type Policy struct { type Policy struct {
Timeout *Policy_Timeout `protobuf:"bytes,1,opt,name=timeout" json:"timeout,omitempty"` Timeout *Policy_Timeout `protobuf:"bytes,1,opt,name=timeout" json:"timeout,omitempty"`
Stats *Policy_Stats `protobuf:"bytes,2,opt,name=stats" json:"stats,omitempty"`
} }
func (m *Policy) Reset() { *m = Policy{} } func (m *Policy) Reset() { *m = Policy{} }
@ -47,6 +48,13 @@ func (m *Policy) GetTimeout() *Policy_Timeout {
return nil return nil
} }
func (m *Policy) GetStats() *Policy_Stats {
if m != nil {
return m.Stats
}
return nil
}
// Timeout is a message for timeout settings in various stages, in seconds. // Timeout is a message for timeout settings in various stages, in seconds.
type Policy_Timeout struct { type Policy_Timeout struct {
Handshake *Second `protobuf:"bytes,1,opt,name=handshake" json:"handshake,omitempty"` Handshake *Second `protobuf:"bytes,1,opt,name=handshake" json:"handshake,omitempty"`
@ -88,6 +96,22 @@ func (m *Policy_Timeout) GetDownlinkOnly() *Second {
return nil return nil
} }
type Policy_Stats struct {
EnablePerUser bool `protobuf:"varint,1,opt,name=enable_per_user,json=enablePerUser" json:"enable_per_user,omitempty"`
}
func (m *Policy_Stats) Reset() { *m = Policy_Stats{} }
func (m *Policy_Stats) String() string { return proto.CompactTextString(m) }
func (*Policy_Stats) ProtoMessage() {}
func (*Policy_Stats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
func (m *Policy_Stats) GetEnablePerUser() bool {
if m != nil {
return m.EnablePerUser
}
return false
}
type Config struct { type Config struct {
Level map[uint32]*Policy `protobuf:"bytes,1,rep,name=level" json:"level,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Level map[uint32]*Policy `protobuf:"bytes,1,rep,name=level" json:"level,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
} }
@ -108,33 +132,38 @@ func init() {
proto.RegisterType((*Second)(nil), "v2ray.core.app.policy.Second") proto.RegisterType((*Second)(nil), "v2ray.core.app.policy.Second")
proto.RegisterType((*Policy)(nil), "v2ray.core.app.policy.Policy") proto.RegisterType((*Policy)(nil), "v2ray.core.app.policy.Policy")
proto.RegisterType((*Policy_Timeout)(nil), "v2ray.core.app.policy.Policy.Timeout") proto.RegisterType((*Policy_Timeout)(nil), "v2ray.core.app.policy.Policy.Timeout")
proto.RegisterType((*Policy_Stats)(nil), "v2ray.core.app.policy.Policy.Stats")
proto.RegisterType((*Config)(nil), "v2ray.core.app.policy.Config") proto.RegisterType((*Config)(nil), "v2ray.core.app.policy.Config")
} }
func init() { proto.RegisterFile("v2ray.com/core/app/policy/config.proto", fileDescriptor0) } func init() { proto.RegisterFile("v2ray.com/core/app/policy/config.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 349 bytes of a gzipped FileDescriptorProto // 403 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x4a, 0xeb, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xdd, 0x8a, 0xd3, 0x40,
0x14, 0x86, 0x49, 0x7a, 0x9b, 0x72, 0x4f, 0x6f, 0xaf, 0x32, 0x58, 0x88, 0x05, 0xa5, 0x14, 0x94, 0x14, 0xc7, 0x49, 0x62, 0xb2, 0x7a, 0x6a, 0x5d, 0x19, 0x5c, 0x88, 0x05, 0x65, 0xa9, 0xb8, 0xf4,
0xae, 0x26, 0x90, 0x6e, 0x44, 0xb1, 0x62, 0x45, 0x41, 0x10, 0x2c, 0x51, 0x14, 0xdc, 0x94, 0x71, 0x6a, 0x02, 0xd9, 0x1b, 0x3f, 0x70, 0xc5, 0x15, 0x05, 0x41, 0xb0, 0xa4, 0x7e, 0x80, 0x37, 0x61,
0x32, 0xda, 0xd0, 0xe9, 0x9c, 0x21, 0xa6, 0x95, 0xbc, 0x86, 0x6f, 0xe0, 0xd6, 0x87, 0xf2, 0x59, 0x3a, 0x39, 0xda, 0xd0, 0xe9, 0xcc, 0x30, 0x49, 0x2a, 0x79, 0x0d, 0xdf, 0xc0, 0x5b, 0x1f, 0xc5,
0x24, 0x99, 0x84, 0x6c, 0x5a, 0xe9, 0x6e, 0x72, 0xf8, 0xfe, 0x8f, 0x43, 0xfe, 0x03, 0x87, 0x4b, 0xa7, 0x92, 0x64, 0x12, 0x72, 0xd3, 0x76, 0x7b, 0x37, 0x19, 0x7e, 0xff, 0x5f, 0x4e, 0x4e, 0xfe,
0x3f, 0x66, 0x29, 0xe5, 0x38, 0xf7, 0x38, 0xc6, 0xc2, 0x63, 0x5a, 0x7b, 0x1a, 0x65, 0xc4, 0x53, 0x70, 0xb1, 0x8d, 0x0d, 0xab, 0x29, 0x57, 0x9b, 0x88, 0x2b, 0x83, 0x11, 0xd3, 0x3a, 0xd2, 0x4a,
0x8f, 0xa3, 0x7a, 0x89, 0x5e, 0xa9, 0x8e, 0x31, 0x41, 0xd2, 0x2e, 0xb9, 0x58, 0x50, 0xa6, 0x35, 0xe4, 0xbc, 0x8e, 0xb8, 0x92, 0x3f, 0xf2, 0x9f, 0x54, 0x1b, 0x55, 0x2a, 0x72, 0xd6, 0x73, 0x06,
0x35, 0x4c, 0x6f, 0x1f, 0x9c, 0x3b, 0xc1, 0x51, 0x85, 0x64, 0x07, 0xea, 0x4b, 0x26, 0x17, 0xc2, 0x29, 0xd3, 0x9a, 0x5a, 0x66, 0xfa, 0x18, 0x82, 0x05, 0x72, 0x25, 0x33, 0xf2, 0x00, 0xfc, 0x2d,
0xb5, 0xba, 0x56, 0xbf, 0x15, 0x98, 0x8f, 0xde, 0xb7, 0x0d, 0xce, 0x38, 0x47, 0xc9, 0x19, 0x34, 0x13, 0x15, 0x86, 0xce, 0xb9, 0x33, 0x1b, 0x27, 0xf6, 0x61, 0xfa, 0xcf, 0x83, 0x60, 0xde, 0xa2,
0x92, 0x68, 0x2e, 0x70, 0x91, 0xe4, 0x48, 0xd3, 0x3f, 0xa0, 0x2b, 0x9d, 0xd4, 0xf0, 0xf4, 0xde, 0xe4, 0x35, 0x9c, 0x94, 0xf9, 0x06, 0x55, 0x55, 0xb6, 0xc8, 0x28, 0x7e, 0x4a, 0x77, 0x3a, 0xa9,
0xc0, 0x41, 0x99, 0xea, 0x7c, 0xd8, 0xd0, 0x28, 0x86, 0xe4, 0x04, 0xfe, 0x4e, 0x99, 0x0a, 0xdf, 0xe5, 0xe9, 0x67, 0x0b, 0x27, 0x7d, 0x8a, 0x3c, 0x07, 0xbf, 0x28, 0x59, 0x59, 0x84, 0x6e, 0x1b,
0xa6, 0x6c, 0x26, 0x0a, 0xdd, 0xde, 0x1a, 0x9d, 0xd9, 0x2f, 0xa8, 0x78, 0x72, 0x05, 0x5b, 0x1c, 0x7f, 0x72, 0x38, 0xbe, 0x68, 0xd0, 0xc4, 0x26, 0x26, 0xbf, 0x5d, 0x38, 0xe9, 0x7c, 0xe4, 0x25,
0x95, 0x12, 0x3c, 0x89, 0x50, 0x4d, 0xa2, 0x50, 0x0a, 0xd7, 0xde, 0x44, 0xf1, 0xbf, 0x4a, 0x5d, 0xdc, 0x59, 0x31, 0x99, 0x15, 0x2b, 0xb6, 0xc6, 0x6e, 0x92, 0x47, 0x7b, 0x54, 0xf6, 0xd3, 0x92,
0x87, 0x52, 0x90, 0x21, 0x34, 0x17, 0x5a, 0x46, 0x6a, 0x36, 0x41, 0x25, 0x53, 0xb7, 0xb6, 0x89, 0x81, 0x27, 0xef, 0xe1, 0x94, 0x2b, 0x29, 0x91, 0x97, 0xb9, 0x92, 0x69, 0x9e, 0x09, 0xec, 0xa6,
0x03, 0x4c, 0xe2, 0x56, 0xc9, 0x94, 0x8c, 0xa0, 0x15, 0xe2, 0xbb, 0xaa, 0x0c, 0x7f, 0x36, 0x31, 0xb9, 0x41, 0x71, 0x6f, 0x48, 0x7d, 0xc8, 0x04, 0x92, 0x2b, 0x18, 0x55, 0x5a, 0xe4, 0x72, 0x9d,
0xfc, 0x2b, 0x33, 0x99, 0xa3, 0xf7, 0x69, 0x81, 0x73, 0x91, 0x17, 0x45, 0x86, 0x50, 0x97, 0x62, 0x2a, 0x29, 0xea, 0xd0, 0x3b, 0xc6, 0x01, 0x36, 0xf1, 0x49, 0x8a, 0x9a, 0x5c, 0xc3, 0x38, 0x53,
0x29, 0xa4, 0x6b, 0x75, 0x6b, 0xfd, 0xa6, 0xdf, 0x5f, 0xa3, 0x31, 0x34, 0xbd, 0xc9, 0xd0, 0x4b, 0xbf, 0xe4, 0x60, 0xb8, 0x75, 0x8c, 0xe1, 0x6e, 0x9f, 0x69, 0x1c, 0x93, 0x08, 0xfc, 0x76, 0x49,
0x95, 0xc4, 0x69, 0x60, 0x62, 0x9d, 0x47, 0x80, 0x6a, 0x48, 0xb6, 0xa1, 0x36, 0x13, 0x69, 0xd1, 0xe4, 0x02, 0x4e, 0x51, 0xb2, 0xa5, 0xc0, 0x54, 0xa3, 0x49, 0xab, 0x02, 0x4d, 0xbb, 0x97, 0xdb,
0x66, 0xf6, 0x24, 0x83, 0xb2, 0xe1, 0xdf, 0x7f, 0x96, 0xa9, 0xaf, 0x38, 0x80, 0x63, 0xfb, 0xc8, 0xc9, 0xd8, 0x5e, 0xcf, 0xd1, 0x7c, 0x29, 0xd0, 0x4c, 0xff, 0x38, 0x10, 0xbc, 0x6d, 0x4b, 0x41,
0x1a, 0x9d, 0xc2, 0x2e, 0xc7, 0xf9, 0x6a, 0x7c, 0x6c, 0x3d, 0x39, 0xe6, 0xf5, 0x65, 0xb7, 0x1f, 0xae, 0xc0, 0x17, 0xb8, 0x45, 0x11, 0x3a, 0xe7, 0xde, 0x6c, 0x14, 0xcf, 0xf6, 0xbc, 0xd7, 0xd2,
0xfc, 0x80, 0x65, 0x0b, 0xc6, 0x82, 0x9e, 0x6b, 0x5d, 0x98, 0x9e, 0x9d, 0xfc, 0x02, 0x07, 0x3f, 0xf4, 0x63, 0x83, 0xbe, 0x93, 0xa5, 0xa9, 0x13, 0x1b, 0x9b, 0x7c, 0x03, 0x18, 0x2e, 0xc9, 0x7d,
0x01, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x25, 0x25, 0xc2, 0xab, 0x02, 0x00, 0x00, 0xf0, 0xd6, 0x58, 0x77, 0xcd, 0x69, 0x8e, 0xe4, 0xb2, 0x6f, 0xd3, 0xe1, 0xed, 0xda, 0x7f, 0xdd,
0x95, 0xed, 0x85, 0xfb, 0xcc, 0xb9, 0x7e, 0x05, 0x0f, 0xb9, 0xda, 0xec, 0xc6, 0xe7, 0xce, 0xf7,
0xc0, 0x9e, 0xfe, 0xba, 0x67, 0x5f, 0xe3, 0x84, 0x35, 0x03, 0x1a, 0xa4, 0x6f, 0xb4, 0xee, 0x4c,
0xcb, 0xa0, 0x6d, 0xfb, 0xe5, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0xad, 0x5f, 0x54, 0x17,
0x03, 0x00, 0x00,
} }

View File

@ -19,7 +19,12 @@ message Policy {
Second downlink_only = 4; Second downlink_only = 4;
} }
message Stats {
bool enable_per_user = 1;
}
Timeout timeout = 1; Timeout timeout = 1;
Stats stats = 2;
} }
message Config { message Config {

View File

@ -19,9 +19,14 @@ type TimeoutPolicy struct {
DownlinkOnly time.Duration DownlinkOnly time.Duration
} }
type StatsPolicy struct {
EnablePerUser bool
}
// Policy is session based settings for controlling V2Ray requests. It contains various settings (or limits) that may differ for different users in the context. // Policy is session based settings for controlling V2Ray requests. It contains various settings (or limits) that may differ for different users in the context.
type Policy struct { type Policy struct {
Timeouts TimeoutPolicy // Timeout settings Timeouts TimeoutPolicy // Timeout settings
Stats StatsPolicy
} }
// PolicyManager is a feature that provides Policy for the given user by its id or level. // PolicyManager is a feature that provides Policy for the given user by its id or level.
@ -41,6 +46,9 @@ func DefaultPolicy() Policy {
UplinkOnly: time.Second * 5, UplinkOnly: time.Second * 5,
DownlinkOnly: time.Second * 30, DownlinkOnly: time.Second * 30,
}, },
Stats: StatsPolicy{
EnablePerUser: false,
},
} }
} }