diff --git a/.github/workflows/v11-deployment-pipeline.yml b/.github/workflows/v11-deployment-pipeline.yml index de914a925..3f3dc6aab 100644 --- a/.github/workflows/v11-deployment-pipeline.yml +++ b/.github/workflows/v11-deployment-pipeline.yml @@ -134,6 +134,7 @@ jobs: env: GOOS: linux GOARCH: amd64 + CGO_ENABLED: 0 run: | cd ${{ github.workspace }}/agent go build -o utmstack_agent_service_linux_amd64 -v -ldflags "-X 'github.com/utmstack/UTMStack/agent/config.REPLACE_KEY=${{ secrets.AGENT_SECRET_PREFIX }}'" . @@ -145,6 +146,7 @@ jobs: env: GOOS: linux GOARCH: arm64 + CGO_ENABLED: 0 run: | cd ${{ github.workspace }}/agent go build -o utmstack_agent_service_linux_arm64 -v -ldflags "-X 'github.com/utmstack/UTMStack/agent/config.REPLACE_KEY=${{ secrets.AGENT_SECRET_PREFIX }}'" . @@ -156,6 +158,7 @@ jobs: env: GOOS: windows GOARCH: amd64 + CGO_ENABLED: 0 run: | cd ${{ github.workspace }}/agent go build -o utmstack_agent_service_windows_amd64.exe -v -ldflags "-X 'github.com/utmstack/UTMStack/agent/config.REPLACE_KEY=${{ secrets.AGENT_SECRET_PREFIX }}'" . @@ -167,6 +170,7 @@ jobs: env: GOOS: windows GOARCH: arm64 + CGO_ENABLED: 0 run: | cd ${{ github.workspace }}/agent go build -o utmstack_agent_service_windows_arm64.exe -v -ldflags "-X 'github.com/utmstack/UTMStack/agent/config.REPLACE_KEY=${{ secrets.AGENT_SECRET_PREFIX }}'" . diff --git a/agent-manager/go.mod b/agent-manager/go.mod index 78140e2d6..aca2a4133 100644 --- a/agent-manager/go.mod +++ b/agent-manager/go.mod @@ -4,15 +4,17 @@ go 1.25.5 require ( github.com/AtlasInsideCorp/AtlasInsideAES v1.0.0 - github.com/gin-gonic/gin v1.11.0 + github.com/gin-gonic/gin v1.12.0 github.com/google/uuid v1.6.0 github.com/utmstack/config-client-go v1.2.7 - google.golang.org/grpc v1.79.1 + google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 gorm.io/driver/postgres v1.6.0 gorm.io/gorm v1.31.1 ) +require go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect + require ( github.com/bytedance/gopkg v0.1.3 // indirect github.com/bytedance/sonic v1.15.0 // indirect @@ -40,14 +42,14 @@ require ( github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/quic-go/qpack v0.6.0 // indirect github.com/quic-go/quic-go v0.59.0 // indirect - github.com/threatwinds/go-sdk v1.1.14 + github.com/threatwinds/go-sdk v1.1.21 github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.3.1 // indirect - golang.org/x/arch v0.23.0 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect + golang.org/x/arch v0.24.0 // indirect + golang.org/x/crypto v0.49.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect ) diff --git a/agent-manager/go.sum b/agent-manager/go.sum index bb5bde9b0..ba8880d00 100644 --- a/agent-manager/go.sum +++ b/agent-manager/go.sum @@ -18,8 +18,8 @@ github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9 github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= -github.com/gin-gonic/gin v1.11.0 h1:OW/6PLjyusp2PPXtyxKHU0RbX6I/l28FTdDlae5ueWk= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8= +github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -89,47 +89,49 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/threatwinds/go-sdk v1.1.14 h1:9XqqGPZvDHHuJ/XkfMsDl3fe7Adfi1fMh/PpQFkUkJU= -github.com/threatwinds/go-sdk v1.1.14/go.mod h1:Kfu26gkSZDpNNkPvuQbTAW3dWIQ66pVIrNYW1YBG3Kg= +github.com/threatwinds/go-sdk v1.1.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= +github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY= github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4= github.com/utmstack/config-client-go v1.2.7 h1:JeRdI5JjH1liNzMW3LmyevjuPd67J/yt9MAO3+oJAuM= github.com/utmstack/config-client-go v1.2.7/go.mod h1:kM0KoUizM9ZlcQp0qKviGTWn/+anT5Rfjx3zfZk79nM= +go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF3xaE= +go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= -golang.org/x/arch v0.23.0 h1:lKF64A2jF6Zd8L0knGltUnegD62JMFBiCPBmQpToHhg= -golang.org/x/arch v0.23.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/arch v0.24.0 h1:qlJ3M9upxvFfwRM51tTg3Yl+8CP9vCC1E7vlFpgv99Y= +golang.org/x/arch v0.24.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 h1:Jr5R2J6F6qWyzINc+4AM8t5pfUz6beZpHp678GNrMbE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ= +google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/agent/collector/auditd/auditd_linux.go b/agent/collector/auditd/auditd_linux.go index 71b5d1d0c..79e92e86a 100644 --- a/agent/collector/auditd/auditd_linux.go +++ b/agent/collector/auditd/auditd_linux.go @@ -5,6 +5,7 @@ package auditd import ( "context" + "errors" "os" "sync" "time" @@ -35,9 +36,10 @@ func (a *AuditdCollector) Name() string { // Start begins collecting audit events and sending them to the queue func (a *AuditdCollector) Start(ctx context.Context, queue chan *plugins.Log) { - // Preflight check for audit capability if err := checkAuditCapability(); err != nil { - utils.Logger.ErrorF("auditd: preflight check failed: %v", err) + if !errors.Is(err, ErrAuditUnavailable) { + utils.Logger.ErrorF("auditd: preflight check failed: %v", err) + } return } @@ -59,9 +61,15 @@ func (a *AuditdCollector) Start(ctx context.Context, queue chan *plugins.Log) { exitCode := a.runAuditClient(ctx, host, queue) - if exitCode == 0 { + switch exitCode { + case 0: utils.Logger.Info("auditd client exited normally") - } else { + case auditdExitPermanent: + // Environment cannot run auditd (e.g. missing CAP_AUDIT_*, kernel + // audit disabled). Retrying will never succeed — exit silently. + utils.Logger.Info("auditd collector disabled: audit subsystem not accessible in this environment") + return + default: utils.Logger.ErrorF("auditd client exited with code %d, restarting in %v", exitCode, restartDelay) } @@ -79,35 +87,40 @@ func (a *AuditdCollector) Start(ctx context.Context, queue chan *plugins.Log) { } } +// auditdExitPermanent signals that the collector cannot run in this +// environment and must not be retried. +const auditdExitPermanent = -2 + // runAuditClient creates the audit client and runs the receive loop func (a *AuditdCollector) runAuditClient(ctx context.Context, host string, queue chan *plugins.Log) int { a.mu.Lock() clientCtx, cancel := context.WithCancel(ctx) a.cancel = cancel - // Attempt to set kernel backlog limit to prevent event loss under high load. - // This requires CAP_AUDIT_CONTROL; log warning if it fails but continue. + // Attempt to set kernel backlog limit and wait time. Both are best-effort + // tuning that require CAP_AUDIT_CONTROL — if they fail we just continue + // with kernel defaults, so log at Info level to avoid noise on restricted + // hosts (e.g. containers without audit capabilities). if err := setKernelBacklogLimit(kernelBacklogLimit); err != nil { - utils.Logger.ErrorF("auditd: failed to set kernel backlog limit to %d: %v (continuing with default)", kernelBacklogLimit, err) + utils.Logger.Info("auditd: could not set kernel backlog limit (%v), using default", err) } else { utils.Logger.Info("auditd: kernel backlog limit set to %d", kernelBacklogLimit) } - // Set backlog wait time to 0 to prevent audited processes from blocking - // when the audit backlog queue is full. The kernel will drop events instead. - // This is the "kernel" backpressure mitigation strategy from Elastic Auditbeat. if err := setBacklogWaitTime(0); err != nil { - utils.Logger.ErrorF("auditd: failed to set backlog wait time to 0: %v (continuing)", err) + utils.Logger.Info("auditd: could not set backlog wait time (%v), using default", err) } else { utils.Logger.Info("auditd: backlog wait time set to 0 (non-blocking mode)") } - // Create multicast audit client + // Create multicast audit client. Failure here (typically EPERM when the + // agent lacks CAP_AUDIT_READ) is permanent for the current process — the + // outer Start loop treats auditdExitPermanent as a no-retry condition. client, err := newAuditClient() if err != nil { a.mu.Unlock() - utils.Logger.ErrorF("auditd: error creating audit client: %v", err) - return -1 + utils.Logger.Info("auditd: cannot open audit netlink socket (%v); collector will not run", err) + return auditdExitPermanent } a.client = client diff --git a/agent/collector/auditd/capabilities.go b/agent/collector/auditd/capabilities.go index 928a9e7c7..caa09edd4 100644 --- a/agent/collector/auditd/capabilities.go +++ b/agent/collector/auditd/capabilities.go @@ -4,35 +4,35 @@ package auditd import ( + "errors" "os/exec" "strings" "github.com/utmstack/UTMStack/agent/utils" ) +var ErrAuditUnavailable = errors.New("audit subsystem unavailable in this environment") + // checkAuditCapability checks if the audit system is available and enabled. // Uses auditctl -s to verify audit status since /proc/sys/kernel/auditing // doesn't exist on all kernel versions. func checkAuditCapability() error { - // Check if auditctl exists auditctlPath, err := exec.LookPath("auditctl") if err != nil { - utils.Logger.ErrorF("auditd: auditctl not found in PATH: %v", err) - return err + utils.Logger.Info("auditd: auditctl not found in PATH, collector will not start") + return ErrAuditUnavailable } - // Run auditctl -s to check audit status cmd := exec.Command(auditctlPath, "-s") output, err := cmd.Output() if err != nil { - utils.Logger.ErrorF("auditd: failed to run auditctl -s: %v", err) - return err + utils.Logger.Info("auditd: failed to run auditctl -s (%v), collector will not start", err) + return ErrAuditUnavailable } - // Check if enabled=1 in output if !strings.Contains(string(output), "enabled 1") && !strings.Contains(string(output), "enabled=1") { utils.Logger.Info("auditd: kernel auditing is disabled (enabled != 1), collector will not start") - return nil + return ErrAuditUnavailable } utils.Logger.Info("auditd: audit system is enabled and ready") diff --git a/agent/dependency/auditd_linux.go b/agent/dependency/auditd_linux.go index 049137dcb..76ebc7b8a 100644 --- a/agent/dependency/auditd_linux.go +++ b/agent/dependency/auditd_linux.go @@ -98,45 +98,40 @@ func configureAuditd() error { utils.Logger.Info("Detected distro: ID=%s, IDLike=%s, PackageManager=%s", distro.ID, distro.IDLike, distro.PackageManager) - // Install auditd if not already installed if !isAuditdInstalled() { utils.Logger.Info("Installing auditd package...") if err := installAuditd(distro); err != nil { - utils.Logger.ErrorF("Failed to install auditd: %v", err) - return nil // Non-critical, don't fail the agent + utils.Logger.Info("auditd setup skipped: package install failed (%v)", err) + return nil } utils.Logger.Info("auditd package installed successfully") } else { utils.Logger.Info("auditd is already installed") } - // Pre-flight check: can we modify audit configuration? if canConfigure, reason := canConfigureAuditd(); !canConfigure { utils.Logger.Info("auditd rule deployment skipped: %s", reason) - return nil // Non-critical, don't fail the agent + return nil } - // Deploy audit rules utils.Logger.Info("Deploying UTMStack audit rules...") if err := deployRules(); err != nil { - utils.Logger.ErrorF("Failed to deploy audit rules: %v", err) - return nil // Non-critical, don't fail the agent + utils.Logger.Info("auditd setup skipped: rule deployment failed (%v)", err) + return nil } utils.Logger.Info("UTMStack audit rules deployed successfully") - // Start and enable auditd service utils.Logger.Info("Starting auditd service...") if err := startAuditd(); err != nil { - utils.Logger.ErrorF("Failed to start auditd service: %v", err) - return nil // Non-critical, don't fail the agent + utils.Logger.Info("auditd setup skipped: service start failed (%v)", err) + return nil } utils.Logger.Info("auditd service started and enabled") - // Reload rules utils.Logger.Info("Reloading audit rules...") if err := reloadRules(); err != nil { - utils.Logger.ErrorF("Failed to reload audit rules: %v", err) - return nil // Non-critical, don't fail the agent + utils.Logger.Info("auditd setup skipped: rule reload failed (%v)", err) + return nil } utils.Logger.Info("Audit rules reloaded successfully") diff --git a/agent/go.mod b/agent/go.mod index 81e03b34f..c5e78d93f 100644 --- a/agent/go.mod +++ b/agent/go.mod @@ -6,18 +6,18 @@ require ( github.com/AtlasInsideCorp/AtlasInsideAES v1.0.0 github.com/elastic/go-libaudit/v2 v2.6.2 github.com/elastic/go-sysinfo v1.15.4 - github.com/fsnotify/fsnotify v1.9.0 + github.com/fsnotify/fsnotify v1.10.1 github.com/glebarez/sqlite v1.11.0 github.com/google/uuid v1.6.0 github.com/kardianos/service v1.2.4 github.com/netsampler/goflow2 v1.3.7 github.com/spf13/cobra v1.10.2 github.com/tehmaze/netflow v0.0.0-20240303214733-8c13bb004068 - github.com/threatwinds/go-sdk v1.1.14 + github.com/threatwinds/go-sdk v1.1.21 github.com/threatwinds/logger v1.2.3 github.com/utmstack/UTMStack/shared v0.0.0 - golang.org/x/sys v0.41.0 - google.golang.org/grpc v1.79.1 + golang.org/x/sys v0.44.0 + google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 gorm.io/gorm v1.31.1 ) @@ -68,13 +68,13 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.3.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/arch v0.23.0 // indirect - golang.org/x/crypto v0.47.0 // indirect + golang.org/x/arch v0.24.0 // indirect + golang.org/x/crypto v0.49.0 // indirect golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/text v0.35.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect howett.net/plist v1.0.1 // indirect diff --git a/agent/go.sum b/agent/go.sum index 4f8d7b56b..4afe41737 100644 --- a/agent/go.sum +++ b/agent/go.sum @@ -29,8 +29,8 @@ github.com/elastic/go-sysinfo v1.15.4 h1:A3zQcunCxik14MgXu39cXFXcIw2sFXZ0zL886ey github.com/elastic/go-sysinfo v1.15.4/go.mod h1:ZBVXmqS368dOn/jvijV/zHLfakWTYHBZPk3G244lHrU= github.com/elastic/go-windows v1.0.2 h1:yoLLsAsV5cfg9FLhZ9EXZ2n2sQFKeDYrHenkcivY4vI= github.com/elastic/go-windows v1.0.2/go.mod h1:bGcDpBzXgYSqM0Gx3DM4+UxFj300SZLixie9u9ixLM8= -github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= -github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fsnotify/fsnotify v1.10.1 h1:b0/UzAf9yR5rhf3RPm9gf3ehBPpf0oZKIjtpKrx59Ho= +github.com/fsnotify/fsnotify v1.10.1/go.mod h1:TLheqan6HD6GBK6PrDWyDPBaEV8LspOxvPSjC+bVfgo= github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= @@ -138,8 +138,8 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tehmaze/netflow v0.0.0-20240303214733-8c13bb004068 h1:1B+EAUqxEyPByCfk55tB21DtR7WF7Q2w71g7+uVkvIg= github.com/tehmaze/netflow v0.0.0-20240303214733-8c13bb004068/go.mod h1:QRP5wJOf7gGMGL2fCAfmh/5CMZQspRxT5DqghaPRrjM= -github.com/threatwinds/go-sdk v1.1.14 h1:9XqqGPZvDHHuJ/XkfMsDl3fe7Adfi1fMh/PpQFkUkJU= -github.com/threatwinds/go-sdk v1.1.14/go.mod h1:Kfu26gkSZDpNNkPvuQbTAW3dWIQ66pVIrNYW1YBG3Kg= +github.com/threatwinds/go-sdk v1.1.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= +github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= github.com/threatwinds/logger v1.2.3 h1:V2SVAXzbq+/huCvIWOfqzMTH+WBHJxankyBgVG2hy1Y= github.com/threatwinds/logger v1.2.3/go.mod h1:N+bJKvF4FQNJZLfQpVYWpr6D8iEAFnAQfHYqH5iR1TI= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= @@ -160,49 +160,49 @@ github.com/wI2L/jsondiff v0.7.0 h1:1lH1G37GhBPqCfp/lrs91rf/2j3DktX6qYAKZkLuCQQ= github.com/wI2L/jsondiff v0.7.0/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/arch v0.23.0 h1:lKF64A2jF6Zd8L0knGltUnegD62JMFBiCPBmQpToHhg= -golang.org/x/arch v0.23.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/arch v0.24.0 h1:qlJ3M9upxvFfwRM51tTg3Yl+8CP9vCC1E7vlFpgv99Y= +golang.org/x/arch v0.24.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= +golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 h1:7ei4lp52gK1uSejlA8AZl5AJjeLUOHBQscRQZUgAcu0= -google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20/go.mod h1:ZdbssH/1SOVnjnDlXzxDHK2MCidiqXtbYccJNzNYPEE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 h1:Jr5R2J6F6qWyzINc+4AM8t5pfUz6beZpHp678GNrMbE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= +golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= +google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1:tu/dtnW1o3wfaxCOjSLn5IRX4YDcJrtlpzYkhHhGaC4= +google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ= +google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/as400/go.mod b/as400/go.mod index 920bc5e32..0a25b6089 100644 --- a/as400/go.mod +++ b/as400/go.mod @@ -1,6 +1,6 @@ module github.com/utmstack/UTMStack/as400 -go 1.25.0 +go 1.25.5 require ( github.com/AtlasInsideCorp/AtlasInsideAES v1.0.0 @@ -8,58 +8,62 @@ require ( github.com/glebarez/sqlite v1.11.0 github.com/google/uuid v1.6.0 github.com/kardianos/service v1.2.4 - github.com/threatwinds/go-sdk v1.0.45 - github.com/threatwinds/logger v1.2.2 - google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.9 + github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/logger v1.2.3 + google.golang.org/grpc v1.81.1 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v2 v2.4.0 - gorm.io/gorm v1.31.0 + gorm.io/gorm v1.31.1 ) require ( - cel.dev/expr v0.24.0 // indirect + cel.dev/expr v0.25.1 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect - github.com/bytedance/sonic v1.14.0 // indirect - github.com/bytedance/sonic/loader v0.3.0 // indirect - github.com/cloudwego/base64x v0.1.5 // indirect + github.com/bytedance/gopkg v0.1.3 // indirect + github.com/bytedance/sonic v1.15.0 // indirect + github.com/bytedance/sonic/loader v0.5.0 // indirect + github.com/cloudwego/base64x v0.1.6 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/elastic/go-windows v1.0.2 // indirect - github.com/gabriel-vasile/mimetype v1.4.9 // indirect + github.com/gabriel-vasile/mimetype v1.4.13 // indirect github.com/gin-contrib/sse v1.1.0 // indirect - github.com/gin-gonic/gin v1.10.1 // indirect + github.com/gin-gonic/gin v1.11.0 // indirect github.com/glebarez/go-sqlite v1.21.2 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.27.0 // indirect + github.com/go-playground/validator/v10 v10.30.1 // indirect github.com/goccy/go-json v0.10.5 // indirect - github.com/google/cel-go v0.26.0 // indirect + github.com/goccy/go-yaml v1.19.2 // indirect + github.com/google/cel-go v0.27.0 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect - github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/opensearch-project/opensearch-go/v4 v4.6.0 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/prometheus/procfs v0.15.1 // indirect + github.com/quic-go/qpack v0.6.0 // indirect + github.com/quic-go/quic-go v0.59.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/stoewer/go-strcase v1.3.1 // indirect github.com/tidwall/gjson v1.18.0 // indirect - github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/match v1.2.0 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect - github.com/ugorji/go/codec v1.3.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/arch v0.19.0 // indirect - golang.org/x/crypto v0.40.0 // indirect - golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 // indirect + github.com/ugorji/go/codec v1.3.1 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + golang.org/x/arch v0.24.0 // indirect + golang.org/x/crypto v0.49.0 // indirect + golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect howett.net/plist v0.0.0-20181124034731-591f970eefbb // indirect @@ -67,5 +71,5 @@ require ( modernc.org/mathutil v1.5.0 // indirect modernc.org/memory v1.5.0 // indirect modernc.org/sqlite v1.23.1 // indirect - sigs.k8s.io/yaml v1.5.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/as400/go.sum b/as400/go.sum index a8826419f..9e3d605c2 100644 --- a/as400/go.sum +++ b/as400/go.sum @@ -1,33 +1,35 @@ -cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= -cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= +cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= github.com/AtlasInsideCorp/AtlasInsideAES v1.0.0 h1:TBiBl9KCa4i4epY0/q9WSC4ugavL6+6JUkOXWDnMM6I= github.com/AtlasInsideCorp/AtlasInsideAES v1.0.0/go.mod h1:cRhQ3TS/VEfu/z+qaciyuDZdtxgaXgaX8+G6Wa5NzBk= github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= -github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ= -github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA= -github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA= -github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= -github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= -github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= -github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M= +github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= +github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE= +github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k= +github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE= +github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= +github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/elastic/go-sysinfo v1.15.4 h1:A3zQcunCxik14MgXu39cXFXcIw2sFXZ0zL886eyiv1Q= github.com/elastic/go-sysinfo v1.15.4/go.mod h1:ZBVXmqS368dOn/jvijV/zHLfakWTYHBZPk3G244lHrU= github.com/elastic/go-windows v1.0.2 h1:yoLLsAsV5cfg9FLhZ9EXZ2n2sQFKeDYrHenkcivY4vI= github.com/elastic/go-windows v1.0.2/go.mod h1:bGcDpBzXgYSqM0Gx3DM4+UxFj300SZLixie9u9ixLM8= -github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY= -github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok= +github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= +github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= -github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= -github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gin-gonic/gin v1.11.0 h1:OW/6PLjyusp2PPXtyxKHU0RbX6I/l28FTdDlae5ueWk= +github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo= github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k= github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw= @@ -42,14 +44,16 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHOvC0/uWoy2Fzwn4= -github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= +github.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w= +github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= +github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/cel-go v0.26.0 h1:DPGjXackMpJWH680oGY4lZhYjIameYmR+/6RBdDGmaI= -github.com/google/cel-go v0.26.0/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= +github.com/google/cel-go v0.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= +github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -57,6 +61,8 @@ github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbu github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= @@ -66,10 +72,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kardianos/service v1.2.4 h1:XNlGtZOYNx2u91urOdg/Kfmc+gfmuIo1Dd3rEi2OgBk= github.com/kardianos/service v1.2.4/go.mod h1:E4V9ufUuY82F7Ztlu1eN9VXWIQxg8NoLQlmFe0MtrXc= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= -github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -86,85 +90,97 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/opensearch-project/opensearch-go/v4 v4.6.0 h1:Ac8aLtDSmLEyOmv0r1qhQLw3b4vcUhE42NE9k+Z4cRc= +github.com/opensearch-project/opensearch-go/v4 v4.6.0/go.mod h1:3iZtb4SNt3IzaxavKq0dURh1AmtVgYW71E4XqmYnIiQ= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= +github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= +github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw= +github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= -github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= -github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/threatwinds/go-sdk v1.0.45 h1:KZ3s3HviNRrOkg5EqjFnoauANFFzTqjNFyshPLY2SoI= -github.com/threatwinds/go-sdk v1.0.45/go.mod h1:tcWn6r6vqID/W/nL3UKfc5NafA3V/cSkiLvfJnwB58c= -github.com/threatwinds/logger v1.2.2 h1:sVuT8yhbecPqP4tT8EwHfp1czNC6e1wdkE1ihNnuBdA= -github.com/threatwinds/logger v1.2.2/go.mod h1:Amq0QI1y7fkTpnBUgeGVu2Z/C4u4ys2pNLUOuj3UAAU= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/threatwinds/go-sdk v1.1.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= +github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/logger v1.2.3 h1:V2SVAXzbq+/huCvIWOfqzMTH+WBHJxankyBgVG2hy1Y= +github.com/threatwinds/logger v1.2.3/go.mod h1:N+bJKvF4FQNJZLfQpVYWpr6D8iEAFnAQfHYqH5iR1TI= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= +github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= -github.com/ugorji/go/codec v1.3.0 h1:Qd2W2sQawAfG8XSvzwhBeoGq71zXOC/Q1E9y/wUcsUA= -github.com/ugorji/go/codec v1.3.0/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= -golang.org/x/arch v0.19.0 h1:LmbDQUodHThXE+htjrnmVD73M//D9GTH6wFZjyDkjyU= -golang.org/x/arch v0.19.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= -golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= -golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY= +github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4= +github.com/wI2L/jsondiff v0.7.0 h1:1lH1G37GhBPqCfp/lrs91rf/2j3DktX6qYAKZkLuCQQ= +github.com/wI2L/jsondiff v0.7.0/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= +go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/arch v0.24.0 h1:qlJ3M9upxvFfwRM51tTg3Yl+8CP9vCC1E7vlFpgv99Y= +golang.org/x/arch v0.24.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= +golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074 h1:mVXdvnmR3S3BQOqHECm9NGMjYiRtEvDYcqAqedTXY6s= -google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:vYFwMYFbmA8vl6Z/krj/h7+U/AqpHknwJX4Uqgfyc7I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 h1:qJW29YvkiJmXOYMu5Tf8lyrTp3dOS+K4z6IixtLaCf8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= +google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1:tu/dtnW1o3wfaxCOjSLn5IRX4YDcJrtlpzYkhHhGaC4= +google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ= +google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= @@ -177,8 +193,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/gorm v1.31.0 h1:0VlycGreVhK7RF/Bwt51Fk8v0xLiiiFdbGDPIZQ7mJY= -gorm.io/gorm v1.31.0/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= +gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= +gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE= @@ -189,6 +205,5 @@ modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM= modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= -nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/as400/updater/go.mod b/as400/updater/go.mod index 6b8aba325..be55ccee3 100644 --- a/as400/updater/go.mod +++ b/as400/updater/go.mod @@ -4,17 +4,17 @@ go 1.25.5 require ( github.com/kardianos/service v1.2.4 - github.com/threatwinds/go-sdk v1.1.1 + github.com/threatwinds/go-sdk v1.1.21 github.com/threatwinds/logger v1.2.3 gopkg.in/yaml.v3 v3.0.1 ) require ( github.com/bytedance/gopkg v0.1.3 // indirect - github.com/bytedance/sonic v1.14.2 // indirect - github.com/bytedance/sonic/loader v0.4.0 // indirect + github.com/bytedance/sonic v1.15.0 // indirect + github.com/bytedance/sonic/loader v0.5.0 // indirect github.com/cloudwego/base64x v0.1.6 // indirect - github.com/gabriel-vasile/mimetype v1.4.12 // indirect + github.com/gabriel-vasile/mimetype v1.4.13 // indirect github.com/gin-contrib/sse v1.1.0 // indirect github.com/gin-gonic/gin v1.11.0 // indirect github.com/go-playground/locales v0.14.1 // indirect @@ -38,11 +38,11 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.3.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/arch v0.23.0 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/arch v0.24.0 // indirect + golang.org/x/crypto v0.49.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/as400/updater/go.sum b/as400/updater/go.sum index b8177de20..f3b4ce71f 100644 --- a/as400/updater/go.sum +++ b/as400/updater/go.sum @@ -1,17 +1,17 @@ github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M= github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= -github.com/bytedance/sonic v1.14.2 h1:k1twIoe97C1DtYUo+fZQy865IuHia4PR5RPiuGPPIIE= -github.com/bytedance/sonic v1.14.2/go.mod h1:T80iDELeHiHKSc0C9tubFygiuXoGzrkjKzX2quAx980= -github.com/bytedance/sonic/loader v0.4.0 h1:olZ7lEqcxtZygCK9EKYKADnpQoYkRQxaeY2NYzevs+o= -github.com/bytedance/sonic/loader v0.4.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= +github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE= +github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k= +github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE= +github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw= -github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= +github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= +github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= github.com/gin-gonic/gin v1.11.0 h1:OW/6PLjyusp2PPXtyxKHU0RbX6I/l28FTdDlae5ueWk= @@ -74,8 +74,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/threatwinds/go-sdk v1.1.1 h1:K1rtmjhYokGvj5z/o/wwn8gD6LvkgKfxv2MyMUezRUQ= -github.com/threatwinds/go-sdk v1.1.1/go.mod h1:N19iqJPaNAoWwZTCuFvV0hIvT0D1jOR1KkKYgAoPLmw= +github.com/threatwinds/go-sdk v1.1.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= +github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= github.com/threatwinds/logger v1.2.3 h1:V2SVAXzbq+/huCvIWOfqzMTH+WBHJxankyBgVG2hy1Y= github.com/threatwinds/logger v1.2.3/go.mod h1:N+bJKvF4FQNJZLfQpVYWpr6D8iEAFnAQfHYqH5iR1TI= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= @@ -94,19 +94,19 @@ go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/arch v0.23.0 h1:lKF64A2jF6Zd8L0knGltUnegD62JMFBiCPBmQpToHhg= -golang.org/x/arch v0.23.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +golang.org/x/arch v0.24.0 h1:qlJ3M9upxvFfwRM51tTg3Yl+8CP9vCC1E7vlFpgv99Y= +golang.org/x/arch v0.24.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/backend/src/main/java/com/park/utmstack/service/collectors/CollectorConfigBuilder.java b/backend/src/main/java/com/park/utmstack/service/collectors/CollectorConfigBuilder.java index cd821aa30..0d289ee7e 100644 --- a/backend/src/main/java/com/park/utmstack/service/collectors/CollectorConfigBuilder.java +++ b/backend/src/main/java/com/park/utmstack/service/collectors/CollectorConfigBuilder.java @@ -41,7 +41,7 @@ private List processPasswords(List new RuntimeException("Configuration id " + config.getId() + " not found")); - if (Objects.equals(config.getConfValue(), original.getConfValue())) { + if (Objects.equals(config.getConfValue(), Constants.MASKED_VALUE) || Objects.equals(config.getConfValue(), original.getConfValue())) { config.setConfValue( CipherUtil.decrypt(original.getConfValue(), System.getenv(Constants.ENV_ENCRYPTION_KEY)) ); diff --git a/backend/src/main/java/com/park/utmstack/service/elasticsearch/ElasticsearchService.java b/backend/src/main/java/com/park/utmstack/service/elasticsearch/ElasticsearchService.java index dcddeac7e..01a76e672 100644 --- a/backend/src/main/java/com/park/utmstack/service/elasticsearch/ElasticsearchService.java +++ b/backend/src/main/java/com/park/utmstack/service/elasticsearch/ElasticsearchService.java @@ -378,6 +378,24 @@ public long count(List filters, String indexPattern) { } } + public Map getLatestDocument(List filters, String indexPattern) { + final String ctx = CLASSNAME + ".getLatestDocument"; + try { + SearchRequest request = new SearchRequest.Builder() + .index(indexPattern) + .query(SearchUtil.toQuery(filters)) + .sort(s -> s.field(f -> f.field("@timestamp").order(SortOrder.Desc))) + .size(1) + .build(); + + SearchResponse response = search(request, Map.class); + if (response.hits().hits().isEmpty()) return null; + return response.hits().hits().get(0).source(); + } catch (Exception e) { + throw new RuntimeException(ctx + ": " + e.getMessage(), e); + } + } + public SearchResponse search(SearchRequest request, Class type) { final String ctx = CLASSNAME + ".search"; diff --git a/backend/src/main/java/com/park/utmstack/util/UtilCsv.java b/backend/src/main/java/com/park/utmstack/util/UtilCsv.java index 762f2e423..96a907998 100644 --- a/backend/src/main/java/com/park/utmstack/util/UtilCsv.java +++ b/backend/src/main/java/com/park/utmstack/util/UtilCsv.java @@ -1,5 +1,6 @@ package com.park.utmstack.util; +import com.fasterxml.jackson.databind.ObjectMapper; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.PathNotFoundException; import com.park.utmstack.domain.shared_types.DataColumn; @@ -18,11 +19,13 @@ import java.util.Arrays; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; public class UtilCsv { private static final String CLASS_NAME = "UtilCsv"; + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); /** * Build a csv file with columns and data and write it to HttpServletResponse writer @@ -35,7 +38,7 @@ public class UtilCsv { public static void prepareToDownload(HttpServletResponse response, DataColumn[] columns, List data) throws UtmCsvException { final String ctx = CLASS_NAME + ".prepareToDownload"; - final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") + final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z") .withLocale(Locale.getDefault()).withZone(TimezoneUtil.getAppTimezone()); try { Assert.notEmpty(columns); @@ -69,6 +72,14 @@ public static void prepareToDownload(HttpServletResponse response, DataColumn[] String.valueOf(value).replace("\n", " ").replace("\t", " "); } else if (value instanceof List) { cells[i] = ((List) value).stream().map(String::valueOf).collect(Collectors.joining(",")); + } else if (value instanceof Number) { + cells[i] = String.valueOf(value); + } else if (value instanceof Map) { + try { + cells[i] = OBJECT_MAPPER.writeValueAsString(value); + } catch (Exception ex) { + cells[i] = value.toString(); + } } } rows.add(cells); diff --git a/backend/src/main/java/com/park/utmstack/web/rest/elasticsearch/ElasticsearchResource.java b/backend/src/main/java/com/park/utmstack/web/rest/elasticsearch/ElasticsearchResource.java index d48ecc7eb..c1d6623a3 100644 --- a/backend/src/main/java/com/park/utmstack/web/rest/elasticsearch/ElasticsearchResource.java +++ b/backend/src/main/java/com/park/utmstack/web/rest/elasticsearch/ElasticsearchResource.java @@ -4,6 +4,7 @@ import com.park.utmstack.domain.chart_builder.types.query.FilterType; import com.park.utmstack.domain.chart_builder.types.query.OperatorType; import com.park.utmstack.domain.shared_types.CsvExportingParams; +import com.park.utmstack.domain.shared_types.DataColumn; import com.park.utmstack.service.application_events.ApplicationEventService; import com.park.utmstack.service.dto.elastic.SqlSearchDto; import com.park.utmstack.service.elasticsearch.ElasticsearchService; @@ -173,12 +174,13 @@ public ResponseEntity> search(@RequestBody(required = false) List { Object id = d.get("id"); if (id != null) { - long countEchoes = elasticsearchService.count( - List.of(new FilterType("parentId", OperatorType.IS, id.toString())), - indexPattern - ); + List echoFilter = List.of(new FilterType("parentId", OperatorType.IS, id.toString())); + long countEchoes = elasticsearchService.count(echoFilter, indexPattern); d.put("hasChildren", countEchoes > 0); d.put("echoes", countEchoes); + if (countEchoes > 0) { + d.put("last_echo", elasticsearchService.getLatestDocument(echoFilter, indexPattern)); + } } }); } @@ -203,6 +205,27 @@ public ResponseEntity searchToCsv(@RequestBody @Valid CsvExportingParams p return ResponseEntity.ok().build(); List hits = searchResponse.hits().hits().stream().map(Hit::source).collect(Collectors.toList()); + + boolean needsEchoes = false; + for (DataColumn col : params.getColumns()) { + if ("echoes".equals(col.getField())) { + needsEchoes = true; + break; + } + } + if (needsEchoes) { + hits.forEach(d -> { + Object id = d.get("id"); + if (id != null) { + long countEchoes = elasticsearchService.count( + List.of(new FilterType("parentId", OperatorType.IS, id.toString())), + params.getIndexPattern() + ); + d.put("echoes", countEchoes); + } + }); + } + UtilCsv.prepareToDownload(response, params.getColumns(), hits); return ResponseEntity.ok().build(); diff --git a/filters/fortinet/fortinet.yml b/filters/fortinet/fortinet.yml index aedde27a9..e8c51bd97 100644 --- a/filters/fortinet/fortinet.yml +++ b/filters/fortinet/fortinet.yml @@ -1,4 +1,4 @@ -# Fortinet firewall module filter, version 3.0.3 +# Fortinet firewall module filter, version 3.1.0 # Based in docs and samples provided # # Documentations @@ -30,7 +30,179 @@ pipeline: - delete: fields: - log.msg - + + # CEF support: re-parse log.kvMessage to extract CEF header. + # Fails silently (all-or-nothing) on non-CEF events. + - grok: + source: log.kvMessage + patterns: + - fieldName: log.syslogTimestamp + pattern: '{{.syslogDate}}' + - fieldName: log.syslogHost + pattern: '{{.notSpace}}' + - fieldName: "" + pattern: 'CEF:' + - fieldName: log.cefVersion + pattern: '{{.integer}}' + - fieldName: "" + pattern: '\|' + - fieldName: log.cefVendor + pattern: '{{.data}}' + - fieldName: "" + pattern: '\|' + - fieldName: log.cefProduct + pattern: '{{.data}}' + - fieldName: "" + pattern: '\|' + - fieldName: log.cefProductVersion + pattern: '{{.data}}' + - fieldName: "" + pattern: '\|' + - fieldName: log.cefSignatureId + pattern: '{{.data}}' + - fieldName: "" + pattern: '\|' + - fieldName: log.cefName + pattern: '{{.data}}' + - fieldName: "" + pattern: '\|' + - fieldName: log.cefSeverity + pattern: '{{.integer}}' + - fieldName: "" + pattern: '\|' + - fieldName: log.kvMessage + pattern: '{{.greedy}}' + + # Recover deviceExternalId mangled by kv (CEF header token). + - rename: + from: [log.serverrst3deviceExternalId, log.clientrst3deviceExternalId] + to: log.deviceExternalId + + # Normalize FTNTFGT* fields to canonical FortiGate names. + - rename: + from: [log.FTNTFGTlogid] + to: log.logid + - rename: + from: [log.FTNTFGTeventtime] + to: log.eventtime + - rename: + from: [log.FTNTFGTtz] + to: log.tz + - rename: + from: [log.FTNTFGTsubtype] + to: log.subtype + - rename: + from: [log.FTNTFGTlevel] + to: log.level + - rename: + from: [log.FTNTFGTvd] + to: log.vd + - rename: + from: [log.FTNTFGTsrcintfrole] + to: log.srcintfrole + - rename: + from: [log.FTNTFGTdstintfrole] + to: log.dstintfrole + - rename: + from: [log.FTNTFGTsrccountry] + to: log.srccountry + - rename: + from: [log.FTNTFGTdstcountry] + to: log.dstcountry + - rename: + from: [log.FTNTFGTpolicyid] + to: log.policyid + - rename: + from: [log.FTNTFGTpolicytype] + to: log.policytype + - rename: + from: [log.FTNTFGTpoluuid] + to: log.poluuid + - rename: + from: [log.FTNTFGTpolicyname] + to: log.policyname + - rename: + from: [log.FTNTFGTtrandisp] + to: log.trandisp + - rename: + from: [log.FTNTFGTappcat] + to: log.appcat + - rename: + from: [log.FTNTFGTapp] + to: log.app + - rename: + from: [log.FTNTFGTduration] + to: log.duration + - rename: + from: [log.FTNTFGTsentpkt] + to: origin.packagesSent + - rename: + from: [log.FTNTFGTrcvdpkt] + to: origin.packagesReceived + - rename: + from: [log.FTNTFGTsrchwvendor] + to: log.sourceVendor + - rename: + from: [log.FTNTFGTmastersrcmac] + to: log.masterSourceMac + - rename: + from: [log.FTNTFGTsrcmac] + to: origin.mac + - rename: + from: [log.FTNTFGTdevtype] + to: log.devtype + - rename: + from: [log.FTNTFGTdstinetsvc] + to: log.dstinetsvc + - rename: + from: [log.FTNTFGTdstregion] + to: log.dstregion + - rename: + from: [log.FTNTFGTdstcity] + to: log.dstcity + - rename: + from: [log.FTNTFGTdstreputation] + to: log.dstreputation + - rename: + from: [log.FTNTFGTvwlid] + to: log.vwlid + - rename: + from: [log.FTNTFGTsrcserver] + to: log.srcserver + + # Split CEF "cat" (e.g. "traffic:local") → log.type + log.catSubtype. + - grok: + source: log.cat + patterns: + - fieldName: log.type + pattern: '{{.word}}' + - fieldName: "" + pattern: ':' + - fieldName: log.catSubtype + pattern: '{{.word}}' + - delete: + fields: [log.cat] + + # CEF long-form aliases → canonical names. + - rename: + from: [log.deviceExternalId] + to: log.devid + - rename: + from: [log.deviceInboundInterface] + to: log.srcintf + - rename: + from: [log.deviceOutboundInterface] + to: log.dstintf + - rename: + from: [log.externalId] + to: log.sessionid + - rename: + from: [log.sourceTranslatedAddress] + to: log.transip + - rename: + from: [log.sourceTranslatedPort] + to: log.transport + # Using grok to parse kv issued fields - grok: patterns: @@ -55,22 +227,27 @@ pipeline: - rename: from: - log.action + - log.act to: action - rename: from: - log.dstip + - log.dst to: target.ip - rename: from: - log.dstport + - log.dpt to: target.port - rename: from: - log.srcip + - log.src to: origin.ip - rename: from: - log.srcport + - log.spt to: origin.port - rename: from: @@ -111,6 +288,7 @@ pipeline: - rename: from: - log.rcvdbyte + - log.in to: origin.bytesReceived - rename: from: @@ -119,12 +297,26 @@ pipeline: - rename: from: - log.sentbyte + - log.out to: origin.bytesSent - rename: from: - log.sentpkt to: origin.packagesSent + # Type casting for numeric fields. + - cast: + fields: + - origin.port + - target.port + - origin.bytesReceived + - origin.bytesSent + - origin.packagesReceived + - origin.packagesSent + - log.cefSeverity + - log.cefVersion + to: int + # Removing unused caracters - trim: function: prefix diff --git a/frontend/e2e/protractor.conf.js b/frontend/e2e/protractor.conf.js index 86776a391..f58072e95 100644 --- a/frontend/e2e/protractor.conf.js +++ b/frontend/e2e/protractor.conf.js @@ -12,7 +12,7 @@ exports.config = { 'browserName': 'chrome' }, directConnect: true, - baseUrl: 'http://localhost:4200/', + baseUrl: 'https://192.168.1.18:8080/', framework: 'jasmine', jasmineNodeOpts: { showColors: true, diff --git a/frontend/src/app/app-module/guides/guide-cisco/guide-cisco.component.ts b/frontend/src/app/app-module/guides/guide-cisco/guide-cisco.component.ts index a72837b6a..f6e11a46f 100644 --- a/frontend/src/app/app-module/guides/guide-cisco/guide-cisco.component.ts +++ b/frontend/src/app/app-module/guides/guide-cisco/guide-cisco.component.ts @@ -14,7 +14,7 @@ export class GuideCiscoComponent implements OnInit { @Input() serverId: number; ciscoPaths: CiscoOSPaths[] = [ - {os: 'linux', path: '/opt/utmstack_agent_service_linux_amd64/log-collector-config.json'}, + {os: 'linux', path: '/opt/utmstack-linux-agent/log-collector-config.json'}, {os: 'windows', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\log-collector-config.json'} ]; ciscoPorts: CiscoPorts[] = [ diff --git a/frontend/src/app/app-module/guides/guide-filebeat-generic/guide-filebeat-generic.component.ts b/frontend/src/app/app-module/guides/guide-filebeat-generic/guide-filebeat-generic.component.ts index 88c0c7cf5..b80f89611 100644 --- a/frontend/src/app/app-module/guides/guide-filebeat-generic/guide-filebeat-generic.component.ts +++ b/frontend/src/app/app-module/guides/guide-filebeat-generic/guide-filebeat-generic.component.ts @@ -28,103 +28,103 @@ export class GuideFilebeatGenericComponent implements OnInit { }, ]; commandsActivate: FilebeatCommands[] = [ - {module: UtmModulesEnum.TRAEFIK, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.TRAEFIK, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable traefik', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.TRAEFIK, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable traefik', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.APACHE, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ./filebeat modules enable apache', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + {module: UtmModulesEnum.APACHE, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ./filebeat modules enable apache', + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.APACHE, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable apache', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.ELASTICSEARCH, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.ELASTICSEARCH, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable elasticsearch', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.ELASTICSEARCH, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable elasticsearch', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.HAPROXY, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.HAPROXY, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable haproxy', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.HAPROXY, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable haproxy', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.MONGODB, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.MONGODB, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable mongodb', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.MONGODB, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable mongodb', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.KIBANA, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.KIBANA, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable kibana', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.KIBANA, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable kibana', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.LOGSTASH, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.LOGSTASH, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable logstash', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.LOGSTASH, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable logstash', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.KAFKA, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.KAFKA, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable kafka', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.KAFKA, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable kafka', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.MYSQL, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.MYSQL, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable mysql', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.MYSQL, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable mysql', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.REDIS, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.REDIS, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable redis', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.REDIS, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable redis', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.POSTGRESQL, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.POSTGRESQL, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable postgresql', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.POSTGRESQL, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable postgresql', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.NGINX, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.NGINX, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable nginx', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.NGINX, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable nginx', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.AUDITD, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.AUDITD, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable auditd', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.OSQUERY, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.OSQUERY, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable osquery', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.OSQUERY, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable osquery', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, - {module: UtmModulesEnum.NATS, os: 'linux', command: 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ' + {module: UtmModulesEnum.NATS, os: 'linux', command: 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ' + './filebeat modules enable nats', - path: '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, + path: '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', restartCmd: 'sudo systemctl restart UTMStackModulesLogsCollector'}, {module: UtmModulesEnum.NATS, os: 'windows', command: 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\" ' + '&& filebeat modules enable nats', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', restartCmd: 'sc stop UTMStackModulesLogsCollector && timeout /t 5 && sc start UTMStackModulesLogsCollector'}, diff --git a/frontend/src/app/app-module/guides/guide-filebeat/guide-filebeat.component.html b/frontend/src/app/app-module/guides/guide-filebeat/guide-filebeat.component.html index d0996ac1a..3a3253264 100644 --- a/frontend/src/app/app-module/guides/guide-filebeat/guide-filebeat.component.html +++ b/frontend/src/app/app-module/guides/guide-filebeat/guide-filebeat.component.html @@ -58,7 +58,7 @@

linux + code="/opt/utmstack-linux-agent/log-collector-config.json">
windows diff --git a/frontend/src/app/app-module/guides/guide-json/guide-json.component.html b/frontend/src/app/app-module/guides/guide-json/guide-json.component.html index 3525aae39..7c358aa9e 100644 --- a/frontend/src/app/app-module/guides/guide-json/guide-json.component.html +++ b/frontend/src/app/app-module/guides/guide-json/guide-json.component.html @@ -20,17 +20,13 @@

* Utm-Connection-Key: {{mask}}

-
- * Utm-Log-Source: - your log source (mandatory header) -
* Content-Type: application/json
-
Body (any valid object array)
+
Body
{{exampleCode}}
@@ -60,7 +56,6 @@

Errors
  • - Header Utm-Connection-Key not found
  • -
  • - Header Utm-Log-Source not found
  • - Invalid body
diff --git a/frontend/src/app/app-module/guides/guide-json/guide-json.component.ts b/frontend/src/app/app-module/guides/guide-json/guide-json.component.ts index c634867a3..1d942d5e1 100644 --- a/frontend/src/app/app-module/guides/guide-json/guide-json.component.ts +++ b/frontend/src/app/app-module/guides/guide-json/guide-json.component.ts @@ -16,13 +16,17 @@ import json # Define the URL url = "https://${this.instance}:8080/v1/logs" -logs = [] # Replace with your actual log data -payload = json.dumps(logs) + +# Define the payload (replace this with your actual log data) +payload = json.dumps({ + "dataType": "json-input", + "dataSource": "api-gateway", + "raw": "{\\"level\\":\\"error\\",\\"msg\\":\\"connection refused\\",\\"user\\":\\"admin\\",\\"ip\\":\\"10.0.0.5\\",\\"endpoint\\":\\"/api/login\\",\\"status\\":500}" +}) # Define headers headers = { 'Utm-Connection-Key': '${this.mask}', - 'Utm-Log-Source': 'your log source (mandatory header)', 'Content-Type': 'application/json' } @@ -39,14 +43,13 @@ OkHttpClient client = new OkHttpClient().newBuilder().build(); // Define the media type and request body (replace this with your actual request body) MediaType mediaType = MediaType.parse("application/json"); -RequestBody body = RequestBody.create(mediaType, "[]\\n"); +RequestBody body = RequestBody.create(mediaType, "{\\"dataType\\":\\"json-input\\",\\"dataSource\\":\\"api-gateway\\",\\"raw\\":\\"{\\\\\\"level\\\\\\":\\\\\\"error\\\\\\",\\\\\\"msg\\\\\\":\\\\\\"connection refused\\\\\\",\\\\\\"user\\\\\\":\\\\\\"admin\\\\\\",\\\\\\"ip\\\\\\":\\\\\\"10.0.0.5\\\\\\",\\\\\\"endpoint\\\\\\":\\\\\\"/api/login\\\\\\",\\\\\\"status\\\\\\":500}\\"}"); // Create the request Request request = new Request.Builder() .url("https://${this.instance}:8080/v1/logs") .method("POST", body) .addHeader("Utm-Connection-Key", "${this.mask}") - .addHeader("Utm-Log-Source", "your log source (mandatory header)") .addHeader("Content-Type", "application/json") .build(); @@ -70,7 +73,7 @@ func main() { method := "POST" // Define the payload (replace this with your actual payload) - payload := strings.NewReader([]) + payload := strings.NewReader("{\\"dataType\\":\\"json-input\\",\\"dataSource\\":\\"api-gateway\\",\\"raw\\":\\"{\\\\\\"level\\\\\\":\\\\\\"error\\\\\\",\\\\\\"msg\\\\\\":\\\\\\"connection refused\\\\\\",\\\\\\"user\\\\\\":\\\\\\"admin\\\\\\",\\\\\\"ip\\\\\\":\\\\\\"10.0.0.5\\\\\\",\\\\\\"endpoint\\\\\\":\\\\\\"/api/login\\\\\\",\\\\\\"status\\\\\\":500}\\"}") // Create an HTTP client client := &http.Client{} @@ -85,7 +88,6 @@ func main() { // Add headers req.Header.Add("Utm-Connection-Key", "${this.mask}") - req.Header.Add("Utm-Log-Source", "your log source (mandatory header)") req.Header.Add("Content-Type", "application/json") // Send the request @@ -119,11 +121,14 @@ var options = { 'url': 'https://${this.instance}:8080/v1/logs', 'headers': { 'Utm-Connection-Key': '${this.mask}', - 'Utm-Log-Source': 'your log source (mandatory header)', 'Content-Type': 'application/json' }, // Define the request body (replace this with your actual request body) - body: JSON.stringify([]) + body: JSON.stringify({ + "dataType": "json-input", + "dataSource": "api-gateway", + "raw": "{\\"level\\":\\"error\\",\\"msg\\":\\"connection refused\\",\\"user\\":\\"admin\\",\\"ip\\":\\"10.0.0.5\\",\\"endpoint\\":\\"/api/login\\",\\"status\\":500}" + }) }; // Send the request @@ -137,11 +142,16 @@ request(options, function (error, response) { # Define headers $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Utm-Connection-Key", "${this.mask}") -$headers.Add("Utm-Log-Source", "your log source (mandatory header)") $headers.Add("Content-Type", "application/json") # Define the request body (replace this with your actual request body) -$body = @"[]"@ +$body = @" +{ + "dataType": "json-input", + "dataSource": "api-gateway", + "raw": "{\\"level\\":\\"error\\",\\"msg\\":\\"connection refused\\",\\"user\\":\\"admin\\",\\"ip\\":\\"10.0.0.5\\",\\"endpoint\\":\\"/api/login\\",\\"status\\":500}" +} +"@ # Send the request and capture the response $response = Invoke-RestMethod 'https://${this.instance}:8080/v1/logs' -Method 'POST' -Headers $headers -Body $body @@ -153,23 +163,28 @@ $response | ConvertTo-Json curlCode = ` curl --location --request POST 'https://${this.instance}:8080/v1/logs' \\ --header 'Utm-Connection-Key: ${this.mask}' \\ - --header 'Utm-Log-Source: your log source (mandatory header)' \\ --header 'Content-Type: application/json' \\ - --data '[]' + --data '{ + "dataType": "json-input", + "dataSource": "api-gateway", + "raw": "{\\"level\\":\\"error\\",\\"msg\\":\\"connection refused\\",\\"user\\":\\"admin\\",\\"ip\\":\\"10.0.0.5\\",\\"endpoint\\":\\"/api/login\\",\\"status\\":500}" + }' `; token: string; view: 'python' | 'java' | 'javascript' | 'golang' | 'bash' | 'powershell' = 'python'; exampleCode = ` - [ - { - "timestamp": "2023-10-11T08:30:15.123Z", - "level": "INFO", - "message": "Application started successfully.", - "component": "Server", - "module": "app.js", - "source": "MyApp" - } - ] + { + "dataType": "json-input", + "dataSource": "api-gateway", + "raw": "{ + \\"level\\": \\"error\\", + \\"msg\\": \\"connection refused\\", + \\"user\\": \\"admin\\", + \\"ip\\": \\"10.0.0.5\\", + \\"endpoint\\": \\"/api/login\\", + \\"status\\": 500 + }" + } `; responseBody = `{"status": "received"}`; diff --git a/frontend/src/app/app-module/guides/guide-linux-agent/guide-linux-agent.component.ts b/frontend/src/app/app-module/guides/guide-linux-agent/guide-linux-agent.component.ts index 9d3caeacd..949b26fd3 100644 --- a/frontend/src/app/app-module/guides/guide-linux-agent/guide-linux-agent.component.ts +++ b/frontend/src/app/app-module/guides/guide-linux-agent/guide-linux-agent.component.ts @@ -35,42 +35,42 @@ export class GuideLinuxAgentComponent implements OnInit { getCommandUbuntu(installerName: string): string { const ip = window.location.host.includes(':') ? window.location.host.split(':')[0] : window.location.host; - return `sudo bash -c "apt update -y && apt install wget -y && mkdir -p /opt/utmstack_agent_service_linux_amd64 && \ - wget --no-check-certificate -P /opt/utmstack_agent_service_linux_amd64 \ + return `sudo bash -c "apt update -y && apt install wget -y && mkdir -p /opt/utmstack-linux-agent && \ + wget --no-check-certificate -P /opt/utmstack-linux-agent \ https://${ip}:9001/private/dependencies/agent/${installerName} && \ - chmod -R 755 /opt/utmstack_agent_service_linux_amd64/${installerName} && \ - /opt/utmstack_agent_service_linux_amd64/${installerName} install ${ip} ${this.token} yes"`; + chmod -R 755 /opt/utmstack-linux-agent/${installerName} && \ + /opt/utmstack-linux-agent/${installerName} install ${ip} ${this.token} yes"`; } getCommandCentos7RedHat(installerName: string): string { const ip = window.location.host.includes(':') ? window.location.host.split(':')[0] : window.location.host; - return `sudo bash -c "yum install wget -y && mkdir -p /opt/utmstack_agent_service_linux_amd64 && \ - wget --no-check-certificate -P /opt/utmstack_agent_service_linux_amd64 \ + return `sudo bash -c "yum install wget -y && mkdir -p /opt/utmstack-linux-agent && \ + wget --no-check-certificate -P /opt/utmstack-linux-agent \ https://${ip}:9001/private/dependencies/agent/${installerName} && \ - chmod -R 755 /opt/utmstack_agent_service_linux_amd64/${installerName} && \ - /opt/utmstack_agent_service_linux_amd64/${installerName} install ${ip} ${this.token} yes"`; + chmod -R 755 /opt/utmstack-linux-agent/${installerName} && \ + /opt/utmstack-linux-agent/${installerName} install ${ip} ${this.token} yes"`; } getCommandCentos8Almalinux(installerName: string): string { const ip = window.location.host.includes(':') ? window.location.host.split(':')[0] : window.location.host; - return `sudo bash -c "dnf install wget -y && mkdir -p /opt/utmstack_agent_service_linux_amd64 && \ - wget --no-check-certificate -P /opt/utmstack_agent_service_linux_amd64 \ + return `sudo bash -c "dnf install wget -y && mkdir -p /opt/utmstack-linux-agent && \ + wget --no-check-certificate -P /opt/utmstack-linux-agent \ https://${ip}:9001/private/dependencies/agent/${installerName} && \ - chmod -R 755 /opt/utmstack_agent_service_linux_amd64/${installerName} && \ - /opt/utmstack_agent_service_linux_amd64/${installerName} install ${ip} ${this.token} yes"`; + chmod -R 755 /opt/utmstack-linux-agent/${installerName} && \ + /opt/utmstack-linux-agent/${installerName} install ${ip} ${this.token} yes"`; } getUninstallCommand(installerName: string): string { - return `sudo bash -c "/opt/utmstack_agent_service_linux_amd64/${installerName} uninstall || true; \ + return `sudo bash -c "/opt/utmstack-linux-agent/${installerName} uninstall || true; \ systemctl stop UTMStackAgent 2>/dev/null || true; systemctl disable UTMStackAgent 2>/dev/null || true; \ rm -f /etc/systemd/system/UTMStackAgent.service 2>/dev/null || true; \ systemctl stop UTMStackModulesLogsCollector 2>/dev/null || true; \ systemctl disable UTMStackModulesLogsCollector 2>/dev/null || true; \ rm -f /etc/systemd/system/UTMStackModulesLogsCollector.service 2>/dev/null || true; \ systemctl daemon-reload 2>/dev/null || true; \ - echo 'Removing UTMStack Agent dependencies...' && sleep 10 && rm -rf /opt/utmstack_agent_service_linux_amd64 2>/dev/null || true; \ + echo 'Removing UTMStack Agent dependencies...' && sleep 10 && rm -rf /opt/utmstack-linux-agent 2>/dev/null || true; \ echo 'UTMStack Agent dependencies removed successfully.'"`; } diff --git a/frontend/src/app/app-module/guides/guide-netflow/guide-netflow.component.ts b/frontend/src/app/app-module/guides/guide-netflow/guide-netflow.component.ts index 299ae9c6f..38c86db99 100644 --- a/frontend/src/app/app-module/guides/guide-netflow/guide-netflow.component.ts +++ b/frontend/src/app/app-module/guides/guide-netflow/guide-netflow.component.ts @@ -12,7 +12,7 @@ export class GuideNetflowComponent implements OnInit { module = UtmModulesEnum; netflowPaths: NetflowOSPaths[] = [ - {os: 'linux', path: '/opt/utmstack_agent_service_linux_amd64/log-collector-config.json'}, + {os: 'linux', path: '/opt/utmstack-linux-agent/log-collector-config.json'}, {os: 'windows', path: 'C:\\Program Files\\UTMStack\\UTMStack Agent\\log-collector-config.json'} ]; constructor() { diff --git a/frontend/src/app/app-module/guides/shared/constant.ts b/frontend/src/app/app-module/guides/shared/constant.ts index 9fbe5b8a8..5a0a93036 100644 --- a/frontend/src/app/app-module/guides/shared/constant.ts +++ b/frontend/src/app/app-module/guides/shared/constant.ts @@ -69,7 +69,7 @@ export const createPlatforms = ( linuxPath, linuxRestart, [ - `sudo bash -c "/opt/utmstack_agent_service_linux_amd64/utmstack_agent_service load-tls-certs [YOUR_CERT_PATH] [YOUR_KEY_PATH]"` + `sudo bash -c "/opt/utmstack-linux-agent/utmstack_agent_service load-tls-certs [YOUR_CERT_PATH] [YOUR_KEY_PATH]"` ] ), createPlatform( @@ -80,7 +80,7 @@ export const createPlatforms = ( linuxPath, linuxRestart, [ - `sudo bash -c "/opt/utmstack_agent_service_linux_amd64/utmstack_agent_service load-tls-certs [YOUR_CERT_PATH] [YOUR_KEY_PATH]"` + `sudo bash -c "/opt/utmstack-linux-agent/utmstack_agent_service load-tls-certs [YOUR_CERT_PATH] [YOUR_KEY_PATH]"` ] ) ] @@ -114,15 +114,15 @@ export const createFileBeatsPlatforms = ( export const PLATFORMS = createPlatforms( 'Start-Process "C:\\Program Files\\UTMStack\\UTMStack Agent\\utmstack_agent_service_windows_amd64.exe " -ArgumentList \'ACTION\', \'AGENT_NAME\', \'PROTOCOL\', \'TLS\' -NoNewWindow -Wait\n', 'Start-Process "C:\\Program Files\\UTMStack\\UTMStack Agent\\utmstack_agent_service_windows_arm64.exe" -ArgumentList \'ACTION\', \'AGENT_NAME\', \'PROTOCOL\, \'TLS\' -NoNewWindow -Wait\n', - 'sudo bash -c "/opt/utmstack_agent_service_linux_amd64/utmstack_agent_service_linux_amd64 ACTION AGENT_NAME PROTOCOL TLS"', - 'sudo bash -c "/opt/utmstack_agent_service_linux_amd64/utmstack_agent_service_linux_arm64 ACTION AGENT_NAME PROTOCOL TLS"' + 'sudo bash -c "/opt/utmstack-linux-agent/utmstack_agent_service_linux_amd64 ACTION AGENT_NAME PROTOCOL TLS"', + 'sudo bash -c "/opt/utmstack-linux-agent/utmstack_agent_service_linux_arm64 ACTION AGENT_NAME PROTOCOL TLS"' ); export const FILEBEAT_PLATFORMS = createFileBeatsPlatforms( 'cd "C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\"; Start-Process "filebeat.exe" -ArgumentList "modules", "enable", "AGENT_NAME"', - 'cd /opt/utmstack_agent_service_linux_amd64/beats/filebeat/ && ./filebeat modules enable AGENT_NAME', + 'cd /opt/utmstack-linux-agent/beats/filebeat/ && ./filebeat modules enable AGENT_NAME', 'C:\\Program Files\\UTMStack\\UTMStack Agent\\beats\\filebeat\\modules.d\\', 'Stop-Service -Name UTMStackModulesLogsCollector; Start-Sleep -Seconds 5; Start-Service -Name UTMStackModulesLogsCollector', - '/opt/utmstack_agent_service_linux_amd64/beats/filebeat/modules.d/', + '/opt/utmstack-linux-agent/beats/filebeat/modules.d/', 'sudo systemctl restart UTMStackModulesLogsCollector' ); diff --git a/frontend/src/app/app-module/module-integration/module-integration.component.html b/frontend/src/app/app-module/module-integration/module-integration.component.html index b39513881..3bde18fc2 100644 --- a/frontend/src/app/app-module/module-integration/module-integration.component.html +++ b/frontend/src/app/app-module/module-integration/module-integration.component.html @@ -96,7 +96,7 @@