diff --git a/Makefile b/Makefile index a7dd1015..0b0912a6 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ VERSION=$(RELEASE_VERSION) endif endif -GO_LDFLAGS=-ldflags "-X github.com/Venafi/vcert/v5.versionString=$(VERSION) -X github.com/Venafi/vcert/v5.versionBuildTimeStamp=`date -u +%Y%m%d.%H%M%S` -s -w" +GO_LDFLAGS=-ldflags "-X github.com/Venafi/vcert/v5.versionString=$(VERSION) -X github.com/Venafi/vcert/v5.versionBuildTimeStamp=`date -u +%Y%m%d.%H%M%S` -X github.com/Venafi/vcert/v5/pkg/util.versionString=$(VERSION) -s -w" version: echo "$(VERSION)" diff --git a/cmd/vcert/config.go b/cmd/vcert/config.go index 7336b413..b2f6afb8 100644 --- a/cmd/vcert/config.go +++ b/cmd/vcert/config.go @@ -130,6 +130,7 @@ func buildConfigFake(_ *commandFlags) (*vcert.Config, error) { return &vcert.Config{ ConnectorType: endpoint.ConnectorTypeFake, Credentials: &endpoint.Authentication{}, + UserAgent: vcert.GetUserAgentCLI(), }, nil } @@ -145,6 +146,7 @@ func buildConfigTPP(commandName string, flags *commandFlags) (*vcert.Config, err ConnectionTrust: "", LogVerbose: false, Client: nil, + UserAgent: vcert.GetUserAgentCLI(), } if commandName == commandGetCredName { @@ -168,6 +170,7 @@ func buildConfigVaaS(flags *commandFlags) (*vcert.Config, error) { ExternalJWT: flags.externalJWT, TokenURL: flags.tokenURL, }, + UserAgent: vcert.GetUserAgentCLI(), }, nil } @@ -188,5 +191,6 @@ func buildConfigFirefly(flags *commandFlags) (*vcert.Config, error) { Audience: flags.audience, }, }, + UserAgent: vcert.GetUserAgentCLI(), }, nil } diff --git a/cmd/vcert/main.go b/cmd/vcert/main.go index fecc6fe0..6c72e6a6 100644 --- a/cmd/vcert/main.go +++ b/cmd/vcert/main.go @@ -136,7 +136,7 @@ COPYRIGHT: SUPPORT: opensource@venafi.com {{end}} -`, vcert.GetFormattedVersionString(), vcert.GetFormatedBuildTimeStamp()) +`, vcert.GetFormattedVersionString(), vcert.GetFormattedBuildTimeStamp()) cli.CommandHelpTemplate = `NAME: {{.HelpName}} - {{.Usage}} diff --git a/config.go b/config.go index 6788c429..68249ff5 100644 --- a/config.go +++ b/config.go @@ -182,6 +182,7 @@ func LoadConfigFromFile(path, section string) (cfg Config, err error) { cfg.ConnectorType = connectorType cfg.Credentials = auth cfg.BaseUrl = baseUrl + cfg.UserAgent = GetUserAgentCLI() return } diff --git a/pkg/endpoint/endpoint.go b/pkg/endpoint/endpoint.go index e5f954d4..d9326429 100644 --- a/pkg/endpoint/endpoint.go +++ b/pkg/endpoint/endpoint.go @@ -367,7 +367,7 @@ func (p *Policy) ValidateCertificateRequest(request *certificate.Request) error return nil } -// SimpleValidateCertificateRequest functions just check Common Name and SANs mathching with policies +// SimpleValidateCertificateRequest functions just check Common Name and SANs matching with policies func (p *Policy) SimpleValidateCertificateRequest(request certificate.Request) error { csr := request.GetCSR() const ( diff --git a/pkg/playbook/app/vcertutil/helper.go b/pkg/playbook/app/vcertutil/helper.go index 24a30fce..91c9d67a 100644 --- a/pkg/playbook/app/vcertutil/helper.go +++ b/pkg/playbook/app/vcertutil/helper.go @@ -28,6 +28,7 @@ import ( "go.uber.org/zap" + "github.com/Venafi/vcert/v5" "github.com/Venafi/vcert/v5/pkg/certificate" "github.com/Venafi/vcert/v5/pkg/playbook/app/domain" "github.com/Venafi/vcert/v5/pkg/util" @@ -239,3 +240,8 @@ func readFile(fileName string) ([]byte, error) { } return bytes, nil } + +func getUserAgent() *string { + userAgent := fmt.Sprintf("vcert-playbook/%s", vcert.GetFormattedVersionString()[1:]) + return &userAgent +} diff --git a/pkg/playbook/app/vcertutil/vcertutil.go b/pkg/playbook/app/vcertutil/vcertutil.go index 00cbc9a7..194e6a11 100644 --- a/pkg/playbook/app/vcertutil/vcertutil.go +++ b/pkg/playbook/app/vcertutil/vcertutil.go @@ -89,6 +89,7 @@ func buildClient(config domain.Config, zone string) (endpoint.Connector, error) Zone: zone, ConnectionTrust: loadTrustBundle(config.Connection.TrustBundlePath), LogVerbose: false, + UserAgent: getUserAgent(), } // build Authentication object diff --git a/pkg/util/constants.go b/pkg/util/constants.go index c151fda9..52e00dd6 100644 --- a/pkg/util/constants.go +++ b/pkg/util/constants.go @@ -1,9 +1,25 @@ package util +import ( + "fmt" +) + const ( PathSeparator = "\\" ApplicationServerTypeID = "784938d1-ef0d-11eb-9461-7bb533ba575b" +) + +var ( + // We load this variable from build command instead of reusing the vcert one to avoid circular dependencies + versionString string // DefaultUserAgent is the default value of the UserAgent header in HTTP // requests to Venafi API endpoints. - DefaultUserAgent = "vcert/v5" + DefaultUserAgent = fmt.Sprintf("vcert-sdk/%s", getVersionString()[1:]) ) + +func getVersionString() string { + if versionString == "" { + return "Unknown" + } + return versionString +} diff --git a/pkg/venafi/cloud/cloud.go b/pkg/venafi/cloud/cloud.go index a04275a4..4156074f 100644 --- a/pkg/venafi/cloud/cloud.go +++ b/pkg/venafi/cloud/cloud.go @@ -668,7 +668,7 @@ type cloudZone struct { templateAlias string } -func (z cloudZone) String() string { +func (z *cloudZone) String() string { return z.zone } diff --git a/vcert.go b/vcert.go index 2589cb3e..7f1227d3 100644 --- a/vcert.go +++ b/vcert.go @@ -14,10 +14,12 @@ * limitations under the License. */ /* -VCert is a Go library, SDK, and command line utility designed to simplify key generation and enrollment of machine identities (also known as SSL/TLS certificates and keys) that comply with enterprise security policy by using the Venafi Platform or Venafi Cloud. +Package vcert is a Go library, SDK, and command line utility designed to simplify key generation and enrollment of machine identities (also known as SSL/TLS certificates and keys) that comply with enterprise security policy by using the Venafi Platform or Venafi Cloud. */ package vcert +import "fmt" + var ( versionBuildTimeStamp string versionString string @@ -31,9 +33,14 @@ func GetFormattedVersionString() string { return versionString } -func GetFormatedBuildTimeStamp() string { +func GetFormattedBuildTimeStamp() string { if versionBuildTimeStamp == "" { versionBuildTimeStamp = "Unknown" } return versionBuildTimeStamp } + +func GetUserAgentCLI() *string { + userAgent := fmt.Sprintf("vcert-cli/%s", GetFormattedVersionString()[1:]) + return &userAgent +}