| // Copyright (c) HashiCorp, Inc. |
| // SPDX-License-Identifier: MPL-2.0 |
| |
| package useragent |
| |
| import ( |
| "fmt" |
| "runtime" |
| |
| "github.com/hashicorp/vault/version" |
| ) |
| |
| var ( |
| // projectURL is the project URL. |
| projectURL = "https://www.vaultproject.io/" |
| |
| // rt is the runtime - variable for tests. |
| rt = runtime.Version() |
| |
| // versionFunc is the func that returns the current version. This is a |
| // function to take into account the different build processes and distinguish |
| // between enterprise and oss builds. |
| versionFunc = func() string { |
| return version.GetVersion().VersionNumber() |
| } |
| ) |
| |
| // String returns the consistent user-agent string for Vault. |
| // |
| // e.g. Vault/0.10.4 (+https://www.vaultproject.io/; go1.10.1) |
| func String() string { |
| return fmt.Sprintf("Vault/%s (+%s; %s)", |
| versionFunc(), projectURL, rt) |
| } |
| |
| // AgentString returns the consistent user-agent string for Vault Agent. |
| // |
| // e.g. Vault Agent/0.10.4 (+https://www.vaultproject.io/; go1.10.1) |
| func AgentString() string { |
| return fmt.Sprintf("Vault Agent/%s (+%s; %s)", |
| versionFunc(), projectURL, rt) |
| } |
| |
| // AgentTemplatingString returns the consistent user-agent string for Vault Agent Templating. |
| // |
| // e.g. Vault Agent Templating/0.10.4 (+https://www.vaultproject.io/; go1.10.1) |
| func AgentTemplatingString() string { |
| return fmt.Sprintf("Vault Agent Templating/%s (+%s; %s)", |
| versionFunc(), projectURL, rt) |
| } |
| |
| // AgentProxyString returns the consistent user-agent string for Vault Agent API Proxying. |
| // |
| // e.g. Vault Agent API Proxy/0.10.4 (+https://www.vaultproject.io/; go1.10.1) |
| func AgentProxyString() string { |
| return fmt.Sprintf("Vault Agent API Proxy/%s (+%s; %s)", |
| versionFunc(), projectURL, rt) |
| } |
| |
| // AgentProxyStringWithProxiedUserAgent returns the consistent user-agent |
| // string for Vault Agent API Proxying, keeping the User-Agent of the proxied |
| // client as an extension to this UserAgent |
| // |
| // e.g. Vault Agent API Proxy/0.10.4 (+https://www.vaultproject.io/; go1.10.1); proxiedUserAgent |
| func AgentProxyStringWithProxiedUserAgent(proxiedUserAgent string) string { |
| return fmt.Sprintf("Vault Agent API Proxy/%s (+%s; %s); %s", |
| versionFunc(), projectURL, rt, proxiedUserAgent) |
| } |
| |
| // AgentAutoAuthString returns the consistent user-agent string for Vault Agent Auto-Auth. |
| // |
| // e.g. Vault Agent Auto-Auth/0.10.4 (+https://www.vaultproject.io/; go1.10.1) |
| func AgentAutoAuthString() string { |
| return fmt.Sprintf("Vault Agent Auto-Auth/%s (+%s; %s)", |
| versionFunc(), projectURL, rt) |
| } |
| |
| // ProxyString returns the consistent user-agent string for Vault Proxy. |
| // |
| // e.g. Vault Proxy/0.10.4 (+https://www.vaultproject.io/; go1.10.1) |
| func ProxyString() string { |
| return fmt.Sprintf("Vault Proxy/%s (+%s; %s)", |
| versionFunc(), projectURL, rt) |
| } |
| |
| // ProxyAPIProxyString returns the consistent user-agent string for Vault Proxy API Proxying. |
| // |
| // e.g. Vault Proxy API Proxy/0.10.4 (+https://www.vaultproject.io/; go1.10.1) |
| func ProxyAPIProxyString() string { |
| return fmt.Sprintf("Vault Proxy API Proxy/%s (+%s; %s)", |
| versionFunc(), projectURL, rt) |
| } |
| |
| // ProxyStringWithProxiedUserAgent returns the consistent user-agent |
| // string for Vault Proxy API Proxying, keeping the User-Agent of the proxied |
| // client as an extension to this UserAgent |
| // |
| // e.g. Vault Proxy API Proxy/0.10.4 (+https://www.vaultproject.io/; go1.10.1); proxiedUserAgent |
| func ProxyStringWithProxiedUserAgent(proxiedUserAgent string) string { |
| return fmt.Sprintf("Vault Proxy API Proxy/%s (+%s; %s); %s", |
| versionFunc(), projectURL, rt, proxiedUserAgent) |
| } |
| |
| // ProxyAutoAuthString returns the consistent user-agent string for Vault Agent Auto-Auth. |
| // |
| // e.g. Vault Proxy Auto-Auth/0.10.4 (+https://www.vaultproject.io/; go1.10.1) |
| func ProxyAutoAuthString() string { |
| return fmt.Sprintf("Vault Proxy Auto-Auth/%s (+%s; %s)", |
| versionFunc(), projectURL, rt) |
| } |