fixed output formatting

This commit is contained in:
yusing 2024-03-18 16:00:45 +00:00
parent 3895718d6d
commit 076c19c4ea
10 changed files with 41 additions and 35 deletions

View file

@ -14,6 +14,7 @@ ENV GOPROXY_DEBUG 0
ENV GOPROXY_REDIRECT_HTTP 1 ENV GOPROXY_REDIRECT_HTTP 1
EXPOSE 80 EXPOSE 80
EXPOSE 8080
EXPOSE 443 EXPOSE 443
EXPOSE 8443 EXPOSE 8443

Binary file not shown.

View file

@ -69,7 +69,8 @@ const (
) )
// TODO: default + per proxy // TODO: default + per proxy
var transport = &http.Transport{ var (
transport = &http.Transport{
Proxy: http.ProxyFromEnvironment, Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{ DialContext: (&net.Dialer{
Timeout: 60 * time.Second, Timeout: 60 * time.Second,
@ -77,22 +78,26 @@ var transport = &http.Transport{
}).DialContext, }).DialContext,
MaxIdleConns: 1000, MaxIdleConns: 1000,
MaxIdleConnsPerHost: 1000, MaxIdleConnsPerHost: 1000,
} }
var transportNoTLS = func() *http.Transport { transportNoTLS = func() *http.Transport {
var clone = transport.Clone() var clone = transport.Clone()
clone.TLSClientConfig = &tls.Config{InsecureSkipVerify: true} clone.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
return clone return clone
}() }()
)
const wildcardLabelPrefix = "proxy.*."
const clientUrlFromEnv = "FROM_ENV" const clientUrlFromEnv = "FROM_ENV"
const configPath = "config.yml" const (
configPath = "config.yml"
templatePath = "templates/panel.html"
)
const StreamStopListenTimeout = 1 * time.Second const StreamStopListenTimeout = 1 * time.Second
const templateFile = "templates/panel.html"
const udpBufferSize = 1500 const udpBufferSize = 1500
var logLevel = func() logrus.Level { var logLevel = func() logrus.Level {

View file

@ -51,7 +51,7 @@ func (p *Provider) getContainerProxyConfigs(container types.Container, clientIP
if err != nil { if err != nil {
l.Error(err) l.Error(err)
} }
err = p.setConfigField(&config, label, value, wildcardPrefix) err = p.setConfigField(&config, label, value, wildcardLabelPrefix)
if err != nil { if err != nil {
l.Error(err) l.Error(err)
} }
@ -196,5 +196,3 @@ func selectPortInternal(c types.Container, getPort func(types.Port) uint16) uint
} }
return 0 return 0
} }
const wildcardPrefix = "proxy.*."

View file

@ -20,3 +20,10 @@ func (p *httpLoadBalancePool) Add(route *HTTPRoute) {
func (p *httpLoadBalancePool) Iterator() []*HTTPRoute { func (p *httpLoadBalancePool) Iterator() []*HTTPRoute {
return p.pool return p.pool
} }
func (p *httpLoadBalancePool) Pick() *HTTPRoute {
// round-robin
index := int(p.curentIndex.Load())
defer p.curentIndex.Add(1)
return p.pool[index%len(p.pool)]
}

View file

@ -68,7 +68,7 @@ func NewHTTPRoute(config *ProxyConfig) (*HTTPRoute, error) {
route.Proxy.ModifyResponse = func(r *http.Response) error { route.Proxy.ModifyResponse = func(r *http.Response) error {
contentType, ok := r.Header["Content-Type"] contentType, ok := r.Header["Content-Type"]
if !ok || len(contentType) == 0 { if !ok || len(contentType) == 0 {
route.l.Debug("unknown content type for", r.Request.URL.String()) route.l.Debug("unknown content type for ", r.Request.URL.String())
return nil return nil
} }
// disable cache // disable cache
@ -110,13 +110,6 @@ func NewHTTPRoute(config *ProxyConfig) (*HTTPRoute, error) {
return route, nil return route, nil
} }
func (p *httpLoadBalancePool) Pick() *HTTPRoute {
// round-robin
index := int(p.curentIndex.Load())
defer p.curentIndex.Add(1)
return p.pool[index%len(p.pool)]
}
func (r *HTTPRoute) RemoveFromRoutes() { func (r *HTTPRoute) RemoveFromRoutes() {
httpRoutes.Delete(r.Alias) httpRoutes.Delete(r.Alias)
} }

View file

@ -1,7 +1,6 @@
package main package main
import ( import (
"flag"
"net/http" "net/http"
"os" "os"
"os/signal" "os/signal"
@ -14,7 +13,7 @@ import (
func main() { func main() {
var err error var err error
flag.Parse() // flag.Parse()
runtime.GOMAXPROCS(runtime.NumCPU()) runtime.GOMAXPROCS(runtime.NumCPU())
log.SetFormatter(&log.TextFormatter{ log.SetFormatter(&log.TextFormatter{
@ -46,7 +45,7 @@ func main() {
}() }()
go func() { go func() {
log.Infof("starting http panel on port 8080") log.Infof("starting http panel on port 8080")
err := http.ListenAndServe(":8080", http.HandlerFunc(panelHandler)) err = http.ListenAndServe(":8080", http.HandlerFunc(panelHandler))
if err != nil { if err != nil {
log.Warning("HTTP panel error: ", err) log.Warning("HTTP panel error: ", err)
} }
@ -75,6 +74,7 @@ func main() {
signal.Notify(sig, syscall.SIGHUP) signal.Notify(sig, syscall.SIGHUP)
<-sig <-sig
cfg.StopWatching()
cfg.StopProviders() cfg.StopProviders()
close(fsWatcherStop) close(fsWatcherStop)
close(dockerWatcherStop) close(dockerWatcherStop)

View file

@ -42,7 +42,7 @@ func panelIndex(w http.ResponseWriter, r *http.Request) {
return return
} }
tmpl, err := template.ParseFiles(templateFile) tmpl, err := template.ParseFiles(templatePath)
if err != nil { if err != nil {
palog.Error(err) palog.Error(err)

View file

@ -136,9 +136,9 @@ func (route *StreamRouteBase) SetupListen() {
return return
} }
route.ListeningPort = freePort route.ListeningPort = freePort
route.l.Info("Assigned free port", route.ListeningPort) route.l.Info("Assigned free port ", route.ListeningPort)
} }
route.l.Info("Listening on", route.ListeningUrl()) route.l.Info("Listening on ", route.ListeningUrl())
} }
func (route *StreamRouteBase) RemoveFromRoutes() { func (route *StreamRouteBase) RemoveFromRoutes() {

View file

@ -135,6 +135,8 @@ func watchFiles() {
defer fsWatcher.Close() defer fsWatcher.Close()
for { for {
select { select {
case <-fsWatcherStop:
return
case event, ok := <-fsWatcher.Events: case event, ok := <-fsWatcher.Events:
if !ok { if !ok {
wlog.Error("file watcher channel closed") wlog.Error("file watcher channel closed")
@ -174,7 +176,7 @@ func (w *dockerWatcher) watch() {
case <-w.stop: case <-w.stop:
return return
case msg := <-msgChan: case msg := <-msgChan:
w.l.Info("container", msg.Actor.Attributes["name"], msg.Action) w.l.Infof("container %s %s", msg.Actor.Attributes["name"], msg.Action)
w.onChange() w.onChange()
case err := <-errChan: case err := <-errChan:
w.l.Errorf("%s, retrying in 1s", err) w.l.Errorf("%s, retrying in 1s", err)