master
go 41 lines 724 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package oracledb
4
5 import (
6 "errors"
7 "net/url"
8 "strings"
9
10 goora "github.com/sijms/go-ora/v2"
11 )
12
13 func (c *Collector) validateDSN() (string, error) {
14 if c.DSN == "" {
15 return "", errors.New("dsn required but not set")
16 }
17 if _, err := goora.ParseConfig(c.DSN); err != nil {
18 return "", err
19 }
20
21 u, err := url.Parse(c.DSN)
22 if err != nil {
23 return "", err
24 }
25
26 if u.User == nil {
27 return u.String(), nil
28 }
29
30 var user, pass string
31 if user = u.User.Username(); user != "" {
32 user = strings.Repeat("x", len(user))
33 }
34 if pass, _ = u.User.Password(); pass != "" {
35 pass = strings.Repeat("x", len(pass))
36 }
37
38 u.User = url.UserPassword(user, pass)
39
40 return u.String(), nil
41 }