nsfwapp/backend/postgres_url.go
2026-03-03 10:11:30 +01:00

48 lines
957 B
Go

// backend\postgres_url.go
package main
import (
"net/url"
"strings"
)
// stripPasswordFromPostgresURL:
// - wenn URL ein Passwort hat, wird es extrahiert und URL ohne Passwort zurückgegeben
// - unterstützt postgres:// und postgresql://
func stripPasswordFromPostgresURL(raw string) (sanitized string, password string) {
raw = strings.TrimSpace(raw)
if raw == "" {
return "", ""
}
low := strings.ToLower(raw)
if !strings.HasPrefix(low, "postgres://") && !strings.HasPrefix(low, "postgresql://") {
// nicht anfassen, evtl. nutzt du später andere DSNs
return raw, ""
}
u, err := url.Parse(raw)
if err != nil {
return raw, ""
}
if u.User == nil {
return raw, ""
}
user := u.User.Username()
pw, hasPw := u.User.Password()
if hasPw && strings.TrimSpace(pw) != "" {
password = pw
}
// Sanitized: nur user ohne password
if user != "" {
u.User = url.User(user)
} else {
u.User = nil
}
return u.String(), password
}