diff --git a/server/public/utils/sql/sql_utils.go b/server/public/utils/sql/sql_utils.go index 337804ad1dd..1434ade67aa 100644 --- a/server/public/utils/sql/sql_utils.go +++ b/server/public/utils/sql/sql_utils.go @@ -108,11 +108,19 @@ func SanitizeDataSource(driverName, dataSource string) (string, error) { return "", err } u.User = url.UserPassword("****", "****") + + // Remove username and password from query string params := u.Query() params.Del("user") params.Del("password") u.RawQuery = params.Encode() - return u.String(), nil + + // Unescape the URL to make it human-readable + out, err := url.QueryUnescape(u.String()) + if err != nil { + return "", err + } + return out, nil case model.DatabaseDriverMysql: cfg, err := mysql.ParseDSN(dataSource) if err != nil { diff --git a/server/public/utils/sql/sql_utils_test.go b/server/public/utils/sql/sql_utils_test.go index 30a5818220b..d107f658c66 100644 --- a/server/public/utils/sql/sql_utils_test.go +++ b/server/public/utils/sql/sql_utils_test.go @@ -72,13 +72,21 @@ func TestSanitizeDataSource(t *testing.T) { Original string Sanitized string }{ + { + "", + "//****:****@", + }, + { + "postgres://mmuser:mostest@localhost", + "postgres://****:****@localhost", + }, { "postgres://mmuser:mostest@localhost/dummy?sslmode=disable", - "postgres://%2A%2A%2A%2A:%2A%2A%2A%2A@localhost/dummy?sslmode=disable", + "postgres://****:****@localhost/dummy?sslmode=disable", }, { "postgres://localhost/dummy?sslmode=disable&user=mmuser&password=mostest", - "postgres://%2A%2A%2A%2A:%2A%2A%2A%2A@localhost/dummy?sslmode=disable", + "postgres://****:****@localhost/dummy?sslmode=disable", }, } driver := model.DatabaseDriverPostgres