func main() { // Parse command-line flags. flag.Parse() // Setup FS handler fs := &fasthttp.FS{ Root: *dir, IndexNames: []string{"index.html"}, GenerateIndexPages: *generateIndexPages, Compress: *compress, AcceptByteRange: *byteRange, } if *vhost { fs.PathRewrite = fasthttp.NewVHostPathRewriter(0) } fsHandler := fs.NewRequestHandler() // Create RequestHandler serving server stats on /stats and files // on other requested paths. // /stats output may be filtered using regexps. For example: // // * /stats?r=fs will show only stats (expvars) containing 'fs' // in their names. requestHandler := func(ctx *fasthttp.RequestCtx) { switch string(ctx.Path()) { case "/stats": expvarhandler.ExpvarHandler(ctx) default: fsHandler(ctx) updateFSCounters(ctx) } } // Start HTTP server. if len(*addr) > 0 { log.Printf("Starting HTTP server on %q", *addr) go func() { if err := fasthttp.ListenAndServe(*addr, requestHandler); err != nil { log.Fatalf("error in ListenAndServe: %s", err) } }() } // Start HTTPS server. if len(*addrTLS) > 0 { log.Printf("Starting HTTPS server on %q", *addrTLS) go func() { if err := fasthttp.ListenAndServeTLS(*addrTLS, *certFile, *keyFile, requestHandler); err != nil { log.Fatalf("error in ListenAndServeTLS: %s", err) } }() } log.Printf("Serving files from directory %q", *dir) log.Printf("See stats at http://%s/stats", *addr) // Wait forever. select {} }
// RunTLS attaches the router to a http.Server and starts listening and serving HTTPS (secure) requests. func (g *Engine) RunTLS(addr ...string) (err error) { var certFile, keyFile, listenAddr string if len(addr) == 0 { listenAddr = g.Config.GetString("ListenAddr") + ":" + g.Config.GetString("ListenPort") certFile = g.Config.GetString("CertFile") keyFile = g.Config.GetString("KeyFile") } else { listenAddr = addr[0] certFile = addr[1] keyFile = addr[2] } fmt.Println("Server is Listen on: " + listenAddr) err = fasthttp.ListenAndServeTLS(listenAddr, certFile, keyFile, g.Router.Handler) return }
func main() { flag.Parse() fs := &fasthttp.FS{ Root: *dir, IndexNames: []string{"index.html"}, GenerateIndexPages: *generateIndexPages, Compress: *compress, AcceptByteRange: *byteRange, } h := fs.NewRequestHandler() // Start HTTP server. if len(*addr) > 0 { log.Printf("Starting HTTP server on %q", *addr) go func() { if err := fasthttp.ListenAndServe(*addr, h); err != nil { log.Fatalf("error in ListenAndServe: %s", err) } }() } // Start HTTPS server. if len(*addrTLS) > 0 { log.Printf("Starting HTTPS server on %q", *addrTLS) go func() { if err := fasthttp.ListenAndServeTLS(*addrTLS, *certFile, *keyFile, h); err != nil { log.Fatalf("error in ListenAndServeTLS: %s", err) } }() } log.Printf("Serving files from directory %q", *dir) // Wait forever. select {} }
func (g *Goka) RunTLS(addr, certFile, keyFile string) { fasthttp.ListenAndServeTLS(addr, certFile, keyFile, func(rCtx *fasthttp.RequestCtx) { g.Serve(rCtx) }) }