Skip to content

Commit

Permalink
read ssl mode/cert from config file, uses connstring from file if pre…
Browse files Browse the repository at this point in the history
…sent
  • Loading branch information
abs3ntdev committed Mar 25, 2023
1 parent 4512f3d commit 9ca7c41
Showing 1 changed file with 24 additions and 3 deletions.
27 changes: 24 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ var newMigrationText = `-- Write your migrate up statements here

type Config struct {
ConnConfig pgx.ConnConfig
ConnString string
SslMode string
SslRootCert string
VersionTable string
Expand Down Expand Up @@ -698,8 +699,27 @@ func Psql(cmd *cobra.Command, args []string) {
if psql_path := os.Getenv("PSQL_BIN_PATH"); psql_path != "" {
psql_bin = psql_path
}
constring := fmt.Sprintf("postgres://%s:%s@%s:%d/%s", config.ConnConfig.User, config.ConnConfig.Password, config.ConnConfig.Host, config.ConnConfig.Port, config.ConnConfig.Database)
com := exec.Command(psql_bin, constring)

connstring := config.ConnString
if connstring == "" {
options := ""
if ssl_mode := config.SslMode; ssl_mode != "" {
options += fmt.Sprintf("sslmode=%s&", ssl_mode)
}
if ssl_cert := config.SslRootCert; ssl_cert != "" {
options += fmt.Sprintf("sslcert=%s", ssl_cert)
}
connstring = fmt.Sprintf(
"postgres://%s:%s@%s:%d/%s?%s",
config.ConnConfig.User,
config.ConnConfig.Password,
config.ConnConfig.Host,
config.ConnConfig.Port,
config.ConnConfig.Database,
options,
)
}
com := exec.Command(psql_bin, connstring)
com.Stdin = os.Stdin
com.Stdout = os.Stdout
com.Stderr = os.Stderr
Expand Down Expand Up @@ -983,6 +1003,8 @@ func appendConfigFromFile(config *Config, path string) error {
}

if connString, ok := file.Get("database", "conn_string"); ok {
config.ConnString = connString
fmt.Println(config.ConnString)
if connConfig, err := pgx.ParseConfig(connString); err == nil {
config.ConnConfig = *connConfig
} else {
Expand Down Expand Up @@ -1052,7 +1074,6 @@ func appendConfigFromFile(config *Config, path string) error {
if password, ok := file.Get("ssh-tunnel", "password"); ok {
config.SSHConnConfig.Password = password
}

return nil
}

Expand Down

0 comments on commit 9ca7c41

Please sign in to comment.