Skip to content

Commit e73b905

Browse files
authored
Merge branch 'main' into hongshi/mac_sw_inventory
2 parents 41b5381 + dfd77ae commit e73b905

File tree

14 files changed

+358
-41
lines changed

14 files changed

+358
-41
lines changed

MODULE.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,9 @@ include("//deps/freetds:freetds.MODULE.bazel")
233233
# buildifier: leave-alone
234234
include("//deps/gstatus:gstatus.MODULE.bazel")
235235

236+
# buildifier: leave-alone
237+
include("//deps/nfsiostat:nfsiostat.MODULE.bazel")
238+
236239
# buildifier: leave-alone
237240
include("//deps/openscap:openscap.MODULE.bazel")
238241

comp/netflow/flowaggregator/aggregator.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ func NewFlowAggregator(sender sender.Sender, epForwarder eventplatform.Forwarder
9595
}
9696

9797
var topNFilter FlowFlushFilter = topn.NoopFilter{}
98-
var flowScheduler FlowScheduler = ImmediateFlowScheduler{}
98+
var flowScheduler FlowScheduler = ImmediateFlowScheduler{
99+
flushConfig: flushConfig,
100+
}
99101
if config.AggregatorMaxFlowsPerPeriod > 0 {
100102
topNFilter = topn.NewPerFlushFilter(int64(config.AggregatorMaxFlowsPerPeriod), flushConfig, sender, logger)
101103
flowScheduler = JitterFlowScheduler{flushConfig: flushConfig}

deps/nfsiostat/BUILD.bazel

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
"""nfsiostat"""
2+
3+
load("@rules_pkg//pkg:install.bzl", "pkg_install")
4+
load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_filegroup", "pkg_files")
5+
6+
package(default_visibility = [
7+
"//compliance:__pkg__",
8+
"//packages:__subpackages__",
9+
])
10+
11+
genrule(
12+
name = "fix_shebang",
13+
srcs = ["@nfsiostat//:nfsiostat_py"],
14+
outs = ["nfsiosat"],
15+
cmd = "sed 's@#!/usr/bin/python@#!/opt/datadog-agent/embedded/bin/python@' $(location @nfsiostat//:nfsiostat_py) >$@",
16+
)
17+
18+
pkg_files(
19+
name = "bin_files",
20+
srcs = [":fix_shebang"],
21+
attributes = pkg_attributes(mode = "0755"),
22+
prefix = "embedded/sbin",
23+
)
24+
25+
pkg_filegroup(
26+
name = "all_files",
27+
srcs = [
28+
":bin_files",
29+
],
30+
)
31+
32+
pkg_install(
33+
name = "install",
34+
srcs = [
35+
":all_files",
36+
],
37+
)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""nfsiostat - remote repo side build file"""
2+
3+
load("@@//compliance/rules:purl.bzl", "purl_for_generic")
4+
load("@package_metadata//rules:package_metadata.bzl", "package_metadata")
5+
load("@rules_license//rules:license.bzl", "license")
6+
7+
package(default_package_metadata = [":package_metadata"])
8+
9+
VERSION = "2.1.1"
10+
11+
package_metadata(
12+
name = "package_metadata",
13+
attributes = [
14+
":license",
15+
],
16+
purl = purl_for_generic(
17+
package = "nfsiostat",
18+
version = VERSION,
19+
download_url = "https://mirrors.edge.kernel.org/pub/linux/utils/nfs-utils/{version}/nfs-utils-{version}.tar.gz",
20+
),
21+
)
22+
23+
license(
24+
name = "license",
25+
license_kinds = ["@rules_license//licenses/spdx:GPL-2.0"],
26+
license_text = "COPYING",
27+
visibility = ["//visibility:public"],
28+
)
29+
30+
# Use filegroup rather than exports_files so we pick up the package metadata.
31+
filegroup(
32+
name = "nfsiostat_py",
33+
srcs = ["tools/nfs-iostat/nfs-iostat.py"],
34+
visibility = ["@@//deps/nfsiostat:__pkg__"],
35+
)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
2+
3+
VERSION = "2.1.1"
4+
5+
http_archive(
6+
name = "nfsiostat",
7+
files = {
8+
"BUILD.bazel": "//deps/nfsiostat:nfsiostat.BUILD.bazel",
9+
},
10+
sha256 = "381bb3f6aa4b314538db0bcfb242da855c2eb36e2059cf61aa498c0220684363",
11+
strip_prefix = "nfs-utils-{version}".format(version = VERSION),
12+
url = "https://mirrors.edge.kernel.org/pub/linux/utils/nfs-utils/{version}/nfs-utils-{version}.tar.gz".format(
13+
version = VERSION,
14+
),
15+
)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"commands": [
3+
{
4+
"type": "running",
5+
"values": [
6+
"show full-configuration"
7+
],
8+
"processing_rules": {
9+
"validation": [
10+
{
11+
"type": "valid_output",
12+
"pattern": "config (system|global|vdom)"
13+
}
14+
],
15+
"redaction": [
16+
{
17+
"regex": "^(#private-encryption-key=).+",
18+
"replacement": "$1 <secret hidden>"
19+
},
20+
{
21+
"regex": "(set .+ ENC) .+",
22+
"replacement": "$1 <secret hidden>"
23+
},
24+
{
25+
"regex": "(set (?:passwd|password|key|group-password|auth-password-l1|auth-password-l2|rsso|history0|history1))\\s*( ENC)? .+",
26+
"replacement": "$1$2 <secret hidden>"
27+
},
28+
{
29+
"regex": "(set md5-key [0-9]+) .+",
30+
"replacement": "$1 <secret hidden>"
31+
},
32+
{
33+
"regex": "(?s)(set private-key ).*?-+END (ENCRYPTED|RSA|OPENSSH) PRIVATE KEY-+\\n?\"$",
34+
"replacement": "$1<secret hidden>"
35+
},
36+
{
37+
"regex": "(?s)(set privatekey ).*?-+END (ENCRYPTED|RSA|OPENSSH) PRIVATE KEY-+\\n?\"$",
38+
"replacement": "$1<secret hidden>"
39+
},
40+
{
41+
"regex": "(?s)(set ca )\"-+BEGIN.*?-+END CERTIFICATE-+\"$",
42+
"replacement": "$1<secret hidden>"
43+
},
44+
{
45+
"regex": "(?s)(set csr ).*?-+END CERTIFICATE REQUEST-+\"$",
46+
"replacement": "$1<secret hidden>"
47+
}
48+
]
49+
}
50+
}
51+
]
52+
}

pkg/networkconfigmanagement/profile/default_profiles_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ func Test_DefaultProfiles_Running(t *testing.T) {
7878
fixture: loadFixture("eos", Running),
7979
expectedExtractedMetadata: &ExtractedMetadata{},
8080
},
81+
{
82+
name: "fortios",
83+
profile: DefaultProfile("fortios"),
84+
fixture: loadFixture("fortios", Running),
85+
expectedExtractedMetadata: &ExtractedMetadata{},
86+
},
8187
}
8288
for _, tt := range tests {
8389
t.Run(tt.name, func(t *testing.T) {
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
config system global
2+
set admin-restrict-local enable
3+
set alias "FortiGate-91G"
4+
set hostname "TEST-FW1234"
5+
set lldp-reception enable
6+
set lldp-transmission enable
7+
set switch-controller enable
8+
set timezone "Europe/Berlin"
9+
set virtual-switch-vlan enable
10+
end
11+
config system interface
12+
edit "wan1"
13+
set vdom "root"
14+
set ip 192.0.2.2 255.255.255.240
15+
set allowaccess ping https ssh snmp http fgfm ftm
16+
set type physical
17+
set alias "outside"
18+
set monitor-bandwidth enable
19+
set role wan
20+
set snmp-index 1
21+
set speed 10000auto
22+
next
23+
end
24+
config system admin
25+
edit "oxidized"
26+
set trusthost1 192.0.2.0 255.255.255.0
27+
set accprofile "super_admin"
28+
set vdom "root"
29+
set password ENC <secret hidden>
30+
next
31+
end
32+
config system snmp user
33+
edit "snmpuser"
34+
set notify-hosts 192.0.2.10 192.0.2.11
35+
set events cpu-high mem-low log-full intf-ip vpn-tun-up vpn-tun-down ips-signature av-virus av-oversize av-pattern av-fragmented fm-if-change av-conserve av-bypass av-oversize-passed av-oversize-blocked ips-pkg-update ips-fail-open temperature-high voltage-alert faz-disconnect device-new per-cpu-high
36+
set security-level auth-priv
37+
set auth-pwd ENC <secret hidden>
38+
set priv-pwd ENC <secret hidden>
39+
next
40+
end
41+
config vpn certificate local
42+
edit "Fortinet_CA_SSL"
43+
set password ENC <secret hidden>
44+
set comments "This is the default CA certificate the SSL Inspection will use when generating new server certificates."
45+
set range global
46+
set source factory
47+
next
48+
end
49+
config user tacacs+
50+
edit "tacacs-server-name"
51+
set server "192.0.2.19"
52+
set secondary-server "192.0.2.20"
53+
set key ENC <secret hidden>
54+
set secondary-key ENC <secret hidden>
55+
set authorization enable
56+
next
57+
end
58+
config firewall ssh local-key
59+
edit "Fortinet_SSH_RSA2048"
60+
set password ENC <secret hidden>
61+
set source built-in
62+
next
63+
end
64+
config firewall ssh local-ca
65+
edit "Fortinet_SSH_CA"
66+
set password ENC <secret hidden>
67+
set source built-in
68+
next
69+
end
70+
config router multicast
71+
end
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#config-version=FGT91G-7.4.7-FW-build2731-250120:opmode=1:vdom=0:user=TACACS-USER
2+
#conf_file_ver=<stripped>
3+
#buildno=2731
4+
#global_vdom=1
5+
config system global
6+
set admin-restrict-local enable
7+
set alias "FortiGate-91G"
8+
set hostname "TEST-FW1234"
9+
set lldp-reception enable
10+
set lldp-transmission enable
11+
set switch-controller enable
12+
set timezone "Europe/Berlin"
13+
set virtual-switch-vlan enable
14+
end
15+
config system interface
16+
edit "wan1"
17+
set vdom "root"
18+
set ip 192.0.2.2 255.255.255.240
19+
set allowaccess ping https ssh snmp http fgfm ftm
20+
set type physical
21+
set alias "outside"
22+
set monitor-bandwidth enable
23+
set role wan
24+
set snmp-index 1
25+
set speed 10000auto
26+
next
27+
end
28+
config system admin
29+
edit "oxidized"
30+
set trusthost1 192.0.2.0 255.255.255.0
31+
set accprofile "super_admin"
32+
set vdom "root"
33+
set password ENC AAAAAAAAAABBBBBBBBBBCCCCCCCCCC
34+
next
35+
end
36+
config system snmp user
37+
edit "snmpuser"
38+
set notify-hosts 192.0.2.10 192.0.2.11
39+
set events cpu-high mem-low log-full intf-ip vpn-tun-up vpn-tun-down ips-signature av-virus av-oversize av-pattern av-fragmented fm-if-change av-conserve av-bypass av-oversize-passed av-oversize-blocked ips-pkg-update ips-fail-open temperature-high voltage-alert faz-disconnect device-new per-cpu-high
40+
set security-level auth-priv
41+
set auth-pwd ENC AAAAAAAAAABBBBBBBBBBCCCCCCCCCC
42+
set priv-pwd ENC AAAAAAAAAABBBBBBBBBBCCCCCCCCCC
43+
next
44+
end
45+
config vpn certificate local
46+
edit "Fortinet_CA_SSL"
47+
set password ENC AAAAAAAAAABBBBBBBBBBCCCCCCCCCC
48+
set comments "This is the default CA certificate the SSL Inspection will use when generating new server certificates."
49+
set range global
50+
set source factory
51+
next
52+
end
53+
config user tacacs+
54+
edit "tacacs-server-name"
55+
set server "192.0.2.19"
56+
set secondary-server "192.0.2.20"
57+
set key ENC AAAAAAAAAABBBBBBBBBBCCCCCCCCCC
58+
set secondary-key ENC AAAAAAAAAABBBBBBBBBBCCCCCCCCCC
59+
set authorization enable
60+
next
61+
end
62+
config firewall ssh local-key
63+
edit "Fortinet_SSH_RSA2048"
64+
set password ENC AAAAAAAAAABBBBBBBBBBCCCCCCCCCC
65+
set source built-in
66+
next
67+
end
68+
config firewall ssh local-ca
69+
edit "Fortinet_SSH_CA"
70+
set password ENC AAAAAAAAAABBBBBBBBBBCCCCCCCCCC
71+
set source built-in
72+
next
73+
end
74+
config router multicast
75+
end

pkg/serializer/internal/metrics/pipeline.go

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ import (
1111
"slices"
1212
"strconv"
1313

14-
"github.com/google/uuid"
15-
1614
"github.com/DataDog/datadog-agent/comp/forwarder/defaultforwarder/resolver"
1715
"github.com/DataDog/datadog-agent/comp/forwarder/defaultforwarder/transaction"
1816
)
@@ -75,21 +73,16 @@ type PipelineConfig struct {
7573

7674
// PipelineDestination describes how to deliver a payload to the intake.
7775
type PipelineDestination struct {
78-
Resolver resolver.DomainResolver
79-
Endpoint transaction.Endpoint
80-
AddValidationHeaders bool
76+
Resolver resolver.DomainResolver
77+
Endpoint transaction.Endpoint
78+
ValidationBatchID string
8179
}
8280

8381
type forwarder interface {
8482
SubmitTransaction(*transaction.HTTPTransaction) error
8583
}
8684

8785
func (dest *PipelineDestination) send(payloads transaction.BytesPayloads, forwarder forwarder, headers http.Header) error {
88-
batchID, err := dest.maybeMakeBatchID()
89-
if err != nil {
90-
return err
91-
}
92-
9386
domain := dest.Resolver.Resolve(dest.Endpoint)
9487
for _, auth := range dest.Resolver.GetAuthorizers() {
9588
for seq, payload := range payloads {
@@ -100,8 +93,8 @@ func (dest *PipelineDestination) send(payloads transaction.BytesPayloads, forwar
10093
for key := range headers {
10194
txn.Headers.Set(key, headers.Get(key))
10295
}
103-
if dest.AddValidationHeaders {
104-
txn.Headers.Set("X-Metrics-Request-ID", batchID)
96+
if dest.ValidationBatchID != "" {
97+
txn.Headers.Set("X-Metrics-Request-ID", dest.ValidationBatchID)
10598
txn.Headers.Set("X-Metrics-Request-Seq", strconv.Itoa(seq))
10699
txn.Headers.Set("X-Metrics-Request-Len", strconv.Itoa(len(payloads)))
107100
}
@@ -116,17 +109,6 @@ func (dest *PipelineDestination) send(payloads transaction.BytesPayloads, forwar
116109
return nil
117110
}
118111

119-
func (dest *PipelineDestination) maybeMakeBatchID() (string, error) {
120-
if dest.AddValidationHeaders {
121-
uuid, err := uuid.NewV7()
122-
if err != nil {
123-
return "", err
124-
}
125-
return uuid.String(), nil
126-
}
127-
return "", nil
128-
}
129-
130112
// PipelineContext holds information needed during and after pipeline execution.
131113
type PipelineContext struct {
132114
Destinations []PipelineDestination

0 commit comments

Comments
 (0)