| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- //go:build ee
- // +build ee
- package main
- import (
- "os"
- "github.com/fatih/color"
- "github.com/porter-dev/porter/api/server/shared/config/envloader"
- "github.com/porter-dev/porter/internal/adapter"
- "github.com/porter-dev/porter/internal/notifier"
- "github.com/porter-dev/porter/internal/notifier/sendgrid"
- "github.com/porter-dev/porter/internal/oauth"
- "github.com/porter-dev/porter/internal/repository"
- "github.com/porter-dev/porter/internal/repository/credentials"
- pgorm "github.com/porter-dev/porter/internal/repository/gorm"
- "github.com/spf13/cobra"
- "golang.org/x/oauth2"
- "gorm.io/gorm"
- "github.com/porter-dev/porter/ee/integrations/vault"
- lr "github.com/porter-dev/porter/pkg/logger"
- )
- var db *gorm.DB
- var repo repository.Repository
- var doConf *oauth2.Config
- var userNotifier notifier.UserNotifier
- var envName string
- var notifyEmail string
- func main() {
- notifyEmail = os.Getenv("NOTIFY_EMAIL")
- // initialize the database
- logger := lr.NewConsole(true)
- envConf, err := envloader.FromEnv()
- if err != nil {
- logger.Fatal().Err(err).Msg("could not load env conf")
- return
- }
- db, err = adapter.New(envConf.DBConf)
- if err != nil {
- logger.Fatal().Err(err).Msg("could not connect to the database")
- return
- }
- var key [32]byte
- for i, b := range []byte(envConf.DBConf.EncryptionKey) {
- key[i] = b
- }
- var credBackend credentials.CredentialStorage
- if envConf.DBConf.VaultAPIKey != "" && envConf.DBConf.VaultServerURL != "" && envConf.DBConf.VaultPrefix != "" {
- credBackend = vault.NewClient(
- envConf.DBConf.VaultServerURL,
- envConf.DBConf.VaultAPIKey,
- envConf.DBConf.VaultPrefix,
- )
- }
- repo = pgorm.NewRepository(db, &key, credBackend)
- if envConf.ServerConf.DOClientID != "" && envConf.ServerConf.DOClientSecret != "" {
- doConf = oauth.NewDigitalOceanClient(&oauth.Config{
- ClientID: envConf.ServerConf.DOClientID,
- ClientSecret: envConf.ServerConf.DOClientSecret,
- Scopes: []string{"read", "write"},
- BaseURL: envConf.ServerConf.ServerURL,
- })
- }
- userNotifier = ¬ifier.EmptyUserNotifier{}
- if envConf.ServerConf.SendgridAPIKey != "" && envConf.ServerConf.SendgridSenderEmail != "" {
- userNotifier = sendgrid.NewUserNotifier(&sendgrid.Client{
- APIKey: envConf.ServerConf.SendgridAPIKey,
- SenderEmail: envConf.ServerConf.SendgridSenderEmail,
- })
- }
- envName = envConf.ServerConf.InstanceName
- if envName == "" {
- envName = "test"
- }
- // call the admin CLI command with the database connection
- if err := adminCmd.Execute(); err != nil {
- color.New(color.FgRed).Println(err)
- os.Exit(1)
- }
- }
- // adminCmd represents the base command when called without any subcommands
- var adminCmd = &cobra.Command{
- Use: "admin",
- Short: "Admin command-line tool for managing a Porter instance.",
- }
|