blob: 3178818ce2948b4bf6f5fb927fd074fb8ec16798 [file] [log] [blame]
Serge Bazanski64956532021-01-30 19:19:32 +01001package main
2
3import (
4 "context"
5 "flag"
6 "net/http"
7 "time"
8
9 "code.hackerspace.pl/hscloud/go/mirko"
10 "github.com/golang/glog"
11)
12
13var (
14 flagListen = "127.0.0.1:8080"
15)
16
17func main() {
18 flag.StringVar(&flagListen, "pub_listen", flagListen, "Address to listen on for HTTP traffic")
19 flag.Parse()
20
21 m := mirko.New()
22 if err := m.Listen(); err != nil {
23 glog.Exitf("Listen(): %v", err)
24 }
25
26 if err := m.Serve(); err != nil {
27 glog.Exitf("Serve(): %v", err)
28 }
29
30 mux := http.NewServeMux()
31 // TODO(q3k): implement admission controller
32 srv := &http.Server{Addr: flagListen, Handler: mux}
33
34 glog.Infof("Listening on %q...", flagListen)
35 go func() {
36 if err := srv.ListenAndServe(); err != nil {
37 glog.Error(err)
38 }
39 }()
40
41 <-m.Done()
42 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
43 defer cancel()
44 srv.Shutdown(ctx)
45}