Skip to content

Commit

Permalink
fix: secure and improve Transport URL support
Browse files Browse the repository at this point in the history
  • Loading branch information
dunglas committed Jan 18, 2021
1 parent 309e28f commit 496b5d4
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 6 deletions.
8 changes: 4 additions & 4 deletions bolt_transport.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func NewBoltTransport(u *url.URL, l Logger, tss *TopicSelectorStore) (Transport,
if sizeParameter != "" {
size, err = strconv.ParseUint(sizeParameter, 10, 64)
if err != nil {
return nil, &ErrTransport{u.String(), fmt.Sprintf(`invalid "size" parameter %q`, sizeParameter), err}
return nil, &ErrTransport{u.Redacted(), fmt.Sprintf(`invalid "size" parameter %q`, sizeParameter), err}
}
}

Expand All @@ -61,7 +61,7 @@ func NewBoltTransport(u *url.URL, l Logger, tss *TopicSelectorStore) (Transport,
if cleanupFrequencyParameter != "" {
cleanupFrequency, err = strconv.ParseFloat(cleanupFrequencyParameter, 64)
if err != nil {
return nil, &ErrTransport{u.String(), fmt.Sprintf(`invalid "cleanup_frequency" parameter %q`, cleanupFrequencyParameter), err}
return nil, &ErrTransport{u.Redacted(), fmt.Sprintf(`invalid "cleanup_frequency" parameter %q`, cleanupFrequencyParameter), err}
}
}

Expand All @@ -70,12 +70,12 @@ func NewBoltTransport(u *url.URL, l Logger, tss *TopicSelectorStore) (Transport,
path = u.Host // relative path (bolt://path.db)
}
if path == "" {
return nil, &ErrTransport{u.String(), "missing path", err}
return nil, &ErrTransport{u.Redacted(), "missing path", err}
}

db, err := bolt.Open(path, 0o600, &bolt.Options{Timeout: 1 * time.Second})
if err != nil {
return nil, &ErrTransport{dsn: u.String(), err: err}
return nil, &ErrTransport{dsn: u.Redacted(), err: err}
}

return &BoltTransport{
Expand Down
4 changes: 4 additions & 0 deletions caddy/caddy.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,10 @@ func (m *Mercure) Provision(ctx caddy.Context) error { //nolint:funlen
return nil, fmt.Errorf("invalid transport url: %w", err)
}

if m.WriteTimeout != 0 {
u.Query().Set("write_timeout", time.Duration(m.WriteTimeout).String())
}

transport, err := mercure.NewTransport(u, m.logger, tss)
if err != nil {
return nil, err //nolint:wrapcheck
Expand Down
2 changes: 1 addition & 1 deletion caddy/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ require (
github.com/dgraph-io/badger v1.6.2 // indirect
github.com/dgraph-io/badger/v2 v2.2007.2 // indirect
github.com/dlclark/regexp2 v1.4.0 // indirect
github.com/dunglas/mercure v0.11.0-rc.2
github.com/dunglas/mercure v0.11.0-rc.3
github.com/golang/snappy v0.0.2 // indirect
github.com/google/uuid v1.1.4 // indirect
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect
Expand Down
2 changes: 1 addition & 1 deletion transport.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func NewTransport(u *url.URL, l Logger, tss *TopicSelectorStore) (Transport, err
transportFactoriesMu.RUnlock()

if !ok {
return nil, &ErrTransport{dsn: u.String(), msg: "no such transport available"}
return nil, &ErrTransport{dsn: u.Redacted(), msg: "no such transport available"}
}

return f(u, l, nil)
Expand Down

0 comments on commit 496b5d4

Please sign in to comment.