Skip to content

Commit fefb0ed

Browse files
committed
Add tokenpath parameter to collector
1 parent 735f503 commit fefb0ed

File tree

5 files changed

+121
-8
lines changed

5 files changed

+121
-8
lines changed

internal/config/config.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,7 @@ func processOtlpReceivers(tlsConfig *OtlpTLSConfig) error {
871871
func resolveExtensions() Extensions {
872872
var health *Health
873873
var headersSetter *HeadersSetter
874+
var tokenValue string
874875

875876
if isHealthExtensionSet() {
876877
health = &Health{
@@ -899,6 +900,19 @@ func resolveExtensions() Extensions {
899900
}
900901
}
901902

903+
if headersSetter != nil {
904+
tokenValue = headersSetter.Headers[0].Value
905+
}
906+
907+
_, err := os.Stat(tokenValue)
908+
if err == nil {
909+
token, fileErr := file.ReadFromFile(tokenValue)
910+
if fileErr != nil {
911+
slog.Error("error reading from file", "error", fileErr)
912+
}
913+
headersSetter.Headers[0].Value = token
914+
}
915+
902916
return Extensions{
903917
Health: health,
904918
HeadersSetter: headersSetter,

internal/config/config_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
package config
66

77
import (
8+
_ "embed"
89
"errors"
10+
"fmt"
911
"os"
1012
"path"
1113
"strings"
@@ -631,6 +633,61 @@ func TestValidateYamlFile(t *testing.T) {
631633
}
632634
}
633635

636+
//go:embed testdata/nginx-agent-with-token.conf
637+
var agentConfigWithToken string
638+
639+
func getAgentConfigWithToken(token string) string {
640+
return fmt.Sprintf(agentConfigWithToken, token)
641+
}
642+
643+
func TestResolveExtensions(t *testing.T) {
644+
tests := []struct {
645+
name string
646+
input string
647+
expected string
648+
}{
649+
{
650+
name: "Test 1: Header value is a valid token",
651+
input: "super-secret-token",
652+
expected: "super-secret-token",
653+
},
654+
{
655+
name: "Test 2: Header value is a valid token path",
656+
input: "testdata/nginx-token.crt",
657+
expected: "super-secret-token",
658+
},
659+
{
660+
name: "Test 3: Header value is empty",
661+
input: "",
662+
expected: "",
663+
},
664+
}
665+
666+
viperInstance = viper.NewWithOptions(viper.KeyDelimiter(KeyDelimiter))
667+
tempDir := t.TempDir()
668+
669+
for _, tt := range tests {
670+
t.Run(tt.name, func(t *testing.T) {
671+
tempFile := helpers.CreateFileWithErrorCheck(t, tempDir, "nginx-agent.conf")
672+
defer helpers.RemoveFileWithErrorCheck(t, tempFile.Name())
673+
674+
confContent := []byte(getAgentConfigWithToken(tt.input))
675+
_, writeErr := tempFile.Write(confContent)
676+
require.NoError(t, writeErr)
677+
678+
err := loadPropertiesFromFile(tempFile.Name())
679+
require.NoError(t, err)
680+
681+
extension := resolveExtensions()
682+
require.NotNil(t, extension)
683+
assert.Equal(t, tt.expected, extension.HeadersSetter.Headers[0].Value)
684+
685+
err = tempFile.Close()
686+
require.NoError(t, err)
687+
})
688+
}
689+
}
690+
634691
func getAgentConfig() *Config {
635692
return &Config{
636693
UUID: "",
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
log:
2+
level: info
3+
4+
collector:
5+
extensions:
6+
headers_setter:
7+
headers:
8+
- action: insert
9+
key: "authorization"
10+
value: %s
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
super-secret-token

nginx-agent.conf

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,46 @@ allowed_directories:
1616
- /usr/share/nginx/modules
1717
- /var/run/nginx
1818
- /var/log/nginx
19+
- /opt/homebrew/etc/nginx
20+
- /opt/homebrew/var/log
21+
- /opt/homebrew/var/log/nginx
22+
- dev/configs
1923
#
2024
# Command server settings to connect to a management plane server
2125
#
22-
#command:
23-
# server:
24-
# host: "agent.connect.nginx.com"
25-
# port: 443
26-
# auth:
27-
# token: ""
28-
# tls:
29-
# skip_verify: false
26+
command:
27+
server:
28+
host: "connect.saas.demo1.nginxlab.net"
29+
port: 443
30+
auth:
31+
token: "u6L0Zvrz61y2YsOtvBm65sqXMW5lfElQKE0/mgJYeK8="
32+
tls:
33+
skip_verify: false
3034

35+
collector:
36+
receivers:
37+
host_metrics:
38+
collection_interval: 1m0s
39+
initial_delay: 1s
40+
scrapers:
41+
cpu: {}
42+
memory: {}
43+
disk: {}
44+
network: {}
45+
filesystem: {}
46+
processors:
47+
batch: {}
48+
exporters:
49+
otlp_exporters:
50+
- server:
51+
host: "connect.saas.demo1.nginxlab.net"
52+
port: 443
53+
authenticator: headers_setter
54+
tls:
55+
skip_verify: false
56+
extensions:
57+
headers_setter:
58+
headers:
59+
- action: insert
60+
key: "authorization"
61+
value: "u6L0Zvrz61y2YsOtvBm65sqXMW5lfElQKE0/mgJYeK8="

0 commit comments

Comments
 (0)