Skip to content

Commit 2bb8ac2

Browse files
authored
feat: Add user agent to CSO (PROJQUAY-7472) (#142)
* feat: Add user agent to CSO (PROJQUAY-7472) We add a user agent to CSO to better track CSO requests to Quay and/or other registries. User agent reported version will now depend on `QUAY_VERSION` which is added as an env. variable to CSO deployment. * Update go.mod
1 parent 10dfac7 commit 2bb8ac2

File tree

10 files changed

+32
-17
lines changed

10 files changed

+32
-17
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM --platform=$BUILDPLATFORM golang:1.20 as builder
1+
FROM --platform=$BUILDPLATFORM golang:1.20 AS builder
22

33
ARG TARGETOS TARGETARCH
44
WORKDIR /workspace

bundle/manifests/container-security-operator.clusterserviceversion.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ metadata:
77
containerImage: quay.io/quay/container-security-operator@sha256:6eefeaee910251ba26c825746d11ae166a9781aeace5455b2766d26298911f13
88
createdAt: 2020-04-13 00:00:00
99
description: Identify image vulnerabilities in Kubernetes pods
10+
quay-version: v3.11.0
1011
repository: https://github.com/quay/container-security-operator
1112
tectonic-visibility: ocs
1213
features.operators.openshift.io/disconnected: "false"
@@ -76,6 +77,10 @@ spec:
7677
valueFrom:
7778
fieldRef:
7879
fieldPath: metadata.annotations['olm.targetNamespaces']
80+
- name: QUAY_VERSION
81+
valueFrom:
82+
fieldRef:
83+
fieldPath: metadata.annotations['quay-version']
7984
volumeMounts:
8085
- name: extra-certs
8186
readOnly: true

cmd/security-labeller/main.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"crypto/tls"
66
"crypto/x509"
77
"flag"
8-
"io/ioutil"
98
"net/http"
109
"os"
1110
"os/signal"
@@ -125,7 +124,7 @@ func handleCerts(insecure bool, extraCerts string) error {
125124
if info.IsDir() {
126125
return nil
127126
}
128-
certs, err := ioutil.ReadFile(path)
127+
certs, err := os.ReadFile(path)
129128

130129
if err != nil {
131130
return nil

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.20
44

55
require (
66
github.com/go-kit/kit v0.12.0
7+
github.com/go-kit/log v0.2.1
78
github.com/openshift/client-go v0.0.0-20230626133714-296133fbf75e
89
github.com/pkg/errors v0.9.1
910
github.com/prometheus/client_golang v1.16.0
@@ -21,7 +22,6 @@ require (
2122
github.com/davecgh/go-spew v1.1.1 // indirect
2223
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
2324
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
24-
github.com/go-kit/log v0.2.1 // indirect
2525
github.com/go-logfmt/logfmt v0.5.1 // indirect
2626
github.com/go-logr/logr v1.2.4 // indirect
2727
github.com/go-openapi/jsonpointer v0.19.6 // indirect

labeller/config.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package labeller
22

33
import (
4-
"io/ioutil"
4+
"io"
55
"os"
66
"time"
77

@@ -33,7 +33,7 @@ func LoadConfig(cfgPath string) (*Config, error) {
3333
}
3434
defer f.Close()
3535

36-
d, err := ioutil.ReadAll(f)
36+
d, err := io.ReadAll(f)
3737
if err != nil {
3838
return nil, err
3939
}

labeller/labeller_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"testing"
88
"time"
99

10-
log "github.com/go-kit/kit/log"
10+
log "github.com/go-kit/log"
1111
"github.com/stretchr/testify/assert"
1212

1313
secscanv1alpha1 "github.com/quay/container-security-operator/apis/secscan/v1alpha1"

secscan/client.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package secscan
33
import (
44
"encoding/json"
55
"fmt"
6-
"io/ioutil"
6+
"io"
77
"net/http"
88
"net/url"
9+
"os"
910
"strconv"
1011
"strings"
1112

@@ -49,7 +50,7 @@ func (c *Client) GetLayerDataFromTemplate(template string, image *image.Image, f
4950
return nil, fmt.Errorf("Request returned non-200 response: %s", resp.Status)
5051
}
5152

52-
body, err := ioutil.ReadAll(resp.Body)
53+
body, err := io.ReadAll(resp.Body)
5354
if err != nil {
5455
return nil, err
5556
}
@@ -68,6 +69,7 @@ func (c *Client) GetLayerDataFromTemplate(template string, image *image.Image, f
6869
}
6970

7071
func layerDataFromTemplateRequest(template, method string, img *image.Image, params map[string]string) (*rest.Request, error) {
72+
var userAgent string
7173
replacer := strings.NewReplacer("{namespace}", img.Namespace, "{reponame}", img.Repository, "{digest}", img.Digest)
7274
requestURI := replacer.Replace(template)
7375
url, err := url.ParseRequestURI(requestURI)
@@ -80,6 +82,15 @@ func layerDataFromTemplateRequest(template, method string, img *image.Image, par
8082
req = req.SetHeader("Authorization", fmt.Sprintf("Basic %s", img.Auth))
8183
}
8284

85+
env, isPresent := os.LookupEnv("QUAY_VERSION")
86+
if !isPresent {
87+
userAgent = "container-security-operator/1.0.6"
88+
} else {
89+
userAgent = env
90+
}
91+
92+
req = req.SetHeader("User-Agent", userAgent)
93+
8394
for key, val := range params {
8495
req = req.SetParam(key, val)
8596
}

secscan/quay/security.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package quay
33
import (
44
"encoding/json"
55
"fmt"
6-
"io/ioutil"
6+
"io"
77
"net/http"
88
"net/url"
99
"path"
@@ -49,7 +49,7 @@ func (c *SecscanClient) ManifestSecurity(namespace, repository, digest string, v
4949
}
5050
defer resp.Body.Close()
5151

52-
body, err := ioutil.ReadAll(resp.Body)
52+
body, err := io.ReadAll(resp.Body)
5353
if err != nil {
5454
// Error reading response body
5555
return nil, err
@@ -79,7 +79,7 @@ func (c *SecscanClient) ManifestSecurityFromTemplate(template, namespace, reposi
7979
}
8080
defer resp.Body.Close()
8181

82-
body, err := ioutil.ReadAll(resp.Body)
82+
body, err := io.ReadAll(resp.Body)
8383
if err != nil {
8484
// Error reading response body
8585
return nil, err
@@ -113,7 +113,7 @@ func (c *SecscanClient) GetLayerData(image *image.Image, features, vulnerabiliti
113113
return nil, fmt.Errorf("Request returned non-200 response: %s", resp.Status)
114114
}
115115

116-
body, err := ioutil.ReadAll(resp.Body)
116+
body, err := io.ReadAll(resp.Body)
117117
if err != nil {
118118
// Error reading response body
119119
return nil, fmt.Errorf("failed to perform request: %v", err)

secscan/quay/wellknown.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package quay
33
import (
44
"encoding/json"
55
"fmt"
6-
"io/ioutil"
6+
"io"
77
"net/http"
88
"net/url"
99

@@ -43,7 +43,7 @@ func (c *WellknownClient) AppCapabilities() (*AppCapabilities, error) {
4343
}
4444
defer resp.Body.Close()
4545

46-
body, err := ioutil.ReadAll(resp.Body)
46+
body, err := io.ReadAll(resp.Body)
4747
if err != nil {
4848
// Error reading response body
4949
return nil, err

secscan/wellknown.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package secscan
33
import (
44
"encoding/json"
55
"fmt"
6-
"io/ioutil"
6+
"io"
77
"net/http"
88
"net/url"
99
"strings"
@@ -69,7 +69,7 @@ func NewWellknownClient(host, wellKnownEndpoint string) (*WellknownClient, error
6969
return nil, fmt.Errorf("Request returned non-200 response: %s", resp.Status)
7070
}
7171

72-
body, err := ioutil.ReadAll(resp.Body)
72+
body, err := io.ReadAll(resp.Body)
7373
if err != nil {
7474
return nil, err
7575
}

0 commit comments

Comments
 (0)