Skip to content

Commit 4598494

Browse files
authored
Ensure all API calls to replicated saas have user-agent header (#3748)
* chore: ensure all API calls to replicated saas have user-agent header Signed-off-by: Evans Mungai <evans@replicated.com> * Additional header call site Signed-off-by: Evans Mungai <evans@replicated.com> * Remove header Signed-off-by: Evans Mungai <evans@replicated.com> * DRY user agent string Signed-off-by: Evans Mungai <evans@replicated.com> --------- Signed-off-by: Evans Mungai <evans@replicated.com>
1 parent 01970fd commit 4598494

8 files changed

Lines changed: 25 additions & 1 deletion

File tree

cmd/installer/cli/release.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"net/url"
1111
"time"
1212

13+
"github.com/replicatedhq/embedded-cluster/pkg/versions"
1314
kotsv1beta1 "github.com/replicatedhq/kotskinds/apis/kots/v1beta1"
1415
)
1516

@@ -41,6 +42,7 @@ func getCurrentAppChannelRelease(ctx context.Context, license *kotsv1beta1.Licen
4142

4243
auth := fmt.Sprintf("Basic %s", base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", license.Spec.LicenseID, license.Spec.LicenseID))))
4344
req.Header.Set("Authorization", auth)
45+
req.Header.Set("User-Agent", versions.UserAgent())
4446

4547
// This will use the proxy from the environment if set by the cli command.
4648
client := &http.Client{

operator/pkg/metadata/metadata.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/replicatedhq/embedded-cluster/kinds/apis/v1beta1"
1313
"github.com/replicatedhq/embedded-cluster/operator/pkg/release"
1414
"github.com/replicatedhq/embedded-cluster/pkg/artifacts"
15+
"github.com/replicatedhq/embedded-cluster/pkg/versions"
1516
corev1 "k8s.io/api/core/v1"
1617
k8serrors "k8s.io/apimachinery/pkg/api/errors"
1718
ctrl "sigs.k8s.io/controller-runtime"
@@ -121,6 +122,7 @@ func getRemoteMetadataOnline(ctx context.Context, in *v1beta1.Installation) ([]b
121122
if err != nil {
122123
return nil, fmt.Errorf("new request: %w", err)
123124
}
125+
req.Header.Set("User-Agent", versions.UserAgent())
124126

125127
resp, err := http.DefaultClient.Do(req)
126128
if err != nil {

operator/pkg/metrics/metrics.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http"
1010
"time"
1111

12+
"github.com/replicatedhq/embedded-cluster/pkg/versions"
1213
corev1 "k8s.io/api/core/v1"
1314
)
1415

@@ -70,6 +71,7 @@ func sendEvent(ctx context.Context, evname, baseURL string, ev interface{}) erro
7071
return err
7172
}
7273
req.Header.Set("Content-Type", "application/json")
74+
req.Header.Set("User-Agent", versions.UserAgent())
7375
resp, err := http.DefaultClient.Do(req)
7476
if err != nil {
7577
return fmt.Errorf("failed to send event: %w", err)

operator/pkg/release/release.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/gosimple/slug"
1515
"github.com/replicatedhq/embedded-cluster/kinds/apis/v1beta1"
1616
ectypes "github.com/replicatedhq/embedded-cluster/kinds/types"
17+
"github.com/replicatedhq/embedded-cluster/pkg/versions"
1718
corev1 "k8s.io/api/core/v1"
1819
"k8s.io/apimachinery/pkg/types"
1920
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -103,6 +104,7 @@ func remoteMetadataFor(ctx context.Context, in *v1beta1.Installation) (*ectypes.
103104
if err != nil {
104105
return nil, fmt.Errorf("failed to create request: %w", err)
105106
}
107+
req.Header.Set("User-Agent", versions.UserAgent())
106108

107109
resp, err := http.DefaultClient.Do(req)
108110
if err != nil {

pkg-new/replicatedapi/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ func (c *client) newRetryableRequest(ctx context.Context, method string, url str
139139
// injectHeaders injects the basic auth header, user agent header, and reporting info headers into the http.Header.
140140
func (c *client) injectHeaders(header http.Header) {
141141
header.Set("Authorization", "Basic "+basicAuth(c.license.Spec.LicenseID, c.license.Spec.LicenseID))
142-
header.Set("User-Agent", fmt.Sprintf("Embedded-Cluster/%s", versions.Version))
142+
header.Set("User-Agent", versions.UserAgent())
143143

144144
c.injectReportingInfoHeaders(header)
145145
}

pkg/lint/api_client.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"os"
99
"strings"
1010
"time"
11+
12+
"github.com/replicatedhq/embedded-cluster/pkg/versions"
1113
)
1214

1315
// APIClient handles communication with the Replicated API
@@ -119,6 +121,7 @@ func (c *APIClient) GetCustomDomains() ([]string, error) {
119121

120122
req.Header.Set("Authorization", c.apiToken)
121123
req.Header.Set("Accept", "application/json")
124+
req.Header.Set("User-Agent", versions.UserAgent())
122125

123126
resp, err := c.client.Do(req)
124127
if err != nil {
@@ -205,6 +208,7 @@ func (c *APIClient) getDomainsFromChannelReleases() ([]string, error) {
205208

206209
req.Header.Set("Authorization", c.apiToken)
207210
req.Header.Set("Accept", "application/json")
211+
req.Header.Set("User-Agent", versions.UserAgent())
208212

209213
resp, err := c.client.Do(req)
210214
if err != nil {
@@ -246,6 +250,7 @@ func (c *APIClient) getDomainsFromChannelReleases() ([]string, error) {
246250

247251
req.Header.Set("Authorization", c.apiToken)
248252
req.Header.Set("Accept", "application/json")
253+
req.Header.Set("User-Agent", versions.UserAgent())
249254

250255
resp, err := c.client.Do(req)
251256
if err != nil {
@@ -310,6 +315,7 @@ func (c *APIClient) getDomainsFromApp() ([]string, error) {
310315

311316
req.Header.Set("Authorization", c.apiToken)
312317
req.Header.Set("Accept", "application/json")
318+
req.Header.Set("User-Agent", versions.UserAgent())
313319

314320
resp, err := c.client.Do(req)
315321
if err != nil {

pkg/metrics/sender.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"time"
88

99
"github.com/replicatedhq/embedded-cluster/pkg/metrics/types"
10+
"github.com/replicatedhq/embedded-cluster/pkg/versions"
1011
"github.com/sirupsen/logrus"
1112
)
1213

@@ -25,6 +26,7 @@ func (s *Sender) Send(ctx context.Context, baseURL string, ev types.Event) {
2526
return
2627
}
2728
request.Header.Set("Content-Type", "application/json")
29+
request.Header.Set("User-Agent", versions.UserAgent())
2830

2931
client := &http.Client{
3032
Timeout: 5 * time.Second,

pkg/versions/versions.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
// Package versions
22
package versions
33

4+
import (
5+
"fmt"
6+
)
7+
48
var (
59
// Version holds the EmbeddedCluster version.
610
Version = "v0.0.0"
@@ -24,3 +28,7 @@ var (
2428
// time using LD_FLAGS in the Makefile
2529
OperatorBinaryURLOverride string
2630
)
31+
32+
func UserAgent() string {
33+
return fmt.Sprintf("Embedded-Cluster/%s", Version)
34+
}

0 commit comments

Comments
 (0)