add reload and plugin support for hop
This commit is contained in:
@ -9,7 +9,17 @@ import (
|
||||
"github.com/go-gost/core/service"
|
||||
"github.com/go-gost/x/api"
|
||||
"github.com/go-gost/x/config"
|
||||
"github.com/go-gost/x/config/parsing"
|
||||
admission_parser "github.com/go-gost/x/config/parsing/admission"
|
||||
auth_parser "github.com/go-gost/x/config/parsing/auth"
|
||||
bypass_parser "github.com/go-gost/x/config/parsing/bypass"
|
||||
chain_parser "github.com/go-gost/x/config/parsing/chain"
|
||||
hop_parser "github.com/go-gost/x/config/parsing/hop"
|
||||
hosts_parser "github.com/go-gost/x/config/parsing/hosts"
|
||||
ingress_parser "github.com/go-gost/x/config/parsing/ingress"
|
||||
limiter_parser "github.com/go-gost/x/config/parsing/limiter"
|
||||
recorder_parser "github.com/go-gost/x/config/parsing/recorder"
|
||||
resolver_parser "github.com/go-gost/x/config/parsing/resolver"
|
||||
service_parser "github.com/go-gost/x/config/parsing/service"
|
||||
xlogger "github.com/go-gost/x/logger"
|
||||
metrics "github.com/go-gost/x/metrics/service"
|
||||
"github.com/go-gost/x/registry"
|
||||
@ -24,7 +34,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
log := logger.Default()
|
||||
|
||||
for _, autherCfg := range cfg.Authers {
|
||||
if auther := parsing.ParseAuther(autherCfg); auther != nil {
|
||||
if auther := auth_parser.ParseAuther(autherCfg); auther != nil {
|
||||
if err := registry.AutherRegistry().Register(autherCfg.Name, auther); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -32,7 +42,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
|
||||
for _, admissionCfg := range cfg.Admissions {
|
||||
if adm := parsing.ParseAdmission(admissionCfg); adm != nil {
|
||||
if adm := admission_parser.ParseAdmission(admissionCfg); adm != nil {
|
||||
if err := registry.AdmissionRegistry().Register(admissionCfg.Name, adm); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -40,7 +50,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
|
||||
for _, bypassCfg := range cfg.Bypasses {
|
||||
if bp := parsing.ParseBypass(bypassCfg); bp != nil {
|
||||
if bp := bypass_parser.ParseBypass(bypassCfg); bp != nil {
|
||||
if err := registry.BypassRegistry().Register(bypassCfg.Name, bp); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -48,7 +58,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
|
||||
for _, resolverCfg := range cfg.Resolvers {
|
||||
r, err := parsing.ParseResolver(resolverCfg)
|
||||
r, err := resolver_parser.ParseResolver(resolverCfg)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -60,7 +70,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
|
||||
for _, hostsCfg := range cfg.Hosts {
|
||||
if h := parsing.ParseHosts(hostsCfg); h != nil {
|
||||
if h := hosts_parser.ParseHostMapper(hostsCfg); h != nil {
|
||||
if err := registry.HostsRegistry().Register(hostsCfg.Name, h); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -68,7 +78,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
|
||||
for _, ingressCfg := range cfg.Ingresses {
|
||||
if h := parsing.ParseIngress(ingressCfg); h != nil {
|
||||
if h := ingress_parser.ParseIngress(ingressCfg); h != nil {
|
||||
if err := registry.IngressRegistry().Register(ingressCfg.Name, h); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -76,7 +86,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
|
||||
for _, recorderCfg := range cfg.Recorders {
|
||||
if h := parsing.ParseRecorder(recorderCfg); h != nil {
|
||||
if h := recorder_parser.ParseRecorder(recorderCfg); h != nil {
|
||||
if err := registry.RecorderRegistry().Register(recorderCfg.Name, h); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -84,28 +94,28 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
|
||||
for _, limiterCfg := range cfg.Limiters {
|
||||
if h := parsing.ParseTrafficLimiter(limiterCfg); h != nil {
|
||||
if h := limiter_parser.ParseTrafficLimiter(limiterCfg); h != nil {
|
||||
if err := registry.TrafficLimiterRegistry().Register(limiterCfg.Name, h); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, limiterCfg := range cfg.CLimiters {
|
||||
if h := parsing.ParseConnLimiter(limiterCfg); h != nil {
|
||||
if h := limiter_parser.ParseConnLimiter(limiterCfg); h != nil {
|
||||
if err := registry.ConnLimiterRegistry().Register(limiterCfg.Name, h); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, limiterCfg := range cfg.RLimiters {
|
||||
if h := parsing.ParseRateLimiter(limiterCfg); h != nil {
|
||||
if h := limiter_parser.ParseRateLimiter(limiterCfg); h != nil {
|
||||
if err := registry.RateLimiterRegistry().Register(limiterCfg.Name, h); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, hopCfg := range cfg.Hops {
|
||||
hop, err := parsing.ParseHop(hopCfg)
|
||||
hop, err := hop_parser.ParseHop(hopCfg)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -116,7 +126,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
}
|
||||
for _, chainCfg := range cfg.Chains {
|
||||
c, err := parsing.ParseChain(chainCfg)
|
||||
c, err := chain_parser.ParseChain(chainCfg)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -128,7 +138,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
||||
}
|
||||
|
||||
for _, svcCfg := range cfg.Services {
|
||||
svc, err := parsing.ParseService(svcCfg)
|
||||
svc, err := service_parser.ParseService(svcCfg)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@ -186,7 +196,7 @@ func logFromConfig(cfg *config.LogConfig) logger.Logger {
|
||||
}
|
||||
|
||||
func buildAPIService(cfg *config.APIConfig) (service.Service, error) {
|
||||
auther := parsing.ParseAutherFromAuth(cfg.Auth)
|
||||
auther := auth_parser.ParseAutherFromAuth(cfg.Auth)
|
||||
if cfg.Auther != "" {
|
||||
auther = registry.AutherRegistry().Get(cfg.Auther)
|
||||
}
|
||||
|
Reference in New Issue
Block a user