packer-cn/vendor/github.com/masterzen/winrm/endpoint.go

64 lines
1.6 KiB
Go

package winrm
import (
"fmt"
"time"
)
// Endpoint struct holds configurations
// for the server endpoint
type Endpoint struct {
// host name or ip address
Host string
// port to determine if it's http or https default
// winrm ports (http:5985, https:5986).Versions
// of winrm can be customized to listen on other ports
Port int
// set the flag true for https connections
HTTPS bool
// set the flag true for skipping ssl verifications
Insecure bool
// if set, used to verify the hostname on the returned certificate
TLSServerName string
// pointer pem certs, and key
CACert []byte // cert auth to intdetify the server cert
Key []byte // public key for client auth connections
Cert []byte // cert for client auth connections
// duration timeout for the underling tcp conn(http/https base protocol)
// if the time exceeds the connection is cloded/timeouts
Timeout time.Duration
}
func (ep *Endpoint) url() string {
var scheme string
if ep.HTTPS {
scheme = "https"
} else {
scheme = "http"
}
return fmt.Sprintf("%s://%s:%d/wsman", scheme, ep.Host, ep.Port)
}
// NewEndpoint returns new pointer to struct Endpoint, with a default 60s response header timeout
func NewEndpoint(host string, port int, https bool, insecure bool, Cacert, cert, key []byte, timeout time.Duration) *Endpoint {
endpoint := &Endpoint{
Host: host,
Port: port,
HTTPS: https,
Insecure: insecure,
CACert: Cacert,
Key: key,
Cert: cert,
}
// if the timeout was set
if timeout != 0 {
endpoint.Timeout = timeout
} else {
// assign default 60sec timeout
endpoint.Timeout = 60 * time.Second
}
return endpoint
}