diff --git a/cmd/up.go b/cmd/up.go index e3585ae0..c1c37d5a 100644 --- a/cmd/up.go +++ b/cmd/up.go @@ -65,6 +65,7 @@ func runUp(_ *cobra.Command, _ []string) error { log.Printf("Supervisor init done in: %s\n", time.Since(start).String()) shutdownTimeout := time.Second * 1 + timeout := time.Second * 60 wg := sync.WaitGroup{} wg.Add(1) @@ -85,6 +86,12 @@ func runUp(_ *cobra.Command, _ []string) error { }) }() + go func() { + wd, _ := os.Getwd() + proxy := pkg.NewProxy(path.Join(wd, "hosts"), timeout) + proxy.Start() + }() + wg.Wait() return nil } diff --git a/pkg/proxy.go b/pkg/proxy.go new file mode 100644 index 00000000..737c00d7 --- /dev/null +++ b/pkg/proxy.go @@ -0,0 +1,33 @@ +package pkg + +import ( + "fmt" + "net/http" + + "time" +) + +func NewProxy(hosts string, timeout time.Duration) *Proxy { + + return &Proxy{ + Hosts: hosts, + Timeout: timeout, + } +} + +type Proxy struct { + Hosts string + Timeout time.Duration +} + +func (p *Proxy) Start() error { + tcp := 8080 + s := &http.Server{ + Addr: fmt.Sprintf(":%d", tcp), + ReadTimeout: p.Timeout, + WriteTimeout: p.Timeout, + MaxHeaderBytes: 1 << 20, // Max header of 1MB + } + + return s.ListenAndServe() +} diff --git a/pkg/supervisor.go b/pkg/supervisor.go index c84e2a5e..f25bc3c3 100644 --- a/pkg/supervisor.go +++ b/pkg/supervisor.go @@ -186,7 +186,6 @@ func (s *Supervisor) Start(svcs []Service) error { } log.Println("Exited: ", exitStatusC) - // call start on the task to execute the redis server if err := task.Start(ctx); err != nil { log.Println("Task err: ", err) return err