package main import ( "crypto/tls" "flag" "log" "net/http" _ "net/http/pprof" ) var ( data = flag.String("data", "data/goxy.gob", "persistent storage file") route = make(Route) server = http.Server{ Handler: http.NewServeMux(), TLSConfig: &tls.Config{GetCertificate: route.GetCertificate}, } ) func main() { flag.Parse() if err := route.Load(*data); err != nil { log.Println(err) } if err := route.Restore(); err != nil { log.Fatal(err) } errc := make(chan error) go func() { errc <- server.ListenAndServe() }() go func() { errc <- server.ListenAndServeTLS("", "") }() go func() { errc <- http.ListenAndServe(":http-alt", nil) }() log.Fatal(<-errc) }