mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-23 17:28:53 +02:00
homepage: refactor and fix overrides not being applied
This commit is contained in:
@@ -225,7 +225,7 @@ func (r *ReveseProxyRoute) addToLoadBalancer(parent task.Parent) {
|
||||
linked = l.(*ReveseProxyRoute)
|
||||
lb = linked.loadBalancer
|
||||
lb.UpdateConfigIfNeeded(cfg)
|
||||
if linked.Homepage.IsEmpty() && !r.Homepage.IsEmpty() {
|
||||
if linked.Homepage == nil {
|
||||
linked.Homepage = r.Homepage
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/docker/docker/api/types/container"
|
||||
"github.com/yusing/go-proxy/agent/pkg/agent"
|
||||
"github.com/yusing/go-proxy/internal"
|
||||
"github.com/yusing/go-proxy/internal/docker"
|
||||
@@ -15,7 +16,6 @@ import (
|
||||
"github.com/yusing/go-proxy/internal/utils/strutils"
|
||||
"github.com/yusing/go-proxy/internal/watcher/health"
|
||||
|
||||
dockertypes "github.com/docker/docker/api/types"
|
||||
"github.com/yusing/go-proxy/internal/common"
|
||||
config "github.com/yusing/go-proxy/internal/config/types"
|
||||
"github.com/yusing/go-proxy/internal/net/gphttp/accesslog"
|
||||
@@ -41,7 +41,7 @@ type (
|
||||
HealthCheck *health.HealthCheckConfig `json:"healthcheck,omitempty"`
|
||||
LoadBalance *loadbalance.Config `json:"load_balance,omitempty"`
|
||||
Middlewares map[string]docker.LabelMap `json:"middlewares,omitempty"`
|
||||
Homepage *homepage.Item `json:"homepage,omitempty"`
|
||||
Homepage *homepage.ItemConfig `json:"homepage,omitempty"`
|
||||
AccessLog *accesslog.Config `json:"access_log,omitempty"`
|
||||
|
||||
Metadata `deserialize:"-"`
|
||||
@@ -190,8 +190,16 @@ func (r *Route) LoadBalanceConfig() *loadbalance.Config {
|
||||
return r.LoadBalance
|
||||
}
|
||||
|
||||
func (r *Route) HomepageConfig() *homepage.Item {
|
||||
return r.Homepage
|
||||
func (r *Route) HomepageConfig() *homepage.ItemConfig {
|
||||
return r.Homepage.GetOverride(r.Alias)
|
||||
}
|
||||
|
||||
func (r *Route) HomepageItem() *homepage.Item {
|
||||
return &homepage.Item{
|
||||
Alias: r.Alias,
|
||||
Provider: r.Provider,
|
||||
ItemConfig: r.HomepageConfig(),
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Route) ContainerInfo() *docker.Container {
|
||||
@@ -370,14 +378,12 @@ func (r *Route) FinalizeHomepageConfig() {
|
||||
|
||||
isDocker := r.Container != nil
|
||||
|
||||
if r.Homepage.IsEmpty() {
|
||||
r.Homepage = homepage.NewItem(r.Alias)
|
||||
if r.Homepage == nil {
|
||||
r.Homepage = &homepage.ItemConfig{Show: true}
|
||||
}
|
||||
r.Homepage = r.Homepage.GetOverride(r.Alias)
|
||||
|
||||
hp := r.Homepage
|
||||
hp.Alias = r.Alias
|
||||
hp.Provider = r.Provider
|
||||
hp = hp.ApplyOverride()
|
||||
|
||||
var key string
|
||||
if hp.Name == "" {
|
||||
@@ -424,7 +430,7 @@ func (r *Route) FinalizeHomepageConfig() {
|
||||
}
|
||||
}
|
||||
|
||||
func lowestPort(ports map[int]dockertypes.Port) (res int) {
|
||||
func lowestPort(ports map[int]container.Port) (res int) {
|
||||
cmp := (uint16)(65535)
|
||||
for port, v := range ports {
|
||||
if v.PrivatePort < cmp {
|
||||
|
||||
@@ -64,33 +64,33 @@ func HomepageCategories() []string {
|
||||
check := make(map[string]struct{})
|
||||
categories := make([]string, 0)
|
||||
routes.GetHTTPRoutes().RangeAll(func(alias string, r route.HTTPRoute) {
|
||||
homepage := r.HomepageConfig()
|
||||
if homepage.IsEmpty() || homepage.Category == "" {
|
||||
item := r.HomepageConfig()
|
||||
if item == nil || item.Category == "" {
|
||||
return
|
||||
}
|
||||
if _, ok := check[homepage.Category]; ok {
|
||||
if _, ok := check[item.Category]; ok {
|
||||
return
|
||||
}
|
||||
check[homepage.Category] = struct{}{}
|
||||
categories = append(categories, homepage.Category)
|
||||
check[item.Category] = struct{}{}
|
||||
categories = append(categories, item.Category)
|
||||
})
|
||||
return categories
|
||||
}
|
||||
|
||||
func HomepageConfig(categoryFilter, providerFilter string) homepage.Categories {
|
||||
hpCfg := homepage.NewHomePageConfig()
|
||||
func HomepageConfig(categoryFilter, providerFilter string) homepage.Homepage {
|
||||
hp := make(homepage.Homepage)
|
||||
|
||||
routes.GetHTTPRoutes().RangeAll(func(alias string, r route.HTTPRoute) {
|
||||
item := r.HomepageConfig()
|
||||
if providerFilter != "" && item.Provider != providerFilter {
|
||||
if providerFilter != "" && r.ProviderName() != providerFilter {
|
||||
return
|
||||
}
|
||||
item := r.HomepageItem()
|
||||
if categoryFilter != "" && item.Category != categoryFilter {
|
||||
return
|
||||
}
|
||||
hpCfg.Add(item)
|
||||
hp.Add(item)
|
||||
})
|
||||
return hpCfg
|
||||
return hp
|
||||
}
|
||||
|
||||
func RoutesByAlias(typeFilter ...route.RouteType) map[string]route.Route {
|
||||
|
||||
@@ -29,7 +29,8 @@ type (
|
||||
IdlewatcherConfig() *idlewatcher.Config
|
||||
HealthCheckConfig() *health.HealthCheckConfig
|
||||
LoadBalanceConfig() *loadbalance.Config
|
||||
HomepageConfig() *homepage.Item
|
||||
HomepageConfig() *homepage.ItemConfig
|
||||
HomepageItem() *homepage.Item
|
||||
ContainerInfo() *docker.Container
|
||||
|
||||
Agent() *agent.AgentConfig
|
||||
|
||||
Reference in New Issue
Block a user