예제 #1
0
파일: main.go 프로젝트: dhowden/godoauth
func main() {
	flag.Parse()

	if showVersion {
		fmt.Fprintln(os.Stderr, os.Args[0], version)
		return
	}

	var config godoauth.Config
	if err := config.LoadFromFile(confFile); err != nil {
		fmt.Fprintln(os.Stderr, "error parsing config file: ", err)
		os.Exit(1)
	}

	if err := config.LoadCerts(); err != nil {
		fmt.Fprintln(os.Stderr, "error while loading/veryfing certs: ", err)
	}

	fmt.Printf("Starting %s version: %s\n", name, version)

	timeout, err := time.ParseDuration(config.HTTP.Timeout)
	if err != nil {
		fmt.Fprintln(os.Stderr, "error parsing HTTP read timeout")
		return
	}

	authHandler := &godoauth.TokenAuthHandler{
		Config: &config,
	}

	server := &http.Server{
		Addr:        config.HTTP.Addr,
		Handler:     godoauth.NewHandler(authHandler),
		ReadTimeout: timeout,
	}

	if config.HTTP.TLS.Certificate != "" && config.HTTP.TLS.Key != "" {
		server.ListenAndServeTLS(config.HTTP.TLS.Certificate, config.HTTP.TLS.Key)
		return
	}
	server.ListenAndServe()
}