Skip to content
Snippets Groups Projects
server.go 867 B
Newer Older
  • Learn to ignore specific revisions
  • package server
    
    import (
    
    	"net/http"
    
    	"github.com/dyson/certman"
    
    var logger = log.New(os.Stdout, "", log.LstdFlags)
    
    // ServeHTTP serves http requests on addr with handler
    func ServeHTTP(addr string, handler http.Handler) error {
    	server := &http.Server{
    		Addr:    addr,
    		Handler: handler,
    	}
    
    	return server.ListenAndServe()
    }
    
    // ServeHTTPS serves https requests on addr with handler
    func ServeHTTPS(addr string, handler http.Handler, certFile, keyFile string) error {
    	certManager, err := certman.New(certFile, keyFile)
    	if err != nil {
    		return err
    	}
    	certManager.Logger(logger)
    
    	if err := certManager.Watch(); err != nil {
    		return err
    	}
    
    	server := &http.Server{
    		Addr:    addr,
    		Handler: handler,
    		TLSConfig: &tls.Config{
    			GetCertificate: certManager.GetCertificate,
    		},
    	}
    
    	return server.ListenAndServeTLS("", "")