mirror of
https://github.com/yusing/godoxy.git
synced 2026-01-11 22:30:47 +01:00
Merge branch 'main' into dev
This commit is contained in:
@@ -42,7 +42,6 @@ require (
|
|||||||
github.com/cloudwego/base64x v0.1.6 // indirect
|
github.com/cloudwego/base64x v0.1.6 // indirect
|
||||||
github.com/containerd/errdefs v1.0.0 // indirect
|
github.com/containerd/errdefs v1.0.0 // indirect
|
||||||
github.com/containerd/errdefs/pkg v0.3.0 // indirect
|
github.com/containerd/errdefs/pkg v0.3.0 // indirect
|
||||||
github.com/coreos/go-oidc/v3 v3.17.0 // indirect
|
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||||
github.com/diskfs/go-diskfs v1.7.0 // indirect
|
github.com/diskfs/go-diskfs v1.7.0 // indirect
|
||||||
github.com/distribution/reference v0.6.0 // indirect
|
github.com/distribution/reference v0.6.0 // indirect
|
||||||
@@ -52,7 +51,6 @@ require (
|
|||||||
github.com/docker/go-units v0.5.0 // indirect
|
github.com/docker/go-units v0.5.0 // indirect
|
||||||
github.com/ebitengine/purego v0.9.1 // indirect
|
github.com/ebitengine/purego v0.9.1 // indirect
|
||||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
|
||||||
github.com/gabriel-vasile/mimetype v1.4.12 // indirect
|
github.com/gabriel-vasile/mimetype v1.4.12 // indirect
|
||||||
github.com/gin-contrib/sse v1.1.0 // indirect
|
github.com/gin-contrib/sse v1.1.0 // indirect
|
||||||
github.com/go-acme/lego/v4 v4.30.1 // indirect
|
github.com/go-acme/lego/v4 v4.30.1 // indirect
|
||||||
@@ -66,7 +64,6 @@ require (
|
|||||||
github.com/gobwas/glob v0.2.3 // indirect
|
github.com/gobwas/glob v0.2.3 // indirect
|
||||||
github.com/goccy/go-json v0.10.5 // indirect
|
github.com/goccy/go-json v0.10.5 // indirect
|
||||||
github.com/goccy/go-yaml v1.19.1 // indirect
|
github.com/goccy/go-yaml v1.19.1 // indirect
|
||||||
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
|
|
||||||
github.com/gorilla/mux v1.8.1 // indirect
|
github.com/gorilla/mux v1.8.1 // indirect
|
||||||
github.com/gotify/server/v2 v2.7.3 // indirect
|
github.com/gotify/server/v2 v2.7.3 // indirect
|
||||||
github.com/jinzhu/copier v0.4.0 // indirect
|
github.com/jinzhu/copier v0.4.0 // indirect
|
||||||
@@ -120,7 +117,6 @@ require (
|
|||||||
golang.org/x/crypto v0.46.0 // indirect
|
golang.org/x/crypto v0.46.0 // indirect
|
||||||
golang.org/x/mod v0.31.0 // indirect
|
golang.org/x/mod v0.31.0 // indirect
|
||||||
golang.org/x/net v0.48.0 // indirect
|
golang.org/x/net v0.48.0 // indirect
|
||||||
golang.org/x/oauth2 v0.34.0 // indirect
|
|
||||||
golang.org/x/sync v0.19.0 // indirect
|
golang.org/x/sync v0.19.0 // indirect
|
||||||
golang.org/x/sys v0.39.0 // indirect
|
golang.org/x/sys v0.39.0 // indirect
|
||||||
golang.org/x/text v0.32.0 // indirect
|
golang.org/x/text v0.32.0 // indirect
|
||||||
|
|||||||
@@ -140,8 +140,8 @@ func (state *state) EntrypointHandler() http.Handler {
|
|||||||
return &state.entrypoint
|
return &state.entrypoint
|
||||||
}
|
}
|
||||||
|
|
||||||
func (state *state) Entrypoint() *entrypoint.Entrypoint {
|
func (state *state) ShortLinkMatcher() config.ShortLinkMatcher {
|
||||||
return &state.entrypoint
|
return state.entrypoint.ShortLinkMatcher()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AutoCertProvider returns the autocert provider.
|
// AutoCertProvider returns the autocert provider.
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
"iter"
|
"iter"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/yusing/godoxy/internal/entrypoint"
|
|
||||||
"github.com/yusing/godoxy/internal/types"
|
"github.com/yusing/godoxy/internal/types"
|
||||||
"github.com/yusing/goutils/server"
|
"github.com/yusing/goutils/server"
|
||||||
"github.com/yusing/goutils/synk"
|
"github.com/yusing/goutils/synk"
|
||||||
@@ -23,7 +22,7 @@ type State interface {
|
|||||||
Value() *Config
|
Value() *Config
|
||||||
|
|
||||||
EntrypointHandler() http.Handler
|
EntrypointHandler() http.Handler
|
||||||
Entrypoint() *entrypoint.Entrypoint
|
ShortLinkMatcher() ShortLinkMatcher
|
||||||
AutoCertProvider() server.CertProvider
|
AutoCertProvider() server.CertProvider
|
||||||
|
|
||||||
LoadOrStoreProvider(key string, value types.RouteProvider) (actual types.RouteProvider, loaded bool)
|
LoadOrStoreProvider(key string, value types.RouteProvider) (actual types.RouteProvider, loaded bool)
|
||||||
@@ -35,6 +34,12 @@ type State interface {
|
|||||||
FlushTmpLog()
|
FlushTmpLog()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ShortLinkMatcher interface {
|
||||||
|
AddRoute(alias string)
|
||||||
|
DelRoute(alias string)
|
||||||
|
ServeHTTP(w http.ResponseWriter, r *http.Request)
|
||||||
|
}
|
||||||
|
|
||||||
// could be nil before first call on Load
|
// could be nil before first call on Load
|
||||||
var ActiveState synk.Value[State]
|
var ActiveState synk.Value[State]
|
||||||
|
|
||||||
|
|||||||
@@ -126,12 +126,12 @@ func (s *FileServer) Start(parent task.Parent) gperr.Error {
|
|||||||
|
|
||||||
routes.HTTP.Add(s)
|
routes.HTTP.Add(s)
|
||||||
if state := config.WorkingState.Load(); state != nil {
|
if state := config.WorkingState.Load(); state != nil {
|
||||||
state.Entrypoint().ShortLinkMatcher().AddRoute(s.Alias)
|
state.ShortLinkMatcher().AddRoute(s.Alias)
|
||||||
}
|
}
|
||||||
s.task.OnFinished("remove_route_from_http", func() {
|
s.task.OnFinished("remove_route_from_http", func() {
|
||||||
routes.HTTP.Del(s)
|
routes.HTTP.Del(s)
|
||||||
if state := config.WorkingState.Load(); state != nil {
|
if state := config.WorkingState.Load(); state != nil {
|
||||||
state.Entrypoint().ShortLinkMatcher().DelRoute(s.Alias)
|
state.ShortLinkMatcher().DelRoute(s.Alias)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -168,12 +168,12 @@ func (r *ReveseProxyRoute) Start(parent task.Parent) gperr.Error {
|
|||||||
} else {
|
} else {
|
||||||
routes.HTTP.Add(r)
|
routes.HTTP.Add(r)
|
||||||
if state := config.WorkingState.Load(); state != nil {
|
if state := config.WorkingState.Load(); state != nil {
|
||||||
state.Entrypoint().ShortLinkMatcher().AddRoute(r.Alias)
|
state.ShortLinkMatcher().AddRoute(r.Alias)
|
||||||
}
|
}
|
||||||
r.task.OnCancel("remove_route", func() {
|
r.task.OnCancel("remove_route", func() {
|
||||||
routes.HTTP.Del(r)
|
routes.HTTP.Del(r)
|
||||||
if state := config.WorkingState.Load(); state != nil {
|
if state := config.WorkingState.Load(); state != nil {
|
||||||
state.Entrypoint().ShortLinkMatcher().DelRoute(r.Alias)
|
state.ShortLinkMatcher().DelRoute(r.Alias)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -216,12 +216,12 @@ func (r *ReveseProxyRoute) addToLoadBalancer(parent task.Parent) {
|
|||||||
linked.SetHealthMonitor(lb)
|
linked.SetHealthMonitor(lb)
|
||||||
routes.HTTP.AddKey(cfg.Link, linked)
|
routes.HTTP.AddKey(cfg.Link, linked)
|
||||||
if state := config.WorkingState.Load(); state != nil {
|
if state := config.WorkingState.Load(); state != nil {
|
||||||
state.Entrypoint().ShortLinkMatcher().AddRoute(cfg.Link)
|
state.ShortLinkMatcher().AddRoute(cfg.Link)
|
||||||
}
|
}
|
||||||
r.task.OnFinished("remove_loadbalancer_route", func() {
|
r.task.OnFinished("remove_loadbalancer_route", func() {
|
||||||
routes.HTTP.DelKey(cfg.Link)
|
routes.HTTP.DelKey(cfg.Link)
|
||||||
if state := config.WorkingState.Load(); state != nil {
|
if state := config.WorkingState.Load(); state != nil {
|
||||||
state.Entrypoint().ShortLinkMatcher().DelRoute(cfg.Link)
|
state.ShortLinkMatcher().DelRoute(cfg.Link)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
lbLock.Unlock()
|
lbLock.Unlock()
|
||||||
|
|||||||
Reference in New Issue
Block a user