envconfs.go 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package env
  2. import "time"
  3. // ServerConf is the server configuration
  4. type ServerConf struct {
  5. Debug bool `env:"DEBUG,default=false"`
  6. ServerURL string `env:"SERVER_URL,default=http://localhost:8080"`
  7. Port int `env:"SERVER_PORT,default=8080"`
  8. StaticFilePath string `env:"STATIC_FILE_PATH,default=/porter/static"`
  9. CookieName string `env:"COOKIE_NAME,default=porter"`
  10. CookieSecrets []string `env:"COOKIE_SECRETS,default=random_hash_key_;random_block_key"`
  11. TokenGeneratorSecret string `env:"TOKEN_GENERATOR_SECRET,default=secret"`
  12. TimeoutRead time.Duration `env:"SERVER_TIMEOUT_READ,default=5s"`
  13. TimeoutWrite time.Duration `env:"SERVER_TIMEOUT_WRITE,default=10s"`
  14. TimeoutIdle time.Duration `env:"SERVER_TIMEOUT_IDLE,default=15s"`
  15. IsLocal bool `env:"IS_LOCAL,default=false"`
  16. IsTesting bool `env:"IS_TESTING,default=false"`
  17. AppRootDomain string `env:"APP_ROOT_DOMAIN,default=porter.run"`
  18. DefaultApplicationHelmRepoURL string `env:"HELM_APP_REPO_URL,default=https://charts.dev.getporter.dev"`
  19. DefaultAddonHelmRepoURL string `env:"HELM_ADD_ON_REPO_URL,default=https://chart-addons.dev.getporter.dev"`
  20. BasicLoginEnabled bool `env:"BASIC_LOGIN_ENABLED,default=true"`
  21. GithubClientID string `env:"GITHUB_CLIENT_ID"`
  22. GithubClientSecret string `env:"GITHUB_CLIENT_SECRET"`
  23. GithubLoginEnabled bool `env:"GITHUB_LOGIN_ENABLED,default=true"`
  24. GithubAppClientID string `env:"GITHUB_APP_CLIENT_ID"`
  25. GithubAppClientSecret string `env:"GITHUB_APP_CLIENT_SECRET"`
  26. GithubAppName string `env:"GITHUB_APP_NAME"`
  27. GithubAppWebhookSecret string `env:"GITHUB_APP_WEBHOOK_SECRET"`
  28. GithubAppID string `env:"GITHUB_APP_ID"`
  29. GithubAppSecretPath string `env:"GITHUB_APP_SECRET_PATH"`
  30. GoogleClientID string `env:"GOOGLE_CLIENT_ID"`
  31. GoogleClientSecret string `env:"GOOGLE_CLIENT_SECRET"`
  32. GoogleRestrictedDomain string `env:"GOOGLE_RESTRICTED_DOMAIN"`
  33. SendgridAPIKey string `env:"SENDGRID_API_KEY"`
  34. SendgridPWResetTemplateID string `env:"SENDGRID_PW_RESET_TEMPLATE_ID"`
  35. SendgridPWGHTemplateID string `env:"SENDGRID_PW_GH_TEMPLATE_ID"`
  36. SendgridVerifyEmailTemplateID string `env:"SENDGRID_VERIFY_EMAIL_TEMPLATE_ID"`
  37. SendgridProjectInviteTemplateID string `env:"SENDGRID_INVITE_TEMPLATE_ID"`
  38. SendgridSenderEmail string `env:"SENDGRID_SENDER_EMAIL"`
  39. SlackClientID string `env:"SLACK_CLIENT_ID"`
  40. SlackClientSecret string `env:"SLACK_CLIENT_SECRET"`
  41. DOClientID string `env:"DO_CLIENT_ID"`
  42. DOClientSecret string `env:"DO_CLIENT_SECRET"`
  43. ProvisionerImageTag string `env:"PROV_IMAGE_TAG,default=latest"`
  44. ProvisionerImagePullSecret string `env:"PROV_IMAGE_PULL_SECRET"`
  45. SegmentClientKey string `env:"SEGMENT_CLIENT_KEY"`
  46. SentryDSN string `env:"SENTRY_DSN"`
  47. ProvisionerCluster string `env:"PROVISIONER_CLUSTER"`
  48. IngressCluster string `env:"INGRESS_CLUSTER"`
  49. SelfKubeconfig string `env:"SELF_KUBECONFIG"`
  50. WelcomeFormWebhook string `env:"WELCOME_FORM_WEBHOOK"`
  51. }
  52. // DBConf is the database configuration: if generated from environment variables,
  53. // it assumes the default docker-compose configuration is used
  54. type DBConf struct {
  55. // EncryptionKey is the key to use for sensitive values that are encrypted at rest
  56. EncryptionKey string `env:"ENCRYPTION_KEY,default=__random_strong_encryption_key__"`
  57. Host string `env:"DB_HOST,default=postgres"`
  58. Port int `env:"DB_PORT,default=5432"`
  59. Username string `env:"DB_USER,default=porter"`
  60. Password string `env:"DB_PASS,default=porter"`
  61. DbName string `env:"DB_NAME,default=porter"`
  62. ForceSSL bool `env:"DB_FORCE_SSL,default=false"`
  63. SQLLite bool `env:"SQL_LITE,default=false"`
  64. SQLLitePath string `env:"SQL_LITE_PATH,default=/porter/porter.db"`
  65. }
  66. // RedisConf is the redis config required for the provisioner container
  67. type RedisConf struct {
  68. // if redis should be used
  69. Enabled bool `env:"REDIS_ENABLED,default=true"`
  70. Host string `env:"REDIS_HOST,default=redis"`
  71. Port string `env:"REDIS_PORT,default=6379"`
  72. Username string `env:"REDIS_USER"`
  73. Password string `env:"REDIS_PASS"`
  74. DB int `env:"REDIS_DB,default=0"`
  75. }