package goxy import ( "encoding/json" "fmt" "net/http" "os" ) // Routes defines a set of routes including correspondent TLS certificates type Routes map[string]Route type Route struct { Host, Upstream string Cert, Key []byte } func (r Route) String() string { return fmt.Sprintf("%v → %v", r.Host, r.Upstream) } func (r Routes) Save(fname string) error { fd, err := os.Create(fname) if err != nil { return err } defer fd.Close() return json.NewEncoder(fd).Encode(r) } func (r *Routes) Load(fname string) error { fd, err := os.Open(fname) if err != nil { return err } defer fd.Close() return json.NewDecoder(fd).Decode(r) } func (r Routes) ServeHTTP(w http.ResponseWriter, _ *http.Request) { for _, v := range r { fmt.Fprintln(w, v) } }