This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
nats-cli/nats.go
2018-01-16 15:25:12 -05:00

52 lines
1,004 B
Go

package nats_cli
import (
"errors"
ctls "crypto/tls"
"github.com/nats-io/nats"
)
func Connect(url string, tls bool, certPath string, keyPath string, caCertPath string, verify bool) (*nats.Conn, error) {
if tls {
if len(certPath) == 0 {
return nil, errors.New("tlscert not set")
}
if len(keyPath) == 0 {
return nil, errors.New("tlskey not set")
}
cert := nats.ClientCert(certPath, keyPath)
var conn *nats.Conn
var err error
tlsverify := func(o *nats.Options) error {
if o.TLSConfig != nil {
o.TLSConfig.InsecureSkipVerify = !verify
} else {
o.TLSConfig = &ctls.Config{InsecureSkipVerify: !verify}
}
return nil
}
if len(caCertPath) > 0 {
conn, err = nats.Connect(url, nats.RootCAs(caCertPath), cert, tlsverify)
} else {
conn, err = nats.Connect(url, cert, tlsverify)
}
if err != nil {
return nil, err
}
return conn, nil
} else {
conn, err := nats.Connect(url)
if err != nil {
return nil, err
}
return conn, nil
}
}