mirror of
https://github.com/yusing/godoxy.git
synced 2025-06-09 13:02:33 +02:00
removed unnecessary mutex and locking, small refactor
This commit is contained in:
parent
c07f2ed722
commit
ae69019265
2 changed files with 9 additions and 31 deletions
|
@ -5,7 +5,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"github.com/yusing/go-proxy/internal/common"
|
"github.com/yusing/go-proxy/internal/common"
|
||||||
|
@ -44,8 +43,7 @@ type (
|
||||||
var (
|
var (
|
||||||
findMuxFunc = findMuxAnyDomain
|
findMuxFunc = findMuxAnyDomain
|
||||||
|
|
||||||
httpRoutes = F.NewMapOf[string, *HTTPRoute]()
|
httpRoutes = F.NewMapOf[string, *HTTPRoute]()
|
||||||
httpRoutesMu sync.Mutex
|
|
||||||
// globalMux = http.NewServeMux() // TODO: support regex subdomain matching.
|
// globalMux = http.NewServeMux() // TODO: support regex subdomain matching.
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -63,11 +61,10 @@ func SetFindMuxDomains(domains []string) {
|
||||||
|
|
||||||
func NewHTTPRoute(entry *entry.ReverseProxyEntry) (impl, E.Error) {
|
func NewHTTPRoute(entry *entry.ReverseProxyEntry) (impl, E.Error) {
|
||||||
var trans *http.Transport
|
var trans *http.Transport
|
||||||
|
|
||||||
if entry.NoTLSVerify {
|
if entry.NoTLSVerify {
|
||||||
trans = gphttp.DefaultTransportNoTLS.Clone()
|
trans = gphttp.DefaultTransportNoTLS
|
||||||
} else {
|
} else {
|
||||||
trans = gphttp.DefaultTransport.Clone()
|
trans = gphttp.DefaultTransport
|
||||||
}
|
}
|
||||||
|
|
||||||
service := string(entry.Alias)
|
service := string(entry.Alias)
|
||||||
|
@ -102,16 +99,7 @@ func (r *HTTPRoute) Start(providerSubtask task.Task) E.Error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRoutesMu.Lock()
|
r.task = providerSubtask
|
||||||
defer httpRoutesMu.Unlock()
|
|
||||||
|
|
||||||
if !entry.UseHealthCheck(r) && (entry.UseLoadBalance(r) || entry.UseIdleWatcher(r)) {
|
|
||||||
r.l.Error().Msg("healthCheck.disabled cannot be false when loadbalancer or idlewatcher is enabled")
|
|
||||||
if r.HealthCheck == nil {
|
|
||||||
r.HealthCheck = new(health.HealthCheckConfig)
|
|
||||||
}
|
|
||||||
r.HealthCheck.Disable = false
|
|
||||||
}
|
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case entry.UseIdleWatcher(r):
|
case entry.UseIdleWatcher(r):
|
||||||
|
@ -123,12 +111,13 @@ func (r *HTTPRoute) Start(providerSubtask task.Task) E.Error {
|
||||||
r.handler = waker
|
r.handler = waker
|
||||||
r.HealthMon = waker
|
r.HealthMon = waker
|
||||||
case entry.UseHealthCheck(r):
|
case entry.UseHealthCheck(r):
|
||||||
r.HealthMon = health.NewHTTPHealthMonitor(r.TargetURL(), r.HealthCheck, r.rp.Transport)
|
r.HealthMon = health.NewHTTPHealthMonitor(r.rp.TargetURL, r.HealthCheck)
|
||||||
}
|
}
|
||||||
r.task = providerSubtask
|
|
||||||
|
|
||||||
if r.handler == nil {
|
if r.handler == nil {
|
||||||
switch {
|
switch {
|
||||||
|
case len(r.PathPatterns) == 0:
|
||||||
|
r.handler = r.rp
|
||||||
case len(r.PathPatterns) == 1 && r.PathPatterns[0] == "/":
|
case len(r.PathPatterns) == 1 && r.PathPatterns[0] == "/":
|
||||||
r.handler = r.rp
|
r.handler = r.rp
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -4,7 +4,6 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"github.com/yusing/go-proxy/internal/docker/idlewatcher"
|
"github.com/yusing/go-proxy/internal/docker/idlewatcher"
|
||||||
|
@ -28,10 +27,7 @@ type StreamRoute struct {
|
||||||
l zerolog.Logger
|
l zerolog.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var streamRoutes = F.NewMapOf[string, *StreamRoute]()
|
||||||
streamRoutes = F.NewMapOf[string, *StreamRoute]()
|
|
||||||
streamRoutesMu sync.Mutex
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetStreamProxies() F.Map[string, *StreamRoute] {
|
func GetStreamProxies() F.Map[string, *StreamRoute] {
|
||||||
return streamRoutes
|
return streamRoutes
|
||||||
|
@ -62,14 +58,6 @@ func (r *StreamRoute) Start(providerSubtask task.Task) E.Error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
streamRoutesMu.Lock()
|
|
||||||
defer streamRoutesMu.Unlock()
|
|
||||||
|
|
||||||
if r.HealthCheck.Disable && (entry.UseLoadBalance(r) || entry.UseIdleWatcher(r)) {
|
|
||||||
r.l.Error().Msg("healthCheck.disabled cannot be false when loadbalancer or idlewatcher is enabled")
|
|
||||||
r.HealthCheck.Disable = false
|
|
||||||
}
|
|
||||||
|
|
||||||
r.task = providerSubtask
|
r.task = providerSubtask
|
||||||
r.stream = NewStream(r)
|
r.stream = NewStream(r)
|
||||||
|
|
||||||
|
@ -111,6 +99,7 @@ func (r *StreamRoute) Start(providerSubtask task.Task) E.Error {
|
||||||
}
|
}
|
||||||
|
|
||||||
go r.acceptConnections()
|
go r.acceptConnections()
|
||||||
|
|
||||||
streamRoutes.Store(string(r.Alias), r)
|
streamRoutes.Store(string(r.Alias), r)
|
||||||
r.task.OnFinished("remove from route table", func() {
|
r.task.OnFinished("remove from route table", func() {
|
||||||
streamRoutes.Delete(string(r.Alias))
|
streamRoutes.Delete(string(r.Alias))
|
||||||
|
|
Loading…
Add table
Reference in a new issue