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)
conn, err = nats.Connect(url, cert, tlsverify)
if err != nil {
return nil, err
return conn, nil
conn, err := nats.Connect(url)