mirror of
https://github.com/juanfont/headscale.git
synced 2026-10-26 16:26:50 +09:00
* db: quote postgres connection parameters The DSN was built by string concatenation, so a password containing a space, quote or backslash truncated it or injected extra parameters. Build it with libpq keyword/value quoting and keep the password out of the startup log line. * db: mark the DSN test fixture password as not a credential gosec G101 flags the literal assigned to Pass in TestBuildPostgresDSN. The value exists to exercise quoting of spaces, quotes and backslashes and is not a secret. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * types, db: build the postgres DSN as a URL from PostgresConfig Review feedback: move the DSN construction onto types.PostgresConfig as DSN(), so the database layer calls cfg.Postgres.DSN() and logs redacted.DSN(), and build it as a postgres:// URL with net/url instead of hand-rolled libpq quoting. Unix socket directories travel as the host query parameter; bare IPv6 literals are bracketed. Tests parse the URL back and check each component rather than the encoded string. * types: silence gosec on the whole DSN test fixtures gosec reports G101 on the composite literal that holds a Pass value, not on the Pass line itself, so the previous nolint did not cover it. Place the directive before each fixture element. * db: drop imports left unused by the merge with main The merge of main reintroduced the slices and strconv imports in db.go, but the postgres DSN is now built by PostgresConfig.DSN and nothing in the file uses them, so the package failed to compile and every CI check failed on typecheck. Also link the CHANGELOG entry to the PR. * db: restore tests and formatting lost in the rebase onto main Resolving the rebase conflicts in db_test.go kept this branch's side and dropped the credential tests main had added, including the requireCredentialConstraints helper another test still calls, so the db test package no longer compiled. Restore the file from main; this branch does not change it. The resolution also indented the package clause in db.go and removed the blank line between the standard library and module imports. --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>