Skip to content

Commit

Permalink
feat(be): use env vars for db options
Browse files Browse the repository at this point in the history
  • Loading branch information
fiftin committed Jan 27, 2023
1 parent 37f7295 commit f3ccd4c
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 15 deletions.
15 changes: 15 additions & 0 deletions lib/AnsiblePlaybook.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,21 @@ func (p AnsiblePlaybook) makeCmd(command string, args []string, environmentVars
cmd.Env = append(cmd.Env, *environmentVars...)
}

sensitiveEnvs := []string{
"SEMAPHORE_ACCESS_KEY_ENCRYPTION",
"SEMAPHORE_ADMIN_PASSWORD",
"SEMAPHORE_DB_USER",
"SEMAPHORE_DB_NAME",
"SEMAPHORE_DB_HOST",
"SEMAPHORE_DB_PASS",
"SEMAPHORE_LDAP_PASSWORD",
}

// Remove sensitive env variables from cmd process
for _, env := range sensitiveEnvs {
cmd.Env = append(cmd.Env, env+"=")
}

return cmd
}

Expand Down
51 changes: 36 additions & 15 deletions util/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -300,23 +300,44 @@ func (d *DbConfig) HasSupportMultipleDatabases() bool {
}

func (d *DbConfig) GetConnectionString(includeDbName bool) (connectionString string, err error) {
dbName := os.Getenv("SEMAPHORE_DB_NAME")
dbUser := os.Getenv("SEMAPHORE_DB_USER")
dbPass := os.Getenv("SEMAPHORE_DB_PASS")
dbHost := os.Getenv("SEMAPHORE_DB_HOST")

if dbUser == "" {
dbUser = d.Username
}

if dbPass == "" {
dbPass = d.Username
}

if dbHost == "" {
dbHost = d.Hostname
}

if dbName == "" {
dbName = d.DbName
}

switch d.Dialect {
case DbDriverBolt:
connectionString = d.Hostname
connectionString = dbHost
case DbDriverMySQL:
if includeDbName {
connectionString = fmt.Sprintf(
"%s:%s@tcp(%s)/%s",
d.Username,
d.Password,
d.Hostname,
d.DbName)
dbUser,
dbPass,
dbHost,
dbName)
} else {
connectionString = fmt.Sprintf(
"%s:%s@tcp(%s)/",
d.Username,
d.Password,
d.Hostname)
dbUser,
dbPass,
dbHost)
}
options := map[string]string{
"parseTime": "true",
Expand All @@ -330,16 +351,16 @@ func (d *DbConfig) GetConnectionString(includeDbName bool) (connectionString str
if includeDbName {
connectionString = fmt.Sprintf(
"postgres://%s:%s@%s/%s",
d.Username,
url.QueryEscape(d.Password),
d.Hostname,
d.DbName)
dbUser,
url.QueryEscape(dbPass),
dbHost,
dbName)
} else {
connectionString = fmt.Sprintf(
"postgres://%s:%s@%s",
d.Username,
url.QueryEscape(d.Password),
d.Hostname)
dbUser,
url.QueryEscape(dbPass),
dbHost)
}
connectionString += mapToQueryString(d.Options)
default:
Expand Down

0 comments on commit f3ccd4c

Please sign in to comment.