mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 12:42:34 +02:00
fixed output formatting
This commit is contained in:
parent
3895718d6d
commit
076c19c4ea
10 changed files with 41 additions and 35 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
BIN
bin/go-proxy
BIN
bin/go-proxy
Binary file not shown.
|
@ -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 {
|
||||||
|
|
|
@ -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.*."
|
|
||||||
|
|
|
@ -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)]
|
||||||
|
}
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue