diff --git a/useragent/useragent.go b/useragent/useragent.go index 051a5396..e1c40116 100644 --- a/useragent/useragent.go +++ b/useragent/useragent.go @@ -93,7 +93,13 @@ func UserAgent(binaryNameCapitalized string, version, commit, buildTime string, return builder.String() } -func UserAgentWithBeatTelemetry(binaryNameCapitalized string, version string, mode AgentManagementMode, unprivileged AgentUnprivilegedMode) string { +func UserAgentWithBeatTelemetry( + binaryNameCapitalized string, + version string, + mode AgentManagementMode, + unprivileged AgentUnprivilegedMode, + isFIPSDistribution bool, +) string { var builder strings.Builder builder.WriteString("Elastic-" + binaryNameCapitalized + "/" + version + " ") uaValues := []string{ @@ -106,6 +112,10 @@ func UserAgentWithBeatTelemetry(binaryNameCapitalized string, version string, mo if unprivileged != AgentUnprivilegedModeUnknown { uaValues = append(uaValues, unprivileged.String()) } + if isFIPSDistribution { + uaValues = append(uaValues, "FIPS") + } + builder.WriteByte('(') builder.WriteString(strings.Join(uaValues, "; ")) builder.WriteByte(')') diff --git a/useragent/useragent_test.go b/useragent/useragent_test.go index 3f4a59e7..83b6fd49 100644 --- a/useragent/useragent_test.go +++ b/useragent/useragent_test.go @@ -41,9 +41,10 @@ func TestUserAgent(t *testing.T) { } func TestUserAgentWithBeatTelemetry(t *testing.T) { - ua2 := UserAgentWithBeatTelemetry("FakeBeat", v, mode, unprivileged) + isFIPSDistribution := true + ua2 := UserAgentWithBeatTelemetry("FakeBeat", v, mode, unprivileged, isFIPSDistribution) assert.Regexp(t, regexp.MustCompile(`^Elastic-FakeBeat`), ua2) - assert.Regexp(t, regexp.MustCompile(`; Managed; Unprivileged\)$`), ua2) + assert.Regexp(t, regexp.MustCompile(`; Managed; Unprivileged; FIPS\)$`), ua2) // Require deliberate update in case we want to extend the User Agent later assert.LessOrEqual(t, len(ua2), 100, "User agent string should be less than 100 characters")