http_server.go 861 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // http server library.
  2. package server
  3. import (
  4. "net/http"
  5. )
  6. type HTTPServer struct {
  7. addr *addr
  8. handler http.Handler
  9. useHttps bool
  10. }
  11. func (hs *HTTPServer) Start() error {
  12. // field check
  13. if hs.handler == nil {
  14. return errorf("Start HTTP Server error : http handler not registered!")
  15. }
  16. if hs.useHttps {
  17. // secure files
  18. if *confCAFile == "" {
  19. return errorf(errMissingFlag, FlagCAFile)
  20. }
  21. if *confKeyFile == "" {
  22. return errorf(errMissingFlag, FlagKeyFile)
  23. }
  24. }
  25. Log.Infof("HTTP Server Listen on %s, use https: %v", hs.addr, hs.useHttps)
  26. go func() {
  27. var err error
  28. if hs.useHttps == false {
  29. err = http.ListenAndServe(hs.addr.internalIp, hs.handler)
  30. } else {
  31. err = http.ListenAndServeTLS(hs.addr.internalIp, *confCAFile, *confKeyFile, hs.handler)
  32. }
  33. if err != nil {
  34. Log.Fatal(err.Error())
  35. }
  36. }()
  37. return nil
  38. }