Add observatory / latestPing balancing strategy

Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
This commit is contained in:
世界 2021-04-09 05:20:30 +08:00
parent 77d0419aca
commit 5c366db847
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
21 changed files with 1127 additions and 31 deletions

14
infra/conf/observatory.go Normal file
View file

@ -0,0 +1,14 @@
package conf
import (
"github.com/golang/protobuf/proto"
"github.com/xtls/xray-core/app/observatory"
)
type ObservatoryConfig struct {
SubjectSelector []string `json:"subjectSelector"`
}
func (o ObservatoryConfig) Build() (proto.Message, error) {
return &observatory.Config{SubjectSelector: o.SubjectSelector}, nil
}

View file

@ -6,12 +6,12 @@ import (
"os"
"strings"
"github.com/xtls/xray-core/transport/internet"
"github.com/xtls/xray-core/app/dispatcher"
"github.com/xtls/xray-core/app/proxyman"
"github.com/xtls/xray-core/app/stats"
"github.com/xtls/xray-core/common/serial"
"github.com/xtls/xray-core/transport/internet"
core "github.com/xtls/xray-core/core"
"github.com/xtls/xray-core/transport/internet/xtls"
)
@ -405,6 +405,7 @@ type Config struct {
Stats *StatsConfig `json:"stats"`
Reverse *ReverseConfig `json:"reverse"`
FakeDNS *FakeDNSConfig `json:"fakeDns"`
Observatory *ObservatoryConfig `json:"observatory"`
}
func (c *Config) findInboundTag(tag string) int {
@ -611,6 +612,14 @@ func (c *Config) Build() (*core.Config, error) {
config.App = append(config.App, serial.ToTypedMessage(r))
}
if c.Observatory != nil {
r, err := c.Observatory.Build()
if err != nil {
return nil, err
}
config.App = append(config.App, serial.ToTypedMessage(r))
}
var inbounds []InboundDetourConfig
if c.InboundConfig != nil {