func (o Options) NewClient() (*Client, error) {
	host := o.Host
	c, err := connect(host, o.User, o.Password)
	if err != nil {
		return nil, err
	}

	if strings.LastIndex(o.Host, ":") > 0 {
		host = host[:strings.LastIndex(o.Host, ":")]
	}

	client := new(Client)
	if o.NoTLS {
		client.conn = c
	} else {
		var tlsconn *tls.Conn
		if o.TLSConfig != nil {
			tlsconn = tls.Client(c, o.TLSConfig)
		} else {
			DefaultConfig.ServerName = host
			newconfig := DefaultConfig
			newconfig.ServerName = host
			tlsconn = tls.Client(c, &newconfig)
		}
		if err = tlsconn.Handshake(); err != nil {
			return nil, err
		}
		insecureSkipVerify := DefaultConfig.InsecureSkipVerify
		if o.TLSConfig != nil {
			insecureSkipVerify = o.TLSConfig.InsecureSkipVerify
		}
		if !insecureSkipVerify {
			if err = tlsconn.VerifyHostname(host); err != nil {
				return nil, err
			}
		}
		client.conn = tlsconn
	}

	if err := client.init(&o); err != nil {
		client.Close()
		return nil, err
	}

	return client, nil
}
func (o Options) NewClient() (*Client, error) {
	host := o.Host
	c, err := connect(host, o.User, o.Password)
	if err != nil {
		return nil, err
	}

	if strings.LastIndex(o.Host, ":") > 0 {
		host = host[:strings.LastIndex(o.Host, ":")]
	}

	client := new(Client)
	if o.NoTLS {
		client.conn = c
	} else {
		var tlsconn *tls.Conn
		if o.TLSConfig != nil {
			tlsconn = tls.Client(c, o.TLSConfig)
		} else {
			DefaultConfig.ServerName = host
			newconfig := DefaultConfig
			newconfig.ServerName = host
			tlsconn = tls.Client(c, &newconfig)
		}
		if err = tlsconn.Handshake(); err != nil {
			return nil, err
		}
		insecureSkipVerify := DefaultConfig.InsecureSkipVerify
		if o.TLSConfig != nil {
			insecureSkipVerify = o.TLSConfig.InsecureSkipVerify
		}
		if !insecureSkipVerify {
			if err = tlsconn.VerifyHostname(host); err != nil {
				return nil, err
			}
		}
		client.conn = tlsconn
	}

	if err := client.init(&o); err != nil {
		client.Close()
		return nil, err
	}

	return client, nil
}
func ( o Options ) NewClient ( ) ( * Client , error ) { host := o . Host c , err := connect ( host , o . User , o . Password ) if err != nil { return nil , err } if strings . LastIndex ( o . Host , " " ) > 0 { host = host [ : strings . LastIndex ( o . Host , " " ) ] } client := new ( Client ) if o . NoTLS { client . conn = c } else { var tlsconn * tls . Conn if o . TLSConfig != nil { tlsconn = tls . Client ( c , o . TLSConfig ) } else { DefaultConfig . ServerName = host newconfig := DefaultConfig newconfig . ServerName = host tlsconn = tls . Client ( c , & newconfig ) } if err = tlsconn . Handshake ( ) ; err != nil { return nil , err } insecureSkipVerify := DefaultConfig . InsecureSkipVerify if o . TLSConfig != nil { insecureSkipVerify = o . TLSConfig . InsecureSkipVerify } if ! insecureSkipVerify { if err = tlsconn . VerifyHostname ( host ) ; err != nil { return nil , err } } client . conn = tlsconn } if err := client . init ( & o ) ; err != nil { client . Close ( ) return nil , err } return client , nil }
// NewClient establishes a new Client connection based on a set of Options.
NewClient establishes a new Client connection based on a set of Options .