mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-04-10 18:48:44 +00:00
49 lines
865 B
Go
49 lines
865 B
Go
package config
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net"
|
|
)
|
|
|
|
var (
|
|
ErrCantBindToPort = errors.New("bind: can't bind to host:port")
|
|
)
|
|
|
|
type Bind struct {
|
|
HTTP string `hcl:"http"`
|
|
HTTPS string `hcl:"https"`
|
|
Metrics string `hcl:"metrics"`
|
|
}
|
|
|
|
func (b *Bind) Valid() error {
|
|
var errs []error
|
|
|
|
ln, err := net.Listen("tcp", b.HTTP)
|
|
if err != nil {
|
|
errs = append(errs, fmt.Errorf("%w %q: %w", ErrCantBindToPort, b.HTTP, err))
|
|
} else {
|
|
defer ln.Close()
|
|
}
|
|
|
|
ln, err = net.Listen("tcp", b.HTTPS)
|
|
if err != nil {
|
|
errs = append(errs, fmt.Errorf("%w %q: %w", ErrCantBindToPort, b.HTTPS, err))
|
|
} else {
|
|
defer ln.Close()
|
|
}
|
|
|
|
ln, err = net.Listen("tcp", b.Metrics)
|
|
if err != nil {
|
|
errs = append(errs, fmt.Errorf("%w %q: %w", ErrCantBindToPort, b.Metrics, err))
|
|
} else {
|
|
defer ln.Close()
|
|
}
|
|
|
|
if len(errs) != 0 {
|
|
return errors.Join(errs...)
|
|
}
|
|
|
|
return nil
|
|
}
|