diff --git a/internal/autocert/config.go b/internal/autocert/config.go index 93f873fd..23549ea5 100644 --- a/internal/autocert/config.go +++ b/internal/autocert/config.go @@ -8,12 +8,13 @@ import ( "github.com/go-acme/lego/v4/certcrypto" "github.com/go-acme/lego/v4/lego" E "github.com/yusing/go-proxy/internal/error" - M "github.com/yusing/go-proxy/internal/models" + + "github.com/yusing/go-proxy/internal/types" ) -type Config M.AutoCertConfig +type Config types.AutoCertConfig -func NewConfig(cfg *M.AutoCertConfig) *Config { +func NewConfig(cfg *types.AutoCertConfig) *Config { if cfg.CertPath == "" { cfg.CertPath = CertFileDefault } diff --git a/internal/autocert/provider.go b/internal/autocert/provider.go index b7217f10..63575d09 100644 --- a/internal/autocert/provider.go +++ b/internal/autocert/provider.go @@ -15,7 +15,8 @@ import ( "github.com/go-acme/lego/v4/lego" "github.com/go-acme/lego/v4/registration" E "github.com/yusing/go-proxy/internal/error" - M "github.com/yusing/go-proxy/internal/models" + "github.com/yusing/go-proxy/internal/types" + U "github.com/yusing/go-proxy/internal/utils" ) @@ -29,7 +30,7 @@ type Provider struct { certExpiries CertExpiries } -type ProviderGenerator func(M.AutocertProviderOpt) (challenge.Provider, E.NestedError) +type ProviderGenerator func(types.AutocertProviderOpt) (challenge.Provider, E.NestedError) type CertExpiries map[string]time.Time func (p *Provider) GetCert(_ *tls.ClientHelloInfo) (*tls.Certificate, error) { @@ -280,7 +281,7 @@ func providerGenerator[CT any, PT challenge.Provider]( defaultCfg func() *CT, newProvider func(*CT) (PT, error), ) ProviderGenerator { - return func(opt M.AutocertProviderOpt) (challenge.Provider, E.NestedError) { + return func(opt types.AutocertProviderOpt) (challenge.Provider, E.NestedError) { cfg := defaultCfg() err := U.Deserialize(opt, cfg) if err.HasError() { diff --git a/internal/config/config.go b/internal/config/config.go index bc285083..56823115 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -8,9 +8,10 @@ import ( "github.com/yusing/go-proxy/internal/autocert" "github.com/yusing/go-proxy/internal/common" E "github.com/yusing/go-proxy/internal/error" - M "github.com/yusing/go-proxy/internal/models" + PR "github.com/yusing/go-proxy/internal/proxy/provider" R "github.com/yusing/go-proxy/internal/route" + "github.com/yusing/go-proxy/internal/types" U "github.com/yusing/go-proxy/internal/utils" F "github.com/yusing/go-proxy/internal/utils/functional" W "github.com/yusing/go-proxy/internal/watcher" @@ -19,7 +20,7 @@ import ( ) type Config struct { - value *M.Config + value *types.Config proxyProviders F.Map[string, *PR.Provider] autocertProvider *autocert.Provider @@ -42,7 +43,7 @@ func Load() E.NestedError { return nil } instance = &Config{ - value: M.DefaultConfig(), + value: types.DefaultConfig(), proxyProviders: F.NewMapOf[string, *PR.Provider](), l: logrus.WithField("module", "config"), watcher: W.NewConfigFileWatcher(common.ConfigFileName), @@ -62,7 +63,7 @@ func MatchDomains() []string { return instance.value.MatchDomains } -func (cfg *Config) Value() M.Config { +func (cfg *Config) Value() types.Config { if cfg == nil { logrus.Panic("config has not been loaded, please check if there is any errors") } @@ -158,7 +159,7 @@ func (cfg *Config) load() (res E.NestedError) { } } - model := M.DefaultConfig() + model := types.DefaultConfig() if err := E.From(yaml.Unmarshal(data, model)); err.HasError() { b.Add(E.FailWith("parse config", err)) logrus.Fatal(b.Build()) @@ -173,7 +174,7 @@ func (cfg *Config) load() (res E.NestedError) { return } -func (cfg *Config) initAutoCert(autocertCfg *M.AutoCertConfig) (err E.NestedError) { +func (cfg *Config) initAutoCert(autocertCfg *types.AutoCertConfig) (err E.NestedError) { if cfg.autocertProvider != nil { return } @@ -188,7 +189,7 @@ func (cfg *Config) initAutoCert(autocertCfg *M.AutoCertConfig) (err E.NestedErro return } -func (cfg *Config) loadProviders(providers *M.ProxyProviders) (res E.NestedError) { +func (cfg *Config) loadProviders(providers *types.ProxyProviders) (res E.NestedError) { cfg.l.Debug("loading providers") defer cfg.l.Debug("loaded providers") diff --git a/internal/config/query.go b/internal/config/query.go index 6ecbaeaa..2187470e 100644 --- a/internal/config/query.go +++ b/internal/config/query.go @@ -7,15 +7,15 @@ import ( "github.com/sirupsen/logrus" "github.com/yusing/go-proxy/internal/common" H "github.com/yusing/go-proxy/internal/homepage" - M "github.com/yusing/go-proxy/internal/models" PR "github.com/yusing/go-proxy/internal/proxy/provider" R "github.com/yusing/go-proxy/internal/route" + "github.com/yusing/go-proxy/internal/types" U "github.com/yusing/go-proxy/internal/utils" F "github.com/yusing/go-proxy/internal/utils/functional" ) -func (cfg *Config) DumpEntries() map[string]*M.RawEntry { - entries := make(map[string]*M.RawEntry) +func (cfg *Config) DumpEntries() map[string]*types.RawEntry { + entries := make(map[string]*types.RawEntry) cfg.forEachRoute(func(alias string, r R.Route, p *PR.Provider) { entries[alias] = r.Entry() }) diff --git a/internal/proxy/entry.go b/internal/proxy/entry.go index 51ea2528..d2b4a0b2 100644 --- a/internal/proxy/entry.go +++ b/internal/proxy/entry.go @@ -7,8 +7,8 @@ import ( D "github.com/yusing/go-proxy/internal/docker" E "github.com/yusing/go-proxy/internal/error" - M "github.com/yusing/go-proxy/internal/models" T "github.com/yusing/go-proxy/internal/proxy/fields" + "github.com/yusing/go-proxy/internal/types" ) type ( @@ -47,7 +47,7 @@ func (rp *ReverseProxyEntry) IsDocker() bool { return rp.DockerHost != "" } -func ValidateEntry(m *M.RawEntry) (any, E.NestedError) { +func ValidateEntry(m *types.RawEntry) (any, E.NestedError) { m.FillMissingFields() scheme, err := T.NewScheme(m.Scheme) @@ -68,7 +68,7 @@ func ValidateEntry(m *M.RawEntry) (any, E.NestedError) { return entry, nil } -func validateRPEntry(m *M.RawEntry, s T.Scheme, b E.Builder) *ReverseProxyEntry { +func validateRPEntry(m *types.RawEntry, s T.Scheme, b E.Builder) *ReverseProxyEntry { var stopTimeOut time.Duration host, err := T.ValidateHost(m.Host) @@ -123,7 +123,7 @@ func validateRPEntry(m *M.RawEntry, s T.Scheme, b E.Builder) *ReverseProxyEntry } } -func validateStreamEntry(m *M.RawEntry, b E.Builder) *StreamEntry { +func validateStreamEntry(m *types.RawEntry, b E.Builder) *StreamEntry { host, err := T.ValidateHost(m.Host) b.Add(err) diff --git a/internal/proxy/provider/docker.go b/internal/proxy/provider/docker.go index b285e6c1..0a2586c7 100755 --- a/internal/proxy/provider/docker.go +++ b/internal/proxy/provider/docker.go @@ -9,8 +9,9 @@ import ( "github.com/sirupsen/logrus" D "github.com/yusing/go-proxy/internal/docker" E "github.com/yusing/go-proxy/internal/error" - M "github.com/yusing/go-proxy/internal/models" + R "github.com/yusing/go-proxy/internal/route" + "github.com/yusing/go-proxy/internal/types" W "github.com/yusing/go-proxy/internal/watcher" "github.com/yusing/go-proxy/internal/watcher/events" ) @@ -41,7 +42,7 @@ func (p *DockerProvider) NewWatcher() W.Watcher { func (p *DockerProvider) LoadRoutesImpl() (routes R.Routes, err E.NestedError) { routes = R.NewRoutes() - entries := M.NewProxyEntries() + entries := types.NewProxyEntries() info, err := D.GetClientInfo(p.dockerHost, true) if err.HasError() { @@ -64,12 +65,12 @@ func (p *DockerProvider) LoadRoutesImpl() (routes R.Routes, err E.NestedError) { // there may be some valid entries in `en` dups := entries.MergeFrom(newEntries) // add the duplicate proxy entries to the error - dups.RangeAll(func(k string, v *M.RawEntry) { + dups.RangeAll(func(k string, v *types.RawEntry) { errors.Addf("duplicate alias %s", k) }) } - entries.RangeAll(func(_ string, e *M.RawEntry) { + entries.RangeAll(func(_ string, e *types.RawEntry) { e.DockerHost = p.dockerHost }) @@ -152,7 +153,7 @@ func (p *DockerProvider) OnEvent(event W.Event, routes R.Routes) (res EventResul entries, err := p.entriesFromContainerLabels(cont) b.Add(err) - entries.RangeAll(func(alias string, entry *M.RawEntry) { + entries.RangeAll(func(alias string, entry *types.RawEntry) { if routes.Has(alias) { b.Add(E.Duplicated("alias", alias)) } else { @@ -171,8 +172,8 @@ func (p *DockerProvider) OnEvent(event W.Event, routes R.Routes) (res EventResul // Returns a list of proxy entries for a container. // Always non-nil -func (p *DockerProvider) entriesFromContainerLabels(container D.Container) (entries M.RawEntries, _ E.NestedError) { - entries = M.NewProxyEntries() +func (p *DockerProvider) entriesFromContainerLabels(container D.Container) (entries types.RawEntries, _ E.NestedError) { + entries = types.NewProxyEntries() if p.shouldIgnore(container) { return @@ -180,7 +181,7 @@ func (p *DockerProvider) entriesFromContainerLabels(container D.Container) (entr // init entries map for all aliases for _, a := range container.Aliases { - entries.Store(a, &M.RawEntry{ + entries.Store(a, &types.RawEntry{ Alias: a, Host: p.hostname, ProxyProperties: container.ProxyProperties, @@ -193,14 +194,14 @@ func (p *DockerProvider) entriesFromContainerLabels(container D.Container) (entr } // remove all entries that failed to fill in missing fields - entries.RangeAll(func(_ string, re *M.RawEntry) { + entries.RangeAll(func(_ string, re *types.RawEntry) { re.FillMissingFields() }) return entries, errors.Build().Subject(container.ContainerName) } -func (p *DockerProvider) applyLabel(container D.Container, entries M.RawEntries, key, val string) (res E.NestedError) { +func (p *DockerProvider) applyLabel(container D.Container, entries types.RawEntries, key, val string) (res E.NestedError) { b := E.NewBuilder("errors in label %s", key) defer b.To(&res) @@ -227,7 +228,7 @@ func (p *DockerProvider) applyLabel(container D.Container, entries M.RawEntries, } if lbl.Target == D.WildcardAlias { // apply label for all aliases - entries.RangeAll(func(a string, e *M.RawEntry) { + entries.RangeAll(func(a string, e *types.RawEntry) { if err = D.ApplyLabel(e, lbl); err.HasError() { b.Add(err.Subjectf("alias %s", lbl.Target)) } diff --git a/internal/proxy/provider/file.go b/internal/proxy/provider/file.go index e827f500..289641c8 100644 --- a/internal/proxy/provider/file.go +++ b/internal/proxy/provider/file.go @@ -7,8 +7,8 @@ import ( "github.com/yusing/go-proxy/internal/common" E "github.com/yusing/go-proxy/internal/error" - M "github.com/yusing/go-proxy/internal/models" R "github.com/yusing/go-proxy/internal/route" + "github.com/yusing/go-proxy/internal/types" U "github.com/yusing/go-proxy/internal/utils" W "github.com/yusing/go-proxy/internal/watcher" ) @@ -71,7 +71,7 @@ func (p *FileProvider) LoadRoutesImpl() (routes R.Routes, res E.NestedError) { b := E.NewBuilder("file %q validation failure", p.fileName) defer b.To(&res) - entries := M.NewProxyEntries() + entries := types.NewProxyEntries() data, err := E.Check(os.ReadFile(p.path)) if err.HasError() { diff --git a/internal/route/route.go b/internal/route/route.go index 0a179c10..756e7680 100755 --- a/internal/route/route.go +++ b/internal/route/route.go @@ -5,15 +5,15 @@ import ( "net/url" E "github.com/yusing/go-proxy/internal/error" - M "github.com/yusing/go-proxy/internal/models" P "github.com/yusing/go-proxy/internal/proxy" + "github.com/yusing/go-proxy/internal/types" F "github.com/yusing/go-proxy/internal/utils/functional" ) type ( Route interface { RouteImpl - Entry() *M.RawEntry + Entry() *types.RawEntry Type() RouteType URL() *url.URL } @@ -29,7 +29,7 @@ type ( route struct { RouteImpl type_ RouteType - entry *M.RawEntry + entry *types.RawEntry } ) @@ -41,7 +41,7 @@ const ( // function alias var NewRoutes = F.NewMapOf[string, Route] -func NewRoute(en *M.RawEntry) (Route, E.NestedError) { +func NewRoute(en *types.RawEntry) (Route, E.NestedError) { entry, err := P.ValidateEntry(en) if err != nil { return nil, err @@ -65,7 +65,7 @@ func NewRoute(en *M.RawEntry) (Route, E.NestedError) { return &route{RouteImpl: rt, entry: en, type_: t}, nil } -func (rt *route) Entry() *M.RawEntry { +func (rt *route) Entry() *types.RawEntry { return rt.entry } @@ -78,11 +78,11 @@ func (rt *route) URL() *url.URL { return url } -func FromEntries(entries M.RawEntries) (Routes, E.NestedError) { +func FromEntries(entries types.RawEntries) (Routes, E.NestedError) { b := E.NewBuilder("errors in routes") routes := NewRoutes() - entries.RangeAll(func(alias string, entry *M.RawEntry) { + entries.RangeAll(func(alias string, entry *types.RawEntry) { entry.Alias = alias r, err := NewRoute(entry) if err.HasError() { diff --git a/internal/models/autocert_config.go b/internal/types/autocert_config.go similarity index 96% rename from internal/models/autocert_config.go rename to internal/types/autocert_config.go index 042fc808..2d2205e3 100644 --- a/internal/models/autocert_config.go +++ b/internal/types/autocert_config.go @@ -1,4 +1,4 @@ -package model +package types type ( AutoCertConfig struct { diff --git a/internal/models/config.go b/internal/types/config.go similarity index 97% rename from internal/models/config.go rename to internal/types/config.go index 84dca1e6..d9ef600c 100644 --- a/internal/models/config.go +++ b/internal/types/config.go @@ -1,4 +1,4 @@ -package model +package types type Config struct { Providers ProxyProviders `yaml:",flow" json:"providers"` diff --git a/internal/models/proxy_providers.go b/internal/types/proxy_providers.go similarity index 92% rename from internal/models/proxy_providers.go rename to internal/types/proxy_providers.go index 1cca0b6c..eac0132a 100644 --- a/internal/models/proxy_providers.go +++ b/internal/types/proxy_providers.go @@ -1,4 +1,4 @@ -package model +package types type ProxyProviders struct { Files []string `yaml:"include" json:"include"` // docker, file diff --git a/internal/models/raw_entry.go b/internal/types/raw_entry.go similarity index 99% rename from internal/models/raw_entry.go rename to internal/types/raw_entry.go index bc280c85..44c9e2d0 100644 --- a/internal/models/raw_entry.go +++ b/internal/types/raw_entry.go @@ -1,4 +1,4 @@ -package model +package types import ( "fmt"