Skip to content
Snippets Groups Projects
main.go 845 B
Newer Older
  • Learn to ignore specific revisions
  • Lars Seipel's avatar
    Lars Seipel committed
    // Servecgi serves HTTP requests on the specified network address, invoking a
    // CGI program for each request.
    // Usage: servecgi [-l addr] cgi-prog
    package main
    
    import (
    	"flag"
    	"log"
    	"net/http"
    	"net/http/cgi"
    	"os"
    )
    
    var addr = flag.String("l", getEnvDefault("SERVECGI_LADDR", ":80"),
    	"local network `addr` to listen on")
    
    func main() {
    	if flag.Parse(); flag.NArg() != 1 {
    		log.Fatalf("usage: %s [-l addr] path-to-cgi-executable", os.Args[0])
    	}
    
    	http.Handle("/", &cgi.Handler{Path: flag.Arg(0)})
    	log.Fatal(http.ListenAndServe(*addr, nil))
    }
    
    // GetEnvOrDefault retrieves the value associated with key from the environment
    // block. If the value is the empty string, or not present at all, defValue is
    // returned.
    func getEnvDefault(key, defValue string) string {
    	if v := os.Getenv(key); v != "" {
    		return v
    	}
    	return defValue
    }