main.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "github.com/gorilla/sessions"
  7. "github.com/porter-dev/porter/internal/repository/gorm"
  8. "github.com/porter-dev/porter/server/api"
  9. adapter "github.com/porter-dev/porter/internal/adapter"
  10. sessionstore "github.com/porter-dev/porter/internal/auth"
  11. "github.com/porter-dev/porter/internal/config"
  12. lr "github.com/porter-dev/porter/internal/logger"
  13. vr "github.com/porter-dev/porter/internal/validator"
  14. "github.com/porter-dev/porter/server/router"
  15. )
  16. func main() {
  17. appConf := config.FromEnv()
  18. logger := lr.NewConsole(appConf.Debug)
  19. db, err := adapter.New(&appConf.Db)
  20. if err != nil {
  21. logger.Fatal().Err(err).Msg("")
  22. return
  23. }
  24. repo := gorm.NewRepository(db)
  25. // declare as Store interface (methods Get, New, Save)
  26. var store sessions.Store
  27. store, _ = sessionstore.NewStore(repo, appConf.Server)
  28. validator := vr.New()
  29. a := api.New(logger, repo, validator, store, appConf.Server.CookieName, false)
  30. appRouter := router.New(a, store, appConf.Server.CookieName)
  31. address := fmt.Sprintf(":%d", appConf.Server.Port)
  32. logger.Info().Msgf("Starting server %v", address)
  33. s := &http.Server{
  34. Addr: address,
  35. Handler: appRouter,
  36. ReadTimeout: appConf.Server.TimeoutRead,
  37. WriteTimeout: appConf.Server.TimeoutWrite,
  38. IdleTimeout: appConf.Server.TimeoutIdle,
  39. }
  40. if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed {
  41. log.Fatal("Server startup failed")
  42. }
  43. }