main.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "github.com/gorilla/sessions"
  7. "github.com/porter-dev/porter/internal/oauth"
  8. "github.com/porter-dev/porter/internal/repository/gorm"
  9. "github.com/porter-dev/porter/server/api"
  10. "github.com/porter-dev/porter/internal/adapter"
  11. sessionstore "github.com/porter-dev/porter/internal/auth"
  12. "github.com/porter-dev/porter/internal/config"
  13. lr "github.com/porter-dev/porter/internal/logger"
  14. vr "github.com/porter-dev/porter/internal/validator"
  15. "github.com/porter-dev/porter/server/router"
  16. )
  17. func main() {
  18. appConf := config.FromEnv()
  19. logger := lr.NewConsole(appConf.Debug)
  20. db, err := adapter.New(&appConf.Db)
  21. if err != nil {
  22. logger.Fatal().Err(err).Msg("")
  23. return
  24. }
  25. var key [32]byte
  26. for i, b := range []byte(appConf.Db.EncryptionKey) {
  27. key[i] = b
  28. }
  29. repo := gorm.NewRepository(db, &key)
  30. // declare as Store interface (methods Get, New, Save)
  31. var store sessions.Store
  32. store, _ = sessionstore.NewStore(repo, appConf.Server)
  33. validator := vr.New()
  34. a := api.New(
  35. logger,
  36. nil,
  37. repo,
  38. validator,
  39. store,
  40. appConf.Server.CookieName,
  41. false,
  42. &oauth.Config{
  43. ClientID: appConf.Server.GithubClientID,
  44. ClientSecret: appConf.Server.GithubClientSecret,
  45. Scopes: []string{"repo", "user", "read:user"},
  46. BaseURL: appConf.Server.ServerURL,
  47. },
  48. )
  49. appRouter := router.New(a, store, appConf.Server.CookieName, appConf.Server.StaticFilePath, repo)
  50. address := fmt.Sprintf(":%d", appConf.Server.Port)
  51. logger.Info().Msgf("Starting server %v", address)
  52. s := &http.Server{
  53. Addr: address,
  54. Handler: appRouter,
  55. ReadTimeout: appConf.Server.TimeoutRead,
  56. WriteTimeout: appConf.Server.TimeoutWrite,
  57. IdleTimeout: appConf.Server.TimeoutIdle,
  58. }
  59. if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed {
  60. log.Fatal("Server startup failed", err)
  61. }
  62. }