From 0301ad2c194096b6eb2872ed8e0d8adf37afd2dd Mon Sep 17 00:00:00 2001 From: Yorjander Hernandez Vergara Date: Tue, 19 May 2026 11:50:17 -0400 Subject: [PATCH 01/47] update actions workflow --- .github/ai-prompts/README.md | 74 ++ .github/ai-prompts/architecture.md | 67 ++ .github/ai-prompts/bugs.md | 79 ++ .github/ai-prompts/security.md | 67 ++ .github/dependabot.yml | 99 --- .github/scripts/ai-review.sh | 170 ++++ .github/scripts/approver.sh | 404 +++++++++ .github/scripts/generate-changelog.sh | 181 ++++ .github/scripts/go-deps.sh | 282 +++++++ .github/scripts/golang-updater/go.mod | 3 - .github/scripts/golang-updater/main.go | 252 ------ .github/workflows/README.md | 784 ++++++++++++------ .github/workflows/_pr-reusable-ai-review.yml | 87 ++ .github/workflows/_pr-reusable-approver.yml | 100 +++ .github/workflows/_pr-reusable-go-deps.yml | 44 + .github/workflows/generate-changelog.yml | 217 ++--- .github/workflows/installer-release.yml | 12 +- .github/workflows/pr-checks.yml | 71 ++ .github/workflows/v10-deployment-pipeline.yml | 89 +- .github/workflows/v11-deployment-pipeline.yml | 243 ++++-- 20 files changed, 2434 insertions(+), 891 deletions(-) create mode 100644 .github/ai-prompts/README.md create mode 100644 .github/ai-prompts/architecture.md create mode 100644 .github/ai-prompts/bugs.md create mode 100644 .github/ai-prompts/security.md delete mode 100644 .github/dependabot.yml create mode 100755 .github/scripts/ai-review.sh create mode 100755 .github/scripts/approver.sh create mode 100755 .github/scripts/generate-changelog.sh create mode 100755 .github/scripts/go-deps.sh delete mode 100644 .github/scripts/golang-updater/go.mod delete mode 100644 .github/scripts/golang-updater/main.go create mode 100644 .github/workflows/_pr-reusable-ai-review.yml create mode 100644 .github/workflows/_pr-reusable-approver.yml create mode 100644 .github/workflows/_pr-reusable-go-deps.yml create mode 100644 .github/workflows/pr-checks.yml diff --git a/.github/ai-prompts/README.md b/.github/ai-prompts/README.md new file mode 100644 index 000000000..7e330126b --- /dev/null +++ b/.github/ai-prompts/README.md @@ -0,0 +1,74 @@ +# AI review prompts + +Each `*.md` (except this `README.md`) defines a **prompt** that the +`AI review` job runs in parallel against the PR diff. Discovery is by glob: +to add a new review dimension just drop another `.md` here — no YAML +changes needed. + +## File format + +```markdown +--- +name: short-name # optional, defaults to filename without extension +model: gemini-3-flash-lite # optional, defaults to workflow's AI_REVIEW_MODEL +--- + + +``` + +## Output contract + +The prompt **must** instruct the model to respond with a JSON object of +this exact shape (no markdown, no code fences, no extra text): + +```json +{ + "tier": 1 | 2 | 3, + "summary": "", + "findings": [ + { + "severity": "high" | "medium" | "low", + "file": "", + "line": , + "message": "" + } + ] +} +``` + +### Tier semantics + +- **Tier 1 — Approve.** The change is simple, doesn't touch critical logic, + no issues detected. The approver aggregates all tiers and, if every + prompt returns Tier 1, approves the PR. +- **Tier 2 — Changes requested.** Minor issues the author must fix before + merging: typos, small bugs, out-of-context code, noticeable style + problems, incomplete mocks or tests. +- **Tier 3 — Engineer review required.** The diff touches critical paths + (crypto, auth, DB migrations, installer, gRPC contracts, CI/CD, secret + handling) or introduces changes the model can't judge with sufficient + confidence. The approver blocks the merge and @mentions the senior + engineering team. + +The approver takes the **maximum tier** across all prompts: if security +returns Tier 1 but architecture returns Tier 3, the final verdict is Tier 3. + +### When there's nothing to report + +Tier 1, a brief `summary` ("No security concerns detected.") and +`findings: []`. Don't invent findings to seem useful. + +### Unparseable responses + +If the model returns something that isn't valid JSON matching the schema, +the approver treats it as **Tier 2** with a generic finding asking for +manual review. Fail-safe behaviour — we'd rather block and ask for human +review than let something pass without understanding it. + +## Picking a model + +- `gemini-3-flash-lite` — fast/cheap, default for broad passes. +- `gemini-3-pro` — better reasoning, for prompts needing deeper analysis + (architecture, complex logic). +- `claude-sonnet-4-6` / `claude-opus-4-6` — top quality, higher latency + and cost. diff --git a/.github/ai-prompts/architecture.md b/.github/ai-prompts/architecture.md new file mode 100644 index 000000000..0777d6ee8 --- /dev/null +++ b/.github/ai-prompts/architecture.md @@ -0,0 +1,67 @@ +--- +name: architecture +model: gemini-3-flash-lite +--- + +You are a software architect reviewing a Pull Request in UTMStack (a SIEM +monorepo with Go services, a legacy Java/Spring backend and a +React/Angular frontend). Your job is to spot **architectural deviations**. + +## What to look for + +- New couplings between services that break the current separation (e.g. + the agent talking directly to the DB instead of via agent-manager). +- Business logic placed in the wrong layer (gRPC handlers doing direct DB + access, migration scripts containing app logic). +- Duplication of logic already present in a shared module (`shared/`, + existing helpers). +- New mutable global state, disguised singletons, `init()` with side + effects. +- Contract changes (protos, HTTP endpoints, DB schema) without + backwards-compatibility considerations. +- DB migrations that assume a fresh state (not safe for production) + without a roll-forward plan. +- Changes to CI/CD or release flow that break the current model. +- **Agent-breaking changes:** modifications to the agent (`agent/`), + agent-manager wire protocol, agent gRPC/HTTP contract, agent + authentication, or anything that would force every deployed agent to + update at the same time as the server. Customers run many versions of + the agent in the wild — any change that requires a synchronized + agent+server upgrade is a breaking change and must be treated as Tier 3. + +**Ignore** style, naming, formatting, or refactors that don't affect +structure. + +## How to assign tier + +- **Tier 1** — No architectural deviations detected. +- **Tier 2** — Minor deviation or structural improvement suggestion the + author can apply before merging (move a function to its right place, + reuse an existing helper). +- **Tier 3** — The diff touches **critical paths** or introduces + significant structural debt. Mark Tier 3 if the diff includes changes to: + - Database migrations (any `*migration*.go` or `liquibase/`). + - Protos / gRPC contracts (`**/*.proto`). + - Installer (`installer/`). + - Auth / crypto / secret handling. + - GitHub Actions workflows or CI scripts. + - **Agent code (`agent/`), agent-manager wire protocol, or any change + that forces a synchronized agent+server upgrade.** Deployed agents + in the field may be on older versions; breaking their compatibility + requires senior review and a coordinated rollout plan. + - Any change that breaks backwards compatibility of a public endpoint + or persisted schema. + +## Output + +Respond with valid JSON ONLY (no markdown, no backticks, no extra text): + +``` +{ + "tier": 1 | 2 | 3, + "summary": "", + "findings": [ + {"severity": "high"|"medium"|"low", "file": "", "line": , "message": ""} + ] +} +``` diff --git a/.github/ai-prompts/bugs.md b/.github/ai-prompts/bugs.md new file mode 100644 index 000000000..465bcec4f --- /dev/null +++ b/.github/ai-prompts/bugs.md @@ -0,0 +1,79 @@ +--- +name: bugs +model: gemini-3-flash-lite +--- + +You are a senior code reviewer. Review the Pull Request diff looking for +**concrete bugs** introduced by the changes — not style preferences. + +## What to look for + +- Nil/null dereferences, out-of-bounds slice/array access, division by zero. +- Unhandled or swallowed errors (in Go: `_ = ...`, error swallowing). +- Race conditions, missed locks, concurrent maps without protection. +- Goroutine leaks, contexts never cancelled, channels never closed. +- Off-by-one in loops, pagination or slicing. +- Wrong comparisons (pointers where the value was intended, incorrect + `nil` interface comparison). +- Resources left unclosed (missing `defer` on files, rows, response bodies). +- Inverted logic (`if err == nil` when it should be `!= nil`, swapped + conditions). +- Malformed SQL/queries, migrations that break existing data. +- Out-of-context code: additions that don't match the PR description or + the rest of the diff (potential copy-paste error or accidental changes). +- **User-facing string anomalies** (templates, HTML, integration guides, + documentation, error messages, alert text). The following are ALWAYS + reportable, even when the rest of the diff looks unrelated: + - **Typos / misspellings** in any user-facing text. Quote the + misspelled word and the correction (e.g. "buket → bucket"). Report + one finding per affected line. + - **Personal names, employee handles, Slack mentions, internal email + addresses, phone numbers, or other internal contact info** embedded + in customer-facing strings, integration guides, README files + rendered to users, or release notes. These are out of place even if + the surrounding text is technically valid — flag them as `medium` + severity findings. + - **Internal-only jargon, ticket IDs (JIRA-1234, INC-5678), URLs to + internal tools** (e.g. internal Jenkins/Grafana links) leaking into + public docs. +- Typos or copy-paste residues in configuration keys, environment + variable names, JSON keys, or anywhere a wrong character silently + breaks lookups. + +**Important:** the user-facing string checks above are independent of the +rest of the diff. Even in a 100-file PR dominated by backend changes, a +single misspelling in a guide or a personal name in a customer-facing +doc still warrants a finding — do not skip it because "the real work is +elsewhere". When you find any of these, set tier to AT LEAST 2. + +**Ignore** preexisting issues on lines not touched by the diff. + +## How to assign tier + +- **Tier 1** — No concrete bugs detected AND no user-facing string + anomalies (typos, internal references, contact info leaks). The change + looks correct. +- **Tier 2** — Concrete but contained bugs the author must fix before + merging (off-by-one, error swallowing, unclosed resources, + out-of-context code). **Always Tier 2 minimum** if you find any + user-facing string anomaly: typos in docs/guides/messages, personal + names or internal handles in customer-facing content, internal URLs + or ticket IDs leaking into public docs. +- **Tier 3** — A bug that may cause data corruption, deadlock, large-scale + leaks, or any issue whose impact the author shouldn't fix without a + second opinion. Also applies if the diff touches DB migrations, error + handling on transactional paths, or complex concurrency. + +## Output + +Respond with valid JSON ONLY (no markdown, no backticks, no extra text): + +``` +{ + "tier": 1 | 2 | 3, + "summary": "", + "findings": [ + {"severity": "high"|"medium"|"low", "file": "", "line": , "message": ""} + ] +} +``` diff --git a/.github/ai-prompts/security.md b/.github/ai-prompts/security.md new file mode 100644 index 000000000..20d40b55a --- /dev/null +++ b/.github/ai-prompts/security.md @@ -0,0 +1,67 @@ +--- +name: security +model: gemini-3-flash-lite +--- + +You are a security reviewer for UTMStack (a SIEM built in Go + Java + +React). Review the Pull Request diff and report **only** vulnerabilities +introduced or expanded by these changes. + +## What to look for + +- Injection flaws (SQL, command, LDAP, NoSQL, template). +- XSS / SSRF / open redirects. +- Path traversal and unsafe file handling. +- Missing input validation on endpoints, gRPC handlers or CLI flags. +- Unsafe secret handling: hardcoded keys, logs leaking credentials, tokens + written to disk without protection. +- Insecure cryptography (MD5/SHA1 for auth, non-constant-time comparison, + predictable seeds, embedded keys). +- Authentication / authorization bypass in new or modified handlers. +- Insecure deserialization. +- Race conditions with security impact (TOCTOU, etc). +- **Information disclosure in customer-facing content.** Personal names, + employee handles, internal Slack channels, internal email addresses, + internal URLs (Jira, Grafana, Jenkins, internal wikis), ticket IDs, + phone numbers, or any other internal identifier showing up in + integration guides, HTML templates rendered to customers, release + notes, installer prompts, or error messages exposed to end users. + This is a privacy / opsec concern — even one personal name in a + customer guide is a finding. Treat as `medium` severity, `tier 2` + minimum. + +**Important:** the information-disclosure check above is independent of +the rest of the diff. Even when a PR is dominated by backend changes, +a single personal-name leak in a user-facing guide is still a finding — +do not skip it. + +**Ignore** preexisting issues on lines not touched by the diff. + +## How to assign tier + +- **Tier 1** — No vulnerabilities introduced by this diff AND no + information disclosure in user-facing content. +- **Tier 2** — Minor or low-impact vulnerability the author can fix + (missing input validation on a non-critical endpoint, verbose error + messages, etc.). **Always Tier 2 minimum** if you find personal + names, internal handles, internal URLs, or other internal identifiers + leaking into customer-facing content. +- **Tier 3** — The diff touches security-critical paths (crypto, auth, + secret handling, installer, token/JWT generation) or introduces a + high-impact vulnerability (RCE, auth bypass, secret leak). Even if the + change looks fine, if it touches these paths mark Tier 3 — human + verification outweighs your individual confidence. + +## Output + +Respond with valid JSON ONLY (no markdown, no backticks, no extra text): + +``` +{ + "tier": 1 | 2 | 3, + "summary": "", + "findings": [ + {"severity": "high"|"medium"|"low", "file": "", "line": , "message": ""} + ] +} +``` diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 03003f5fd..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,99 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/agent" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/agent/updater" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/agent-manager" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "maven" # Adding support for java - directories: - - "/backend" - - "/user-auditor" - - "/web-pdf" - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/installer" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/alerts" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/aws" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/azure" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/bitdefender" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/config" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/crowdstrike" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/events" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/feeds" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/gcp" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/geolocation" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/inputs" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/modules-config" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/o365" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/soc-ai" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/sophos" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/plugins/stats" # Location of package manifests - schedule: - interval: "weekly" - - package-ecosystem: "gomod" # See documentation for possible values - directory: "/utmstack-collector" # Location of package manifests - schedule: - interval: "weekly" - diff --git a/.github/scripts/ai-review.sh b/.github/scripts/ai-review.sh new file mode 100755 index 000000000..2a0dec122 --- /dev/null +++ b/.github/scripts/ai-review.sh @@ -0,0 +1,170 @@ +#!/bin/bash +set -euo pipefail + +# AI code review against the ThreatWinds /chat/completions endpoint. +# +# Reads a prompt file (with optional YAML frontmatter that can override the +# model), appends the PR diff, calls the model, and writes the parsed JSON +# verdict to OUTPUT_FILE. Does NOT post PR comments — the approver job +# consolidates all prompt results and decides what to comment. +# +# Always exits 0 (data-producer role). If parsing fails the output JSON has +# tier=2 with a generic "review manually" finding (fail-safe). +# +# Required env vars: +# PROMPT_FILE path to a .github/ai-prompts/*.md file +# DIFF_FILE path to a unified diff +# OUTPUT_FILE where to write the JSON result +# THREATWINDS_API_KEY auth +# THREATWINDS_API_SECRET auth +# +# Optional env vars: +# AI_REVIEW_MODEL default model when the prompt doesn't pin one +# THREATWINDS_BASE_URL defaults to https://apis.threatwinds.com/api/ai/v1 +# MAX_DIFF_BYTES truncate the diff above this size (default 200000) + +: "${PROMPT_FILE:?PROMPT_FILE is required}" +: "${DIFF_FILE:?DIFF_FILE is required}" +: "${OUTPUT_FILE:?OUTPUT_FILE is required}" +: "${THREATWINDS_API_KEY:?THREATWINDS_API_KEY is required}" +: "${THREATWINDS_API_SECRET:?THREATWINDS_API_SECRET is required}" + +DEFAULT_MODEL="${AI_REVIEW_MODEL:-gemini-3-flash-lite}" +BASE_URL="${THREATWINDS_BASE_URL:-https://apis.threatwinds.com/api/ai/v1}" +MAX_DIFF_BYTES="${MAX_DIFF_BYTES:-200000}" + +# --- Helper: write a fallback result and exit 0 (always succeed) ------------- + +write_fallback() { + local reason="$1" + jq -n \ + --arg prompt "$prompt_name" \ + --arg model "$MODEL" \ + --arg reason "$reason" \ + '{ + prompt: $prompt, + model: $model, + tier: 2, + summary: "AI review could not parse model response — manual review recommended.", + findings: [{ + severity: "medium", + file: "(n/a)", + line: 0, + message: $reason + }] + }' > "$OUTPUT_FILE" + echo "::warning::Wrote fallback result: $reason" + exit 0 +} + +# --- Parse frontmatter ------------------------------------------------------- + +prompt_name="$(basename "$PROMPT_FILE" .md)" +prompt_model="" +body_start=1 + +if head -n 1 "$PROMPT_FILE" | grep -qx -- '---'; then + end_line=$(awk 'NR>1 && /^---$/ {print NR; exit}' "$PROMPT_FILE") + if [[ -n "$end_line" ]]; then + while IFS= read -r line; do + key="${line%%:*}" + value="${line#*:}" + value="$(echo "$value" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')" + case "$key" in + name) prompt_name="$value" ;; + model) prompt_model="$value" ;; + esac + done < <(sed -n "2,$((end_line - 1))p" "$PROMPT_FILE") + body_start=$((end_line + 1)) + fi +fi + +MODEL="${prompt_model:-$DEFAULT_MODEL}" + +echo "::group::AI review — prompt: $prompt_name (model: $MODEL)" + +# --- Build request body ------------------------------------------------------ + +prompt_body=$(tail -n "+${body_start}" "$PROMPT_FILE") + +diff_bytes=$(wc -c < "$DIFF_FILE" | tr -d ' ') +if (( diff_bytes > MAX_DIFF_BYTES )); then + diff_content=$(head -c "$MAX_DIFF_BYTES" "$DIFF_FILE") + diff_content+=$'\n\n[diff truncated: original '"$diff_bytes"' bytes, kept first '"$MAX_DIFF_BYTES"']' +else + diff_content=$(cat "$DIFF_FILE") +fi + +user_message=$(printf '%s\n\n---\n\nPR diff to review:\n\n```diff\n%s\n```\n' \ + "$prompt_body" "$diff_content") + +request_body=$(jq -n \ + --arg model "$MODEL" \ + --arg content "$user_message" \ + '{ + model: $model, + messages: [{role: "user", content: $content}], + temperature: 0.2 + }') + +# --- Call the API ------------------------------------------------------------ + +response_file=$(mktemp) +http_status=$(curl -sS -o "$response_file" -w '%{http_code}' \ + -X POST "${BASE_URL%/}/chat/completions" \ + -H "Content-Type: application/json" \ + -H "api-key: ${THREATWINDS_API_KEY}" \ + -H "api-secret: ${THREATWINDS_API_SECRET}" \ + --data "$request_body" || echo "000") + +if [[ "$http_status" != "200" ]]; then + echo "ThreatWinds API HTTP $http_status" + cat "$response_file" + echo "::endgroup::" + write_fallback "ThreatWinds API returned HTTP $http_status" +fi + +content=$(jq -r '.choices[0].message.content // empty' "$response_file") +if [[ -z "$content" ]]; then + echo "Empty content from model" + cat "$response_file" + echo "::endgroup::" + write_fallback "Model returned empty content" +fi + +# Strip optional ```json fences. +content_clean=$(echo "$content" | sed -E 's/^```(json)?//; s/```$//' | sed '/^[[:space:]]*$/d') + +if ! verdict_json=$(echo "$content_clean" | jq -c '.' 2>/dev/null); then + echo "Model did not return valid JSON. Raw content:" + echo "$content" + echo "::endgroup::" + write_fallback "Model response was not valid JSON" +fi + +# Validate schema minimally: tier must be 1/2/3. +tier=$(echo "$verdict_json" | jq -r '.tier // 0') +if [[ "$tier" != "1" && "$tier" != "2" && "$tier" != "3" ]]; then + echo "Invalid tier in response: $tier" + echo "$verdict_json" + echo "::endgroup::" + write_fallback "Model returned invalid tier value (expected 1, 2, or 3)" +fi + +# --- Persist enriched result ------------------------------------------------- +# Inject prompt + model identifiers so the approver doesn't need to know them. +final=$(echo "$verdict_json" | jq \ + --arg prompt "$prompt_name" \ + --arg model "$MODEL" \ + '. + {prompt: $prompt, model: $model}') + +echo "$final" > "$OUTPUT_FILE" + +summary=$(echo "$final" | jq -r '.summary // "(no summary)"') +findings_count=$(echo "$final" | jq -r '.findings | length // 0') +echo "Tier: $tier" +echo "Summary: $summary" +echo "Findings: $findings_count" +echo "::endgroup::" + +exit 0 diff --git a/.github/scripts/approver.sh b/.github/scripts/approver.sh new file mode 100755 index 000000000..200142338 --- /dev/null +++ b/.github/scripts/approver.sh @@ -0,0 +1,404 @@ +#!/bin/bash +set -euo pipefail + +# Consolidates artifacts from go_deps and ai_review and decides whether the +# PR passes. Posts sticky comments and (if APPROVER_TOKEN is provided) leaves +# a formal PR review. +# +# Required env vars: +# ARTIFACTS_DIR directory where workflow downloaded all artifacts +# PR_NUMBER PR number to comment on +# GITHUB_REPOSITORY owner/repo +# GITHUB_TOKEN for posting/updating comments (always) +# +# Optional env vars: +# APPROVER_TOKEN PAT or app token with `pull_requests: write` and the +# ability to approve reviews. If missing, the approver +# only posts comments and sets the check status. +# TIER3_REVIEWERS comma-separated GitHub handles to @mention on tier 3 +# (without @ prefix; e.g. "alice,bob") +# API_SECRET PAT with `read:org` to check team membership for +# administrators and core-developers. If missing, the +# permission check is skipped (treated as authorized). +# PR_AUTHOR GitHub login of the PR author. Required for the +# permission check. +# BASE_REF PR target branch (e.g. "release/v11.2.9"). Required; +# auto-merge only fires when this starts with "release/". +# ORG GitHub org to look up teams in. Default: "utmstack". +# ADMIN_TEAM Team slug for administrators. Default: "administrators". +# CORE_TEAM Team slug for core-developers. Default: "core-developers". +# MERGE_METHOD One of "merge"|"squash"|"rebase". Default: "squash". + +: "${ARTIFACTS_DIR:?ARTIFACTS_DIR is required}" +: "${PR_NUMBER:?PR_NUMBER is required}" +: "${GITHUB_REPOSITORY:?GITHUB_REPOSITORY is required}" + +# DRY_RUN=1 makes the approver print the bodies it would post and skip all +# GitHub API calls (no comments, no review). Useful for local testing. +DRY_RUN="${DRY_RUN:-0}" + +if [[ "$DRY_RUN" != "1" ]]; then + : "${GITHUB_TOKEN:?GITHUB_TOKEN is required (or set DRY_RUN=1)}" +fi + +APPROVER_TOKEN="${APPROVER_TOKEN:-}" +TIER3_REVIEWERS="${TIER3_REVIEWERS:-}" +API_SECRET="${API_SECRET:-}" +PR_AUTHOR="${PR_AUTHOR:-}" +BASE_REF="${BASE_REF:-}" +ORG="${ORG:-utmstack}" +ADMIN_TEAM="${ADMIN_TEAM:-administrators}" +CORE_TEAM="${CORE_TEAM:-core-developers}" +MERGE_METHOD="${MERGE_METHOD:-squash}" + +# Markers for sticky comments. Each topic has its own marker so deps, AI and +# permission updates don't trample each other. +MARKER_DEPS='' +MARKER_AI='' +MARKER_PERM='' + +api() { + curl -sS \ + -H "Authorization: Bearer ${GITHUB_TOKEN}" \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + "$@" +} + +# Find sticky comment ID by marker substring, or empty if none. +find_sticky_comment() { + local marker="$1" + api "https://api.github.com/repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/comments?per_page=100" \ + | jq -r --arg m "$marker" '.[] | select(.body | contains($m)) | .id' \ + | head -n1 +} + +# Upsert a sticky comment: edit if marker already present, else create. +upsert_sticky_comment() { + local marker="$1" + local body="$2" + local full_body="${marker}"$'\n'"${body}" + + if [[ "$DRY_RUN" == "1" ]]; then + echo "::group::[DRY_RUN] Would upsert comment with marker $marker" + echo "$full_body" + echo "::endgroup::" + return 0 + fi + + local id + id=$(find_sticky_comment "$marker" || true) + + if [[ -n "$id" ]]; then + echo "Updating existing comment $id" + jq -n --arg body "$full_body" '{body: $body}' \ + | api -X PATCH \ + "https://api.github.com/repos/${GITHUB_REPOSITORY}/issues/comments/${id}" \ + --data-binary @- > /dev/null + else + echo "Creating new comment" + jq -n --arg body "$full_body" '{body: $body}' \ + | api -X POST \ + "https://api.github.com/repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/comments" \ + --data-binary @- > /dev/null + fi +} + +# Delete a sticky comment if it exists (used when the topic becomes a no-op). +delete_sticky_comment() { + local marker="$1" + if [[ "$DRY_RUN" == "1" ]]; then + echo "[DRY_RUN] Would delete stale comment with marker $marker (if present)" + return 0 + fi + local id + id=$(find_sticky_comment "$marker" || true) + if [[ -n "$id" ]]; then + echo "Deleting stale comment $id" + api -X DELETE \ + "https://api.github.com/repos/${GITHUB_REPOSITORY}/issues/comments/${id}" \ + > /dev/null + fi +} + +# ============================================================================= +# 1. Deps verdict +# ============================================================================= + +deps_artifact_dir="$ARTIFACTS_DIR/go-deps-result" +deps_failed=false +deps_output="" + +if [[ -f "$deps_artifact_dir/exit_code.txt" ]]; then + deps_exit=$(cat "$deps_artifact_dir/exit_code.txt") + deps_output=$(cat "$deps_artifact_dir/output.txt" 2>/dev/null || echo "") + if [[ "$deps_exit" != "0" ]]; then + deps_failed=true + fi +else + echo "::warning::go-deps artifact missing — treating as failed" + deps_failed=true + deps_output="(go-deps artifact missing — the job may have failed to run)" +fi + +# ============================================================================= +# 2. AI verdict — read every ai-review-* artifact +# ============================================================================= + +declare -a ai_results=() +declare -i max_tier=1 +ai_findings_md="" + +shopt -s nullglob +for d in "$ARTIFACTS_DIR"/ai-review-*/; do + f="${d}result.json" + [[ -f "$f" ]] || continue + ai_results+=("$f") + tier=$(jq -r '.tier // 2' "$f") + if (( tier > max_tier )); then + max_tier=$tier + fi +done +shopt -u nullglob + +if [[ ${#ai_results[@]} -eq 0 ]]; then + echo "::warning::No AI review artifacts — treating as tier 2 fail-safe" + max_tier=2 +fi + +# Build a markdown section per AI prompt result. +for f in "${ai_results[@]}"; do + prompt=$(jq -r '.prompt // "unknown"' "$f") + model=$(jq -r '.model // "?"' "$f") + tier=$(jq -r '.tier // 2' "$f") + summary=$(jq -r '.summary // "(no summary)"' "$f") + findings=$(jq -r ' + .findings // [] | + if length == 0 then " _No findings._" + else + map(" - **\(.severity // "?")** `\(.file // "?"):\(.line // "?")` — \(.message // "")") | join("\n") + end + ' "$f") + case "$tier" in + 1) icon="✅" label="Tier 1 — looks clean" ;; + 2) icon="⚠️" label="Tier 2 — changes requested" ;; + 3) icon="🛑" label="Tier 3 — engineer review required" ;; + *) icon="❓" label="Tier ?" ;; + esac + ai_findings_md+=$'\n'"#### $icon \`$prompt\` (\`$model\`) — $label"$'\n\n' + ai_findings_md+="**Summary:** $summary"$'\n\n' + ai_findings_md+="$findings"$'\n' +done + +# ============================================================================= +# 3. Compose & post comments +# ============================================================================= + +# --- Deps comment (only when failed) --- +if $deps_failed; then + deps_body=$(cat <Salida del script + +\`\`\` +$deps_output +\`\`\` + + +EOF +) + upsert_sticky_comment "$MARKER_DEPS" "$deps_body" +else + # Remove any previous deps comment now that deps are clean. + delete_sticky_comment "$MARKER_DEPS" +fi + +# --- AI verdict comment (always) --- +case "$max_tier" in + 1) + ai_header="### ✅ AI review — Approved" + ai_intro="Todos los prompts retornaron Tier 1. No se detectaron issues bloqueantes en este diff." + ;; + 2) + ai_header="### ⚠️ AI review — Changes requested" + ai_intro="Uno o más prompts encontraron issues que el autor debería arreglar antes de mergear. Detalles abajo." + ;; + 3) + mention="" + if [[ -n "$TIER3_REVIEWERS" ]]; then + IFS=',' read -ra handles <<< "$TIER3_REVIEWERS" + for h in "${handles[@]}"; do + h="$(echo "$h" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/^@//')" + [[ -n "$h" ]] && mention+="@$h " + done + fi + ai_header="### 🛑 AI review — Engineer review required" + ai_intro="Este PR toca paths críticos o introduce cambios que el modelo no puede juzgar con confianza suficiente. ${mention}por favor revisar." + ;; + *) + ai_header="### ❓ AI review — Unknown verdict" + ai_intro="The approver could not determine an overall tier." + ;; +esac + +ai_body=$(cat </dev/null 2>&1 +} + +authorized=false +if [[ -z "$API_SECRET" ]]; then + echo "::warning::API_SECRET not set — skipping permission check (treating as authorized)" + authorized=true +elif [[ -z "$PR_AUTHOR" ]]; then + echo "::warning::PR_AUTHOR not set — skipping permission check (treating as authorized)" + authorized=true +elif is_in_team "$ADMIN_TEAM" "$PR_AUTHOR"; then + echo "✅ $PR_AUTHOR is in @${ORG}/${ADMIN_TEAM}" + authorized=true +elif is_in_team "$CORE_TEAM" "$PR_AUTHOR"; then + echo "✅ $PR_AUTHOR is in @${ORG}/${CORE_TEAM}" + authorized=true +else + echo "⛔ $PR_AUTHOR is NOT in @${ORG}/${ADMIN_TEAM} nor @${ORG}/${CORE_TEAM}" +fi + +if ! $authorized; then + perm_body=$(cat < /dev/null || echo "::warning::Failed to post formal review" + fi +else + echo "::warning::APPROVER_TOKEN not set — skipping formal PR review (only sticky comments + status check)" +fi + +# ============================================================================= +# 6. Auto-merge — only when target branch is release/**. +# We enable GitHub native auto-merge (gh pr merge --auto), which queues the +# merge until ALL branch-protection requirements are met. It's safe: if any +# other check fails or someone leaves a manual REQUEST_CHANGES, the merge +# stays pending. +# ============================================================================= + +if ! $deps_failed && [[ "$max_tier" == "1" ]] && $authorized; then + if [[ "$BASE_REF" == release/* ]]; then + if [[ "$DRY_RUN" == "1" ]]; then + echo "[DRY_RUN] Would enable auto-merge: gh pr merge $PR_NUMBER --auto --$MERGE_METHOD (base: $BASE_REF)" + elif [[ -z "$APPROVER_TOKEN" ]]; then + echo "::warning::APPROVER_TOKEN not set — cannot enable auto-merge" + else + echo "Enabling auto-merge for #$PR_NUMBER (target: $BASE_REF, method: $MERGE_METHOD)" + GH_TOKEN="$APPROVER_TOKEN" gh pr merge "$PR_NUMBER" \ + --auto "--${MERGE_METHOD}" \ + --repo "$GITHUB_REPOSITORY" \ + || echo "::warning::Failed to enable auto-merge (already enabled? branch protection mismatch?)" + fi + else + echo "Target branch '$BASE_REF' is not release/** — skipping auto-merge (deploy branches stay manual)" + fi +fi + +# ============================================================================= +# 7. Exit code +# ============================================================================= + +echo "" +echo "Summary:" +echo " deps_failed: $deps_failed" +echo " max_tier: $max_tier" +echo " authorized: $authorized" +echo " base_ref: $BASE_REF" + +if $deps_failed; then + exit 1 +fi + +if ! $authorized; then + exit 1 +fi + +if [[ "$max_tier" -ge 2 ]]; then + exit 1 +fi + +echo "✅ PR approved." +exit 0 diff --git a/.github/scripts/generate-changelog.sh b/.github/scripts/generate-changelog.sh new file mode 100755 index 000000000..b0cc9e77d --- /dev/null +++ b/.github/scripts/generate-changelog.sh @@ -0,0 +1,181 @@ +#!/usr/bin/env bash +# +# Generates AI-powered release notes via ThreatWinds /chat/completions. +# Used by .github/workflows/generate-changelog.yml; also runnable locally +# (export THREATWINDS_API_KEY + THREATWINDS_API_SECRET and run the script). +# +# Usage: +# bash .github/scripts/generate-changelog.sh [previous_tag] +# +# Examples: +# bash .github/scripts/generate-changelog.sh v11.2.8 v11.2.7 +# bash .github/scripts/generate-changelog.sh v11.2.8 # auto-detect previous +# +# Required env vars: +# THREATWINDS_API_KEY auth +# THREATWINDS_API_SECRET auth +# +# Optional env vars: +# PRODUCT_NAME default: "UTMStack" +# PRODUCT_DESCRIPTION default: "Unified Threat Management and SIEM Platform" +# MODEL default: "gemini-3-flash-lite" +# TEMPERATURE default: 0.3 +# MAX_TOKENS default: 2000 +# OUTPUT_FILE default: "/tmp/changelog.md" +# THREATWINDS_BASE_URL default: https://apis.threatwinds.com/api/ai/v1 + +set -euo pipefail + +# ─── Config ─────────────────────────────────────────────────────────────────── +PRODUCT_NAME="${PRODUCT_NAME:-UTMStack}" +PRODUCT_DESCRIPTION="${PRODUCT_DESCRIPTION:-Unified Threat Management and SIEM Platform}" +MODEL="${MODEL:-gemini-3-flash-lite}" +TEMPERATURE="${TEMPERATURE:-0.3}" +MAX_TOKENS="${MAX_TOKENS:-2000}" +OUTPUT_FILE="${OUTPUT_FILE:-/tmp/changelog.md}" +BASE_URL="${THREATWINDS_BASE_URL:-https://apis.threatwinds.com/api/ai/v1}" + +# ─── Arg parsing ────────────────────────────────────────────────────────────── +if [ "$#" -lt 1 ]; then + echo "Usage: $0 [previous_tag]" >&2 + exit 1 +fi + +CURRENT_TAG="$1" +PREVIOUS_TAG="${2:-}" + +# ─── Dependencies ───────────────────────────────────────────────────────────── +command -v jq >/dev/null || { echo "jq is required"; exit 1; } +command -v curl >/dev/null || { echo "curl is required"; exit 1; } +command -v git >/dev/null || { echo "git is required"; exit 1; } + +: "${THREATWINDS_API_KEY:?THREATWINDS_API_KEY is required}" +: "${THREATWINDS_API_SECRET:?THREATWINDS_API_SECRET is required}" + +# ─── Resolve previous tag if not provided ───────────────────────────────────── +if [ -z "$PREVIOUS_TAG" ]; then + echo "Auto-detecting previous tag..." + ALL_TAGS=$(git tag --sort=-v:refname) + FOUND_CURRENT=false + for tag in $ALL_TAGS; do + if [ "$FOUND_CURRENT" = true ]; then + PREVIOUS_TAG="$tag" + break + fi + if [ "$tag" = "$CURRENT_TAG" ]; then + FOUND_CURRENT=true + fi + done + if [ -z "$PREVIOUS_TAG" ]; then + PREVIOUS_TAG=$(git rev-list --max-parents=0 HEAD | head -1) + echo "No previous tag found, using first commit: $PREVIOUS_TAG" + fi +fi + +echo "Current tag: $CURRENT_TAG" +echo "Previous tag: $PREVIOUS_TAG" +echo "Model: $MODEL" +echo + +# ─── Collect commits ────────────────────────────────────────────────────────── +COMMITS=$(git log "${PREVIOUS_TAG}..${CURRENT_TAG}" --pretty=format:"- %h %s (%an)" --no-merges) +COMMIT_COUNT=$(git rev-list --count "${PREVIOUS_TAG}..${CURRENT_TAG}" --no-merges) + +if [ -z "$COMMITS" ]; then + echo "No commits found between $PREVIOUS_TAG and $CURRENT_TAG." + exit 0 +fi + +echo "Found $COMMIT_COUNT commits." +echo + +# ─── Build prompt ───────────────────────────────────────────────────────────── +PROMPT="You are a product marketing writer creating release notes for end users of a software product. + +Product: $PRODUCT_NAME - $PRODUCT_DESCRIPTION +Release: $CURRENT_TAG + +Here are the commit messages from this release: +$COMMITS + +Create user-friendly release notes in markdown format. This is for NON-TECHNICAL end users who want to know what's new and improved in the product. + +IMPORTANT RULES: +1. ONLY include changes that DIRECTLY AFFECT END USERS - things they can see, use, or benefit from +2. COMPLETELY IGNORE internal/technical changes like: + - CI/CD, GitHub Actions, deployment pipelines + - Code refactoring, component restructuring + - Database migrations, backend infrastructure + - Internal API changes, gRPC, service communication + - Developer tooling, linting, formatting + - README updates, internal documentation +3. Write in simple, non-technical language +4. Focus on BENEFITS to the user, not implementation details +5. Group into these categories ONLY (skip empty categories): + - **What's New** - New features users can now use + - **Improved** - Enhancements to existing features + - **Fixed** - Bugs that were affecting users +6. Start with a brief 1-2 sentence summary of the release highlights +7. Use bullet points, be concise (one line per item) +8. Do NOT wrap output in markdown code blocks +9. Do NOT include commit hashes or author names +10. If most commits are internal/technical, just summarize with 'Minor improvements and bug fixes' + +Write the release notes directly in markdown format, ready to be used as-is." + +# ─── Call ThreatWinds ───────────────────────────────────────────────────────── +echo "Calling ThreatWinds ($MODEL)..." +PAYLOAD=$(jq -n \ + --arg model "$MODEL" \ + --arg prompt "$PROMPT" \ + --argjson temp "$TEMPERATURE" \ + --argjson maxtok "$MAX_TOKENS" \ + '{ + model: $model, + messages: [ + {role: "system", content: "You are a technical writer specializing in software changelogs."}, + {role: "user", content: $prompt} + ], + temperature: $temp, + max_tokens: $maxtok + }') + +RESPONSE_FILE=$(mktemp) +HTTP_STATUS=$(curl -sS -o "$RESPONSE_FILE" -w '%{http_code}' \ + -X POST "${BASE_URL%/}/chat/completions" \ + -H "Content-Type: application/json" \ + -H "api-key: ${THREATWINDS_API_KEY}" \ + -H "api-secret: ${THREATWINDS_API_SECRET}" \ + --data "$PAYLOAD" || echo "000") + +if [ "$HTTP_STATUS" != "200" ]; then + echo "ERROR: ThreatWinds API returned HTTP $HTTP_STATUS" >&2 + cat "$RESPONSE_FILE" >&2 + exit 1 +fi + +CHANGELOG=$(jq -r '.choices[0].message.content // empty' "$RESPONSE_FILE") + +if [ -z "$CHANGELOG" ]; then + echo "ERROR: empty response from ThreatWinds." >&2 + cat "$RESPONSE_FILE" >&2 + exit 1 +fi + +# ─── Append comparison link ─────────────────────────────────────────────────── +REPO_REMOTE=$(git config --get remote.origin.url 2>/dev/null | \ + sed -E 's#(git@github.com:|https://github.com/)#https://github.com/#; s#\.git$##') + +CHANGELOG="${CHANGELOG} + +--- +**Full Changelog**: ${REPO_REMOTE}/compare/${PREVIOUS_TAG}...${CURRENT_TAG}" + +printf "%s\n" "$CHANGELOG" > "$OUTPUT_FILE" + +echo +echo "──────── GENERATED CHANGELOG ────────" +cat "$OUTPUT_FILE" +echo "─────────────────────────────────────" +echo +echo "Saved to: $OUTPUT_FILE" diff --git a/.github/scripts/go-deps.sh b/.github/scripts/go-deps.sh new file mode 100755 index 000000000..02b5d0a3c --- /dev/null +++ b/.github/scripts/go-deps.sh @@ -0,0 +1,282 @@ +#!/bin/bash +set -euo pipefail + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +NC='\033[0m' # No Color + +print_usage() { + cat << 'EOF' +Usage: go-deps.sh [--check|--update] [--discover|] + +Modes: + --check Check for outdated dependencies (exit 1 if found) + --update Update outdated dependencies (default) + +Target: + --discover Discover all Go projects from current directory + Path to a specific Go project + +Examples: + go-deps.sh --check ./installer + go-deps.sh --update ./installer + go-deps.sh --check --discover + go-deps.sh --update --discover +EOF +} + +# Parse arguments +CHECK_ONLY=false +DISCOVER=false +TARGET_PATH="" + +if [[ $# -lt 1 ]]; then + print_usage + exit 1 +fi + +for arg in "$@"; do + case "$arg" in + --check) + CHECK_ONLY=true + ;; + --update) + CHECK_ONLY=false + ;; + --discover) + DISCOVER=true + ;; + --help|-h) + print_usage + exit 0 + ;; + --*) + echo -e "${RED}Error: unknown option $arg${NC}" >&2 + print_usage + exit 1 + ;; + *) + TARGET_PATH="$arg" + ;; + esac +done + +# Validate arguments +if [[ "$DISCOVER" == false && -z "$TARGET_PATH" ]]; then + echo -e "${RED}Error: must specify a path or use --discover${NC}" >&2 + print_usage + exit 1 +fi + +if [[ "$DISCOVER" == true && -n "$TARGET_PATH" ]]; then + echo -e "${RED}Error: cannot use both --discover and a specific path${NC}" >&2 + print_usage + exit 1 +fi + +# Discover Go projects +discover_projects() { + local root="$1" + find "$root" -name "go.mod" \ + -not -path "*/.*" \ + -not -path "*/vendor/*" \ + -not -path "*/node_modules/*" \ + -exec dirname {} \; +} + +# Get explicit modules from go.mod (direct dependencies only) +get_explicit_modules() { + local go_mod="$1" + grep -E '^\s+[a-zA-Z]' "$go_mod" 2>/dev/null | \ + grep -v '//' | \ + awk '{print $1}' | \ + sort -u +} + +# Check for updates in a project, outputs JSON lines. +# On `go list` failure, records the project + error in $TEMP_DIR/_check_errors +# instead of returning non-zero, so the caller can keep checking the other +# projects and we report every broken module at once instead of one per run. +check_project() { + local project_path="$1" + local go_mod="$project_path/go.mod" + + # Get explicit modules + local explicit_modules + explicit_modules=$(get_explicit_modules "$go_mod") + + # Get all modules with update info as JSON + local json_output + local list_err + list_err=$(mktemp) + if ! json_output=$(cd "$project_path" && go list -u -m -json all 2>"$list_err"); then + { + echo "## $project_path" + cat "$list_err" + echo + } >> "$TEMP_DIR/_check_errors" + rm -f "$list_err" + return 0 + fi + rm -f "$list_err" + + # Parse JSON and filter modules with updates that are explicit dependencies + echo "$json_output" | jq -c 'select(.Update != null) | {Path: .Path, Version: .Version, UpdateVersion: .Update.Version}' 2>/dev/null | \ + while IFS= read -r module; do + local mod_path + mod_path=$(echo "$module" | jq -r '.Path') + if echo "$explicit_modules" | grep -qx "$mod_path"; then + echo "$module" + fi + done +} + +# Update a single module +update_module() { + local project_path="$1" + local mod_path="$2" + local new_version="$3" + + local update_str="${mod_path}@${new_version}" + echo -e " 🔄 Updating $update_str" + (cd "$project_path" && go get "$update_str") +} + +# Run go mod tidy +run_tidy() { + local project_path="$1" + echo -e " 🧹 Running go mod tidy..." + (cd "$project_path" && go mod tidy) +} + +# Create temp directory for storing updates per project +TEMP_DIR=$(mktemp -d) +trap 'rm -rf "$TEMP_DIR"' EXIT + +# Get list of projects +PROJECTS="" +if [[ "$DISCOVER" == true ]]; then + PROJECTS=$(discover_projects ".") + + if [[ -z "$PROJECTS" ]]; then + echo "No Go projects found." + exit 0 + fi + + project_count=$(echo "$PROJECTS" | wc -l | tr -d ' ') + echo -e "🔍 Discovered $project_count Go projects\n" +else + if [[ ! -f "$TARGET_PATH/go.mod" ]]; then + echo -e "${RED}Error: no go.mod found in $TARGET_PATH${NC}" >&2 + exit 1 + fi + PROJECTS="$TARGET_PATH" +fi + +# Check all projects for updates +HAS_UPDATES=false + +echo "$PROJECTS" | while IFS= read -r project; do + [[ -z "$project" ]] && continue + + updates=$(check_project "$project") + if [[ -n "$updates" ]]; then + # Store updates in a temp file named after the project (sanitized) + safe_name=$(echo "$project" | tr '/' '_') + echo "$updates" > "$TEMP_DIR/$safe_name" + echo "$project" >> "$TEMP_DIR/_projects_with_updates" + fi +done + +# If any project couldn't be inspected, report all of them at once. +# This is almost always caused by stale go.sum entries in modules that +# consume an internal package via `replace` — fix those first before +# anything else, since both --check and --update need a clean read. +if [[ -f "$TEMP_DIR/_check_errors" ]]; then + echo -e "${RED}❌ Could not inspect the following projects (run 'go mod tidy' there):${NC}" >&2 + echo >&2 + cat "$TEMP_DIR/_check_errors" >&2 + exit 1 +fi + +# Check if any updates were found +if [[ ! -f "$TEMP_DIR/_projects_with_updates" ]]; then + echo -e "${GREEN}✅ All dependencies are up to date.${NC}" + exit 0 +fi + +# Print summary of updates needed +echo -e "📦 Dependencies with updates available:" +while IFS= read -r project; do + [[ -z "$project" ]] && continue + safe_name=$(echo "$project" | tr '/' '_') + + echo -e "\n 📁 $project:" + while IFS= read -r module; do + [[ -z "$module" ]] && continue + mod_path=$(echo "$module" | jq -r '.Path') + current=$(echo "$module" | jq -r '.Version') + new_ver=$(echo "$module" | jq -r '.UpdateVersion') + echo -e " - $mod_path: $current → $new_ver" + done < "$TEMP_DIR/$safe_name" +done < "$TEMP_DIR/_projects_with_updates" + +if [[ "$CHECK_ONLY" == true ]]; then + echo -e "\n${RED}❌ Please update dependencies before merging.${NC}" + exit 1 +fi + +# Update mode - apply updates +echo -e "\n🔄 Updating dependencies..." +while IFS= read -r project; do + [[ -z "$project" ]] && continue + safe_name=$(echo "$project" | tr '/' '_') + + echo -e "\n 📁 $project:" + while IFS= read -r module; do + [[ -z "$module" ]] && continue + mod_path=$(echo "$module" | jq -r '.Path') + new_ver=$(echo "$module" | jq -r '.UpdateVersion') + update_module "$project" "$mod_path" "$new_ver" + done < "$TEMP_DIR/$safe_name" + + run_tidy "$project" +done < "$TEMP_DIR/_projects_with_updates" + +echo -e "\n${GREEN}✅ All dependencies updated successfully.${NC}" + +# Propagate `go mod tidy` to EVERY discovered project, not just those that +# were updated. When an internal package (e.g. packages/go-common) gets new +# transitive deps, every consumer that imports it via `replace ../packages/...` +# needs its own go.sum recomputed — otherwise the next `go list` call fails. +echo -e "\n🧹 Propagating tidy to all projects (handles local replace ripple)..." +echo "$PROJECTS" | while IFS= read -r project; do + [[ -z "$project" ]] && continue + echo -e " 📁 $project" + (cd "$project" && go mod tidy) +done + +# Verify every project still builds. We compile into a throwaway directory so +# main packages don't litter the working tree, then delete it. +echo -e "\n🔨 Verifying all projects build..." +BUILD_OUT=$(mktemp -d) +BUILD_FAILED_FILE="$TEMP_DIR/_build_failed" +echo "$PROJECTS" | while IFS= read -r project; do + [[ -z "$project" ]] && continue + if (cd "$project" && go build -o "$BUILD_OUT/" ./... 2>&1); then + echo -e " ${GREEN}✅${NC} $project" + else + echo -e " ${RED}❌${NC} $project" + echo "$project" >> "$BUILD_FAILED_FILE" + fi +done +rm -rf "$BUILD_OUT" + +if [[ -f "$BUILD_FAILED_FILE" ]]; then + echo -e "\n${RED}❌ Build failed in:${NC}" >&2 + cat "$BUILD_FAILED_FILE" >&2 + exit 1 +fi + +echo -e "\n${GREEN}✅ All projects build cleanly.${NC}" diff --git a/.github/scripts/golang-updater/go.mod b/.github/scripts/golang-updater/go.mod deleted file mode 100644 index 6ceba9454..000000000 --- a/.github/scripts/golang-updater/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module golang-updater - -go 1.24.2 diff --git a/.github/scripts/golang-updater/main.go b/.github/scripts/golang-updater/main.go deleted file mode 100644 index 94162fa1e..000000000 --- a/.github/scripts/golang-updater/main.go +++ /dev/null @@ -1,252 +0,0 @@ -package main - -import ( - "bufio" - "bytes" - "encoding/json" - "fmt" - "os" - "os/exec" - "path/filepath" - "strings" -) - -type Module struct { - Path string - Version string - Update *ModuleUpdate -} - -type ModuleUpdate struct { - Version string -} - -func main() { - if len(os.Args) < 2 { - printUsage() - os.Exit(1) - } - - var checkOnly bool - var discover bool - var targetPath string - - for _, arg := range os.Args[1:] { - switch arg { - case "--check": - checkOnly = true - case "--update": - checkOnly = false - case "--discover": - discover = true - case "--help", "-h": - printUsage() - os.Exit(0) - default: - if !strings.HasPrefix(arg, "--") { - targetPath = arg - } - } - } - - // Validate arguments - if !discover && targetPath == "" { - fmt.Fprintf(os.Stderr, "Error: must specify a path or use --discover\n") - printUsage() - os.Exit(1) - } - - if discover && targetPath != "" { - fmt.Fprintf(os.Stderr, "Error: cannot use both --discover and a specific path\n") - printUsage() - os.Exit(1) - } - - var projects []string - var err error - - if discover { - projects, err = discoverProjects(".") - if err != nil { - fmt.Fprintf(os.Stderr, "Error discovering projects: %v\n", err) - os.Exit(1) - } - if len(projects) == 0 { - fmt.Println("No Go projects found.") - os.Exit(0) - } - fmt.Printf("🔍 Discovered %d Go projects\n\n", len(projects)) - } else { - // Verify the path exists and has a go.mod - goModPath := filepath.Join(targetPath, "go.mod") - if _, err := os.Stat(goModPath); os.IsNotExist(err) { - fmt.Fprintf(os.Stderr, "Error: no go.mod found in %s\n", targetPath) - os.Exit(1) - } - projects = []string{targetPath} - } - - hasUpdates := false - allUpdates := make(map[string][]Module) - - for _, project := range projects { - updates, err := checkProject(project) - if err != nil { - fmt.Fprintf(os.Stderr, "Error checking %s: %v\n", project, err) - os.Exit(1) - } - if len(updates) > 0 { - hasUpdates = true - allUpdates[project] = updates - } - } - - if !hasUpdates { - fmt.Println("✅ All dependencies are up to date.") - return - } - - // Print summary of updates needed - fmt.Println("📦 Dependencies with updates available:") - for project, updates := range allUpdates { - fmt.Printf("\n 📁 %s:\n", project) - for _, mod := range updates { - fmt.Printf(" - %s: %s → %s\n", mod.Path, mod.Version, mod.Update.Version) - } - } - - if checkOnly { - fmt.Println("\n❌ Please update dependencies before merging.") - os.Exit(1) - } - - // Update mode - apply updates - fmt.Println("\n🔄 Updating dependencies...") - for project, updates := range allUpdates { - fmt.Printf("\n 📁 %s:\n", project) - if err := updateProject(project, updates); err != nil { - fmt.Fprintf(os.Stderr, "Error updating %s: %v\n", project, err) - os.Exit(1) - } - } - - fmt.Println("\n✅ All dependencies updated successfully.") -} - -func printUsage() { - fmt.Println(`Usage: golang-updater [--check|--update] [--discover|] - -Modes: - --check Check for outdated dependencies (exit 1 if found) - --update Update outdated dependencies (default) - -Target: - --discover Discover all Go projects from current directory - Path to a specific Go project - -Examples: - golang-updater --check ./installer - golang-updater --update ./installer - golang-updater --check --discover - golang-updater --update --discover`) -} - -func discoverProjects(root string) ([]string, error) { - var projects []string - - err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - - // Skip hidden directories and common non-project directories - if info.IsDir() { - name := info.Name() - // Don't skip the root directory itself - if path != root && (strings.HasPrefix(name, ".") || name == "vendor" || name == "node_modules") { - return filepath.SkipDir - } - } - - if info.Name() == "go.mod" { - dir := filepath.Dir(path) - projects = append(projects, dir) - } - - return nil - }) - - return projects, err -} - -func checkProject(projectPath string) ([]Module, error) { - goModPath := filepath.Join(projectPath, "go.mod") - modFile, err := os.Open(goModPath) - if err != nil { - return nil, fmt.Errorf("error opening go.mod: %w", err) - } - defer modFile.Close() - - explicitModules := make(map[string]bool) - scanner := bufio.NewScanner(modFile) - for scanner.Scan() { - line := strings.TrimSpace(scanner.Text()) - if strings.HasPrefix(line, "require") || strings.HasPrefix(line, ")") { - continue - } - fields := strings.Fields(line) - if len(fields) >= 1 && !strings.HasPrefix(fields[0], "//") { - explicitModules[fields[0]] = true - } - } - if err := scanner.Err(); err != nil { - return nil, fmt.Errorf("error reading go.mod: %w", err) - } - - cmd := exec.Command("go", "list", "-u", "-m", "-json", "all") - cmd.Dir = projectPath - output, err := cmd.Output() - if err != nil { - return nil, fmt.Errorf("error executing go list: %w", err) - } - - decoder := json.NewDecoder(bytes.NewReader(output)) - var toUpdate []Module - - for decoder.More() { - var mod Module - if err := decoder.Decode(&mod); err != nil { - return nil, fmt.Errorf("error parsing JSON output: %w", err) - } - if mod.Update != nil && explicitModules[mod.Path] { - toUpdate = append(toUpdate, mod) - } - } - - return toUpdate, nil -} - -func updateProject(projectPath string, updates []Module) error { - for _, mod := range updates { - updateStr := fmt.Sprintf("%s@%s", mod.Path, mod.Update.Version) - fmt.Printf(" 🔄 Updating %s\n", updateStr) - cmd := exec.Command("go", "get", updateStr) - cmd.Dir = projectPath - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - return fmt.Errorf("error updating %s: %w", updateStr, err) - } - } - - fmt.Printf(" 🧹 Running go mod tidy...\n") - cmd := exec.Command("go", "mod", "tidy") - cmd.Dir = projectPath - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - return fmt.Errorf("error running go mod tidy: %w", err) - } - - return nil -} diff --git a/.github/workflows/README.md b/.github/workflows/README.md index f04f9ffa6..f72306221 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -1,330 +1,646 @@ -# 🛠️ GitHub Actions Workflows – UTMStack +# GitHub Actions Workflows — UTMStack -> This repository uses streamlined CI/CD workflows for building and deploying UTMStack v10 and v11 across different environments. +CI/CD for UTMStack v10 and v11. This folder contains two workflow families: -## 📋 Table of Contents +- **PR checks** (`pr-checks.yml` + `_pr-reusable-*.yml`) — validate every + Pull Request before merge. The only gate into code on `release/**`, + `v10` and `v11`. +- **Deployment pipelines** (`v10-deployment-pipeline.yml`, + `v11-deployment-pipeline.yml`, `installer-release.yml`) — build, publish + and deploy artifacts once code is merged. -- [Workflows Overview](#workflows-overview) +## Table of contents + +- [Release policy](#release-policy) +- [PR Checks](#pr-checks) - [V10 Deployment Pipeline](#v10-deployment-pipeline) - [V11 Deployment Pipeline](#v11-deployment-pipeline) - [Installer Release](#installer-release) -- [Required Secrets and Variables](#required-secrets-and-variables) +- [Secrets and variables](#secrets-and-variables) +- [Approver GitHub App setup](#approver-github-app-setup) +- [Reusable workflows](#reusable-workflows) +- [How to deploy](#how-to-deploy) +- [Troubleshooting](#troubleshooting) --- -## 🔄 Workflows Overview +## Release policy + +Hard rules: + +- **Direct push is forbidden** on `release/**`, `v10` and `v11`. PR only. +- **Branch protection** is enabled on those branches: PR required, status + checks green (`All checks passed`), no force push. +- **Roll-forward only.** No rollbacks. If a release breaks something, ship + a hotfix that bumps the version (e.g. `v11.2.9` breaks → `v11.2.10` + fixes it). Feature flags / kill switches are fine for turning features + off without a redeploy. + +### Tiered approval model + +The team is small (3 devs + 2 part-time seniors), so the AI can approve +and merge on its own in most cases. Seniors only get involved when the +cost of being wrong is high. + +The **final tier** of a PR is decided by the approver, taking the maximum +across all AI prompts (see [PR Checks](#pr-checks)). + +| Tier | Meaning | Approver action | +|------|---------|-----------------| +| **1** | Simple change, AI detects no issues, deps OK. | ✅ Sticky "Approved" comment + (when the approver App is configured) formal `APPROVE` review. Status check green. | +| **2** | Minor issues the author should fix before merging (typos, small bugs, out-of-context code). | ⚠️ Sticky comment with the findings list + formal `REQUEST_CHANGES` review. Status check red. | +| **3** | Touches critical paths (crypto, auth, migrations, installer, gRPC contracts, CI/CD) or the model can't judge with confidence. | 🛑 Sticky comment @mentioning the handles configured in `tier3_reviewers` + formal `REQUEST_CHANGES` review. Status check red. | + +When the author pushes new commits, the sticky comments are **updated +in-place** (same comment, no stacking) and the workflow re-runs +automatically. A blocked PR is **never auto-closed** — it stays open +waiting for the fixes. + +Sensitive paths for Tier 3 are identified by each prompt's own rules (see +`.github/ai-prompts/*.md`). In the future this could be reinforced with +`CODEOWNERS` for additional per-path gates. + +### Auto-merge + +The approver enables GitHub's native auto-merge **only** when **all** of +the following hold: + +- Target branch matches `release/**` (PRs to `v10` / `v11` stay manual + so production deploys are always intentional). +- `deps_failed == false`. +- `max_tier == 1` across every AI prompt. +- PR author is in `@utmstack/administrators` or `@utmstack/core-developers`. +- The approver GitHub App is configured (`APPROVER_APP_ID` + `APPROVER_PRIVATE_KEY` secrets present). + +Auto-merge does NOT merge immediately — it queues the merge until every +branch-protection requirement is satisfied. If another check fails later +or a human leaves `REQUEST_CHANGES`, the merge stays pending. + +### Dependabot + +Disabled. `.github/dependabot.yml` keeps `updates: []` so Dependabot +reads the file but creates no PRs. Dependency freshness is enforced via +the `go_deps` check on every PR. To re-enable Dependabot, restore the +previous `updates:` list (see git history of that file). + +### Hotfixes + +- `hotfix/x` branch from `v11` → PR to `v11` → same checks. +- `urgent` label allows fast-track: if checks pass and the AI approves, + it merges without waiting for human review even when touching sensitive + paths. +- **Recommended (not strictly required):** after the hotfix merges to + `v11`, pull `v11` into the active `release/v11.x.x+1` branch (merge or + cherry-pick — either works). The fix is **not** lost if you skip this + step: git already has the hotfix in `v11`'s history, so when + `release/v11.x.x+1` later merges back, git combines both lines and + the fix lands automatically. Syncing early is good hygiene because it + surfaces conflicts in your release branch rather than at the final + merge, and it lets dev builds include the patched code immediately. + +**Version derivation is automatic.** When a hotfix merges to `v11`, the +deployment pipeline compares the candidate BASE (from CM DEV) against +the latest version in CM PROD: + +- If BASE > PROD → use BASE as RC tag (normal flow). +- If BASE ≤ PROD → the BASE was already shipped; bump the patch of PROD + to get the next tag (hotfix flow). + +Concrete example: PROD is on `v11.2.9`, dev is still on +`v11.2.9-dev.5` from the cycle that produced it. A hotfix lands on +`v11`. The pipeline sees BASE=`v11.2.9` collides with PROD=`v11.2.9`, +auto-bumps to `v11.2.10`, and the rest of the run (build, installer, +prerelease, CM register) proceeds with that tag. No manual rename, no +config change. -### 1. **installer-release.yml** -Automatically builds and publishes installers when a GitHub release is created. +--- -**Trigger:** Release created (types: `released`) +## PR Checks -**Behavior:** -- Detects version (v10 or v11) from release tag -- Builds installer for the detected version -- Uploads installer binary to the GitHub release +`pr-checks.yml` triggers on any Pull Request whose target is: -### 2. **v10-deployment-pipeline.yml** -Automated CI/CD pipeline for v10 builds and deployments. +- `release/**` (any release branch, v10 or v11) +- `v10` +- `v11` -**Triggers:** -- Push to `v10` branch → Deploys to **v10-rc** -- Push to `release/v10**` branches → Deploys to **v10-dev** -- Tags `v10.*` → Production build +### Architecture -**Environments:** -- `v10-dev` - Development environment (from release branches) -- `v10-rc` - Release candidate environment (from v10 branch) -- Production (from tags) +``` +PR opened / updated + │ + ├─────────────────┬─────────────────┐ + ▼ ▼ │ + ┌─────────┐ ┌─────────────┐ │ + │ go_deps │ │ ai_review │ │ + │ (repo) │ │ (matrix │ │ + │ │ │ per │ │ + │ │ │ prompt) │ │ + └────┬────┘ └──────┬──────┘ │ + │ │ │ + │ artifact │ artifacts │ + │ go-deps-result │ ai-review-* │ + ▼ ▼ │ + ┌──────────────────────────────┐ │ + │ approver │ │ + │ - reads artifacts │ │ + │ - decides final tier │ │ + │ - posts sticky comments │ │ + │ - (optional) formal review │ │ + └──────────────┬───────────────┘ │ + │ │ + ▼ ▼ + all_checks_passed ← single status check branch protection requires +``` -### 3. **v11-deployment-pipeline.yml** -Automated CI/CD pipeline for v11 builds and deployments. +**Key decision:** the producers (`go_deps`, `ai_review`) **always exit +green**. They only upload artifacts. The `approver` is the single source +of truth — it consolidates results, decides the tier (maximum across all +AI prompts), posts comments, and passes or fails the final check. -**Triggers:** -- Push to `release/v11**` branches → Deploys to **dev** environment -- Prerelease created → Deploys to **rc** environment +### `go_deps` -**Version Formats:** -- **Dev:** `v11.x.x-dev.N` (e.g., `v11.2.1-dev.1`) - Auto-incremented -- **RC:** `v11.x.x` (e.g., `v11.2.1`) - From prerelease tag +Single job, no matrix, no change detection. Runs: ---- +```bash +bash .github/scripts/go-deps.sh --check --discover +``` -## 🚀 V10 Deployment Pipeline +It discovers **every** `go.mod` in the repo (excluding `vendor/`, +dot-directories and `node_modules/`) and fails if any explicit **direct +dependency** has a newer version available. The script also detects +out-of-sync `go.sum` files (typically caused by local `replace` directives +in `packages/`) and reports them all at once. + +The job uploads its stdout and exit code as the `go-deps-result` artifact. +The approver reads it and, if exit code != 0, posts the sticky comment +"Go dependencies check failed" with the script output embedded. + +**Expected dev fix:** run +`bash .github/scripts/go-deps.sh --update --discover` locally, commit the +updated `go.mod` / `go.sum`, push. + +### `ai_review` + +Matrix with one job per `.md` under `.github/ai-prompts/` (except +`README.md`). Each job: + +1. Fetches the diff via `gh pr diff` (same unified diff the GitHub UI + shows — no need for `fetch-depth: 0`). +2. Calls the **ThreatWinds AI** `/chat/completions` endpoint with the + prompt and the diff. +3. Validates the response against the `{tier, summary, findings}` schema. +4. Uploads the JSON as the `ai-review-` artifact. + +If the model's response isn't valid JSON or the tier isn't 1/2/3, the +script writes a fallback with `tier: 2` and a "Manual review recommended" +finding (fail-safe). + +**Initial prompts:** + +- `security.md` — vulnerabilities introduced in the diff (injection, XSS, + SSRF, hardcoded secrets, weak crypto, insecure deserialization). +- `bugs.md` — concrete bugs: nil derefs, races, off-by-one, unhandled + errors, unclosed resources, inverted logic, out-of-context code. +- `architecture.md` — architectural deviations: new couplings, logic in + the wrong layer, broken contracts, unsafe migrations. + +Each prompt declares its own tier policy (Tier 3 covers paths critical +to that dimension). See `.github/ai-prompts/README.md` for the full +schema and tier semantics. + +**To scale:** drop a new `.md` into `.github/ai-prompts/`. Discovered at +runtime — no YAML changes needed. + +**Default model:** `gemini-3-flash-lite`. Each prompt can pin its own +model in frontmatter (`model: gemini-3-pro`, etc.). + +### `approver` + +Single job that **depends on `go_deps` and `ai_review`**. Steps: + +1. Downloads every PR-check artifact. +2. Reads `go-deps-result/exit_code.txt` → determines `deps_failed`. +3. Reads each `ai-review-*/result.json` → takes the **max tier** as the + AI verdict. +4. **Sticky comments** with invisible HTML markers + (``, ``, + ``): + - If deps failed → upsert "Go dependencies check failed" comment with + the script output. Otherwise delete it if a previous run posted one. + - Always upsert the "AI review" comment with the final tier + findings. + - These two are posted **regardless of who opened the PR** — even + unauthorized contributors get useful feedback. +5. **Permission check (LAST gate).** Looks up `github.actor` against the + GitHub teams `administrators` and `core-developers` of the + `utmstack` org via `API_SECRET`. Notably **does NOT** include + `integration-developers`. If the author is in neither team: + - Upsert "⛔ Permission denied" comment @mentioning + `@utmstack/administrators`. + - Skip the formal `APPROVE` review (always `REQUEST_CHANGES`). + - Skip auto-merge. + - Exit 1. +6. **(Optional) Formal PR review** when the approver App is installed + (see [Approver GitHub App setup](#approver-github-app-setup)): + - Tier 1 + deps OK + authorized → `APPROVE`. + - Anything else → `REQUEST_CHANGES`. +7. **Auto-merge** — only when **all** of: deps OK, Tier 1, authorized, + AND `BASE_REF` starts with `release/`. Calls + `gh pr merge --auto --` (default `squash`). This uses + GitHub's native auto-merge, so the actual merge waits until **every** + branch-protection requirement is satisfied (other checks green, no + pending human reviews). PRs targeting `v10` / `v11` never auto-merge + — those branches stay manually merged so deploys are intentional. +8. **Exit code:** 0 only if everything is OK; 1 if deps failed, + tier ≥ 2, or author unauthorized. + +When the author pushes new commits the workflow re-runs and the comments +are **updated in place** (no stacking). The PR is never auto-closed — +it stays open waiting for the author's fixes. + +### Adding a new check + +The architecture is designed to scale. To add, for example, a test check: + +1. Create `.github/workflows/_pr-reusable-.yml` that runs the check + and uploads an artifact with the result (ideally JSON). +2. Call the reusable from `pr-checks.yml` as another job. +3. Add that job to the `approver`'s `needs:` (and to `all_checks_passed`). +4. Extend `approver.sh` to read the new artifact and factor it into the + final verdict. + +To add a new AI prompt **no YAML changes are needed** — just drop a `.md` +into `.github/ai-prompts/`. -### Flow +--- -``` -┌─────────────────────┐ -│ Push to Branch │ -└──────────┬──────────┘ - │ - ├─── release/v10** ──→ Build & Deploy to v10-dev - ├─── v10 ──────────→ Build & Deploy to v10-rc - └─── tag v10.* ────→ Build for Production -``` +## V10 Deployment Pipeline + +Triggers: -### Jobs +- Push to `v10` → deploy to **v10-rc** +- Push to `release/v10**` → deploy to **v10-dev** +- Tag `v10.*` → production build -1. **setup_deployment** - Determines environment based on trigger -2. **validations** - Validates user permissions -3. **build_agent** - Builds and signs Windows/Linux agents -4. **build_agent_manager** - Builds agent-manager Docker image -5. **build_*** - Builds all microservices (aws, backend, correlation, frontend, etc.) -6. **all_builds_complete** - Checkpoint for all builds -7. **deploy_dev / deploy_rc** - Deploys to respective environments +Main jobs: -### Permissions +1. `setup_deployment` — determines environment from the trigger. +2. `validations` — checks permissions (team membership). +3. `build_agent` — Windows/Linux signed agents. +4. `build_agent_manager` — Docker image. +5. `build_*` — microservices (aws, backend, correlation, frontend, etc). +6. `all_builds_complete` — checkpoint. +7. `deploy_dev` / `deploy_rc` — deploy to the corresponding environment. -- **Dev deployments**: `integration-developers` or `core-developers` teams -- **RC/Prod deployments**: Same as dev +Permissions: `integration-developers` or `core-developers`. --- -## 🎯 V11 Deployment Pipeline +## V11 Deployment Pipeline + +Triggers: + +- Push to `release/v11**` → deploy to **dev** (auto-incremented version + `v11.x.x-dev.N`). +- Prerelease created → deploy to **rc** (version `v11.x.x` from the tag). ### Flow ``` -┌─────────────────────────────┐ -│ Push to release/v11.x.x │ -│ branch │ -└──────────────┬──────────────┘ - │ - ▼ - Auto-increment version - (v11.x.x-dev.N) - │ - ▼ - Build & Deploy to DEV - │ - ▼ - Publish to CM Dev - │ - ▼ - Schedule to Dev Instances - - -┌─────────────────────────────┐ -│ Create Prerelease │ -│ (tag: v11.x.x) │ -└──────────────┬──────────────┘ - │ - ▼ - Build & Deploy to RC - │ - ▼ - Generate Changelog (AI) - │ - ▼ - Build & Upload Installer - │ - ▼ - Publish to CM Prod - │ - ▼ - Schedule to Prod Instances +Push to release/v11.x.x + │ + ▼ +Auto-increment version (v11.x.x-dev.N) + │ + ▼ +Build & Deploy to DEV + │ + ▼ +Publish to CM Dev → schedule to dev instances + + +Create Prerelease (tag v11.x.x) + │ + ▼ +Build & Deploy to RC + │ + ▼ +Generate Changelog (AI) + │ + ▼ +Build & Upload Installer + │ + ▼ +Publish to CM Prod → schedule to prod instances ``` -### Jobs +Jobs: `setup_deployment`, `validations`, `build_agent`, +`build_utmstack_collector`, `build_agent_manager`, `build_event_processor`, +`build_backend` (Java 17), `build_frontend`, `build_user_auditor`, +`build_web_pdf`, `all_builds_complete`, `generate_changelog` (RC), +`build_installer_rc` (RC), `deploy_installer_dev` (Dev), +`publish_new_version`, `schedule`. -1. **setup_deployment** - Determines environment and version based on trigger -2. **validations** - Validates user permissions (team membership) -3. **build_agent** - Builds and signs Windows/Linux agents -4. **build_utmstack_collector** - Builds UTMStack Collector -5. **build_agent_manager** - Builds agent-manager Docker image -6. **build_event_processor** - Builds event processor with plugins -7. **build_backend** - Builds backend microservice (Java 17) -8. **build_frontend** - Builds frontend microservice -9. **build_user_auditor** - Builds user-auditor microservice -10. **build_web_pdf** - Builds web-pdf microservice -11. **all_builds_complete** - Checkpoint for all builds -12. **generate_changelog** - Generates AI-powered changelog (RC only) -13. **build_installer_rc** - Builds and uploads installer (RC only) -14. **deploy_installer_dev** - Deploys installer (Dev only) -15. **publish_new_version** - Publishes version to Customer Manager -16. **schedule** - Schedules release to configured instances +### Environment detection -### Permissions - -- Requires: `integration-developers` or `core-developers` team membership - -### Environment Detection +| Trigger | Environment | CM URL | Service Account | Schedule Var | +|---------|-------------|--------|------------------|--------------| +| Push to `release/v11**` | dev | `https://cm.dev.utmstack.com` | `CM_SERVICE_ACCOUNT_DEV` | `SCHEDULE_INSTANCES_DEV` | +| Prerelease | rc | `https://cm.utmstack.com` | `CM_SERVICE_ACCOUNT_PROD` | `SCHEDULE_INSTANCES_PROD` | -The pipeline automatically detects the environment based on trigger: +### Version auto-increment (dev) -| Trigger | Environment | CM URL | Service Account | Schedule Instances Var | -|---------|-------------|--------|-----------------|------------------------| -| Push to `release/v11**` | dev | `https://cm.dev.utmstack.com` | `CM_SERVICE_ACCOUNT_DEV` | `SCHEDULE_INSTANCES_DEV` | -| Prerelease created | rc | `https://cm.utmstack.com` | `CM_SERVICE_ACCOUNT_PROD` | `SCHEDULE_INSTANCES_PROD` | +1. Extracts the base version from the branch (`release/v11.2.1` → + `v11.2.1`). +2. Queries CM for the latest version. +3. If the base matches, bumps the dev suffix (`-dev.9` → `-dev.10`). +4. If the base differs, starts at `-dev.1`. -### Version Auto-Increment (Dev) +### Promotion to Community / Enterprise -For dev deployments, the version is automatically calculated: -1. Extracts base version from branch name (e.g., `release/v11.2.1` → `v11.2.1`) -2. Queries CM for latest version -3. If base versions match, increments dev number (e.g., `v11.2.1-dev.9` → `v11.2.1-dev.10`) -4. If base versions differ, starts fresh (e.g., `v11.2.1-dev.1`) +- **Community:** manual — promoting the prerelease to `latest` on GitHub + triggers the auto-deploy. +- **Enterprise:** manual with a checklist (zero crashes for 48h, no open + P0 issues). The last safety net before touching large customers. --- -## 📦 Installer Release +## Installer Release -### Flow +Trigger: GitHub Release published (type `released`). ``` -┌─────────────────────┐ -│ GitHub Release │ -│ Created & Published│ -└──────────┬──────────┘ - │ - ├─── Tag v10.x.x ──→ Build v10 Installer - └─── Tag v11.x.x ──→ Build v11 Installer +Tag v10.x.x → build v10 installer +Tag v11.x.x → build v11 installer (with ldflags: version, branch, encryption keys) ``` -### Behavior - -- Validates release tag format -- Builds installer with correct configuration: - - **V10:** Basic build - - **V11:** Build with ldflags (version, branch, encryption keys) -- Uploads installer to GitHub release assets +The installer is uploaded as a release asset. --- -## 🔐 Required Secrets and Variables +## Secrets and variables ### Secrets -| Secret Name | Used In | Description | -|-------------|---------|-------------| -| `API_SECRET` | All | GitHub API token for team membership validation | +| Secret | Used in | Description | +|--------|---------|-------------| +| `API_SECRET` | All, pr-checks | GitHub PAT with `read:org` scope. Used by deployment workflows for team-membership validation and by the `approver` job to check that the PR author belongs to `administrators` or `core-developers`. | | `AGENT_SECRET_PREFIX` | v10, v11 | Agent encryption key | -| `SIGN_CERT` | v10, v11 | Code signing certificate path (var) | +| `SIGN_CERT` | v10, v11 | Code signing certificate path (it's a `var`) | | `SIGN_KEY` | v10, v11 | Code signing key | | `SIGN_CONTAINER` | v10, v11 | Code signing container name | -| `CM_SERVICE_ACCOUNT_PROD` | v11 | Customer Manager service account credentials (prod/rc) - JSON format `{"id": "...", "key": "..."}` | -| `CM_SERVICE_ACCOUNT_DEV` | v11 | Customer Manager service account credentials (dev) - JSON format `{"id": "...", "key": "..."}` | -| `CM_ENCRYPT_SALT` | installer | Encryption salt for installer | -| `CM_SIGN_PUBLIC_KEY` | installer | Public key for installer verification | -| `OPENAI_API_KEY` | v11 | OpenAI API key for changelog generation | -| `GITHUB_TOKEN` | All | Auto-provided by GitHub Actions | +| `CM_SERVICE_ACCOUNT_PROD` | v11 | Customer Manager service account (prod/rc), JSON `{"id":"...","key":"..."}` | +| `CM_SERVICE_ACCOUNT_DEV` | v11 | Customer Manager service account (dev), JSON `{"id":"...","key":"..."}` | +| `CM_ENCRYPT_SALT` | installer | Installer encryption salt | +| `CM_SIGN_PUBLIC_KEY` | installer | Public key for verification | +| `THREATWINDS_API_KEY` | pr-checks, v11 changelog | ThreatWinds API key for `ai_review` and `generate-changelog` | +| `THREATWINDS_API_SECRET` | pr-checks, v11 changelog | ThreatWinds API secret for `ai_review` and `generate-changelog` | +| `APPROVER_APP_ID` | pr-checks | GitHub App ID for the approver bot. See [Approver GitHub App setup](#approver-github-app-setup). Without this, the approver runs in comments-only mode (no formal review, no auto-merge). | +| `APPROVER_PRIVATE_KEY` | pr-checks | GitHub App private key (full `.pem` content, multi-line) paired with `APPROVER_APP_ID`. | +| `GITHUB_TOKEN` | All | Provided automatically | ### Variables -| Variable Name | Used In | Description | Format | -|---------------|---------|-------------|--------| +| Variable | Used in | Description | Format | +|----------|---------|-------------|--------| | `SCHEDULE_INSTANCES_PROD` | v11 | Instance IDs for prod/rc scheduling | Comma-separated UUIDs | | `SCHEDULE_INSTANCES_DEV` | v11 | Instance IDs for dev scheduling | Comma-separated UUIDs | -| `TW_EVENT_PROCESSOR_VERSION_PROD` | v11 | ThreatWinds Event Processor version (prod/rc) | Semver (e.g., `1.0.0`) | -| `TW_EVENT_PROCESSOR_VERSION_DEV` | v11 | ThreatWinds Event Processor version (dev) | Semver (e.g., `1.0.0-beta`) | +| `TW_EVENT_PROCESSOR_VERSION_PROD` | v11 | ThreatWinds Event Processor version (prod/rc) | Semver (`1.0.0`) | +| `TW_EVENT_PROCESSOR_VERSION_DEV` | v11 | ThreatWinds Event Processor version (dev) | Semver (`1.0.0-beta`) | -**Example Variable Values:** -``` -SCHEDULE_INSTANCES_PROD=uuid1,uuid2,uuid3 -SCHEDULE_INSTANCES_DEV=uuid-dev1 -TW_EVENT_PROCESSOR_VERSION_PROD=1.0.0 -TW_EVENT_PROCESSOR_VERSION_DEV=1.0.0-beta +--- + +## Approver GitHub App setup + +The `approver` job uses a GitHub App (instead of a personal PAT) to leave +formal PR reviews and enable auto-merge. Pros: + +- Per-run installation token, valid for ~1 hour, auto-revoked when the + job ends. No long-lived credential in the repo. +- The App acts as its own identity, so it can `APPROVE` PRs opened by any + human contributor — including the workflow's own author (GitHub blocks + self-approval when using a PAT). +- One place to audit who/what changed your branch protection state. + +### One-time setup + +**1. Create the App.** + +Go to: `https://github.com/organizations/utmstack/settings/apps/new` + +- **GitHub App name**: e.g. `UTMStack Approver`. +- **Homepage URL**: any (the UTMStack repo URL is fine). +- **Webhook**: untick **Active** — no callbacks needed. +- **Repository permissions:** + - `Contents`: **Read-only** + - `Pull requests`: **Read and write** + - `Metadata`: Read-only (default, can't be removed). +- **Organization permissions:** + - `Members`: **Read-only** — needed for the team-membership check. +- **Where can this GitHub App be installed?** Only on this account. + +Click **Create GitHub App**. + +**2. Get the App ID and a private key.** + +On the App's settings page you'll see the **App ID** (numeric). Save it. + +Scroll to **Private keys** → **Generate a private key**. A `.pem` file +downloads. Save the **full contents** (BEGIN/END lines included). + +**3. Install the App on the UTMStack repo.** + +On the App page → **Install App** → pick the `utmstack` org → choose +**Only select repositories** → select `UTMStack` → Install. + +**4. Add the secrets to the repo.** + +Settings → Secrets and variables → Actions → New repository secret. + +- `APPROVER_APP_ID` = the numeric App ID. +- `APPROVER_PRIVATE_KEY` = the full PEM contents of the `.pem` file, + including the `-----BEGIN/END PRIVATE KEY-----` lines. Paste as-is — + GitHub preserves multi-line values. + +**5. Optional: drop `API_SECRET`.** + +If the App has `Members: Read` at org level, you can stop maintaining a +separate `API_SECRET` PAT for the permission check. The approver +workflow falls back to the App token when `API_SECRET` is not set +(`API_SECRET: ${{ secrets.API_SECRET || steps.app-token.outputs.token }}` +in `_pr-reusable-approver.yml`). + +`API_SECRET` is still used by the deployment workflows +(`v10-deployment-pipeline.yml`, `v11-deployment-pipeline.yml`) for things +like fetching private Go modules during installer builds — don't delete +it from the repo until you confirm those workflows no longer need it. + +### How it gets minted at runtime + +In `_pr-reusable-approver.yml`: + +```yaml +- name: Generate approver token from GitHub App + id: app-token + if: ${{ env.APP_ID != '' }} + env: + APP_ID: ${{ secrets.APPROVER_APP_ID }} + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.APPROVER_APP_ID }} + private-key: ${{ secrets.APPROVER_PRIVATE_KEY }} ``` +If the secrets aren't configured, the step is skipped, the approver +runs in comments-only mode, and everything else still works (deps +comment, AI review comment, status check) — just no formal review and +no auto-merge. + +### Verifying it works + +1. Open a small, low-risk PR against `release/v11.x.x` (or push the + workflow to a sandbox branch). +2. After the approver job runs, check the PR page: + - The sticky `` comment is signed by your bot + account (e.g. `utmstack-approver[bot]`). + - The "Files changed" tab shows a review by the same bot, marked + `Approved` (Tier 1 + deps OK + authorized) or `Changes requested`. +3. If the target is `release/**` and Tier 1 → auto-merge is queued in + the PR header ("Auto-merge enabled by … via GitHub Actions"). + +--- + +## Reusable workflows + +**PR checks:** + +- `_pr-reusable-go-deps.yml` — runs `go-deps.sh --check --discover` at + repo level and uploads `go-deps-result` as an artifact. +- `_pr-reusable-ai-review.yml` — fan-out per prompt; each job uploads + `ai-review-` as an artifact. +- `_pr-reusable-approver.yml` — downloads artifacts, decides verdict, + posts sticky comments, optionally leaves a formal PR review. + +**Deployment pipelines:** + +- `reusable-basic.yml` — generic Docker builds. +- `reusable-golang.yml` — Go microservices. +- `reusable-java.yml` — Java microservices. +- `reusable-node.yml` — frontend / node. +- `reusable-sign-agent.yml` — agent signing. + --- -## 🎮 How to Deploy +## How to deploy + +### V10 -### V10 Deployment +**Dev:** -**Dev Environment:** ```bash git checkout release/v10.x.x -git push origin release/v10.x.x -# Automatically deploys to v10-dev +# Make changes via PR → merge → auto-deploy to v10-dev ``` -**RC Environment:** +**RC:** + ```bash -git checkout v10 -git merge release/v10.x.x -git push origin v10 -# Automatically deploys to v10-rc +# PR from release/v10.x.x → v10 → merge → auto-deploy to v10-rc ``` -**Production Release:** +**Production:** + ```bash git tag v10.5.0 git push origin v10.5.0 -# Builds production artifacts ``` -### V11 Deployment +### V11 + +**Dev:** -**Dev Environment:** ```bash -git checkout release/v11.2.1 -# Make your changes -git add . -git commit -m "Your changes" -git push origin release/v11.2.1 -# Automatically builds and deploys to dev -# Version is auto-incremented (e.g., v11.2.1-dev.1, v11.2.1-dev.2, ...) +# Open a PR against release/v11.2.1 → checks → merge → auto-deploy +# Version auto-incremented (v11.2.1-dev.1, v11.2.1-dev.2, ...) ``` -**RC Release:** -1. Navigate to GitHub Releases -2. Click "Draft a new release" -3. Create a new tag (e.g., `v11.2.1`) -4. Select "Set as a pre-release" -5. Click "Publish release" -6. Pipeline automatically: - - Builds all microservices - - Generates AI-powered changelog - - Builds and uploads installer - - Publishes version to CM - - Schedules updates to RC instances - ---- +**RC:** -## 🏗️ Reusable Workflows +1. GitHub Releases → "Draft a new release". +2. New tag (e.g. `v11.2.1`). +3. Mark as pre-release. +4. Publish. +5. The pipeline builds microservices, generates the AI changelog, uploads + the installer, publishes to CM, and schedules updates to RC instances. -The following reusable workflows are called by the main pipelines: +**Hotfix:** -- `reusable-basic.yml` - Basic Docker builds -- `reusable-golang.yml` - Golang microservice builds -- `reusable-java.yml` - Java microservice builds -- `reusable-node.yml` - Node.js/Frontend builds +```bash +git checkout v11 +git checkout -b hotfix/auth-bug +# fix → PR to v11 (label `urgent` if applicable) → checks → merge +# Recommended after merge: sync v11 into release/v11.x.x+1 +# git checkout release/v11.x.x+1 +# git merge origin/v11 # or cherry-pick the specific commits +# git push +``` --- -## 📝 Notes - -- All Docker images are pushed to `ghcr.io/utmstack/utmstack/*` -- Agent signing requires `utmstack-signer` runner -- Artifacts (agents, collector) have 1-day retention -- Failed deployments will stop the pipeline and report errors -- Dev versions follow the format `v11.x.x-dev.N` (auto-incremented) -- RC versions use the prerelease tag directly (e.g., `v11.2.1`) +## Troubleshooting + +**Permission denied:** +- Verify membership in `integration-developers` or `core-developers`. + +**`ai_review` artifact with tier 2 fallback "Manual review recommended":** +- The model didn't return valid JSON or returned an invalid tier. The + approver treats it as Tier 2 (changes requested) fail-safe. Refine the + prompt `.md` or re-run the workflow if it was transient. + +**`go_deps` fails with "Could not inspect ... run 'go mod tidy' there":** +- `go.sum` is out of sync, typically due to local `replace` directives in + `packages/`. Run `go mod tidy` in the affected module and commit. + +**The approver posts two separate comments (deps + AI):** +- That's the expected behaviour when both dimensions fail. Each comment + is independent and gets updated in place on subsequent runs. + +**The approver doesn't leave a formal review (only comments):** +- The approver GitHub App is not configured. Add both `APPROVER_APP_ID` + and `APPROVER_PRIVATE_KEY` secrets — see + [Approver GitHub App setup](#approver-github-app-setup). + +**Want a senior engineer @mentioned on Tier 3:** +- Edit `pr-checks.yml`, in the `approver` job set the `tier3_reviewers` + input with comma-separated handles: + ```yaml + with: + tier3_reviewers: 'Kbayero,osmontero' + ``` + +**Build failures:** +- Check that all required secrets are configured. +- Verify availability of the `utmstack-signer` runner (required for + agent signing). + +**Version not incrementing:** +- Check that `CM_SERVICE_ACCOUNT_DEV` / `CM_SERVICE_ACCOUNT_PROD` are + configured and that the CM API is reachable. +- The branch name must follow `release/v11.x.x`. + +**Changelog not generated:** +- Only applies to RC (prereleases). +- Verify `THREATWINDS_API_KEY` and `THREATWINDS_API_SECRET` are configured. +- To test locally: export the same secrets and run + `./scripts/test-generate-changelog.sh v11.2.8` from the repo root + (auto-detects the previous tag; the wrapper also loads them from a + local `.env` if present). --- -## 🆘 Troubleshooting - -**Permission Denied:** -- Verify you're a member of the required team -- For v11: Must be in `integration-developers` or `core-developers` team - -**Build Failures:** -- Check that all required secrets are configured -- Verify runner availability (especially `utmstack-signer` for agent builds) -- Review build logs for specific errors - -**Version Not Incrementing:** -- Check that the CM API is accessible -- Verify `CM_SERVICE_ACCOUNT_DEV` or `CM_SERVICE_ACCOUNT_PROD` secrets are correctly configured -- Ensure the branch name follows the format `release/v11.x.x` - -**Changelog Not Generated:** -- Verify `OPENAI_API_KEY` secret is configured -- Only applies to RC releases (prereleases) - ---- +## Notes -**For questions or issues, please contact the DevOps team.** +- Docker images are published to `ghcr.io/utmstack/utmstack/*`. +- Agent signing requires the `utmstack-signer` runner. +- Artifacts (agents, collector) have a 1-day retention. +- Dev versions: `v11.x.x-dev.N` (auto-incremented). +- RC versions: the prerelease tag (e.g. `v11.2.1`). diff --git a/.github/workflows/_pr-reusable-ai-review.yml b/.github/workflows/_pr-reusable-ai-review.yml new file mode 100644 index 000000000..7c37fa7ee --- /dev/null +++ b/.github/workflows/_pr-reusable-ai-review.yml @@ -0,0 +1,87 @@ +name: Reusable - AI code review + +on: + workflow_call: + inputs: + default_model: + required: false + type: string + default: 'gemini-3-flash-lite' + description: "Default model when a prompt doesn't pin one in frontmatter" + secrets: + THREATWINDS_API_KEY: + required: true + THREATWINDS_API_SECRET: + required: true + +permissions: + contents: read + pull-requests: read + +jobs: + discover: + name: Discover prompts + runs-on: ubuntu-24.04 + outputs: + prompts: ${{ steps.list.outputs.prompts }} + steps: + - uses: actions/checkout@v4 + - id: list + run: | + # README.md is documentation, not a prompt — exclude it. + mapfile -t files < <(find .github/ai-prompts -maxdepth 1 -name '*.md' \ + -not -name 'README.md' | sort) + if [ ${#files[@]} -eq 0 ]; then + echo "prompts=[]" >> "$GITHUB_OUTPUT" + echo "No AI prompts found under .github/ai-prompts/" + exit 0 + fi + # Emit objects with both path and a safe name (basename without + # extension) so the matrix can use the name as artifact suffix. + items=() + for f in "${files[@]}"; do + name=$(basename "$f" .md) + items+=("$(jq -cn --arg path "$f" --arg name "$name" '{path:$path, name:$name}')") + done + json="[$(IFS=,; echo "${items[*]}")]" + echo "prompts=$json" >> "$GITHUB_OUTPUT" + echo "Prompts to run: $json" + + review: + name: ${{ matrix.prompt.name }} + needs: discover + if: needs.discover.outputs.prompts != '[]' + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + prompt: ${{ fromJson(needs.discover.outputs.prompts) }} + steps: + - uses: actions/checkout@v4 + + - name: Fetch PR diff + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_NUMBER: ${{ github.event.pull_request.number }} + run: | + # gh pr diff gives the same unified diff the GitHub UI shows. + # Simpler than `git diff base..head` and doesn't require fetch-depth: 0. + gh pr diff "$PR_NUMBER" > /tmp/pr.diff + echo "Diff size: $(wc -c < /tmp/pr.diff) bytes" + + - name: Run AI review + env: + PROMPT_FILE: ${{ matrix.prompt.path }} + DIFF_FILE: /tmp/pr.diff + OUTPUT_FILE: /tmp/result.json + AI_REVIEW_MODEL: ${{ inputs.default_model }} + THREATWINDS_API_KEY: ${{ secrets.THREATWINDS_API_KEY }} + THREATWINDS_API_SECRET: ${{ secrets.THREATWINDS_API_SECRET }} + run: bash .github/scripts/ai-review.sh + + - name: Upload result artifact + uses: actions/upload-artifact@v4 + with: + name: ai-review-${{ matrix.prompt.name }} + path: /tmp/result.json + retention-days: 7 diff --git a/.github/workflows/_pr-reusable-approver.yml b/.github/workflows/_pr-reusable-approver.yml new file mode 100644 index 000000000..7a5cb9e7d --- /dev/null +++ b/.github/workflows/_pr-reusable-approver.yml @@ -0,0 +1,100 @@ +name: Reusable - PR approver + +# Single source of truth for whether the PR passes. Downloads the artifacts +# produced by go_deps and ai_review, posts sticky PR comments, runs the +# team-membership permission check, and — using a GitHub App installation +# token minted at runtime — leaves a formal PR review and (on release/**) +# enables auto-merge. + +on: + workflow_call: + inputs: + tier3_reviewers: + required: false + type: string + default: '' + description: "Comma-separated GitHub handles to @mention when AI flags Tier 3" + org: + required: false + type: string + default: 'utmstack' + description: "GitHub org used for team-membership checks" + admin_team: + required: false + type: string + default: 'administrators' + description: "Team slug allowed to merge" + core_team: + required: false + type: string + default: 'core-developers' + description: "Second team slug allowed to merge" + merge_method: + required: false + type: string + default: 'squash' + description: "Auto-merge method on release/**: merge | squash | rebase" + secrets: + APPROVER_APP_ID: + required: false + description: "GitHub App ID for the approver bot. Without it, the job only posts sticky comments — no formal review, no auto-merge." + APPROVER_PRIVATE_KEY: + required: false + description: "GitHub App private key (full PEM content) for the approver bot." + API_SECRET: + required: false + description: "PAT with read:org for team-membership checks. Falls back to the App token if absent (App must have Organization → Members: Read)." + +permissions: + contents: read + pull-requests: write + +jobs: + approve: + name: Decide + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + + # Mint a short-lived installation token from the GitHub App. The token + # is automatically revoked when the job ends. If the App secrets aren't + # configured, this step is skipped and the approver runs in comments-only + # mode (no formal review, no auto-merge). + - name: Generate approver token from GitHub App + id: app-token + if: ${{ env.APP_ID != '' }} + env: + APP_ID: ${{ secrets.APPROVER_APP_ID }} + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.APPROVER_APP_ID }} + private-key: ${{ secrets.APPROVER_PRIVATE_KEY }} + + - name: Download all PR-check artifacts + uses: actions/download-artifact@v4 + with: + path: /tmp/artifacts/ + + - name: List downloaded artifacts + run: | + ls -la /tmp/artifacts/ || true + find /tmp/artifacts -type f | head -50 + + - name: Run approver + env: + ARTIFACTS_DIR: /tmp/artifacts + PR_NUMBER: ${{ github.event.pull_request.number }} + GITHUB_REPOSITORY: ${{ github.repository }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Prefer the freshly-minted App token; fall back to GITHUB_TOKEN + # for org-read calls only if API_SECRET isn't set either. + APPROVER_TOKEN: ${{ steps.app-token.outputs.token }} + API_SECRET: ${{ secrets.API_SECRET || steps.app-token.outputs.token }} + TIER3_REVIEWERS: ${{ inputs.tier3_reviewers }} + ORG: ${{ inputs.org }} + ADMIN_TEAM: ${{ inputs.admin_team }} + CORE_TEAM: ${{ inputs.core_team }} + MERGE_METHOD: ${{ inputs.merge_method }} + PR_AUTHOR: ${{ github.event.pull_request.user.login }} + BASE_REF: ${{ github.event.pull_request.base.ref }} + run: bash .github/scripts/approver.sh diff --git a/.github/workflows/_pr-reusable-go-deps.yml b/.github/workflows/_pr-reusable-go-deps.yml new file mode 100644 index 000000000..37360f373 --- /dev/null +++ b/.github/workflows/_pr-reusable-go-deps.yml @@ -0,0 +1,44 @@ +name: Reusable - Go dependency check + +on: + workflow_call: + inputs: + go_version: + required: false + type: string + default: '1.23' + +jobs: + deps: + name: Check + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: ${{ inputs.go_version }} + + - name: Run go-deps.sh --check --discover + id: run + run: | + mkdir -p /tmp/deps + # Run the script but don't fail this job — we want the approver to + # be the single gate. Capture stdout+stderr and the exit code. + set +e + bash .github/scripts/go-deps.sh --check --discover \ + > /tmp/deps/output.txt 2>&1 + code=$? + set -e + echo "$code" > /tmp/deps/exit_code.txt + echo "" + echo "--- script output ---" + cat /tmp/deps/output.txt + echo "--- exit code: $code ---" + + - name: Upload result artifact + uses: actions/upload-artifact@v4 + with: + name: go-deps-result + path: /tmp/deps/ + retention-days: 7 diff --git a/.github/workflows/generate-changelog.yml b/.github/workflows/generate-changelog.yml index 18322318e..84dd7dd2f 100644 --- a/.github/workflows/generate-changelog.yml +++ b/.github/workflows/generate-changelog.yml @@ -1,5 +1,9 @@ name: Generate AI Changelog +# Thin wrapper around .github/scripts/generate-changelog.sh, which calls +# ThreatWinds /chat/completions to turn the commit log between two tags +# into end-user release notes. + on: workflow_call: inputs: @@ -8,198 +12,93 @@ on: required: true type: string previous_tag: - description: 'Previous tag to compare against (optional, auto-detected if not provided)' + description: 'Previous tag to compare against (optional, auto-detected if empty)' required: false type: string default: '' product_name: - description: 'Product name for the changelog' + description: 'Product name' required: false type: string default: 'UTMStack' product_description: - description: 'Product description for context' + description: 'Product description' required: false type: string default: 'Unified Threat Management and SIEM Platform' + model: + description: 'ThreatWinds model ID (e.g., gemini-3-flash-lite, gemini-3-pro, claude-sonnet-4-6)' + required: false + type: string + default: 'gemini-3-flash-lite' secrets: - OPENAI_API_KEY: + THREATWINDS_API_KEY: + required: true + THREATWINDS_API_SECRET: required: true outputs: changelog: - description: 'Generated changelog content' - value: ${{ jobs.generate-changelog.outputs.changelog }} + description: 'Generated changelog content (multiline)' + value: ${{ jobs.generate.outputs.changelog }} previous_tag: description: 'The previous tag used for comparison' - value: ${{ jobs.generate-changelog.outputs.previous_tag }} + value: ${{ jobs.generate.outputs.previous_tag }} jobs: - generate-changelog: - name: Generate AI Changelog - runs-on: ubuntu-latest + generate: + name: Generate + runs-on: ubuntu-24.04 outputs: - changelog: ${{ steps.generate-changelog.outputs.changelog }} - previous_tag: ${{ steps.get-tags.outputs.previous_tag }} - + changelog: ${{ steps.run.outputs.changelog }} + previous_tag: ${{ steps.run.outputs.previous_tag }} steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 with: + # Need full history for git tag listing and `git log A..B`. fetch-depth: 0 - - name: Get previous tag - id: get-tags + - name: Generate changelog + id: run + env: + THREATWINDS_API_KEY: ${{ secrets.THREATWINDS_API_KEY }} + THREATWINDS_API_SECRET: ${{ secrets.THREATWINDS_API_SECRET }} + PRODUCT_NAME: ${{ inputs.product_name }} + PRODUCT_DESCRIPTION: ${{ inputs.product_description }} + MODEL: ${{ inputs.model }} + OUTPUT_FILE: /tmp/changelog.md run: | - CURRENT_TAG="${{ inputs.current_tag }}" - echo "Current release tag: $CURRENT_TAG" + bash .github/scripts/generate-changelog.sh \ + "${{ inputs.current_tag }}" \ + "${{ inputs.previous_tag }}" - # Use provided previous_tag or auto-detect + # Resolve the previous tag the script actually used so the caller + # can output it (the script prints it to stdout; re-derive it the + # same way to be safe). if [ -n "${{ inputs.previous_tag }}" ]; then - PREVIOUS_TAG="${{ inputs.previous_tag }}" - echo "Using provided previous tag: $PREVIOUS_TAG" + prev='${{ inputs.previous_tag }}' else - # Get all tags sorted by version (newest first) - ALL_TAGS=$(git tag --sort=-v:refname) - FOUND_CURRENT=false - PREVIOUS_TAG="" - - for tag in $ALL_TAGS; do - if [ "$FOUND_CURRENT" = true ]; then - PREVIOUS_TAG="$tag" - break - fi - if [ "$tag" = "$CURRENT_TAG" ]; then - FOUND_CURRENT=true - fi + current='${{ inputs.current_tag }}' + all_tags=$(git tag --sort=-v:refname) + found=false + prev="" + for t in $all_tags; do + if [ "$found" = true ]; then prev="$t"; break; fi + if [ "$t" = "$current" ]; then found=true; fi done - - if [ -z "$PREVIOUS_TAG" ]; then - # No previous tag found, get first commit - PREVIOUS_TAG=$(git rev-list --max-parents=0 HEAD | head -1) - echo "No previous tag found, using first commit: $PREVIOUS_TAG" + if [ -z "$prev" ]; then + prev=$(git rev-list --max-parents=0 HEAD | head -1) fi fi + echo "previous_tag=$prev" >> "$GITHUB_OUTPUT" - echo "Previous tag/commit: $PREVIOUS_TAG" - echo "current_tag=$CURRENT_TAG" >> $GITHUB_OUTPUT - echo "previous_tag=$PREVIOUS_TAG" >> $GITHUB_OUTPUT - - - name: Get commits between tags - id: get-commits - run: | - CURRENT_TAG="${{ steps.get-tags.outputs.current_tag }}" - PREVIOUS_TAG="${{ steps.get-tags.outputs.previous_tag }}" - - echo "Getting commits between $PREVIOUS_TAG and $CURRENT_TAG" - - # Get commit messages with hash, author, and message - COMMITS=$(git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:"- %h %s (%an)" --no-merges) - - # Count commits - COMMIT_COUNT=$(git rev-list --count ${PREVIOUS_TAG}..${CURRENT_TAG} --no-merges) - - echo "Found $COMMIT_COUNT commits" - - # Save commits to file (to handle multiline) - echo "$COMMITS" > /tmp/commits.txt - - # Also get changed files summary - CHANGED_FILES=$(git diff --stat ${PREVIOUS_TAG}..${CURRENT_TAG} | tail -1) - echo "changed_files=$CHANGED_FILES" >> $GITHUB_OUTPUT - echo "commit_count=$COMMIT_COUNT" >> $GITHUB_OUTPUT - - - name: Generate changelog with OpenAI - id: generate-changelog - env: - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - PRODUCT_NAME: ${{ inputs.product_name }} - PRODUCT_DESCRIPTION: ${{ inputs.product_description }} - run: | - COMMITS=$(cat /tmp/commits.txt) - CURRENT_TAG="${{ steps.get-tags.outputs.current_tag }}" - PREVIOUS_TAG="${{ steps.get-tags.outputs.previous_tag }}" - COMMIT_COUNT="${{ steps.get-commits.outputs.commit_count }}" - CHANGED_FILES="${{ steps.get-commits.outputs.changed_files }}" - - # Create the prompt - PROMPT="You are a product marketing writer creating release notes for end users of a software product. - - Product: $PRODUCT_NAME - $PRODUCT_DESCRIPTION - Release: $CURRENT_TAG - - Here are the commit messages from this release: - $COMMITS - - Create user-friendly release notes in markdown format. This is for NON-TECHNICAL end users who want to know what's new and improved in the product. - - IMPORTANT RULES: - 1. ONLY include changes that DIRECTLY AFFECT END USERS - things they can see, use, or benefit from - 2. COMPLETELY IGNORE internal/technical changes like: - - CI/CD, GitHub Actions, deployment pipelines - - Code refactoring, component restructuring - - Database migrations, backend infrastructure - - Internal API changes, gRPC, service communication - - Developer tooling, linting, formatting - - README updates, internal documentation - 3. Write in simple, non-technical language - 4. Focus on BENEFITS to the user, not implementation details - 5. Group into these categories ONLY (skip empty categories): - - **What's New** - New features users can now use - - **Improved** - Enhancements to existing features - - **Fixed** - Bugs that were affecting users - 6. Start with a brief 1-2 sentence summary of the release highlights - 7. Use bullet points, be concise (one line per item) - 8. Do NOT wrap output in markdown code blocks - 9. Do NOT include commit hashes or author names - 10. If most commits are internal/technical, just summarize with 'Minor improvements and bug fixes' - - Write the release notes directly in markdown format, ready to be used as-is." - - # Call OpenAI API - RESPONSE=$(curl -s https://api.openai.com/v1/chat/completions \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer $OPENAI_API_KEY" \ - -d "$(jq -n \ - --arg prompt "$PROMPT" \ - '{ - model: "gpt-4o-mini", - messages: [ - {role: "system", content: "You are a technical writer specializing in software changelogs."}, - {role: "user", content: $prompt} - ], - temperature: 0.3, - max_tokens: 2000 - }')") - - # Extract the changelog from response - CHANGELOG=$(echo "$RESPONSE" | jq -r '.choices[0].message.content // empty') - - if [ -z "$CHANGELOG" ]; then - echo "Error: Failed to generate changelog" - echo "Response: $RESPONSE" - # Fallback to simple commit list - CHANGELOG="## What's Changed - - $COMMITS - - **Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREVIOUS_TAG}...${CURRENT_TAG}" - fi - - # Add comparison link at the end - CHANGELOG="${CHANGELOG} - - --- - **Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREVIOUS_TAG}...${CURRENT_TAG}" - - # Save changelog to file - echo "$CHANGELOG" > /tmp/changelog.md - - # Output changelog using multiline format - echo "changelog<> $GITHUB_OUTPUT - cat /tmp/changelog.md >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT + # Multiline output for the changelog. + { + echo 'changelog<> "$GITHUB_OUTPUT" - - name: Output changelog preview + - name: Preview run: | echo "## Generated Changelog Preview" echo "" diff --git a/.github/workflows/installer-release.yml b/.github/workflows/installer-release.yml index 7af16072f..f4ecfc071 100644 --- a/.github/workflows/installer-release.yml +++ b/.github/workflows/installer-release.yml @@ -12,7 +12,7 @@ on: required: true type: string environment: - description: 'Environment (dev or rc)' + description: 'Environment (dev, rc, or production)' required: true type: string prerelease: @@ -188,12 +188,14 @@ jobs: sudo /usr/local/bin/utmstack_installer # ============================================ - # V11 RC - Upload to prerelease only + # V11 RC / Production - Build installer and upload to GitHub release. + # The `prerelease` input controls whether the GitHub Release is marked as + # a prerelease (rc) or a normal release (production). # ============================================ - build_v11_rc: - name: Build V11 Installer for Prerelease + build_v11_release: + name: Build V11 Installer for Release runs-on: ubuntu-24.04 - if: inputs.version_major == 'v11' && inputs.environment == 'rc' + if: inputs.version_major == 'v11' && (inputs.environment == 'rc' || inputs.environment == 'production') steps: - name: Check out code uses: actions/checkout@v4 diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml new file mode 100644 index 000000000..2c2d0de6a --- /dev/null +++ b/.github/workflows/pr-checks.yml @@ -0,0 +1,71 @@ +name: PR Checks + +on: + pull_request: + branches: + - 'release/**' + - 'v10' + - 'v11' + +# Cancel previous runs when new commits are pushed to the same PR. +concurrency: + group: pr-checks-${{ github.event.pull_request.number }} + cancel-in-progress: true + +permissions: + contents: read + pull-requests: write + checks: write + +jobs: + go_deps: + name: Go deps + uses: ./.github/workflows/_pr-reusable-go-deps.yml + + ai_review: + name: AI review + uses: ./.github/workflows/_pr-reusable-ai-review.yml + secrets: + THREATWINDS_API_KEY: ${{ secrets.THREATWINDS_API_KEY }} + THREATWINDS_API_SECRET: ${{ secrets.THREATWINDS_API_SECRET }} + + approver: + name: Approver + needs: + - go_deps + - ai_review + uses: ./.github/workflows/_pr-reusable-approver.yml + with: + tier3_reviewers: 'Kbayero,osmontero' + secrets: + APPROVER_APP_ID: ${{ secrets.APPROVER_APP_ID }} + APPROVER_PRIVATE_KEY: ${{ secrets.APPROVER_PRIVATE_KEY }} + API_SECRET: ${{ secrets.API_SECRET }} + + all_checks_passed: + name: All checks passed + if: always() + needs: + - go_deps + - ai_review + - approver + runs-on: ubuntu-24.04 + steps: + - name: Verify all required check jobs succeeded + env: + NEEDS_JSON: ${{ toJson(needs) }} + run: | + echo "Dependent job results:" + echo "$NEEDS_JSON" | jq -r 'to_entries[] | " \(.key): \(.value.result)"' + + failed=$(echo "$NEEDS_JSON" | jq -r 'to_entries[] | select(.value.result != "success" and .value.result != "skipped") | .key') + + if [ -n "$failed" ]; then + echo "" + echo "❌ The following jobs did not succeed:" + echo "$failed" | sed 's/^/ - /' + exit 1 + fi + + echo "" + echo "✅ All required checks passed." diff --git a/.github/workflows/v10-deployment-pipeline.yml b/.github/workflows/v10-deployment-pipeline.yml index a8c002cb9..f69072f0f 100644 --- a/.github/workflows/v10-deployment-pipeline.yml +++ b/.github/workflows/v10-deployment-pipeline.yml @@ -2,9 +2,11 @@ name: V10 - Build & Deploy Pipeline on: push: - branches: [ 'release/v10**' ] + branches: + - 'release/v10**' + - 'v10' release: - types: [ prereleased, released ] + types: [ released ] jobs: setup_deployment: @@ -19,42 +21,31 @@ jobs: id: set-env run: | # =================== - # DEV Environment + # DEV — push to release/v10** # =================== - # Triggered by: push to release/v10.x.x branches if ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/v10') }}; then echo "DEV environment" echo "tag=v10-dev" >> $GITHUB_OUTPUT echo "environment=dev" >> $GITHUB_OUTPUT # =================== - # RC Environment + # RC — push to v10 # =================== - # Triggered by: prerelease creation - elif ${{ github.event_name == 'release' && github.event.action == 'prereleased' }}; then - TAG="${{ github.event.release.tag_name }}" - - # Skip if tag doesn't start with v10 (this pipeline is for v10 only) - if [[ ! "$TAG" =~ ^v10\. ]]; then - echo "⏭️ Skipping: Tag '$TAG' is not a v10 release. This pipeline handles v10 releases only." - exit 0 - fi - + elif ${{ github.event_name == 'push' && github.ref == 'refs/heads/v10' }}; then echo "RC environment" echo "tag=v10-rc" >> $GITHUB_OUTPUT echo "environment=rc" >> $GITHUB_OUTPUT - echo "release_tag=$TAG" >> $GITHUB_OUTPUT + echo "release_tag=v10-rc" >> $GITHUB_OUTPUT # =================== - # PROD Environment + # PRODUCTION — release.released (non-prerelease publish) + # Skip if tag doesn't start with v10 (this pipeline is for v10 only). # =================== - # Triggered by: prerelease promoted to release elif ${{ github.event_name == 'release' && github.event.action == 'released' }}; then TAG="${{ github.event.release.tag_name }}" - # Skip if tag doesn't start with v10 (this pipeline is for v10 only) if [[ ! "$TAG" =~ ^v10\. ]]; then - echo "⏭️ Skipping: Tag '$TAG' is not a v10 release. This pipeline handles v10 releases only." + echo "⏭️ Skipping: Tag '$TAG' is not a v10 release." exit 0 fi @@ -63,40 +54,10 @@ jobs: echo "environment=prod" >> $GITHUB_OUTPUT echo "release_tag=$TAG" >> $GITHUB_OUTPUT fi - - validations: - name: Validate permissions - runs-on: ubuntu-24.04 - needs: setup_deployment - if: ${{ needs.setup_deployment.outputs.tag != '' }} - steps: - - name: Check permissions - run: | - echo "Validating user permissions..." - - RESPONSE=$(curl -s -H "Authorization: Bearer ${{ secrets.API_SECRET }}" \ - -H "Accept: application/vnd.github.json" \ - "https://api.github.com/orgs/utmstack/teams/integration-developers/memberships/${{ github.actor }}") - - if echo "$RESPONSE" | grep -q '"state": "active"'; then - echo "✅ User ${{ github.actor }} is a member of the integration-developers team." - else - RESPONSE=$(curl -s -H "Authorization: Bearer ${{ secrets.API_SECRET }}" \ - -H "Accept: application/vnd.github.json" \ - "https://api.github.com/orgs/utmstack/teams/core-developers/memberships/${{ github.actor }}") - - if echo "$RESPONSE" | grep -q '"state": "active"'; then - echo "✅ User ${{ github.actor }} is a member of the core-developers team." - else - echo "⛔ ERROR: User ${{ github.actor }} is not a member of the core-developers or integration-developers team." - echo $RESPONSE - exit 1 - fi - fi build_agent: name: Build and Sign Agent - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} runs-on: utmstack-signer steps: @@ -145,7 +106,7 @@ jobs: build_agent_manager: name: Build Agent-Manager Image - needs: [build_agent,validations,setup_deployment] + needs: [build_agent, setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} runs-on: ubuntu-22.04 steps: @@ -193,7 +154,7 @@ jobs: build_aws: name: Build AWS Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-golang.yml with: @@ -202,7 +163,7 @@ jobs: build_backend: name: Build Backend Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-java.yml with: @@ -215,7 +176,7 @@ jobs: build_correlation: name: Build Correlation Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-golang.yml with: @@ -224,7 +185,7 @@ jobs: build_frontend: name: Build Frontend Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-node.yml with: @@ -233,7 +194,7 @@ jobs: build_bitdefender: name: Build Bitdefender Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-golang.yml with: @@ -242,7 +203,7 @@ jobs: build_mutate: name: Build Mutate Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-basic.yml with: @@ -251,7 +212,7 @@ jobs: build_office365: name: Build Office365 Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-golang.yml with: @@ -260,7 +221,7 @@ jobs: build_log_auth_proxy: name: Build Log-Auth-Proxy Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-golang.yml with: @@ -269,7 +230,7 @@ jobs: build_soc_ai: name: Build Soc-AI Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-golang.yml with: @@ -278,7 +239,7 @@ jobs: build_sophos: name: Build Sophos Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-golang.yml with: @@ -287,7 +248,7 @@ jobs: build_user_auditor: name: Build User-Auditor Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-java.yml with: @@ -299,7 +260,7 @@ jobs: build_web_pdf: name: Build Web-PDF Microservice - needs: [validations,setup_deployment] + needs: [setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-java.yml with: diff --git a/.github/workflows/v11-deployment-pipeline.yml b/.github/workflows/v11-deployment-pipeline.yml index 3f3dc6aab..988f63e61 100644 --- a/.github/workflows/v11-deployment-pipeline.yml +++ b/.github/workflows/v11-deployment-pipeline.yml @@ -2,9 +2,11 @@ name: "v11 - Build & Deploy Pipeline" on: push: - branches: [ 'release/v11**' ] + branches: + - 'release/v11**' + - 'v11' release: - types: [ prereleased ] + types: [ released ] jobs: setup_deployment: @@ -19,43 +21,36 @@ jobs: - name: Determine Build Environment id: set-env run: | - # =================== - # DEV Environment - # =================== - # Triggered by: push to release/v11.x.x branches + # ===================================================================== + # DEV — push to release/v11** + # Version = -dev.N, auto-incremented via CM. + # ===================================================================== if ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/v11') }}; then ENVIRONMENT="dev" CM_URL="https://cm.dev.utmstack.com" echo "Environment: $ENVIRONMENT" echo "CM URL: $CM_URL" - # Extract version from branch name (e.g., release/v11.2.1 -> v11.2.1) + # Extract version from branch name (e.g. release/v11.2.1 → v11.2.1) BRANCH_VERSION=$(echo "${{ github.ref }}" | sed 's|refs/heads/release/||') echo "Branch version: $BRANCH_VERSION" - # Get latest version from CM RESPONSE=$(curl -s "${CM_URL}/api/v1/versions/latest") LATEST_VERSION=$(echo "$RESPONSE" | jq -r '.version // empty') echo "Latest version from CM: $LATEST_VERSION" if [ -n "$LATEST_VERSION" ]; then - # Extract base version from latest (e.g., v11.2.1-dev.9 -> v11.2.1) LATEST_BASE=$(echo "$LATEST_VERSION" | sed 's/-dev\.[0-9]*$//') - echo "Latest base version: $LATEST_BASE" - if [ "$BRANCH_VERSION" = "$LATEST_BASE" ]; then - # Versions match - increment dev number DEV_NUM=$(echo "$LATEST_VERSION" | grep -oP '(?<=-dev\.)\d+') NEW_DEV_NUM=$((DEV_NUM + 1)) TAG="${BRANCH_VERSION}-dev.${NEW_DEV_NUM}" echo "Versions match, incrementing: $TAG" else - # Versions don't match - CM not updated yet, start at dev.1 TAG="${BRANCH_VERSION}-dev.1" echo "Versions don't match, starting fresh: $TAG" fi else - # No version found in CM - start at dev.1 TAG="${BRANCH_VERSION}-dev.1" echo "No previous version found, starting fresh: $TAG" fi @@ -65,66 +60,110 @@ jobs: echo "cm_url=$CM_URL" >> $GITHUB_OUTPUT echo "event_processor_tag=${{ vars.TW_EVENT_PROCESSOR_VERSION_DEV }}" >> $GITHUB_OUTPUT - # =================== - # RC Environment - # =================== - # Triggered by: prerelease creation (tag should be v11.x.x) - elif ${{ github.event_name == 'release' && github.event.action == 'prereleased' }}; then + # ===================================================================== + # RC — push to v11 + # + # Tag derivation walks two CMs to handle both the normal flow and + # the hotfix flow without divergent code paths: + # + # 1. CM DEV gives us the candidate BASE (strip `-dev.N`). + # 2. CM PROD gives us the latest version already in production. + # 3. If BASE > PROD → use BASE. Normal flow. + # If BASE <= PROD → BASE is already released (hotfix scenario) + # so bump the patch of PROD instead. Avoids overwriting an + # already-shipped tag and matches the roll-forward policy. + # ===================================================================== + elif ${{ github.event_name == 'push' && github.ref == 'refs/heads/v11' }}; then ENVIRONMENT="rc" CM_URL="https://cm.utmstack.com" + CM_DEV_URL="https://cm.dev.utmstack.com" echo "Environment: $ENVIRONMENT" - echo "CM URL: $CM_URL" + echo "CM URL (target): $CM_URL" + echo "CM URL (source for base): $CM_DEV_URL" - # Get the tag from the prerelease event - TAG="${{ github.event.release.tag_name }}" - echo "Tag from prerelease: $TAG" + DEV_RESPONSE=$(curl -s "${CM_DEV_URL}/api/v1/versions/latest") + LATEST_DEV_VERSION=$(echo "$DEV_RESPONSE" | jq -r '.version // empty') + echo "Latest dev version from CM DEV: $LATEST_DEV_VERSION" - # Skip if tag doesn't start with v11 (this pipeline is for v11 only) - if [[ ! "$TAG" =~ ^v11\. ]]; then - echo "⏭️ Skipping: Tag '$TAG' is not a v11 release. This pipeline handles v11 releases only." - exit 0 + if [ -z "$LATEST_DEV_VERSION" ]; then + echo "❌ No dev version found in CM DEV — cannot derive RC base. Push a release/v11.x.x branch first." + exit 1 + fi + + BASE=$(echo "$LATEST_DEV_VERSION" | sed -E 's/-dev\.[0-9]+$//') + echo "BASE derived from CM DEV: $BASE" + + if [[ ! "$BASE" =~ ^v11\. ]]; then + echo "❌ Derived BASE '$BASE' is not a v11 release." + exit 1 + fi + + # Double-check against production to detect the hotfix scenario. + PROD_RESPONSE=$(curl -s "${CM_URL}/api/v1/versions/latest") + PROD_LATEST=$(echo "$PROD_RESPONSE" | jq -r '.version // empty') + echo "Latest production version from CM PROD: ${PROD_LATEST:-}" + + if [ -n "$PROD_LATEST" ]; then + # sort -V puts the higher semver last. + HIGHER=$(printf '%s\n%s\n' "$BASE" "$PROD_LATEST" | sort -V | tail -1) + if [ "$HIGHER" = "$BASE" ] && [ "$BASE" != "$PROD_LATEST" ]; then + # BASE is strictly newer than PROD — use it as-is. + TAG="$BASE" + echo "BASE ($BASE) > PROD ($PROD_LATEST) — using BASE as RC tag." + else + # PROD is >= BASE → BASE was already released (hotfix case). + # Bump the patch of PROD. + MAJOR_MINOR=$(echo "$PROD_LATEST" | sed -E 's/^(v[0-9]+\.[0-9]+)\.[0-9]+.*$/\1/') + PATCH=$(echo "$PROD_LATEST" | sed -E 's/^v[0-9]+\.[0-9]+\.([0-9]+).*$/\1/') + NEW_PATCH=$((PATCH + 1)) + TAG="${MAJOR_MINOR}.${NEW_PATCH}" + echo "BASE ($BASE) <= PROD ($PROD_LATEST) — hotfix scenario. Bumping patch: $TAG" + fi + else + # CM PROD has no versions yet — use BASE. + TAG="$BASE" + echo "CM PROD is empty — using BASE as RC tag." fi + echo "RC tag: $TAG" + echo "tag=$TAG" >> $GITHUB_OUTPUT echo "environment=$ENVIRONMENT" >> $GITHUB_OUTPUT echo "cm_url=$CM_URL" >> $GITHUB_OUTPUT echo "event_processor_tag=${{ vars.TW_EVENT_PROCESSOR_VERSION_PROD }}" >> $GITHUB_OUTPUT - fi - - validations: - name: Validate permissions - runs-on: ubuntu-24.04 - needs: setup_deployment - if: ${{ needs.setup_deployment.outputs.tag != '' }} - steps: - - name: Check permissions - run: | - echo "Validating user permissions..." - RESPONSE=$(curl -s -H "Authorization: Bearer ${{ secrets.API_SECRET }}" \ - -H "Accept: application/vnd.github.json" \ - "https://api.github.com/orgs/utmstack/teams/integration-developers/memberships/${{ github.actor }}") + # ===================================================================== + # PRODUCTION — release.released (non-prerelease publish) + # + # Production does NOT rebuild anything. The images, installer, and + # changelog are all artifacts of the RC run. The production trigger + # only needs to tell CM "this version is now available to community + # instances" via a promote endpoint (TODO: define and wire up). + # ===================================================================== + elif ${{ github.event_name == 'release' && github.event.action == 'released' }}; then + ENVIRONMENT="production" + CM_URL="https://cm.utmstack.com" + echo "Environment: $ENVIRONMENT" + echo "CM URL: $CM_URL" - if echo "$RESPONSE" | grep -q '"state": "active"'; then - echo "✅ User ${{ github.actor }} is a member of the integration-developers team." - else - RESPONSE=$(curl -s -H "Authorization: Bearer ${{ secrets.API_SECRET }}" \ - -H "Accept: application/vnd.github.json" \ - "https://api.github.com/orgs/utmstack/teams/core-developers/memberships/${{ github.actor }}") + TAG="${{ github.event.release.tag_name }}" + echo "Tag from release: $TAG" - if echo "$RESPONSE" | grep -q '"state": "active"'; then - echo "✅ User ${{ github.actor }} is a member of the core-developers team." - else - echo "⛔ ERROR: User ${{ github.actor }} is not a member of the core-developers or integration-developers team." - echo $RESPONSE - exit 1 + if [[ ! "$TAG" =~ ^v11\. ]]; then + echo "⏭️ Skipping: tag '$TAG' is not a v11 release." + exit 0 fi + + echo "tag=$TAG" >> $GITHUB_OUTPUT + echo "environment=$ENVIRONMENT" >> $GITHUB_OUTPUT + echo "cm_url=$CM_URL" >> $GITHUB_OUTPUT + echo "event_processor_tag=${{ vars.TW_EVENT_PROCESSOR_VERSION_PROD }}" >> $GITHUB_OUTPUT fi build_agent: name: Build Agent Binaries needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} runs-on: ubuntu-24.04 steps: - name: Check out code into the right branch @@ -224,7 +263,7 @@ jobs: sign_agent_windows: name: Sign Windows Agent Binaries needs: [build_agent, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} uses: ./.github/workflows/reusable-sign-agent.yml with: os: windows @@ -244,7 +283,7 @@ jobs: sign_agent_macos: name: Sign macOS Agent Binaries needs: [build_agent, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} uses: ./.github/workflows/reusable-sign-agent.yml with: os: macos @@ -258,7 +297,7 @@ jobs: build_utmstack_collector: name: Build UTMStack Collector needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} runs-on: ubuntu-24.04 steps: - name: Check out code into the right branch @@ -292,7 +331,7 @@ jobs: build_agent_manager: name: Build Agent Manager Microservice needs: [sign_agent_windows, sign_agent_macos, build_utmstack_collector, setup_deployment] - if: ${{ always() && needs.sign_agent_windows.result == 'success' && needs.sign_agent_macos.result == 'success' && needs.build_utmstack_collector.result == 'success' && needs.setup_deployment.outputs.tag != '' }} + if: ${{ always() && needs.sign_agent_windows.result == 'success' && needs.sign_agent_macos.result == 'success' && needs.build_utmstack_collector.result == 'success' && needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} runs-on: ubuntu-24.04 steps: - name: Check out code into the right branch @@ -386,7 +425,7 @@ jobs: build_event_processor: name: Build Event Processor Microservice needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} runs-on: ubuntu-24.04 steps: - name: Check out code into the right branch @@ -443,8 +482,8 @@ jobs: build_backend: name: Build Backend Microservice - needs: [validations, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + needs: [setup_deployment] + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} uses: ./.github/workflows/reusable-java.yml with: image_name: backend @@ -456,8 +495,8 @@ jobs: copy_filters_and_rules: true build_frontend: name: Build Frontend Microservice - needs: [validations, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + needs: [setup_deployment] + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} uses: ./.github/workflows/reusable-node.yml with: image_name: frontend @@ -465,8 +504,8 @@ jobs: build_user_auditor: name: Build User-Auditor Microservice - needs: [validations, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + needs: [setup_deployment] + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} uses: ./.github/workflows/reusable-java.yml with: image_name: user-auditor @@ -477,8 +516,8 @@ jobs: build_web_pdf: name: Build Web-PDF Microservice - needs: [validations, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' }} + needs: [setup_deployment] + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} uses: ./.github/workflows/reusable-java.yml with: image_name: web-pdf @@ -502,6 +541,8 @@ jobs: steps: - run: echo "✅ All builds completed successfully." + # AI changelog runs only on RC. Production reuses the same release notes + # because the GitHub Release was already created during RC. generate_changelog: name: Generate Changelog needs: [all_builds_complete, setup_deployment] @@ -510,10 +551,15 @@ jobs: with: current_tag: ${{ needs.setup_deployment.outputs.tag }} secrets: - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - - build_installer_rc: - name: Build & Upload Installer (RC) + THREATWINDS_API_KEY: ${{ secrets.THREATWINDS_API_KEY }} + THREATWINDS_API_SECRET: ${{ secrets.THREATWINDS_API_SECRET }} + + # Installer build runs only on RC. The resulting binary is uploaded to the + # GitHub Release as a prerelease asset. When the release is later promoted + # to non-prerelease (which triggers production), the installer is already + # there — no rebuild needed. + build_installer_release: + name: Build & Upload Installer needs: [generate_changelog, setup_deployment] if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment == 'rc' }} uses: ./.github/workflows/installer-release.yml @@ -542,10 +588,12 @@ jobs: CM_ENCRYPT_SALT: ${{ secrets.CM_ENCRYPT_SALT }} CM_SIGN_PUBLIC_KEY: ${{ secrets.CM_SIGN_PUBLIC_KEY }} + # Publish a new version to CM. Runs for dev and rc — production does NOT + # re-publish because the rc run already registered v11.x.x in CM PROD. publish_new_version: name: Publish New Version to Customer Manager needs: [all_builds_complete, generate_changelog, setup_deployment] - if: ${{ always() && needs.all_builds_complete.result == 'success' && needs.setup_deployment.outputs.tag != '' }} + if: ${{ always() && needs.all_builds_complete.result == 'success' && needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} runs-on: ubuntu-24.04 steps: - name: Check out code @@ -558,8 +606,8 @@ jobs: TAG: ${{ needs.setup_deployment.outputs.tag }} CM_URL: ${{ needs.setup_deployment.outputs.cm_url }} run: | - # Use AI changelog for rc, generic for dev - if [ "$ENVIRONMENT" = "rc" ] && [ -n "$CHANGELOG_CONTENT" ]; then + # Use AI changelog for rc / production, generic for dev. + if [ "$ENVIRONMENT" != "dev" ] && [ -n "$CHANGELOG_CONTENT" ]; then changelog="$CHANGELOG_CONTENT" else changelog="Development build $TAG - Internal testing release" @@ -593,10 +641,13 @@ jobs: echo "Response: $response" + # Schedule the freshly-published version. For dev, this targets the dev + # instance list; for rc, the RC instance list. Production does NOT use this + # job — promotion to community lives in `promote_to_community` below. schedule: name: Schedule release to our instances needs: [publish_new_version, setup_deployment] - if: ${{ always() && needs.publish_new_version.result == 'success' && needs.setup_deployment.outputs.tag != '' }} + if: ${{ always() && needs.publish_new_version.result == 'success' && needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} runs-on: ubuntu-24.04 env: ENVIRONMENT: ${{ needs.setup_deployment.outputs.environment }} @@ -652,3 +703,45 @@ jobs: echo "✅ Scheduled release for all instances with version $TAG" + promote_to_community: + name: Promote to Community + needs: [setup_deployment] + if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment == 'production' }} + runs-on: ubuntu-24.04 + env: + TAG: ${{ needs.setup_deployment.outputs.tag }} + CM_URL: ${{ needs.setup_deployment.outputs.cm_url }} + steps: + - name: Schedule update for all community instances + run: | + echo "🚀 Promoting $TAG to community" + echo " CM URL: $CM_URL" + + cmAuth=$(echo '${{ secrets.CM_SERVICE_ACCOUNT_PROD }}' | jq -r '.') + auth_id=$(echo "$cmAuth" | jq -r '.id') + auth_key=$(echo "$cmAuth" | jq -r '.key') + + body=$(jq -n \ + --arg version "$TAG" \ + '{version: $version, edition: "community"}') + + response=$(curl -sS -w "\n%{http_code}" -X POST "${CM_URL}/api/v1/updates" \ + -H "Content-Type: application/json" \ + -H "id: $auth_id" \ + -H "key: $auth_key" \ + -d "$body") + + http_code=$(echo "$response" | tail -n1) + payload=$(echo "$response" | sed '$d') + + echo "HTTP $http_code" + echo "Response: $payload" + + if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 300 ]; then + echo "✅ Community broadcast scheduled for $TAG" + else + echo "❌ Community broadcast failed (HTTP $http_code)" + exit 1 + fi + + From b11df8a4f4283aa243717670d4920c66edcf5d35 Mon Sep 17 00:00:00 2001 From: Yorjander Hernandez Vergara Date: Tue, 19 May 2026 12:06:21 -0400 Subject: [PATCH 02/47] fix(workflows): unblock PR checks on large diffs + private go modules --- .github/scripts/ai-review.sh | 18 +++++++++++------- .github/workflows/_pr-reusable-go-deps.yml | 21 +++++++++++++++++++++ .github/workflows/pr-checks.yml | 2 ++ 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/.github/scripts/ai-review.sh b/.github/scripts/ai-review.sh index 2a0dec122..4696701a0 100755 --- a/.github/scripts/ai-review.sh +++ b/.github/scripts/ai-review.sh @@ -95,17 +95,21 @@ else diff_content=$(cat "$DIFF_FILE") fi -user_message=$(printf '%s\n\n---\n\nPR diff to review:\n\n```diff\n%s\n```\n' \ - "$prompt_body" "$diff_content") - -request_body=$(jq -n \ +# Write the user message to a temp file. Passing it through --arg would hit +# the system ARG_MAX limit on PRs with large diffs ("Argument list too long"). +user_message_file=$(mktemp) +printf '%s\n\n---\n\nPR diff to review:\n\n```diff\n%s\n```\n' \ + "$prompt_body" "$diff_content" > "$user_message_file" + +request_body_file=$(mktemp) +jq -n \ --arg model "$MODEL" \ - --arg content "$user_message" \ + --rawfile content "$user_message_file" \ '{ model: $model, messages: [{role: "user", content: $content}], temperature: 0.2 - }') + }' > "$request_body_file" # --- Call the API ------------------------------------------------------------ @@ -115,7 +119,7 @@ http_status=$(curl -sS -o "$response_file" -w '%{http_code}' \ -H "Content-Type: application/json" \ -H "api-key: ${THREATWINDS_API_KEY}" \ -H "api-secret: ${THREATWINDS_API_SECRET}" \ - --data "$request_body" || echo "000") + --data-binary "@${request_body_file}" || echo "000") if [[ "$http_status" != "200" ]]; then echo "ThreatWinds API HTTP $http_status" diff --git a/.github/workflows/_pr-reusable-go-deps.yml b/.github/workflows/_pr-reusable-go-deps.yml index 37360f373..ec6884c05 100644 --- a/.github/workflows/_pr-reusable-go-deps.yml +++ b/.github/workflows/_pr-reusable-go-deps.yml @@ -7,6 +7,10 @@ on: required: false type: string default: '1.23' + secrets: + API_SECRET: + required: false + description: "PAT with read access to private utmstack/* Go modules. Without it, `go list -u -m -json all` fails on projects that import private repos." jobs: deps: @@ -19,6 +23,23 @@ jobs: with: go-version: ${{ inputs.go_version }} + # Some projects in this monorepo (e.g. ./installer) depend on private + # utmstack/* modules. `go list -u -m -json all` tries to clone those + # over HTTPS and fails without auth — same pattern the deploy pipelines + # already use for `go build`. + - name: Configure git for private Go modules + if: ${{ env.HAS_API_SECRET == 'true' }} + env: + HAS_API_SECRET: ${{ secrets.API_SECRET != '' }} + API_SECRET: ${{ secrets.API_SECRET }} + run: | + git config --global url."https://${API_SECRET}:x-oauth-basic@github.com/".insteadOf "https://github.com/" + { + echo "GOPRIVATE=github.com/utmstack" + echo "GONOPROXY=github.com/utmstack" + echo "GONOSUMDB=github.com/utmstack" + } >> "$GITHUB_ENV" + - name: Run go-deps.sh --check --discover id: run run: | diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 2c2d0de6a..f2edb5a93 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -21,6 +21,8 @@ jobs: go_deps: name: Go deps uses: ./.github/workflows/_pr-reusable-go-deps.yml + secrets: + API_SECRET: ${{ secrets.API_SECRET }} ai_review: name: AI review From b0c5b52150417c87b46255d9ed12ef0cd2a86296 Mon Sep 17 00:00:00 2001 From: Yorjander Hernandez Vergara Date: Tue, 19 May 2026 12:22:25 -0400 Subject: [PATCH 03/47] fix(approver): use english in sticky PR comments --- .github/scripts/approver.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/scripts/approver.sh b/.github/scripts/approver.sh index 200142338..a127668c1 100755 --- a/.github/scripts/approver.sh +++ b/.github/scripts/approver.sh @@ -199,11 +199,11 @@ if $deps_failed; then deps_body=$(cat <Salida del script +
Script output \`\`\` $deps_output @@ -222,11 +222,11 @@ fi case "$max_tier" in 1) ai_header="### ✅ AI review — Approved" - ai_intro="Todos los prompts retornaron Tier 1. No se detectaron issues bloqueantes en este diff." + ai_intro="All prompts returned Tier 1. No blocking issues detected in this diff." ;; 2) ai_header="### ⚠️ AI review — Changes requested" - ai_intro="Uno o más prompts encontraron issues que el autor debería arreglar antes de mergear. Detalles abajo." + ai_intro="One or more prompts found issues the author should fix before merging. Details below." ;; 3) mention="" @@ -238,7 +238,7 @@ case "$max_tier" in done fi ai_header="### 🛑 AI review — Engineer review required" - ai_intro="Este PR toca paths críticos o introduce cambios que el modelo no puede juzgar con confianza suficiente. ${mention}por favor revisar." + ai_intro="This PR touches critical paths or introduces changes the model cannot judge with sufficient confidence. ${mention}please review." ;; *) ai_header="### ❓ AI review — Unknown verdict" @@ -297,11 +297,11 @@ if ! $authorized; then perm_body=$(cat < Date: Thu, 21 May 2026 21:06:39 +0300 Subject: [PATCH 04/47] Feature/cleanup rules and filters (#2091) * refactor(filters): update macOS filter configuration * chore(rules): remove Office365 brute force detection rule * chore(rules): remove PowerShell Empire detection rule * chore(rules): remove RDP brute force attacks rule --- filters/macos/macos.yml | 6 ++- ...t_365_brute_force_user_account_attempt.yml | 30 ------------ rules/windows/powershell_empire_detection.yml | 48 ------------------- rules/windows/rdp_brute_force_attacks.yml | 44 ----------------- 4 files changed, 5 insertions(+), 123 deletions(-) delete mode 100644 rules/office365/credential_access_microsoft_365_brute_force_user_account_attempt.yml delete mode 100644 rules/windows/powershell_empire_detection.yml delete mode 100644 rules/windows/rdp_brute_force_attacks.yml diff --git a/filters/macos/macos.yml b/filters/macos/macos.yml index 1bdc6e3e9..35eb41559 100644 --- a/filters/macos/macos.yml +++ b/filters/macos/macos.yml @@ -25,4 +25,8 @@ pipeline: - rename: from: - log.threadidentifier - to: log.threadIdentifier \ No newline at end of file + to: log.threadIdentifier + + # Drop unnecessary events + - drop: + where: equals("log.level", "notice") && contains("log.subsystem", "com.apple.cloudkit") || contains("log.subsystem", "com.apple.CoreDuet") || oneOf("log.subsystem", ["com.apple.apsd", "com.apple.bluetooth", "com.apple.SkyLight", "com.apple.mDNSResponder", "com.apple.homed", "com.apple.identityservicesd", "com.apple.powerlogd", "com.apple.analyticsd", "com.apple.UIKit", "com.apple.runningboard", "com.apple.WiFiManager", "com.apple.xpc", "com.apple.cache_delete", "com.apple.spotlightindex"]) \ No newline at end of file diff --git a/rules/office365/credential_access_microsoft_365_brute_force_user_account_attempt.yml b/rules/office365/credential_access_microsoft_365_brute_force_user_account_attempt.yml deleted file mode 100644 index 0480cfc14..000000000 --- a/rules/office365/credential_access_microsoft_365_brute_force_user_account_attempt.yml +++ /dev/null @@ -1,30 +0,0 @@ -# Rule version v1.0.3 - -dataTypes: - - "o365" -name: "Attempts to Brute Force a Microsoft 365 User Account" -impact: - confidentiality: 3 - integrity: 3 - availability: 3 -category: "Credential Access" -technique: "T1110 - Brute Force" -adversary: origin -references: - - "https://attack.mitre.org/techniques/T1110/" - - "https://attack.mitre.org/tactics/TA0006/" -description: "Credential Access consists of techniques for stealing credentials like account names and passwords. Techniques used to get credentials include keylogging or credential dumping. Using legitimate credentials can give adversaries access to systems, make them harder to detect, and provide the opportunity to create more accounts to help achieve their goals.
- Identifies attempts to brute force a Microsoft 365 user account. An adversary may attempt a brute force attack to obtain unauthorized access to user accounts." -where: | - oneOf("log.Workload", ["Exchange", "AzureActiveDirectory"]) && oneOf("action", ["UserLoginFailed", "PasswordLogonInitialAuthUsingPassword"]) && oneOf("actionResult", ["Failed", "False"]) && exists("origin.user") -afterEvents: - - indexPattern: v11-log-o365-* - with: - - field: origin.user - operator: filter_term - value: '{{.origin.user}}' - within: now-60s - count: 5 -groupBy: - - adversary.ip - - adversary.user diff --git a/rules/windows/powershell_empire_detection.yml b/rules/windows/powershell_empire_detection.yml deleted file mode 100644 index 7ce3ca73f..000000000 --- a/rules/windows/powershell_empire_detection.yml +++ /dev/null @@ -1,48 +0,0 @@ -# Rule version v1.0.0 - -dataTypes: - - wineventlog -name: PowerShell Empire Detection -impact: - confidentiality: 3 - integrity: 3 - availability: 2 -category: Execution -technique: "T1059.001 - Command and Scripting Interpreter: PowerShell" -adversary: origin -references: - - https://attack.mitre.org/techniques/T1059/001/ - - https://www.powershellempire.com/ - - https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_logging -description: | - Detects potential PowerShell Empire framework usage based on characteristic command patterns, obfuscation techniques, and encoded payloads commonly used by this post-exploitation framework. PowerShell Empire is a post-exploitation framework that uses PowerShell and Python agents to maintain persistence and execute commands on compromised systems. - - Next Steps: - 1. Immediately isolate the affected host to prevent lateral movement - 2. Analyze the complete PowerShell script block content for additional IOCs - 3. Check for persistence mechanisms (scheduled tasks, registry entries, services) - 4. Review network connections from the host for C2 communication - 5. Examine process tree and parent processes that spawned PowerShell - 6. Search for additional Empire artifacts across the environment - 7. Reset credentials for any accounts used on the compromised system - 8. Conduct memory analysis to identify injected code or payloads - 9. Review recent user activity and file access patterns - 10. Update endpoint detection rules based on specific Empire techniques observed -where: | - (equals("log.eventCode", "4104") || equals("log.eventId", 4104)) && - equals("log.providerName", "Microsoft-Windows-PowerShell") && - ( - contains("log.eventDataScriptBlockText", "System.Management.Automation.AmsiUtils") || - regexMatch("log.eventDataScriptBlockText", "(?i)(empire|invoke-empire|invoke-psempire)") || - regexMatch("log.eventDataScriptBlockText", "(?i)\\[System\\.Convert\\]::FromBase64String") || - regexMatch("log.eventDataScriptBlockText", "(?i)IEX\\s*\\(\\s*New-Object") || - regexMatch("log.eventDataScriptBlockText", "(?i)-enc\\s+[A-Za-z0-9+/=]{100,}") || - regexMatch("log.eventDataScriptBlockText", "(?i)\\$DoIt\\s*=\\s*@") || - regexMatch("log.eventDataScriptBlockText", "(?i)\\[System\\.Text\\.Encoding\\]::Unicode\\.GetString") || - contains("log.eventDataScriptBlockText", "Invoke-Shellcode") || - contains("log.eventDataScriptBlockText", "Invoke-ReflectivePEInjection") || - contains("log.eventDataScriptBlockText", "Invoke-Mimikatz") - ) -groupBy: - - origin.host - - target.user diff --git a/rules/windows/rdp_brute_force_attacks.yml b/rules/windows/rdp_brute_force_attacks.yml deleted file mode 100644 index 9161a68b9..000000000 --- a/rules/windows/rdp_brute_force_attacks.yml +++ /dev/null @@ -1,44 +0,0 @@ -# Rule version v1.0.0 - -dataTypes: - - wineventlog -name: RDP Brute Force Attack -impact: - confidentiality: 3 - integrity: 2 - availability: 2 -category: Credential Access -technique: "T1110.001 - Brute Force: Password Guessing" -adversary: origin -references: - - https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=4625 - - https://attack.mitre.org/techniques/T1110/001/ -description: | - Detects multiple failed RDP login attempts from the same source IP address, indicating a potential brute force attack. This rule monitors Windows Event ID 4625 (failed logon) with focus on network logon types (type 3) which are commonly used for RDP connections. The rule triggers when 10 or more failed attempts occur from the same IP within 15 minutes. - - Next Steps: - 1. Investigate the source IP address for malicious indicators and geolocation - 2. Check if the targeted user accounts are legitimate and active - 3. Review successful logons from the same IP after failed attempts - 4. Implement IP blocking or rate limiting for the source address - 5. Enable account lockout policies if not already configured - 6. Consider implementing multi-factor authentication for RDP access - 7. Review RDP access logs for any successful connections during the attack timeframe -where: equals("log.eventCode", "4625") && equals("log.eventDataLogonType", "3") && exists("origin.ip") && !equals("origin.ip", "-") && !equals("origin.ip", "::1") && !equals("origin.ip", "127.0.0.1") -afterEvents: - - indexPattern: v11-log-wineventlog-* - with: - - field: origin.ip.keyword - operator: filter_term - value: '{{.origin.ip}}' - - field: log.eventCode - operator: filter_term - value: '4625' - - field: log.eventDataLogonType - operator: filter_term - value: '3' - within: now-15m - count: 10 -groupBy: - - origin.ip - - target.host From 9682d0d70cfd42e866596fcd967ed5141dec13d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Thu, 21 May 2026 14:09:15 -0400 Subject: [PATCH 05/47] =?UTF-8?q?fix[frontend](soar/create-rule):=20added?= =?UTF-8?q?=20fixed=20create/edit=20rule=20undefin=E2=80=A6=20(#2087)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix[frontend](soar/create-rule): added fixed create/edit rule undefined id error * chore[](): updated go packages * fix[frontend](environment):environments on gitignore and removed the actual local dev environment * chore[](): updated go packages --- frontend/.gitignore | 2 +- .../playbook-builder.component.ts | 2 +- frontend/src/environments/environment.ts | 24 ------------------- installer/go.mod | 4 ++-- installer/go.sum | 8 +++---- plugins/aws/go.mod | 2 +- plugins/aws/go.sum | 4 ++-- plugins/crowdstrike/go.mod | 3 ++- plugins/crowdstrike/go.sum | 6 +++-- plugins/gcp/go.mod | 12 +++++----- plugins/gcp/go.sum | 24 +++++++++---------- plugins/modules-config/go.mod | 9 +++---- plugins/modules-config/go.sum | 18 +++++++------- 13 files changed, 50 insertions(+), 68 deletions(-) delete mode 100644 frontend/src/environments/environment.ts diff --git a/frontend/.gitignore b/frontend/.gitignore index 59326f390..95fae2d01 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -45,4 +45,4 @@ testem.log .DS_Store Thumbs.db -/src/environments/ +/src/environments diff --git a/frontend/src/app/incident-response/playbook-builder/playbook-builder.component.ts b/frontend/src/app/incident-response/playbook-builder/playbook-builder.component.ts index 497efbb60..5b43eee28 100644 --- a/frontend/src/app/incident-response/playbook-builder/playbook-builder.component.ts +++ b/frontend/src/app/incident-response/playbook-builder/playbook-builder.component.ts @@ -196,7 +196,7 @@ export class PlaybookBuilderComponent implements OnInit, OnDestroy { } createRule() { - if (this.rule.id) { + if (this.rule && this.rule.id) { this.editRule(); } else { this.saveRule(); diff --git a/frontend/src/environments/environment.ts b/frontend/src/environments/environment.ts deleted file mode 100644 index 6d83346a6..000000000 --- a/frontend/src/environments/environment.ts +++ /dev/null @@ -1,24 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false, - // SERVER_API_URL: 'https://10.11.11.18/', - SERVER_API_URL: 'http://localhost:8080/', - SERVER_API_CONTEXT: '', - SESSION_AUTH_TOKEN: window.location.host.split(':')[0].toLocaleUpperCase(), - WEBSOCKET_URL: '//localhost:8080', - BUILD_TIMESTAMP: new Date().getTime(), - DEBUG_INFO_ENABLED: true, - VERSION: '0.0.1' -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/installer/go.mod b/installer/go.mod index 06065f282..f845e7928 100644 --- a/installer/go.mod +++ b/installer/go.mod @@ -3,7 +3,7 @@ module github.com/utmstack/UTMStack/installer go 1.25.1 require ( - github.com/cloudfoundry/gosigar v1.3.118 + github.com/cloudfoundry/gosigar v1.3.119 github.com/docker/docker v28.5.2+incompatible github.com/kardianos/service v1.2.4 github.com/shirou/gopsutil/v3 v3.24.5 @@ -74,7 +74,7 @@ require ( 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.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.33.0 // indirect golang.org/x/time v0.14.0 // indirect golang.org/x/tools v0.41.0 // indirect diff --git a/installer/go.sum b/installer/go.sum index cc9be246d..69a6e7a3b 100644 --- a/installer/go.sum +++ b/installer/go.sum @@ -16,8 +16,8 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= 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/cloudfoundry/gosigar v1.3.118 h1:M5I101sHroieCCM07+HDVhYq6AUThH9LTJF4WY1d3O0= -github.com/cloudfoundry/gosigar v1.3.118/go.mod h1:HaIEZU356TAVnxmEvDFe5PXOTCOeSmUgVxoPzrat5Po= +github.com/cloudfoundry/gosigar v1.3.119 h1:+wm7uWf3uNVvIxY8vHpjRNmdpCNPoX6gAuoJMn7IQcI= +github.com/cloudfoundry/gosigar v1.3.119/go.mod h1:JUefZL7X7jvezhtLqCWv8sctPNHgz9X7r59hOVJFfv0= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -200,8 +200,8 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +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.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= diff --git a/plugins/aws/go.mod b/plugins/aws/go.mod index 35854e71d..48e6e5f44 100644 --- a/plugins/aws/go.mod +++ b/plugins/aws/go.mod @@ -29,7 +29,7 @@ require ( github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.73.0 + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect diff --git a/plugins/aws/go.sum b/plugins/aws/go.sum index 7790ca40f..3e029874e 100644 --- a/plugins/aws/go.sum +++ b/plugins/aws/go.sum @@ -18,8 +18,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 h1:bpd8vxhlQi2r1hiueO github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23/go.mod h1:15DfR2nw+CRHIk0tqNyifu3G1YdAOy68RftkhMDDwYk= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 h1:OQqn11BtaYv1WLUowvcA30MpzIu8Ti4pcLPIIyoKZrA= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24/go.mod h1:X5ZJyfwVrWA96GzPmUCWFQaEARPR7gCrpq2E92PJwAE= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.73.0 h1:JmrHkELR2Q0O28swrFMm0hZNwpQrV8qmbhnb7suKIfc= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.73.0/go.mod h1:MLJu3PUd8fp5Qvj4CiLvyY5H8y7kxHKlTp060Wsd+Vc= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 h1:6TqDeYdvJJEIJGg5ICy7nzC7/UuHk2Eg3wrpb5bWKPM= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0/go.mod h1:MLJu3PUd8fp5Qvj4CiLvyY5H8y7kxHKlTp060Wsd+Vc= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 h1:FLudkZLt5ci0ozzgkVo8BJGwvqNaZbTWb3UcucAateA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9/go.mod h1:w7wZ/s9qK7c8g4al+UyoF1Sp/Z45UwMGcqIzLWVQHWk= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 h1:pbrxO/kuIwgEsOPLkaHu0O+m4fNgLU8B3vxQ+72jTPw= diff --git a/plugins/crowdstrike/go.mod b/plugins/crowdstrike/go.mod index 374752153..52e79b7d9 100644 --- a/plugins/crowdstrike/go.mod +++ b/plugins/crowdstrike/go.mod @@ -3,7 +3,7 @@ module github.com/utmstack/UTMStack/plugins/crowdstrike go 1.25.5 require ( - github.com/crowdstrike/gofalcon v0.20.0 + github.com/crowdstrike/gofalcon v0.20.1 github.com/google/uuid v1.6.0 github.com/threatwinds/go-sdk v1.1.21 google.golang.org/grpc v1.81.1 @@ -17,6 +17,7 @@ require ( 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/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudwego/base64x v0.1.6 // indirect github.com/gabriel-vasile/mimetype v1.4.13 // indirect diff --git a/plugins/crowdstrike/go.sum b/plugins/crowdstrike/go.sum index ab62a6c08..280fa3acc 100644 --- a/plugins/crowdstrike/go.sum +++ b/plugins/crowdstrike/go.sum @@ -10,12 +10,14 @@ github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uS 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/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= 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/crowdstrike/gofalcon v0.20.0 h1:Z/NERPVowOBCYsCgnkMRnrfrRkHBFo910kk7zrjzE0A= -github.com/crowdstrike/gofalcon v0.20.0/go.mod h1:a12GB+md+hRSgVCb3Pv6CakeTIsDIUCIVWRlJelIhY0= +github.com/crowdstrike/gofalcon v0.20.1 h1:cqdvyNeJvaQ9sK0k09h/n+z308VJffS+4JfgS+bNaSY= +github.com/crowdstrike/gofalcon v0.20.1/go.mod h1:GYbhi35odSf8qFrcxAX6Sx7N/QIJyz8vKmUzuam7Xd8= 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= diff --git a/plugins/gcp/go.mod b/plugins/gcp/go.mod index f17873d36..041eb77e6 100644 --- a/plugins/gcp/go.mod +++ b/plugins/gcp/go.mod @@ -6,7 +6,7 @@ require ( cloud.google.com/go/pubsub v1.50.2 github.com/google/uuid v1.6.0 github.com/threatwinds/go-sdk v1.1.21 - google.golang.org/api v0.279.0 + google.golang.org/api v0.280.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) @@ -66,17 +66,17 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/arch v0.24.0 // indirect - golang.org/x/crypto v0.50.0 // indirect + golang.org/x/crypto v0.51.0 // indirect golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect - golang.org/x/net v0.53.0 // indirect + golang.org/x/net v0.54.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/sys v0.44.0 // indirect + golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/gcp/go.sum b/plugins/gcp/go.sum index b36838045..59dcdaf18 100644 --- a/plugins/gcp/go.sum +++ b/plugins/gcp/go.sum @@ -206,8 +206,8 @@ 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.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= -golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= +golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= +golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 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= @@ -220,8 +220,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= @@ -235,12 +235,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +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.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -251,8 +251,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.279.0 h1:hsx2M2OaRcaKtVYK6vXEUnQvdjnend7ZYES+lYaot74= -google.golang.org/api v0.279.0/go.mod h1:B9TqLBwJqVjp1mtt7WeoQwWRwvu/400y5lETOql+giQ= +google.golang.org/api v0.280.0 h1:F4OfEHZhZh6a7uTufJAXXVd/2TQ8EjM4vZH+jX/vFYk= +google.golang.org/api v0.280.0/go.mod h1:oGKmPZRDoD3vdkf6MA7F4VNkR1rxCiuaPSkhsf3EolU= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -262,8 +262,8 @@ google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgn google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 h1:tEkOQcXgF6dH1G+MVKZrfpYvozGrzb91k6ha7jireSM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 h1:seT2EwLWM78plQ7wcDfuWBc/4FAEAXDDiaSol4ku4qo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/plugins/modules-config/go.mod b/plugins/modules-config/go.mod index f04bf8c89..bc168e49c 100644 --- a/plugins/modules-config/go.mod +++ b/plugins/modules-config/go.mod @@ -9,13 +9,13 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.7.0 github.com/aws/aws-sdk-go-v2/config v1.32.17 github.com/aws/aws-sdk-go-v2/credentials v1.19.16 - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.73.0 + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 - github.com/crowdstrike/gofalcon v0.20.0 + github.com/crowdstrike/gofalcon v0.20.1 github.com/gin-gonic/gin v1.12.0 github.com/threatwinds/go-sdk v1.1.21 golang.org/x/sync v0.20.0 - google.golang.org/api v0.279.0 + google.golang.org/api v0.280.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) @@ -48,6 +48,7 @@ require ( 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/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudwego/base64x v0.1.6 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -126,7 +127,7 @@ require ( golang.org/x/time v0.15.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/modules-config/go.sum b/plugins/modules-config/go.sum index 73d9470b2..9b9c9950b 100644 --- a/plugins/modules-config/go.sum +++ b/plugins/modules-config/go.sum @@ -58,8 +58,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 h1:bpd8vxhlQi2r1hiueO github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23/go.mod h1:15DfR2nw+CRHIk0tqNyifu3G1YdAOy68RftkhMDDwYk= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 h1:OQqn11BtaYv1WLUowvcA30MpzIu8Ti4pcLPIIyoKZrA= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24/go.mod h1:X5ZJyfwVrWA96GzPmUCWFQaEARPR7gCrpq2E92PJwAE= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.73.0 h1:JmrHkELR2Q0O28swrFMm0hZNwpQrV8qmbhnb7suKIfc= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.73.0/go.mod h1:MLJu3PUd8fp5Qvj4CiLvyY5H8y7kxHKlTp060Wsd+Vc= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 h1:6TqDeYdvJJEIJGg5ICy7nzC7/UuHk2Eg3wrpb5bWKPM= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0/go.mod h1:MLJu3PUd8fp5Qvj4CiLvyY5H8y7kxHKlTp060Wsd+Vc= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 h1:FLudkZLt5ci0ozzgkVo8BJGwvqNaZbTWb3UcucAateA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9/go.mod h1:w7wZ/s9qK7c8g4al+UyoF1Sp/Z45UwMGcqIzLWVQHWk= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 h1:pbrxO/kuIwgEsOPLkaHu0O+m4fNgLU8B3vxQ+72jTPw= @@ -82,6 +82,8 @@ github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uS 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/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -93,8 +95,8 @@ github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4= github.com/coder/websocket v1.8.14 h1:9L0p0iKiNOibykf283eHkKUHHrpG7f65OE3BhhO7v9g= github.com/coder/websocket v1.8.14/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= -github.com/crowdstrike/gofalcon v0.20.0 h1:Z/NERPVowOBCYsCgnkMRnrfrRkHBFo910kk7zrjzE0A= -github.com/crowdstrike/gofalcon v0.20.0/go.mod h1:a12GB+md+hRSgVCb3Pv6CakeTIsDIUCIVWRlJelIhY0= +github.com/crowdstrike/gofalcon v0.20.1 h1:cqdvyNeJvaQ9sK0k09h/n+z308VJffS+4JfgS+bNaSY= +github.com/crowdstrike/gofalcon v0.20.1/go.mod h1:GYbhi35odSf8qFrcxAX6Sx7N/QIJyz8vKmUzuam7Xd8= 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= @@ -379,8 +381,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.279.0 h1:hsx2M2OaRcaKtVYK6vXEUnQvdjnend7ZYES+lYaot74= -google.golang.org/api v0.279.0/go.mod h1:B9TqLBwJqVjp1mtt7WeoQwWRwvu/400y5lETOql+giQ= +google.golang.org/api v0.280.0 h1:F4OfEHZhZh6a7uTufJAXXVd/2TQ8EjM4vZH+jX/vFYk= +google.golang.org/api v0.280.0/go.mod h1:oGKmPZRDoD3vdkf6MA7F4VNkR1rxCiuaPSkhsf3EolU= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -390,8 +392,8 @@ google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgn google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 h1:tEkOQcXgF6dH1G+MVKZrfpYvozGrzb91k6ha7jireSM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 h1:seT2EwLWM78plQ7wcDfuWBc/4FAEAXDDiaSol4ku4qo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 81165dac3d19310137cc2e88f7bd1fe0f5c3eab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Thu, 21 May 2026 14:11:18 -0400 Subject: [PATCH 06/47] =?UTF-8?q?feat[backed](elasticSearchService):=20add?= =?UTF-8?q?ed=20batch=20processing=20of=20request=E2=80=A6=20(#2090)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat[backed](elasticSearchService): added batch processing of requests and auto rebuild on IO errors * chore[backend](): updated go dependencies * fix[backend](elastic-service): sanitized csv before exportation and changed error messages --- .../elasticsearch/ElasticsearchService.java | 78 +++++++++++++++- .../OpensearchClientBuilder.java | 84 +++++++++++++++-- .../java/com/park/utmstack/util/UtilCsv.java | 93 ++++++++++++++++++- .../elasticsearch/ElasticsearchResource.java | 65 ++++++------- 4 files changed, 277 insertions(+), 43 deletions(-) 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 01a76e672..f45a84f9a 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 @@ -341,7 +341,7 @@ public SearchResponse search(List filters, Integer top, Strin try { Assert.hasText(indexPattern, "Parameter indexPattern must not be null or empty"); SearchRequest query = buildQuery(indexPattern, filters, top, pageable); - return client.getClient().search(query, type); + return client.execute(c -> c.search(query, type)); } catch (Exception e) { throw new RuntimeException(ctx + ": " + e.getMessage()); } @@ -400,12 +400,86 @@ public Map getLatestDocument(List filters, String in public SearchResponse search(SearchRequest request, Class type) { final String ctx = CLASSNAME + ".search"; try { - return client.getClient().search(request, type); + return client.execute(c -> c.search(request, type)); } catch (Exception e) { throw new RuntimeException(ctx + ": " + e.getMessage()); } } + @FunctionalInterface + public interface SearchBatchConsumer { + /** Returns false to stop iteration early. */ + boolean accept(List batch) throws Exception; + } + + /** + * Streams a result set using search_after pagination, never holding more than {@code pageSize} + * documents in memory at a time. Designed for very large exports where loading every hit at + * once would OOM the JVM (and take the OpenSearch client's I/O reactor down with it). + * + * Sort is forced to {@code @timestamp desc} with {@code _id desc} as tiebreaker so that + * search_after is stable and deterministic. + * + * @param filters filters to apply + * @param max hard upper bound on total documents to emit; null or <=0 means unbounded + * @param indexPattern target index pattern + * @param pageSize batch size (capped at 10000 by OpenSearch per request) + * @param type deserialization type + * @param consumer receives each batch; return false to stop early + * @return total number of documents emitted + */ + public long searchStream(List filters, Integer max, String indexPattern, + int pageSize, Class type, SearchBatchConsumer consumer) { + final String ctx = CLASSNAME + ".searchStream"; + try { + Assert.hasText(indexPattern, "Parameter indexPattern must not be null or empty"); + Assert.notNull(consumer, "consumer must not be null"); + if (pageSize <= 0) pageSize = 500; + + long emitted = 0; + List after = null; + while (true) { + int remaining = (max != null && max > 0) ? (int) (max - emitted) : pageSize; + if (remaining <= 0) break; + int size = Math.min(pageSize, remaining); + + final List afterFinal = after; + final int sizeFinal = size; + SearchResponse response = client.execute(c -> { + SearchRequest.Builder srb = new SearchRequest.Builder() + .index(indexPattern) + .query(SearchUtil.toQuery(filters)) + .size(sizeFinal) + .sort(s -> s.field(f -> f.field("@timestamp").order(SortOrder.Desc))) + .sort(s -> s.field(f -> f.field("_id").order(SortOrder.Desc))); + if (afterFinal != null && !afterFinal.isEmpty()) + srb.searchAfter(afterFinal); + return c.search(srb.build(), type); + }); + + if (response == null || response.hits() == null) break; + List> hits = response.hits().hits(); + if (hits == null || hits.isEmpty()) break; + + List batch = new ArrayList<>(hits.size()); + for (org.opensearch.client.opensearch.core.search.Hit h : hits) + batch.add(h.source()); + + boolean keepGoing = consumer.accept(batch); + emitted += hits.size(); + + if (!keepGoing) break; + if (hits.size() < size) break; + + after = hits.get(hits.size() - 1).sort(); + if (after == null || after.isEmpty()) break; + } + return emitted; + } catch (Exception e) { + throw new RuntimeException(ctx + ": " + e.getMessage(), e); + } + } + public void updateByQuery(Query query, String index, String script) { final String ctx = CLASSNAME + ".updateByQuery"; try { diff --git a/backend/src/main/java/com/park/utmstack/service/elasticsearch/OpensearchClientBuilder.java b/backend/src/main/java/com/park/utmstack/service/elasticsearch/OpensearchClientBuilder.java index f6f62d042..e2db9cc13 100644 --- a/backend/src/main/java/com/park/utmstack/service/elasticsearch/OpensearchClientBuilder.java +++ b/backend/src/main/java/com/park/utmstack/service/elasticsearch/OpensearchClientBuilder.java @@ -16,26 +16,71 @@ public class OpensearchClientBuilder { private static final String CLASSNAME = "OpensearchClientBuilder"; private final Logger log = LoggerFactory.getLogger(OpensearchClientBuilder.class); - private OpenSearch client; + private volatile OpenSearch client; + + @FunctionalInterface + public interface OsAction { + T apply(OpenSearch client) throws Exception; + } @Order(Ordered.HIGHEST_PRECEDENCE) @EventListener(ApplicationReadyEvent.class) public void init() throws Exception { - final String ctx = CLASSNAME + ".init"; + buildClient(); + } + + public OpenSearch getClient() { + return client; + } + + /** + * Runs an action against the OpenSearch client with one-shot recovery: if the underlying + * Apache HttpAsyncClient I/O reactor has transitioned to STOPPED (typically after an OOM + * or a fatal callback exception while streaming a very large response), the singleton + * client is rebuilt and the action is retried once. All other failures propagate unchanged. + * Callers that don't need recovery should keep using {@link #getClient()} directly. + */ + public T execute(OsAction action) throws Exception { + try { + return action.apply(client); + } catch (Exception e) { + if (!isReactorStopped(e)) + throw e; + log.warn("OpenSearch I/O reactor is STOPPED; rebuilding client and retrying once", e); + rebuild(); + return action.apply(client); + } + } + + public synchronized void rebuild() { + final String ctx = CLASSNAME + ".rebuild"; + try { + OpenSearch old = this.client; + buildClient(); + tryClose(old); + } catch (Exception e) { + String msg = ctx + ": " + e.getMessage(); + log.error(msg); + throw new RuntimeException(msg); + } + } + + private synchronized void buildClient() { + final String ctx = CLASSNAME + ".buildClient"; try { String host = System.getenv(Constants.ENV_ELASTICSEARCH_HOST); - Assert.hasText(host, "Environment variable ELASTICSEARCH_HOST is missing or his value is null or empty"); + Assert.hasText(host, "Environment variable ELASTICSEARCH_HOST is missing or its value is null or empty"); String port = System.getenv(Constants.ENV_ELASTICSEARCH_PORT); - Assert.hasText(port, "Environment variable ELASTICSEARCH_PORT is missing or his value is null or empty"); + Assert.hasText(port, "Environment variable ELASTICSEARCH_PORT is missing or its value is null or empty"); String user = System.getenv(Constants.ENV_ELASTICSEARCH_USER); - Assert.hasText(user, "Environment variable ELASTICSEARCH_USER is missing or his value is null or empty"); + Assert.hasText(user, "Environment variable ELASTICSEARCH_USER is missing or its value is null or empty"); String password = System.getenv(Constants.ENV_ELASTICSEARCH_PASSWORD); - Assert.hasText(password, "Environment variable ELASTICSEARCH_PASSWORD is missing or his value is null or empty"); + Assert.hasText(password, "Environment variable ELASTICSEARCH_PASSWORD is missing or its value is null or empty"); - client = OpenSearch.builder() + this.client = OpenSearch.builder() .withHost(host, Integer.parseInt(port), HttpScheme.https) .withCredentials(user, password) .build(); @@ -46,7 +91,28 @@ public void init() throws Exception { } } - public OpenSearch getClient() { - return client; + private void tryClose(OpenSearch old) { + if (old == null) return; + try { + if (old instanceof AutoCloseable) { + ((AutoCloseable) old).close(); + } + } catch (Exception ignored) { + // best-effort: the old client is unusable anyway + } + } + + /** + * Detects the Apache HttpAsyncClient "Request cannot be executed; I/O reactor status: STOPPED" + * condition anywhere in the cause chain. + */ + public static boolean isReactorStopped(Throwable t) { + while (t != null) { + String msg = t.getMessage(); + if (msg != null && msg.contains("I/O reactor") && msg.contains("STOPPED")) + return true; + t = t.getCause(); + } + return false; } } 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 96a907998..179020008 100644 --- a/backend/src/main/java/com/park/utmstack/util/UtilCsv.java +++ b/backend/src/main/java/com/park/utmstack/util/UtilCsv.java @@ -1,6 +1,7 @@ package com.park.utmstack.util; import com.fasterxml.jackson.databind.ObjectMapper; +import com.jayway.jsonpath.DocumentContext; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.PathNotFoundException; import com.park.utmstack.domain.shared_types.DataColumn; @@ -13,6 +14,7 @@ import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.time.Instant; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -51,6 +53,7 @@ public static void prepareToDownload(HttpServletResponse response, DataColumn[] List rows = new ArrayList<>(); data.forEach(d -> { + DocumentContext docctx = JsonPath.parse(d); String[] cells = new String[columns.length]; for (int i = 0; i < columns.length; i++) { String fieldName = columns[i].getField(); @@ -59,7 +62,7 @@ public static void prepareToDownload(HttpServletResponse response, DataColumn[] Object value; try { - value = JsonPath.parse(d).read("$." + fieldName); + value = docctx.read("$." + fieldName); } catch (PathNotFoundException e) { continue; } @@ -81,6 +84,7 @@ public static void prepareToDownload(HttpServletResponse response, DataColumn[] cells[i] = value.toString(); } } + cells[i] = sanitizeCsvCell(cells[i]); } rows.add(cells); }); @@ -104,4 +108,91 @@ public static void prepareToDownload(HttpServletResponse response, DataColumn[] throw new UtmCsvException(msg); } } + + /** + * Opens a CSV response stream: sets content-type/disposition headers and writes the header row. + * Caller is responsible for closing the returned printer (try-with-resources is fine). + * + * Column names are normalized in-place by stripping a trailing {@code .keyword}. + */ + public static CSVPrinter openCsvStream(HttpServletResponse response, DataColumn[] columns) throws IOException { + Assert.notEmpty(columns); + + Arrays.stream(columns).forEach(column -> + column.setField(column.getField().replace(".keyword", ""))); + + String[] headers = Stream.of(columns).map(column -> { + if (StringUtils.hasText(column.getLabel())) + return column.getLabel(); + return column.getField().replace(".keyword", ""); + }).toArray(String[]::new); + + response.setContentType("text/csv"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=data.csv"); + + return new CSVPrinter(response.getWriter(), + CSVFormat.DEFAULT.withHeader(headers).withQuoteMode(QuoteMode.ALL)); + } + + /** + * Writes a batch of source maps as CSV rows using the same field-extraction logic as + * {@link #prepareToDownload}. Intended to be called repeatedly while paginating through + * a large result set; pair with {@link #openCsvStream}. + */ + public static void writeCsvBatch(CSVPrinter printer, DataColumn[] columns, List data) throws IOException { + if (data == null || data.isEmpty()) return; + + final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z") + .withLocale(Locale.getDefault()).withZone(TimezoneUtil.getAppTimezone()); + + for (Object d : data) { + DocumentContext ctx = JsonPath.parse(d); + String[] cells = new String[columns.length]; + for (int i = 0; i < columns.length; i++) { + String fieldName = columns[i].getField(); + String fieldType = columns[i].getType(); + cells[i] = null; + + Object value; + try { + value = ctx.read("$." + fieldName); + } catch (PathNotFoundException e) { + continue; + } + + if (value == null) + continue; + + if (value instanceof String) { + cells[i] = "date".equals(fieldType) ? DATE_FORMATTER.format(Instant.parse(String.valueOf(value))) : + 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(); + } + } + cells[i] = sanitizeCsvCell(cells[i]); + } + printer.printRecord((Object[]) cells); + } + printer.flush(); + } + + /** + * Neutralizes CSV-injection payloads by prefixing a single quote to any cell whose first + * character is interpreted as a formula trigger by Excel/LibreOffice/Sheets. + */ + private static String sanitizeCsvCell(String value) { + if (value == null || value.isEmpty()) return value; + char first = value.charAt(0); + if (first == '=' || first == '+' || first == '-' || first == '@' || first == '\t' || first == '\r') + return "'" + value; + return value; + } } 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 c1d6623a3..a69c54110 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 @@ -23,6 +23,7 @@ import com.utmstack.opensearch_connector.types.SearchSqlResponse; import com.utmstack.opensearch_connector.types.SqlQueryRequest; import lombok.RequiredArgsConstructor; +import org.apache.commons.csv.CSVPrinter; import org.opensearch.client.opensearch.cat.indices.IndicesRecord; import org.opensearch.client.opensearch.core.SearchResponse; import org.opensearch.client.opensearch.core.search.Hit; @@ -197,43 +198,45 @@ public ResponseEntity> search(@RequestBody(required = false) List searchToCsv(@RequestBody @Valid CsvExportingParams params, HttpServletResponse response) { final String ctx = CLASSNAME + ".searchToCsv"; - try { - SearchResponse searchResponse = elasticsearchService.search(params.getFilters(), params.getTop(), - params.getIndexPattern(), Pageable.unpaged(), Map.class); - - if (Objects.isNull(searchResponse) || Objects.isNull(searchResponse.hits()) || searchResponse.hits().total().value() == 0) - 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; - } + 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); - + } + final boolean enrichEchoes = needsEchoes; + + try (CSVPrinter printer = UtilCsv.openCsvStream(response, params.getColumns())) { + elasticsearchService.searchStream( + params.getFilters(), + params.getTop(), + params.getIndexPattern(), + 500, + Map.class, + batch -> { + if (enrichEchoes) { + for (Map d : batch) { + 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.writeCsvBatch(printer, params.getColumns(), batch); + return true; + }); return ResponseEntity.ok().build(); } catch (Exception e) { String msg = ctx + ": " + e.getMessage(); - log.error(msg); + log.error(msg, e); applicationEventService.createEvent(msg, ApplicationEventType.ERROR); - return ResponseUtil.buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, msg); + return ResponseUtil.buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, + "An internal error occurred while exporting the CSV. Please check server logs."); } } From 6e169ddeb5715ee76afb4238eea5035286456ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Fri, 22 May 2026 12:37:30 -0400 Subject: [PATCH 07/47] =?UTF-8?q?fix[frontend](socai):=20added=20default?= =?UTF-8?q?=20template=20for=20empty=20previous=20socai=E2=80=A6=20(#2095)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../validators/UtmModuleConfigValidator.java | 18 ++- .../guide-soc-ai/guide-soc-ai.component.ts | 112 +++++++++++++----- 2 files changed, 100 insertions(+), 30 deletions(-) diff --git a/backend/src/main/java/com/park/utmstack/domain/application_modules/validators/UtmModuleConfigValidator.java b/backend/src/main/java/com/park/utmstack/domain/application_modules/validators/UtmModuleConfigValidator.java index dc05b27f3..e219a594c 100644 --- a/backend/src/main/java/com/park/utmstack/domain/application_modules/validators/UtmModuleConfigValidator.java +++ b/backend/src/main/java/com/park/utmstack/domain/application_modules/validators/UtmModuleConfigValidator.java @@ -11,7 +11,11 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -32,7 +36,7 @@ public boolean validate(UtmModule module, List keys public boolean validate(UtmModule module, List keys, List dbConfigs) { if (keys.isEmpty()) return false; - List configDTOs = dbConfigs.stream() + List configDTOs = new ArrayList<>(dbConfigs.stream() .map(dbConf -> { UtmModuleGroupConfiguration override = findInKeys(keys, dbConf.getConfKey()); String value; @@ -45,7 +49,17 @@ public boolean validate(UtmModule module, List keys } return new UtmModuleGroupConfDTO(dbConf.getConfDataType(),dbConf.getConfKey(), value); }) - .toList(); + .collect(Collectors.toList())); + + Set dbKeys = dbConfigs.stream() + .map(UtmModuleGroupConfiguration::getConfKey) + .collect(Collectors.toCollection(HashSet::new)); + + keys.stream() + .filter(k -> !dbKeys.contains(k.getConfKey())) + .filter(k -> !Constants.MASKED_VALUE.equals(k.getConfValue())) + .map(k -> new UtmModuleGroupConfDTO(k.getConfDataType(), k.getConfKey(), k.getConfValue())) + .forEach(configDTOs::add); UtmModuleGroupConfWrapperDTO body = new UtmModuleGroupConfWrapperDTO(configDTOs); diff --git a/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.ts b/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.ts index aba4d8fda..389fdcbeb 100644 --- a/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.ts +++ b/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.ts @@ -5,6 +5,7 @@ import {UtmModuleGroupConfService} from '../../shared/services/utm-module-group- import {UtmModuleGroupConfType} from '../../shared/type/utm-module-group-conf.type'; import {UtmToastService} from '../../../shared/alert/utm-toast.service'; import {ModuleChangeStatusBehavior} from '../../shared/behavior/module-change-status.behavior'; +import { finalize } from 'rxjs/operators'; interface ProviderConfig { id: string; @@ -52,6 +53,10 @@ export class GuideSocAiComponent implements OnInit { private rawConfigs: UtmModuleGroupConfType[] = []; private groupId: number; + // Original masked customHeaders value (if backend returned an opaque mask like "*****") + private originalMaskedCustomHeaders: string | null = null; + private readonly maskedDisplay = '***'; + providers: ProviderConfig[] = [ { id: 'openai', @@ -297,7 +302,12 @@ export class GuideSocAiComponent implements OnInit { private loadConfig() { this.loading = true; - this.moduleGroupService.query({moduleId: this.integrationId}).subscribe(response => { + this.moduleGroupService.query({moduleId: this.integrationId}).pipe( + finalize(()=>{ + this.loading = false; + this.cdr.detectChanges(); + }) + ).subscribe(response => { const groups = response.body || []; if (groups.length > 0) { this.groupId = groups[0].id; @@ -344,6 +354,7 @@ export class GuideSocAiComponent implements OnInit { 'changeAlertStatus': changeStatus ? changeStatus.confValue : 'false', }; this.customModelValue = ''; + this.originalMaskedCustomHeaders = null; // Only load provider-specific values if viewing the saved provider if (isCurrentSavedProvider) { @@ -373,16 +384,25 @@ export class GuideSocAiComponent implements OnInit { // Check if API key exists in custom headers — show masked if so const customHeaders = this.getConf('utmstack.socai.customHeaders'); if (customHeaders && customHeaders.confValue && customHeaders.confValue !== '{}') { - try { - const headers = JSON.parse(customHeaders.confValue); - const authConfig = this.providerAuthHeaders[this.activeProvider]; - if (authConfig && headers[authConfig.headerName]) { - // API key exists — show masked, don't expose the real value - this.formValues['apiKey'] = '*****'; - } - } catch (e) {} - this.formValues['customHeaders'] = customHeaders.confValue; - this.parseHeadersFromJson(customHeaders.confValue); + const raw = customHeaders.confValue; + if (this.isMaskedValue(raw)) { + // Backend returned the whole confValue masked — preserve original for save + this.originalMaskedCustomHeaders = raw; + this.formValues['customHeaders'] = raw; + this.formValues['apiKey'] = this.maskedDisplay; + this.headerRows = [{key: this.maskedDisplay, value: this.maskedDisplay}]; + } else { + try { + const headers = JSON.parse(raw); + const authConfig = this.providerAuthHeaders[this.activeProvider]; + if (authConfig && headers[authConfig.headerName]) { + // API key exists — show masked, don't expose the real value + this.formValues['apiKey'] = this.maskedDisplay; + } + } catch (e) {} + this.formValues['customHeaders'] = raw; + this.parseHeadersFromJson(raw); + } } const maxTokensConf = this.getConf('utmstack.socai.maxTokens'); @@ -422,46 +442,56 @@ export class GuideSocAiComponent implements OnInit { const changes: UtmModuleGroupConfType[] = []; // Set provider - this.pushChange(changes, 'utmstack.socai.provider', this.activeProvider); + this.pushChange(changes, 'utmstack.socai.provider', this.activeProvider, 'text'); // Set model - this.pushChange(changes, 'utmstack.socai.model', this.getModelValue()); + this.pushChange(changes, 'utmstack.socai.model', this.getModelValue(), 'text'); // Set URL for providers that need it (azure, ollama, custom) if (this.formValues['url']) { - this.pushChange(changes, 'utmstack.socai.url', this.formValues['url']); + this.pushChange(changes, 'utmstack.socai.url', this.formValues['url'], 'text'); } // Set maxTokens if (this.formValues['maxTokens']) { - this.pushChange(changes, 'utmstack.socai.maxTokens', this.formValues['maxTokens']); + this.pushChange(changes, 'utmstack.socai.maxTokens', this.formValues['maxTokens'], 'text'); } // Set behavior toggles - this.pushChange(changes, 'utmstack.socai.autoAnalyze', this.formValues['autoAnalyze'] || 'false'); - this.pushChange(changes, 'utmstack.socai.incidentCreation', this.formValues['incidentCreation'] || 'false'); - this.pushChange(changes, 'utmstack.socai.changeAlertStatus', this.formValues['changeAlertStatus'] || 'false'); + this.pushChange(changes, 'utmstack.socai.autoAnalyze', this.formValues['autoAnalyze'] || 'false', 'text'); + this.pushChange(changes, 'utmstack.socai.incidentCreation', this.formValues['incidentCreation'] || 'false', 'text'); + this.pushChange(changes, 'utmstack.socai.changeAlertStatus', this.formValues['changeAlertStatus'] || 'false', 'text'); // Build auth headers if (this.activeProvider === 'custom') { // Custom provider: user manages auth type and headers directly - this.pushChange(changes, 'utmstack.socai.authType', this.formValues['authType'] || 'custom-headers'); - this.pushChange(changes, 'utmstack.socai.customHeaders', this.formValues['customHeaders'] || '{}'); + this.pushChange(changes, 'utmstack.socai.authType', this.formValues['authType'] || 'custom-headers', 'text'); + if (this.originalMaskedCustomHeaders && this.hasMaskedHeaderRows()) { + // User didn't replace the masked rows — preserve original masked value + this.pushChange(changes, 'utmstack.socai.customHeaders', this.originalMaskedCustomHeaders, 'password'); + } else { + this.pushChange(changes, 'utmstack.socai.customHeaders', this.formValues['customHeaders'] || '{}', 'password'); + } } else if (this.activeProvider === 'ollama') { // Ollama: no auth needed - this.pushChange(changes, 'utmstack.socai.authType', 'none'); - this.pushChange(changes, 'utmstack.socai.customHeaders', '{}'); + this.pushChange(changes, 'utmstack.socai.authType', 'none', 'text'); + this.pushChange(changes, 'utmstack.socai.customHeaders', '{}', 'password'); } else { // Known providers: build auth header from API key const authConfig = this.providerAuthHeaders[this.activeProvider]; - if (authConfig && this.formValues['apiKey'] && this.formValues['apiKey'] !== '*****') { + const apiKey = this.formValues['apiKey']; + if (authConfig && apiKey && !this.isMaskedValue(apiKey)) { // User entered a new API key — build auth headers const headers: {[k: string]: string} = {}; - headers[authConfig.headerName] = authConfig.headerValuePrefix + this.formValues['apiKey']; - this.pushChange(changes, 'utmstack.socai.authType', 'custom-headers'); - this.pushChange(changes, 'utmstack.socai.customHeaders', JSON.stringify(headers)); + headers[authConfig.headerName] = authConfig.headerValuePrefix + apiKey; + this.pushChange(changes, 'utmstack.socai.authType', 'custom-headers', 'text'); + this.pushChange(changes, 'utmstack.socai.customHeaders', JSON.stringify(headers), 'password'); + } else if (this.originalMaskedCustomHeaders && apiKey && this.isMaskedValue(apiKey)) { + // User didn't change the masked API key — preserve original masked value + this.pushChange(changes, 'utmstack.socai.authType', 'custom-headers', 'text'); + this.pushChange(changes, 'utmstack.socai.customHeaders', this.originalMaskedCustomHeaders, 'password'); } - // If apiKey is '*****', don't touch customHeaders — keep existing value in DB + // Otherwise: don't touch customHeaders — keep existing value in DB } this.moduleGroupConfService.update({ @@ -486,7 +516,12 @@ export class GuideSocAiComponent implements OnInit { ); } - private pushChange(changes: UtmModuleGroupConfType[], confKey: string, value: string) { + private pushChange( + changes: UtmModuleGroupConfType[], + confKey: string, + value: string, + confDataType: 'list' | 'password' | 'file' | 'bool' | 'select' | 'text' = 'text' + ) { const existing = this.getConf(confKey); if (existing) { changes.push({ @@ -495,6 +530,19 @@ export class GuideSocAiComponent implements OnInit { confOptions: existing.confOptions ? JSON.stringify(existing.confOptions) : existing.confOptions, confVisibility: existing.confVisibility ? JSON.stringify(existing.confVisibility) : existing.confVisibility, }); + } else { + changes.push({ + id: undefined, + groupId: this.groupId, + confKey, + confValue: value, + confName: confKey.split('.')[2] || confKey, + confDataType, + confDescription: confKey, + confRequired: true, + confOptions: undefined, + confVisibility: undefined, + }); } } @@ -543,6 +591,14 @@ export class GuideSocAiComponent implements OnInit { this.formValues['customHeaders'] = JSON.stringify(obj); } + private isMaskedValue(value: string): boolean { + return !!value && /^\*+$/.test(value); + } + + private hasMaskedHeaderRows(): boolean { + return this.headerRows.some(r => this.isMaskedValue(r.key) || this.isMaskedValue(r.value)); + } + private parseHeadersFromJson(json: string) { this.headerRows = []; try { From 471839f06cb756ef5876ac86df9d7ad46e6ea13d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Fri, 22 May 2026 14:18:06 -0400 Subject: [PATCH 08/47] fix[frontend](build): added environment.ts (#2099) --- frontend/src/environments/environment.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 frontend/src/environments/environment.ts diff --git a/frontend/src/environments/environment.ts b/frontend/src/environments/environment.ts new file mode 100644 index 000000000..e69de29bb From 8849f1bca3a75fcc969c5d9856a0d3312cab3f5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Fri, 22 May 2026 14:22:50 -0400 Subject: [PATCH 09/47] fix[backend](visualizations): removed utm-geoip legacy index references on region map visualizations (#2098) Co-authored-by: Osmany Montero --- .../park/utmstack/domain/ip_info/GeoIp.java | 153 ------------------ .../service/ip_info/IpInfoService.java | 55 ------- .../requests/RequestDsl.java | 13 ++ .../ResponseParserForCoordinateMapChart.java | 96 +++++++---- .../resources/config/application-prod.yml | 2 - 5 files changed, 80 insertions(+), 239 deletions(-) delete mode 100644 backend/src/main/java/com/park/utmstack/domain/ip_info/GeoIp.java delete mode 100644 backend/src/main/java/com/park/utmstack/service/ip_info/IpInfoService.java diff --git a/backend/src/main/java/com/park/utmstack/domain/ip_info/GeoIp.java b/backend/src/main/java/com/park/utmstack/domain/ip_info/GeoIp.java deleted file mode 100644 index 583481876..000000000 --- a/backend/src/main/java/com/park/utmstack/domain/ip_info/GeoIp.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.park.utmstack.domain.ip_info; - -import org.springframework.util.StringUtils; - -public class GeoIp { - private String network; - private String latitude; - private String longitude; - private String localeCode; - private String continentCode; - private String continentName; - private String countryIsoCode; - private String countryName; - private String subdivision1IsoCode; - private String subdivision1IsoName; - private String subdivision2IsoCode; - private String subdivision2IsoName; - private String cityName; - private String metroCode; - private String timeZone; - - public String getNetwork() { - return network; - } - - public void setNetwork(String network) { - this.network = network; - } - - public Double getLatitude() { - return Double.valueOf(latitude); - } - - public void setLatitude(String latitude) { - this.latitude = latitude; - } - - public Double getLongitude() { - return Double.valueOf(longitude); - } - - public void setLongitude(String longitude) { - this.longitude = longitude; - } - - public String getLocaleCode() { - return localeCode; - } - - public void setLocaleCode(String localeCode) { - this.localeCode = localeCode; - } - - public String getContinentCode() { - return continentCode; - } - - public void setContinentCode(String continentCode) { - this.continentCode = continentCode; - } - - public String getContinentName() { - return continentName; - } - - public void setContinentName(String continentName) { - this.continentName = continentName; - } - - public String getCountryIsoCode() { - return countryIsoCode; - } - - public void setCountryIsoCode(String countryIsoCode) { - this.countryIsoCode = countryIsoCode; - } - - public String getCountryName() { - return countryName; - } - - public void setCountryName(String countryName) { - this.countryName = countryName; - } - - public String getSubdivision1IsoCode() { - return subdivision1IsoCode; - } - - public void setSubdivision1IsoCode(String subdivision1IsoCode) { - this.subdivision1IsoCode = subdivision1IsoCode; - } - - public String getSubdivision1IsoName() { - return subdivision1IsoName; - } - - public void setSubdivision1IsoName(String subdivision1IsoName) { - this.subdivision1IsoName = subdivision1IsoName; - } - - public String getSubdivision2IsoCode() { - return subdivision2IsoCode; - } - - public void setSubdivision2IsoCode(String subdivision2IsoCode) { - this.subdivision2IsoCode = subdivision2IsoCode; - } - - public String getSubdivision2IsoName() { - return subdivision2IsoName; - } - - public void setSubdivision2IsoName(String subdivision2IsoName) { - this.subdivision2IsoName = subdivision2IsoName; - } - - public String getCityName() { - return cityName; - } - - public void setCityName(String cityName) { - this.cityName = cityName; - } - - public String getMetroCode() { - return metroCode; - } - - public void setMetroCode(String metroCode) { - this.metroCode = metroCode; - } - - public String getTimeZone() { - return timeZone; - } - - public void setTimeZone(String timeZone) { - this.timeZone = timeZone; - } - - @Override - public String toString() { - return "Continent Name: " + (StringUtils.hasText(continentName) ? continentName : "-") + "\n" + - "Continent Code: " + (StringUtils.hasText(continentCode) ? continentCode : "-") + "\n" + - "Country Name: " + (StringUtils.hasText(countryName) ? countryName : "-") + "\n" + - "Country ISO Code: " + (StringUtils.hasText(countryIsoCode) ? countryIsoCode : "-") + "\n" + - "City Name: " + (StringUtils.hasText(cityName) ? cityName : "-") + "\n" + - "Network: " + (StringUtils.hasText(network) ? network : "-") + "\n" + - "Latitude: " + (StringUtils.hasText(latitude) ? latitude : "-") + "\n" + - "Longitude: " + (StringUtils.hasText(longitude) ? longitude : "-") + "\n"; - } -} diff --git a/backend/src/main/java/com/park/utmstack/service/ip_info/IpInfoService.java b/backend/src/main/java/com/park/utmstack/service/ip_info/IpInfoService.java deleted file mode 100644 index 3ece554cb..000000000 --- a/backend/src/main/java/com/park/utmstack/service/ip_info/IpInfoService.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.park.utmstack.service.ip_info; - -import com.park.utmstack.config.ApplicationProperties; -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.ip_info.GeoIp; -import com.park.utmstack.service.elasticsearch.ElasticsearchService; -import com.park.utmstack.service.elasticsearch.SearchUtil; -import com.park.utmstack.util.exceptions.UtmIpInfoException; -import org.opensearch.client.opensearch.core.SearchRequest; -import org.opensearch.client.opensearch.core.search.HitsMetadata; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; - -@Service -public class IpInfoService { - private static final String CLASSNAME = "IpInfoService"; - - private final ApplicationProperties applicationProperties; - private final ElasticsearchService elasticsearchService; - - public IpInfoService(ApplicationProperties applicationProperties, - ElasticsearchService elasticsearchService) { - this.applicationProperties = applicationProperties; - this.elasticsearchService = elasticsearchService; - } - - /** - * Get information about an Ip - * - * @param ip The ip to get the related information - * @return A ${@link GeoIp} object with the ip information - */ - public GeoIp getIpInfo(String ip) throws UtmIpInfoException { - final String ctx = CLASSNAME + "getIpV4Info"; - try { - List filters = new ArrayList<>(); - filters.add(new FilterType("network", OperatorType.IS, ip)); - - SearchRequest sr = SearchRequest.of(s -> s.index(applicationProperties.getChartBuilder().getIpInfoIndexName()) - .query(SearchUtil.toQuery(filters)).size(1)); - - HitsMetadata hits = elasticsearchService.search(sr, GeoIp.class).hits(); - - if (hits.total().value() <= 0) - return null; - - return hits.hits().get(0).source(); - } catch (Exception e) { - throw new RuntimeException(ctx + ": " + e.getLocalizedMessage()); - } - } -} diff --git a/backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/requests/RequestDsl.java b/backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/requests/RequestDsl.java index a5c35aae6..ac20f4a15 100644 --- a/backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/requests/RequestDsl.java +++ b/backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/requests/RequestDsl.java @@ -23,6 +23,11 @@ public class RequestDsl { private static final String CLASSNAME = "RequestDsl"; + public static final String GEO_HIT_AGG = "_geo_hit"; + public static final List GEO_SOURCE_INCLUDES = List.of( + "origin.geolocation.latitude", "origin.geolocation.longitude", + "source.geolocation.latitude", "source.geolocation.longitude", + "destination.geolocation.latitude", "destination.geolocation.longitude"); private final SearchRequest.Builder searchRequestBuilder; private final UtmVisualization visualization; @@ -130,6 +135,14 @@ private void buildAggregation() throws UtmElasticsearchException { Map bucketAggregations = buildBucketAggregation(bucket); Map metricAggregations = buildMetricAggregation(metrics); + if (visualization.getChartType() == ChartType.COORDINATE_MAP_CHART) { + Map withGeo = new LinkedHashMap<>(metricAggregations); + withGeo.put(GEO_HIT_AGG, Aggregation.of(a -> a.topHits(th -> th + .size(1) + .source(s -> s.filter(f -> f.includes(GEO_SOURCE_INCLUDES)))))); + metricAggregations = withGeo; + } + if (!CollectionUtils.isEmpty(bucketAggregations)) { Map root = new LinkedHashMap<>(); if (bucketAggregations.size() > 1) { diff --git a/backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/responses/impl/coordinate_map/ResponseParserForCoordinateMapChart.java b/backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/responses/impl/coordinate_map/ResponseParserForCoordinateMapChart.java index d3605edae..ca5406d7d 100644 --- a/backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/responses/impl/coordinate_map/ResponseParserForCoordinateMapChart.java +++ b/backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/responses/impl/coordinate_map/ResponseParserForCoordinateMapChart.java @@ -1,17 +1,18 @@ package com.park.utmstack.util.chart_builder.elasticsearch_dsl.responses.impl.coordinate_map; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.park.utmstack.domain.chart_builder.UtmVisualization; import com.park.utmstack.domain.chart_builder.types.aggregation.AggregationType; import com.park.utmstack.domain.chart_builder.types.aggregation.Bucket; import com.park.utmstack.domain.chart_builder.types.aggregation.Metric; -import com.park.utmstack.domain.ip_info.GeoIp; -import com.park.utmstack.service.ip_info.IpInfoService; +import com.park.utmstack.util.chart_builder.elasticsearch_dsl.requests.RequestDsl; import com.park.utmstack.util.chart_builder.elasticsearch_dsl.responses.ResponseParser; -import com.park.utmstack.util.exceptions.UtmIpInfoException; import com.utmstack.opensearch_connector.parsers.TermAggregateParser; import com.utmstack.opensearch_connector.types.BucketAggregation; import com.utmstack.opensearch_connector.types.SearchSqlResponse; +import org.opensearch.client.opensearch._types.aggregations.Aggregate; +import org.opensearch.client.opensearch._types.aggregations.TopHitsAggregate; import org.opensearch.client.opensearch.core.SearchResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,15 +28,10 @@ @Component public class ResponseParserForCoordinateMapChart implements ResponseParser { private static final String CLASSNAME = "ResponseParserForCoordinateMapChart"; + private static final List GEO_PREFIXES = List.of("origin", "source", "destination"); private final Logger log = LoggerFactory.getLogger(ResponseParserForCoordinateMapChart.class); - private final IpInfoService ipInfoService; - - public ResponseParserForCoordinateMapChart(IpInfoService ipInfoService) { - this.ipInfoService = ipInfoService; - } - @Override public List parse(UtmVisualization visualization, SearchResponse result) { final String ctx = CLASSNAME + ".parse"; @@ -53,20 +49,13 @@ public List parse(UtmVisualization visualization, Sear for (BucketAggregation entry : entries) { - GeoIp ipV4Info; - try { - ipV4Info = ipInfoService.getIpInfo(entry.getKey()); - - if (ipV4Info == null) - continue; - } catch (UtmIpInfoException e) { - log.error(e.getMessage()); + Double[] latLon = extractLatLongFromTopHits(entry.getSubAggregations()); + if (latLon == null) continue; - } CoordinateMapChartResult value = new CoordinateMapChartResult(); value.setName(entry.getKey()); - value.addLatitude(ipV4Info.getLatitude()).addLongitude(ipV4Info.getLongitude()); + value.addLatitude(latLon[0]).addLongitude(latLon[1]); switch (metric.getAggregation()) { case COUNT: @@ -140,20 +129,14 @@ public List parse(UtmVisualization visualization, Sear } if (!StringUtils.hasText(ip)) continue; - GeoIp ipInfo; - try { - ipInfo = ipInfoService.getIpInfo(ip); - if (ipInfo == null) continue; - } catch (UtmIpInfoException e) { - log.error(e.getMessage()); - continue; - } + Double[] latLon = extractLatLongFromRow(row); + if (latLon == null) continue; CoordinateMapChartResult chartResult = new CoordinateMapChartResult(); chartResult.setName(ip); chartResult.setValue(new Double[] { - ipInfo.getLatitude(), - ipInfo.getLongitude(), + latLon[0], + latLon[1], (double) i }); @@ -165,4 +148,59 @@ public List parse(UtmVisualization visualization, Sear throw new RuntimeException(ctx + ": " + e.getMessage(), e); } } + + private Double[] extractLatLongFromTopHits(Map subAggs) { + if (subAggs == null) return null; + Aggregate geoAgg = subAggs.get(RequestDsl.GEO_HIT_AGG); + if (geoAgg == null || !geoAgg.isTopHits()) return null; + TopHitsAggregate topHits = geoAgg.topHits(); + if (topHits.hits() == null || topHits.hits().hits().isEmpty()) return null; + var hit = topHits.hits().hits().get(0); + if (hit.source() == null) return null; + try { + ObjectNode source = hit.source().to(ObjectNode.class); + return extractLatLongFromJson(source); + } catch (Exception e) { + log.warn("Failed to deserialize top_hits source for geolocation: {}", e.getMessage()); + return null; + } + } + + private Double[] extractLatLongFromJson(ObjectNode source) { + if (source == null) return null; + for (String prefix : GEO_PREFIXES) { + JsonNode geo = source.path(prefix).path("geolocation"); + JsonNode lat = geo.path("latitude"); + JsonNode lon = geo.path("longitude"); + if (lat.isNumber() && lon.isNumber()) { + return new Double[]{lat.asDouble(), lon.asDouble()}; + } + } + return null; + } + + private Double[] extractLatLongFromRow(Map row) { + Double lat = null; + Double lon = null; + for (Map.Entry e : row.entrySet()) { + if (e.getValue() == null) continue; + String key = e.getKey(); + if (lat == null && (key.endsWith(".geolocation.latitude") || key.equals("latitude"))) { + lat = toDouble(e.getValue()); + } else if (lon == null && (key.endsWith(".geolocation.longitude") || key.equals("longitude"))) { + lon = toDouble(e.getValue()); + } + } + if (lat == null || lon == null) return null; + return new Double[]{lat, lon}; + } + + private Double toDouble(Object val) { + if (val instanceof Number) return ((Number) val).doubleValue(); + try { + return Double.parseDouble(val.toString()); + } catch (NumberFormatException e) { + return null; + } + } } diff --git a/backend/src/main/resources/config/application-prod.yml b/backend/src/main/resources/config/application-prod.yml index 33bacc55c..d8e2c8d1d 100644 --- a/backend/src/main/resources/config/application-prod.yml +++ b/backend/src/main/resources/config/application-prod.yml @@ -64,8 +64,6 @@ jhipster: base-url: application: - chart-builder: # Chart builder configuration - ip-info-index-name: .utm-geoip incident-response: asset-verification-interval: 300 From b9d2e2009f020f579dbb2c83a3df59e5e9f0f5c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Fri, 22 May 2026 21:25:50 -0400 Subject: [PATCH 10/47] Hotfix/socai custom header (#2101) * fix[frontend](socai): added default template for empty previous socai config (#2092) * fix[frontend](socai): added default template for empty previous socai configuration * fix[frontend](socai): setted customHeaders as password key type * fix[frontend](socai): dont let empty description on modules * fix[backend](socai): generate the modulegroup with new keys if no other exists on db * fix[backend](changeset): added customHeader entries as password type --- ...1_update_socai_custom_headers_password.xml | 29 +++++++++++++++++++ .../resources/config/liquibase/master.xml | 2 ++ 2 files changed, 31 insertions(+) create mode 100644 backend/src/main/resources/config/liquibase/changelog/20260522001_update_socai_custom_headers_password.xml diff --git a/backend/src/main/resources/config/liquibase/changelog/20260522001_update_socai_custom_headers_password.xml b/backend/src/main/resources/config/liquibase/changelog/20260522001_update_socai_custom_headers_password.xml new file mode 100644 index 000000000..fd402114f --- /dev/null +++ b/backend/src/main/resources/config/liquibase/changelog/20260522001_update_socai_custom_headers_password.xml @@ -0,0 +1,29 @@ + + + + + Set utmstack.socai.customHeaders data type to password + + + + + diff --git a/backend/src/main/resources/config/liquibase/master.xml b/backend/src/main/resources/config/liquibase/master.xml index eebe85f8c..a46172272 100644 --- a/backend/src/main/resources/config/liquibase/master.xml +++ b/backend/src/main/resources/config/liquibase/master.xml @@ -597,4 +597,6 @@ + + From bea7ab761d947f92285f3e29634ace97bef756a1 Mon Sep 17 00:00:00 2001 From: Osmany Montero Date: Mon, 25 May 2026 11:39:28 +0100 Subject: [PATCH 11/47] fix(frontend): update nginx from 1.19.5 to 1.30.1 Remediate 22 known CVEs including CVE-2026-42945 (actively exploited in the wild for RCE). nginx:1.19.5 (Oct 2020) was affected by buffer overflows, memory disclosure, HTTP/2 injection, SSL session reuse, and multiple other vulnerabilities patched in the 1.30.1 stable release. --- frontend/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 770248743..5a4c8a975 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,4 +1,4 @@ -FROM nginx:1.19.5 +FROM nginx:1.30.1 WORKDIR /usr/share/nginx/html COPY ./nginx/mime.types /etc/nginx/mime.types COPY ./dist/utm-stack/ /usr/share/nginx/html/ From 5d3910b90524196d4af6bee585c88bd559710d29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Tue, 26 May 2026 07:59:30 -0400 Subject: [PATCH 12/47] Backlog/fix/socai module disabled (#2102) * fix[backend](socai): changed socai default module keys * fix[backend](modules): added default keys on module creation response * fix[frontend](socai): handled empty (disabled) module configuration --- .../factory/impl/ModuleSocAi.java | 103 +++++++++++++----- .../UtmModuleGroupResource.java | 10 ++ .../guide-soc-ai/guide-soc-ai.component.html | 4 +- .../guide-soc-ai/guide-soc-ai.component.ts | 38 +++++++ .../app-module-activate-button.component.ts | 7 +- 5 files changed, 128 insertions(+), 34 deletions(-) diff --git a/backend/src/main/java/com/park/utmstack/domain/application_modules/factory/impl/ModuleSocAi.java b/backend/src/main/java/com/park/utmstack/domain/application_modules/factory/impl/ModuleSocAi.java index 79f2b42b1..e32277c7b 100644 --- a/backend/src/main/java/com/park/utmstack/domain/application_modules/factory/impl/ModuleSocAi.java +++ b/backend/src/main/java/com/park/utmstack/domain/application_modules/factory/impl/ModuleSocAi.java @@ -45,12 +45,83 @@ public List checkRequirements(Long serverId) throws Exception public List getConfigurationKeys(Long groupId) throws Exception { List keys = new ArrayList<>(); + keys.add(ModuleConfigurationKey.builder() + .withGroupId(groupId) + .withConfKey("utmstack.socai.provider") + .withConfName("AI Provider") + .withConfDescription("AI provider used by SOC AI.") + .withConfDataType("text") + .withConfValue("openai") + .withConfRequired(true) + .build()); + + keys.add(ModuleConfigurationKey.builder() + .withGroupId(groupId) + .withConfKey("utmstack.socai.model") + .withConfName("AI Model") + .withConfDescription("AI model that SOC AI will use to analyze alerts (first option of active provider).") + .withConfDataType("text") + .withConfValue("gpt-4o") + .withConfRequired(true) + .build()); + + keys.add(ModuleConfigurationKey.builder() + .withGroupId(groupId) + .withConfKey("utmstack.socai.url") + .withConfName("Provider URL") + .withConfDescription("Endpoint URL for the provider (only set for azure / ollama / custom).") + .withConfDataType("text") + .withConfValue("") + .withConfRequired(false) + .build()); + + keys.add(ModuleConfigurationKey.builder() + .withGroupId(groupId) + .withConfKey("utmstack.socai.maxTokens") + .withConfName("Max Tokens") + .withConfDescription("Maximum number of tokens used per request.") + .withConfDataType("text") + .withConfValue("4096") + .withConfRequired(true) + .build()); + + keys.add(ModuleConfigurationKey.builder() + .withGroupId(groupId) + .withConfKey("utmstack.socai.authType") + .withConfName("Authentication Type") + .withConfDescription("Authentication type used to reach the provider (none for ollama).") + .withConfDataType("text") + .withConfValue("custom-headers") + .withConfRequired(true) + .build()); + + keys.add(ModuleConfigurationKey.builder() + .withGroupId(groupId) + .withConfKey("utmstack.socai.customHeaders") + .withConfName("Custom Headers") + .withConfDescription("Custom headers (JSON object) sent with each request to the provider.") + .withConfDataType("password") + .withConfValue("") + .withConfRequired(false) + .build()); + + keys.add(ModuleConfigurationKey.builder() + .withGroupId(groupId) + .withConfKey("utmstack.socai.autoAnalyze") + .withConfName("Auto Analyze") + .withConfDescription("If set to \"true\", SOC AI will automatically analyze incoming alerts.") + .withConfDataType("text") + .withConfValue("false") + .withConfRequired(false) + .build()); + keys.add(ModuleConfigurationKey.builder() .withGroupId(groupId) .withConfKey("utmstack.socai.incidentCreation") .withConfName("Automatic Incident creation") .withConfDescription("If set to \"true\", the system will create incidents based on analysis of alerts.") - .withConfDataType("bool") + .withConfDataType("text") + .withConfValue("false") .withConfRequired(false) .build()); @@ -60,37 +131,11 @@ public List getConfigurationKeys(Long groupId) throws Ex .withConfName("Change Alert Status") .withConfDescription("If set to \"true\", SOC Ai will automatically change the status of alerts. " + "Analysts should investigate those with the status \"In Review\".") - .withConfDataType("bool") + .withConfDataType("text") + .withConfValue("false") .withConfRequired(false) .build()); - keys.add(ModuleConfigurationKey.builder() - .withGroupId(groupId) - .withConfKey("utmstack.socai.model") - .withConfName("Select AI Model") - .withConfDescription("Choose the AI model that SOC AI will use to analyze alerts.") - .withConfDataType("select") - .withConfRequired(true) - .withConfOptions( - "[" + - "{\"value\": \"gpt-4\", \"label\": \"GPT-4\"}," + - "{\"value\": \"gpt-4-0613\", \"label\": \"GPT-4 (0613)\"}," + - "{\"value\": \"gpt-4-32k\", \"label\": \"GPT-4 32K\"}," + - "{\"value\": \"gpt-4-32k-0613\", \"label\": \"GPT-4 32K (0613)\"}," + - "{\"value\": \"gpt-4-turbo\", \"label\": \"GPT-4 Turbo\"}," + - "{\"value\": \"gpt-4o\", \"label\": \"GPT-4 Omni\"}," + - "{\"value\": \"gpt-4o-mini\", \"label\": \"GPT-4 Omni Mini\"}," + - "{\"value\": \"gpt-4.1\", \"label\": \"GPT-4.1\"}," + - "{\"value\": \"gpt-4.1-mini\", \"label\": \"GPT-4.1 Mini\"}," + - "{\"value\": \"gpt-4.1-nano\", \"label\": \"GPT-4.1 Nano\"}," + - "{\"value\": \"gpt-3.5-turbo\", \"label\": \"GPT-3.5 Turbo\"}," + - "{\"value\": \"gpt-3.5-turbo-0613\", \"label\": \"GPT-3.5 Turbo (0613)\"}," + - "{\"value\": \"gpt-3.5-turbo-16k\", \"label\": \"GPT-3.5 Turbo 16K\"}," + - "{\"value\": \"gpt-3.5-turbo-16k-0613\", \"label\": \"GPT-3.5 Turbo 16K (0613)\"}" + - "]" - ) - .build()); - return keys; } diff --git a/backend/src/main/java/com/park/utmstack/web/rest/application_modules/UtmModuleGroupResource.java b/backend/src/main/java/com/park/utmstack/web/rest/application_modules/UtmModuleGroupResource.java index 1b420fbec..3d5735bfa 100644 --- a/backend/src/main/java/com/park/utmstack/web/rest/application_modules/UtmModuleGroupResource.java +++ b/backend/src/main/java/com/park/utmstack/web/rest/application_modules/UtmModuleGroupResource.java @@ -30,6 +30,7 @@ import javax.validation.Valid; import java.net.URISyntaxException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Optional; @@ -82,6 +83,15 @@ public ResponseEntity createConfigurationGroup(@Valid @RequestBo defaultConfigurationKeys.forEach(key -> keys.add(new UtmModuleGroupConfiguration(key))); moduleGroupConfigurationService.createConfigurationKeys(keys); + for (UtmModuleGroupConfiguration conf : keys) { + if ((Constants.CONF_TYPE_PASSWORD.equals(conf.getConfDataType()) + || Constants.CONF_TYPE_FILE.equals(conf.getConfDataType())) + && conf.getConfValue() != null) { + conf.setConfValue(Constants.MASKED_VALUE); + } + } + result.setModuleGroupConfigurations(new HashSet<>(keys)); + return ResponseEntity.ok(result); } catch (DataIntegrityViolationException e) { String msg = ctx + ": " + e.getMostSpecificCause().getMessage().replaceAll("\n", ""); diff --git a/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.html b/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.html index 7c8c18c08..da11a5256 100644 --- a/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.html +++ b/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.html @@ -155,9 +155,11 @@

SOC AI

Save configuration + diff --git a/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.ts b/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.ts index 389fdcbeb..7bb7d9889 100644 --- a/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.ts +++ b/frontend/src/app/app-module/guides/guide-soc-ai/guide-soc-ai.component.ts @@ -39,6 +39,8 @@ export class GuideSocAiComponent implements OnInit { saving = false; loading = true; + configReady=false + // Form values - what the user sees/edits formValues: {[key: string]: string} = {}; customModelValue = ''; @@ -322,6 +324,7 @@ export class GuideSocAiComponent implements OnInit { }; } this.loading = false; + this.configReady = true; this.cdr.detectChanges(); }, () => { this.loading = false; @@ -439,6 +442,31 @@ export class GuideSocAiComponent implements OnInit { save() { this.saving = true; + + if (!this.groupId || !this.rawConfigs.length) { + this.moduleGroupService.create({ + name: 'socai', + description: 'socai', + moduleId: this.integrationId + }).subscribe( + response => { + this.groupId = response.body.id; + this.rawConfigs = response.body.moduleGroupConfigurations || []; + this.cdr.markForCheck() + this.persistConfig(); + }, + () => { + this.saving = false; + this.cdr.markForCheck(); + this.toast.showError('Error', 'Failed to create configuration group. Please try again.'); + } + ); + return; + } + this.persistConfig(); + } + + private persistConfig() { const changes: UtmModuleGroupConfType[] = []; // Set provider @@ -494,12 +522,16 @@ export class GuideSocAiComponent implements OnInit { // Otherwise: don't touch customHeaders — keep existing value in DB } + this.rawConfigs=changes + this.cdr.markForCheck() + this.moduleGroupConfService.update({ keys: changes, moduleId: this.integrationId }).subscribe( () => { this.saving = false; + this.configReady = true; this.cdr.markForCheck() this.toast.showSuccessBottom('SOC AI configuration saved successfully'); }, @@ -610,4 +642,10 @@ export class GuideSocAiComponent implements OnInit { // Invalid JSON, start empty } } + + + public disableModule(){ + this.groupId=null + this.rawConfigs=[] + } } diff --git a/frontend/src/app/app-module/shared/components/app-module-activate-button/app-module-activate-button.component.ts b/frontend/src/app/app-module/shared/components/app-module-activate-button/app-module-activate-button.component.ts index 7c4fe04f2..458b206f8 100644 --- a/frontend/src/app/app-module/shared/components/app-module-activate-button/app-module-activate-button.component.ts +++ b/frontend/src/app/app-module/shared/components/app-module-activate-button/app-module-activate-button.component.ts @@ -95,11 +95,10 @@ export class AppModuleActivateButtonComponent implements OnInit, OnDestroy { this.moduleRefreshBehavior.$moduleChange.next(true); this.toastService.showSuccessBottom('Module ' + this.moduleDetail.moduleName + ' has been ' + (this.moduleDetail.moduleActive ? 'enabled' : 'disabled') + ' successfully'); + if (!status) { + this.disableModuleClicked.emit(); + } }); - } else { - if (fromOnclick && !status) { - this.disableModuleClicked.emit(); - } } } From c2fc58455d4ce20882a199bf8c330910e800f2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Fri, 29 May 2026 10:10:30 -0400 Subject: [PATCH 13/47] Backlog/fix/tag rules (#2106) * fix[frontend](rules): improved post event count validation * fix[frontend](tag_rules): added events related fields on tag rule creation --------- Co-authored-by: Osmany Montero --- .../alert-rule-create.component.ts | 10 ++++- .../add-after-event.component.html | 2 +- .../services/after-event-form.service.ts | 2 +- .../constants/alert/alert-field.constant.ts | 41 +++++++++++++++++++ 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/data-management/alert-management/shared/components/alert-rule-create/alert-rule-create.component.ts b/frontend/src/app/data-management/alert-management/shared/components/alert-rule-create/alert-rule-create.component.ts index 19c596d7c..575884ae6 100644 --- a/frontend/src/app/data-management/alert-management/shared/components/alert-rule-create/alert-rule-create.component.ts +++ b/frontend/src/app/data-management/alert-management/shared/components/alert-rule-create/alert-rule-create.component.ts @@ -32,7 +32,7 @@ import { ALERT_STATUS_LABEL_FIELD, ALERT_TAGS_FIELD, ALERT_TIMESTAMP_FIELD, - EVENT_IS_ALERT, FALSE_POSITIVE_OBJECT, LOG_RELATED_ID_EVENT_FIELD + EVENT_IS_ALERT, EVENT_TAG_RULE_FIELDS, FALSE_POSITIVE_OBJECT, LOG_RELATED_ID_EVENT_FIELD } from '../../../../../shared/constants/alert/alert-field.constant'; import {AUTOMATIC_REVIEW, CLOSED} from '../../../../../shared/constants/alert/alert-status.constant'; import {FILTER_OPERATORS} from '../../../../../shared/constants/filter-operators.const'; @@ -84,7 +84,6 @@ export class AlertRuleCreateComponent implements OnInit, OnDestroy { ALERT_OBSERVATION_FIELD, ALERT_NOTE_FIELD, ALERT_REFERENCE_FIELD, - LOG_RELATED_ID_EVENT_FIELD, EVENT_IS_ALERT, ALERT_INCIDENT_USER_FIELD, ALERT_INCIDENT_DATE_FIELD, @@ -148,6 +147,8 @@ export class AlertRuleCreateComponent implements OnInit, OnDestroy { return acc.concat(field); }, []); + this.fields = [...this.fields, ...EVENT_TAG_RULE_FIELDS]; + this.operators = FILTER_OPERATORS.filter(value => !this.excludeOperators.includes(value.operator)); } @@ -232,6 +233,11 @@ export class AlertRuleCreateComponent implements OnInit, OnDestroy { } getFieldValue(field: string): any { + if(field.startsWith('events') && this.alert.events &&this.alert.events.length>0){ + let fields = field.split('.') + fields.splice(0,1) + return getValueFromPropertyPath(this.alert.events[0],fields.join('.'), null); + } return getValueFromPropertyPath(this.alert, field, null); } diff --git a/frontend/src/app/rule-management/app-rule/components/add-after-event/add-after-event.component.html b/frontend/src/app/rule-management/app-rule/components/add-after-event/add-after-event.component.html index 668b76529..2c5e7eded 100644 --- a/frontend/src/app/rule-management/app-rule/components/add-after-event/add-after-event.component.html +++ b/frontend/src/app/rule-management/app-rule/components/add-after-event/add-after-event.component.html @@ -28,7 +28,7 @@ Must be at least 1
- Must not be greater than 50 + Must not be greater than 100
diff --git a/frontend/src/app/rule-management/services/after-event-form.service.ts b/frontend/src/app/rule-management/services/after-event-form.service.ts index d68edf6ec..bbc591e13 100644 --- a/frontend/src/app/rule-management/services/after-event-form.service.ts +++ b/frontend/src/app/rule-management/services/after-event-form.service.ts @@ -36,7 +36,7 @@ export class AfterEventFormService { : [] ), within: [event.within || ''], - count: [event.count ? event.count : null, [Validators.required, Validators.min(1), Validators.max(50)]], + count: [event.count ? event.count : null, [Validators.required, Validators.min(1), Validators.max(100)]], }); } diff --git a/frontend/src/app/shared/constants/alert/alert-field.constant.ts b/frontend/src/app/shared/constants/alert/alert-field.constant.ts index 21a3349e1..dd57f4cfd 100644 --- a/frontend/src/app/shared/constants/alert/alert-field.constant.ts +++ b/frontend/src/app/shared/constants/alert/alert-field.constant.ts @@ -120,6 +120,47 @@ export const EVENT_IS_ALERT = 'isAlert'; export const FALSE_POSITIVE_OBJECT = {id: 1, tagName: 'False positive', tagColor: '#f44336', systemOwner: true}; +// Event-related fields exposed in tag-rule conditions. +// These are flattened paths into the `events` array on the alert document +// ("events" is mapped as an object array, so any condition matches when ANY +// event satisfies it). +export const EVENT_TAG_RULE_FIELDS: UtmFieldType[] = [ + {label: 'Event Data Type', field: 'events.dataType', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Data Source', field: 'events.dataSource', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Action', field: 'events.action', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Action Result', field: 'events.actionResult', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Severity', field: 'events.severity', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Protocol', field: 'events.protocol', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Connection Status', field: 'events.connectionStatus', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Status Code', field: 'events.statusCode', type: ElasticDataTypesEnum.NUMBER, visible: true}, + {label: 'Event Tenant Name', field: 'events.tenantName', type: ElasticDataTypesEnum.STRING, visible: true}, + // Origin + {label: 'Event Origin IP', field: 'events.origin.ip', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin Host', field: 'events.origin.host', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin User', field: 'events.origin.user', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin Port', field: 'events.origin.port', type: ElasticDataTypesEnum.NUMBER, visible: true}, + {label: 'Event Origin Domain', field: 'events.origin.domain', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin URL', field: 'events.origin.url', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin Country', field: 'events.origin.geolocation.country', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin Country Code', field: 'events.origin.geolocation.countryCode', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin City', field: 'events.origin.geolocation.city', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin ASN', field: 'events.origin.geolocation.asn', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Origin ASO', field: 'events.origin.geolocation.aso', type: ElasticDataTypesEnum.STRING, visible: true}, + // Target + {label: 'Event Target IP', field: 'events.target.ip', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target Host', field: 'events.target.host', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target User', field: 'events.target.user', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target Port', field: 'events.target.port', type: ElasticDataTypesEnum.NUMBER, visible: true}, + {label: 'Event Target URL', field: 'events.target.url', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target Domain', field: 'events.target.domain', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target File', field: 'events.target.file', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target Country', field: 'events.target.geolocation.country', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target Country Code', field: 'events.target.geolocation.countryCode', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target City', field: 'events.target.geolocation.city', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target ASN', field: 'events.target.geolocation.asn', type: ElasticDataTypesEnum.STRING, visible: true}, + {label: 'Event Target ASO', field: 'events.target.geolocation.aso', type: ElasticDataTypesEnum.STRING, visible: true}, +]; + export const ALERT_FIELDS: UtmFieldType[] = [ { label: 'Alert name', From 007d88bf9f0f80cb7db8ce8d11ad98c61f1b1381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Fri, 29 May 2026 10:14:02 -0400 Subject: [PATCH 14/47] fix[frontend](alerts-view): added a loading indicator and improved fast filtering reinforcement (#2107) * fix[frontend](alerts-view): added a loading indicator and improved fast filtering reinforcement * chore[](): updated go packages --- agent/go.mod | 2 +- agent/go.sum | 4 +-- .../alert-view/alert-view.component.html | 6 ++++ .../alert-view/alert-view.component.scss | 4 +++ .../alert-view/alert-view.component.ts | 28 +++++++++++++--- installer/go.mod | 4 +-- installer/go.sum | 8 ++--- plugins/aws/go.mod | 6 ++-- plugins/aws/go.sum | 12 +++---- plugins/gcp/go.mod | 12 +++---- plugins/gcp/go.sum | 20 ++++++------ plugins/modules-config/go.mod | 18 +++++------ plugins/modules-config/go.sum | 32 +++++++++---------- 13 files changed, 92 insertions(+), 64 deletions(-) diff --git a/agent/go.mod b/agent/go.mod index c5e78d93f..316ae7e01 100644 --- a/agent/go.mod +++ b/agent/go.mod @@ -16,7 +16,7 @@ require ( 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.44.0 + golang.org/x/sys v0.45.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 gorm.io/gorm v1.31.1 diff --git a/agent/go.sum b/agent/go.sum index 4afe41737..340588e8b 100644 --- a/agent/go.sum +++ b/agent/go.sum @@ -189,8 +189,8 @@ 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.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.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= diff --git a/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.html b/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.html index af0fb7ece..f8d608b22 100644 --- a/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.html +++ b/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.html @@ -38,6 +38,12 @@
 The system has detected new alerts, retrieving from the data engine... +
+ +  Searching... + +
diff --git a/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.scss b/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.scss index 27f615cc4..2daa2d2f2 100644 --- a/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.scss +++ b/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.scss @@ -32,3 +32,7 @@ tr.no-bottom-border { .bg-children-light { background-color: #cccccc52 !important; } + +.search-loading-indicator { + pointer-events: none; +} diff --git a/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.ts b/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.ts index 399e1916e..9df35d82a 100644 --- a/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.ts +++ b/frontend/src/app/data-management/alert-management/alert-view/alert-view.component.ts @@ -6,8 +6,8 @@ import {TranslateService} from '@ngx-translate/core'; import {ResizeEvent} from 'angular-resizable-element'; import {NgxSpinnerService} from 'ngx-spinner'; import {LocalStorageService} from 'ngx-webstorage'; -import {Observable, Subject} from 'rxjs'; -import {filter, takeUntil, tap} from 'rxjs/operators'; +import {Observable, Subject, throwError, timer, Subscription} from 'rxjs'; +import {concatMap, filter, retryWhen, takeUntil, tap, finalize} from 'rxjs/operators'; import {UtmToastService} from '../../../shared/alert/utm-toast.service'; import { ElasticFilterDefaultTime @@ -64,7 +64,8 @@ import {ElasticDataTypesEnum} from "../../../shared/enums/elastic-data-types.enu styleUrls: ['./alert-view.component.scss'] }) export class AlertViewComponent implements OnInit, OnDestroy { - + private lastRequest:Subscription|null = null + private lastTimeout:any = -1 constructor(private elasticDataService: ElasticDataService, private modalService: NgbModal, @@ -343,10 +344,24 @@ export class AlertViewComponent implements OnInit, OnDestroy { this.getAlert('on time filter change'); } + get searching(): boolean { + return this.lastRequest!=null; + } + getAlert(calledFrom?: string, filtersParam?: ElasticFilterType[]) { - this.elasticDataService.search(this.page, this.itemsPerPage, + if(this.lastTimeout!=-1){ + clearTimeout(this.lastTimeout) + if(this.lastRequest){ + this.lastRequest.unsubscribe() + this.lastRequest=null + } + } + this.lastTimeout= setTimeout(()=>{ + this.lastRequest=this.elasticDataService.search(this.page, this.itemsPerPage, MAX_SEARCH_RESULTS, this.dataNature, - sanitizeFilters(this.filters), this.sortBy, true).subscribe( + sanitizeFilters(this.filters), this.sortBy, true) + .pipe(finalize(()=>this.lastRequest=null)) + .subscribe( (res: HttpResponse) => { this.totalItems = Number(res.headers.get('X-Total-Count')); this.alerts = res.body; @@ -355,8 +370,11 @@ export class AlertViewComponent implements OnInit, OnDestroy { }, (res: HttpResponse) => { this.utmToastService.showError('Error', 'An error occurred while listing the alerts. Please try again later.'); + this.loading = false; + this.refreshingAlert = false; } ); + },100) } saveReport() { diff --git a/installer/go.mod b/installer/go.mod index f845e7928..9681fc7de 100644 --- a/installer/go.mod +++ b/installer/go.mod @@ -3,7 +3,7 @@ module github.com/utmstack/UTMStack/installer go 1.25.1 require ( - github.com/cloudfoundry/gosigar v1.3.119 + github.com/cloudfoundry/gosigar v1.3.120 github.com/docker/docker v28.5.2+incompatible github.com/kardianos/service v1.2.4 github.com/shirou/gopsutil/v3 v3.24.5 @@ -74,7 +74,7 @@ require ( 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.44.0 // indirect + golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.33.0 // indirect golang.org/x/time v0.14.0 // indirect golang.org/x/tools v0.41.0 // indirect diff --git a/installer/go.sum b/installer/go.sum index 69a6e7a3b..6bde1c1f3 100644 --- a/installer/go.sum +++ b/installer/go.sum @@ -16,8 +16,8 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= 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/cloudfoundry/gosigar v1.3.119 h1:+wm7uWf3uNVvIxY8vHpjRNmdpCNPoX6gAuoJMn7IQcI= -github.com/cloudfoundry/gosigar v1.3.119/go.mod h1:JUefZL7X7jvezhtLqCWv8sctPNHgz9X7r59hOVJFfv0= +github.com/cloudfoundry/gosigar v1.3.120 h1:YkYIRO/Abp1CRqvfzOgP8kiuWT1wJi1/ZBfwvNjstTQ= +github.com/cloudfoundry/gosigar v1.3.120/go.mod h1:h0cx9zTwKaigG61uVYSCcXCvcHIJsrmgd16feJ1VZX4= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -200,8 +200,8 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= 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/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= diff --git a/plugins/aws/go.mod b/plugins/aws/go.mod index 48e6e5f44..a4b0ee8d7 100644 --- a/plugins/aws/go.mod +++ b/plugins/aws/go.mod @@ -4,8 +4,8 @@ go 1.25.5 require ( github.com/aws/aws-sdk-go-v2 v1.41.7 - github.com/aws/aws-sdk-go-v2/config v1.32.17 - github.com/aws/aws-sdk-go-v2/credentials v1.19.16 + github.com/aws/aws-sdk-go-v2/config v1.32.18 + github.com/aws/aws-sdk-go-v2/credentials v1.19.17 github.com/google/uuid v1.6.0 github.com/threatwinds/go-sdk v1.1.21 ) @@ -33,7 +33,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect github.com/aws/smithy-go v1.25.1 // indirect github.com/bytedance/sonic v1.15.0 // indirect diff --git a/plugins/aws/go.sum b/plugins/aws/go.sum index 3e029874e..f19d299a1 100644 --- a/plugins/aws/go.sum +++ b/plugins/aws/go.sum @@ -6,10 +6,10 @@ github.com/aws/aws-sdk-go-v2 v1.41.7 h1:DWpAJt66FmnnaRIOT/8ASTucrvuDPZASqhhLey6t github.com/aws/aws-sdk-go-v2 v1.41.7/go.mod h1:4LAfZOPHNVNQEckOACQx60Y8pSRjIkNZQz1w92xpMJc= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 h1:gx1AwW1Iyk9Z9dD9F4akX5gnN3QZwUB20GGKH/I+Rho= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10/go.mod h1:qqY157uZoqm5OXq/amuaBJyC9hgBCBQnsaWnPe905GY= -github.com/aws/aws-sdk-go-v2/config v1.32.17 h1:FpL4/758/diKwqbytU0prpuiu60fgXKUWCpDJtApclU= -github.com/aws/aws-sdk-go-v2/config v1.32.17/go.mod h1:OXqUMzgXytfoF9JaKkhrOYsyh72t9G+MJH8mMRaexOE= -github.com/aws/aws-sdk-go-v2/credentials v1.19.16 h1:r3RJBuU7X9ibt8RHbMjWE6y60QbKBiII6wSrXnapxSU= -github.com/aws/aws-sdk-go-v2/credentials v1.19.16/go.mod h1:6cx7zqDENJDbBIIWX6P8s0h6hqHC8Avbjh9Dseo27ug= +github.com/aws/aws-sdk-go-v2/config v1.32.18 h1:Hcia46bxhGgF3BaSnG8nSNCWmqTK6bj9xN9/FJ3WK6Q= +github.com/aws/aws-sdk-go-v2/config v1.32.18/go.mod h1:zEjCAYmxqDadH1WX8CdBvmLKhUEUVFgKRQG38zjDmrY= +github.com/aws/aws-sdk-go-v2/credentials v1.19.17 h1:gP2nkGsS+KMvF/jfFz2Vv2qiiOqWKyPACSzPsqHgoW8= +github.com/aws/aws-sdk-go-v2/credentials v1.19.17/go.mod h1:Bsew3S/moG5iT77giPj1q8wb/s0RE5/QfH+ASjYtuQc= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 h1:UuSfcORqNSz/ey3VPRS8TcVH2Ikf0/sC+Hdj400QI6U= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23/go.mod h1:+G/OSGiOFnSOkYloKj/9M35s74LgVAdJBSD5lsFfqKg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 h1:GpT/TrnBYuE5gan2cZbTtvP+JlHsutdmlV2YfEyNde0= @@ -28,8 +28,8 @@ github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 h1:TdJ+HdzOBhU8+iVAOGUTU63VX github.com/aws/aws-sdk-go-v2/service/signin v1.0.11/go.mod h1:R82ZRExE/nheo0N+T8zHPcLRTcH8MGsnR3BiVGX0TwI= github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 h1:7byT8HUWrgoRp6sXjxtZwgOKfhss5fW6SkLBtqzgRoE= github.com/aws/aws-sdk-go-v2/service/sso v1.30.17/go.mod h1:xNWknVi4Ezm1vg1QsB/5EWpAJURq22uqd38U8qKvOJc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 h1:+1Kl1zx6bWi4X7cKi3VYh29h8BvsCoHQEQ6ST9X8w7w= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 h1:nDARhv/oF55bcxF7rCI/4PDxOKnVXVWwDuDwCs2I2SQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg= github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 h1:F/M5Y9I3nwr2IEpshZgh1GeHpOItExNM9L1euNuh/fk= github.com/aws/aws-sdk-go-v2/service/sts v1.42.1/go.mod h1:mTNxImtovCOEEuD65mKW7DCsL+2gjEH+RPEAexAzAio= github.com/aws/smithy-go v1.25.1 h1:J8ERsGSU7d+aCmdQur5Txg6bVoYelvQJgtZehD12GkI= diff --git a/plugins/gcp/go.mod b/plugins/gcp/go.mod index 041eb77e6..f9b52cc6d 100644 --- a/plugins/gcp/go.mod +++ b/plugins/gcp/go.mod @@ -1,12 +1,12 @@ module github.com/utmstack/UTMStack/plugins/gcp -go 1.25.5 +go 1.25.8 require ( cloud.google.com/go/pubsub v1.50.2 github.com/google/uuid v1.6.0 github.com/threatwinds/go-sdk v1.1.21 - google.golang.org/api v0.280.0 + google.golang.org/api v0.282.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) @@ -39,7 +39,7 @@ require ( github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/cel-go v0.27.0 // indirect github.com/google/s2a-go v0.1.9 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.15 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.16 // indirect github.com/googleapis/gax-go/v2 v2.22.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -68,15 +68,15 @@ require ( golang.org/x/arch v0.24.0 // indirect golang.org/x/crypto v0.51.0 // indirect golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.44.0 // indirect + golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/gcp/go.sum b/plugins/gcp/go.sum index 59dcdaf18..730c86718 100644 --- a/plugins/gcp/go.sum +++ b/plugins/gcp/go.sum @@ -107,8 +107,8 @@ github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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/googleapis/enterprise-certificate-proxy v0.3.15 h1:xolVQTEXusUcAA5UgtyRLjelpFFHWlPQ4XfWGc7MBas= -github.com/googleapis/enterprise-certificate-proxy v0.3.15/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg= +github.com/googleapis/enterprise-certificate-proxy v0.3.16 h1:F/VPrx0YPBdksZJQdCAp0WUsqnNmZpUZszzfYt0M5Dw= +github.com/googleapis/enterprise-certificate-proxy v0.3.16/go.mod h1:9Yb0eAkH/Xqhvv3zbeKf/+wMJqCeocWc6KIhDvEAuYE= github.com/googleapis/gax-go/v2 v2.22.0 h1:PjIWBpgGIVKGoCXuiCoP64altEJCj3/Ei+kSU5vlZD4= github.com/googleapis/gax-go/v2 v2.22.0/go.mod h1:irWBbALSr0Sk3qlqb9SyJ1h68WjgeFuiOzI4Rqw5+aY= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -220,8 +220,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= @@ -235,8 +235,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= @@ -251,8 +251,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.280.0 h1:F4OfEHZhZh6a7uTufJAXXVd/2TQ8EjM4vZH+jX/vFYk= -google.golang.org/api v0.280.0/go.mod h1:oGKmPZRDoD3vdkf6MA7F4VNkR1rxCiuaPSkhsf3EolU= +google.golang.org/api v0.282.0 h1:WmJiSVqUnKqJCpJOx7YADbXaC+9DDsnGSfllFSj7R2I= +google.golang.org/api v0.282.0/go.mod h1:6Wssta4c5n9qHq5CBhmlai5h/PUa1djdDAIhYEHyvcM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -262,8 +262,8 @@ google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgn google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 h1:seT2EwLWM78plQ7wcDfuWBc/4FAEAXDDiaSol4ku4qo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 h1:PvEgGJf9C/1u5CHkInMg7UFYYUoiaQmW2LbtH0pjB78= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/plugins/modules-config/go.mod b/plugins/modules-config/go.mod index bc168e49c..3e9aef7b5 100644 --- a/plugins/modules-config/go.mod +++ b/plugins/modules-config/go.mod @@ -1,21 +1,21 @@ module github.com/utmstack/UTMStack/plugins/modules-config -go 1.25.5 +go 1.25.8 require ( cloud.google.com/go/pubsub v1.50.2 github.com/AtlasInsideCorp/AtlasInsideAES v1.0.0 github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2 v2.0.2 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.7.0 - github.com/aws/aws-sdk-go-v2/config v1.32.17 - github.com/aws/aws-sdk-go-v2/credentials v1.19.16 + github.com/aws/aws-sdk-go-v2/config v1.32.18 + github.com/aws/aws-sdk-go-v2/credentials v1.19.17 github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 github.com/crowdstrike/gofalcon v0.20.1 github.com/gin-gonic/gin v1.12.0 github.com/threatwinds/go-sdk v1.1.21 golang.org/x/sync v0.20.0 - google.golang.org/api v0.280.0 + google.golang.org/api v0.282.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) @@ -42,7 +42,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 // indirect github.com/aws/smithy-go v1.25.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/bytedance/gopkg v0.1.3 // indirect @@ -86,7 +86,7 @@ require ( github.com/google/cel-go v0.27.0 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.15 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.16 // indirect github.com/googleapis/gax-go/v2 v2.22.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -120,14 +120,14 @@ require ( golang.org/x/arch v0.24.0 // indirect golang.org/x/crypto v0.51.0 // indirect golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect - golang.org/x/sys v0.44.0 // indirect + golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/modules-config/go.sum b/plugins/modules-config/go.sum index 9b9c9950b..7028f3a99 100644 --- a/plugins/modules-config/go.sum +++ b/plugins/modules-config/go.sum @@ -46,10 +46,10 @@ github.com/aws/aws-sdk-go-v2 v1.41.7 h1:DWpAJt66FmnnaRIOT/8ASTucrvuDPZASqhhLey6t github.com/aws/aws-sdk-go-v2 v1.41.7/go.mod h1:4LAfZOPHNVNQEckOACQx60Y8pSRjIkNZQz1w92xpMJc= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 h1:gx1AwW1Iyk9Z9dD9F4akX5gnN3QZwUB20GGKH/I+Rho= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10/go.mod h1:qqY157uZoqm5OXq/amuaBJyC9hgBCBQnsaWnPe905GY= -github.com/aws/aws-sdk-go-v2/config v1.32.17 h1:FpL4/758/diKwqbytU0prpuiu60fgXKUWCpDJtApclU= -github.com/aws/aws-sdk-go-v2/config v1.32.17/go.mod h1:OXqUMzgXytfoF9JaKkhrOYsyh72t9G+MJH8mMRaexOE= -github.com/aws/aws-sdk-go-v2/credentials v1.19.16 h1:r3RJBuU7X9ibt8RHbMjWE6y60QbKBiII6wSrXnapxSU= -github.com/aws/aws-sdk-go-v2/credentials v1.19.16/go.mod h1:6cx7zqDENJDbBIIWX6P8s0h6hqHC8Avbjh9Dseo27ug= +github.com/aws/aws-sdk-go-v2/config v1.32.18 h1:Hcia46bxhGgF3BaSnG8nSNCWmqTK6bj9xN9/FJ3WK6Q= +github.com/aws/aws-sdk-go-v2/config v1.32.18/go.mod h1:zEjCAYmxqDadH1WX8CdBvmLKhUEUVFgKRQG38zjDmrY= +github.com/aws/aws-sdk-go-v2/credentials v1.19.17 h1:gP2nkGsS+KMvF/jfFz2Vv2qiiOqWKyPACSzPsqHgoW8= +github.com/aws/aws-sdk-go-v2/credentials v1.19.17/go.mod h1:Bsew3S/moG5iT77giPj1q8wb/s0RE5/QfH+ASjYtuQc= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 h1:UuSfcORqNSz/ey3VPRS8TcVH2Ikf0/sC+Hdj400QI6U= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23/go.mod h1:+G/OSGiOFnSOkYloKj/9M35s74LgVAdJBSD5lsFfqKg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 h1:GpT/TrnBYuE5gan2cZbTtvP+JlHsutdmlV2YfEyNde0= @@ -68,8 +68,8 @@ github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 h1:TdJ+HdzOBhU8+iVAOGUTU63VX github.com/aws/aws-sdk-go-v2/service/signin v1.0.11/go.mod h1:R82ZRExE/nheo0N+T8zHPcLRTcH8MGsnR3BiVGX0TwI= github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 h1:7byT8HUWrgoRp6sXjxtZwgOKfhss5fW6SkLBtqzgRoE= github.com/aws/aws-sdk-go-v2/service/sso v1.30.17/go.mod h1:xNWknVi4Ezm1vg1QsB/5EWpAJURq22uqd38U8qKvOJc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 h1:+1Kl1zx6bWi4X7cKi3VYh29h8BvsCoHQEQ6ST9X8w7w= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 h1:nDARhv/oF55bcxF7rCI/4PDxOKnVXVWwDuDwCs2I2SQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg= github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 h1:F/M5Y9I3nwr2IEpshZgh1GeHpOItExNM9L1euNuh/fk= github.com/aws/aws-sdk-go-v2/service/sts v1.42.1/go.mod h1:mTNxImtovCOEEuD65mKW7DCsL+2gjEH+RPEAexAzAio= github.com/aws/smithy-go v1.25.1 h1:J8ERsGSU7d+aCmdQur5Txg6bVoYelvQJgtZehD12GkI= @@ -223,8 +223,8 @@ github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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/googleapis/enterprise-certificate-proxy v0.3.15 h1:xolVQTEXusUcAA5UgtyRLjelpFFHWlPQ4XfWGc7MBas= -github.com/googleapis/enterprise-certificate-proxy v0.3.15/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg= +github.com/googleapis/enterprise-certificate-proxy v0.3.16 h1:F/VPrx0YPBdksZJQdCAp0WUsqnNmZpUZszzfYt0M5Dw= +github.com/googleapis/enterprise-certificate-proxy v0.3.16/go.mod h1:9Yb0eAkH/Xqhvv3zbeKf/+wMJqCeocWc6KIhDvEAuYE= github.com/googleapis/gax-go/v2 v2.22.0 h1:PjIWBpgGIVKGoCXuiCoP64altEJCj3/Ei+kSU5vlZD4= github.com/googleapis/gax-go/v2 v2.22.0/go.mod h1:irWBbALSr0Sk3qlqb9SyJ1h68WjgeFuiOzI4Rqw5+aY= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -350,8 +350,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= @@ -365,8 +365,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= @@ -381,8 +381,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.280.0 h1:F4OfEHZhZh6a7uTufJAXXVd/2TQ8EjM4vZH+jX/vFYk= -google.golang.org/api v0.280.0/go.mod h1:oGKmPZRDoD3vdkf6MA7F4VNkR1rxCiuaPSkhsf3EolU= +google.golang.org/api v0.282.0 h1:WmJiSVqUnKqJCpJOx7YADbXaC+9DDsnGSfllFSj7R2I= +google.golang.org/api v0.282.0/go.mod h1:6Wssta4c5n9qHq5CBhmlai5h/PUa1djdDAIhYEHyvcM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -392,8 +392,8 @@ google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgn google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 h1:seT2EwLWM78plQ7wcDfuWBc/4FAEAXDDiaSol4ku4qo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 h1:PvEgGJf9C/1u5CHkInMg7UFYYUoiaQmW2LbtH0pjB78= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From a9d5d3e18378a5453d999aab66a0706c7c344549 Mon Sep 17 00:00:00 2001 From: Osmany Montero Date: Wed, 3 Jun 2026 15:39:09 +0100 Subject: [PATCH 15/47] fix(deps): patch 5 Dependabot vulnerabilities (2 critical, 1 high, 2 medium) (#2103) - google.golang.org/grpc: 1.78.0 -> 1.79.3 (GHSA-p77j-4mvh-x3m3, critical) - github.com/jackc/pgx/v5: 5.8.0 -> 5.9.2 (GHSA-9jj7-4m8r-rfcm critical, GHSA-j88v-2chj-qfwx low) - go.opentelemetry.io/otel: 1.39.0 -> 1.41.0 (GHSA-mh2q-q3fh-2475, high) - com.itextpdf:itext7-core: 7.1.7 -> 7.2.0 (GHSA-hhh6-cm2m-3fhc, GHSA-8c9h-4q7g-fp7h, GHSA-c32g-2mgr-cfq7, medium x3) - org.postgresql:postgresql: 42.7.2 -> 42.7.11 (GHSA-98qh-xjc8-98pq, high) Signed-off-by: Osmany Montero --- agent-manager/go.mod | 2 +- agent-manager/go.sum | 4 +- backend/pom.xml | 2 +- installer/go.mod | 22 +++++----- installer/go.sum | 60 +++++++++++++------------- plugins/compliance-orchestrator/go.mod | 2 +- plugins/compliance-orchestrator/go.sum | 26 +++++------ user-auditor/pom.xml | 2 +- 8 files changed, 60 insertions(+), 60 deletions(-) diff --git a/agent-manager/go.mod b/agent-manager/go.mod index aca2a4133..94b393864 100644 --- a/agent-manager/go.mod +++ b/agent-manager/go.mod @@ -29,7 +29,7 @@ require ( github.com/goccy/go-yaml v1.19.2 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.8.0 // indirect + github.com/jackc/pgx/v5 v5.9.2 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect diff --git a/agent-manager/go.sum b/agent-manager/go.sum index ba8880d00..747140f19 100644 --- a/agent-manager/go.sum +++ b/agent-manager/go.sum @@ -47,8 +47,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.8.0 h1:TYPDoleBBme0xGSAX3/+NujXXtpZn9HBONkQC7IEZSo= -github.com/jackc/pgx/v5 v5.8.0/go.mod h1:QVeDInX2m9VyzvNeiCJVjCkNFqzsNb43204HshNSZKw= +github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw= +github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= diff --git a/backend/pom.xml b/backend/pom.xml index 80dde92ed..a581ec3ec 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -269,7 +269,7 @@ com.itextpdf itext7-core - 7.1.7 + 7.2.0 pom diff --git a/installer/go.mod b/installer/go.mod index 9681fc7de..62dbbfd4c 100644 --- a/installer/go.mod +++ b/installer/go.mod @@ -66,21 +66,19 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect - go.opentelemetry.io/otel v1.39.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.39.0 // indirect - go.opentelemetry.io/otel/metric v1.39.0 // indirect - go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/otel v1.41.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.41.0 // indirect + go.opentelemetry.io/otel/metric v1.41.0 // indirect + go.opentelemetry.io/otel/sdk v1.41.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.41.0 // indirect + go.opentelemetry.io/otel/trace v1.41.0 // indirect go.uber.org/mock v0.6.0 // 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.45.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/crypto v0.48.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.44.0 // indirect + golang.org/x/text v0.34.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.41.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/grpc v1.78.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gotest.tools/v3 v3.5.2 // indirect diff --git a/installer/go.sum b/installer/go.sum index 6bde1c1f3..5df62f23d 100644 --- a/installer/go.sum +++ b/installer/go.sum @@ -74,8 +74,8 @@ github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5 h1:xhMrHhTJ6zxu3gA4en github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= 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/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kardianos/service v1.2.4 h1:XNlGtZOYNx2u91urOdg/Kfmc+gfmuIo1Dd3rEi2OgBk= @@ -166,20 +166,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= -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/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.39.0 h1:Ckwye2FpXkYgiHX7fyVrN1uA/UYd9ounqqTuSNAv0k4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.39.0/go.mod h1:teIFJh5pW2y+AN7riv6IBPX2DuesS3HgP39mwOspKwU= -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.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.41.0 h1:inYW9ZhgqiDqh6BioM7DVHHzEGVq76Db5897WLGZ5Go= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.41.0/go.mod h1:Izur+Wt8gClgMJqO/cZ8wdeeMryJ/xxiOVgFSSfpDTY= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= @@ -188,32 +188,32 @@ 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/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= 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/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= 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/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -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.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/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= 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/plugins/compliance-orchestrator/go.mod b/plugins/compliance-orchestrator/go.mod index 3cdc68db7..978ffa250 100644 --- a/plugins/compliance-orchestrator/go.mod +++ b/plugins/compliance-orchestrator/go.mod @@ -47,7 +47,7 @@ require ( golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260114163908-3f89685c29c3 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 // indirect - google.golang.org/grpc v1.78.0 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/plugins/compliance-orchestrator/go.sum b/plugins/compliance-orchestrator/go.sum index a247b315a..dc22fd644 100644 --- a/plugins/compliance-orchestrator/go.sum +++ b/plugins/compliance-orchestrator/go.sum @@ -8,6 +8,8 @@ github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uS 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= @@ -111,16 +113,16 @@ 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.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +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.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= @@ -146,8 +148,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260114163908-3f89685c29c3 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260114163908-3f89685c29c3/go.mod h1:dd646eSK+Dk9kxVBl1nChEOhJPtMXriCcVb4x3o6J+E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 h1:C4WAdL+FbjnGlpp2S+HMVhBeCq2Lcib4xZqfPNF6OoQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= 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/user-auditor/pom.xml b/user-auditor/pom.xml index 84e566434..0475eec7b 100644 --- a/user-auditor/pom.xml +++ b/user-auditor/pom.xml @@ -43,7 +43,7 @@ org.postgresql postgresql - 42.7.2 + 42.7.11 From aaaf34a3c7930dd6c6f3002d007d74efb95e1420 Mon Sep 17 00:00:00 2001 From: Osmany Montero Date: Wed, 3 Jun 2026 16:00:13 +0100 Subject: [PATCH 16/47] fix(deps): upgrade golang.org/x/sys from v0.44.0 to v0.45.0 --- installer/go.mod | 2 +- installer/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/installer/go.mod b/installer/go.mod index 62dbbfd4c..793aa0c58 100644 --- a/installer/go.mod +++ b/installer/go.mod @@ -76,7 +76,7 @@ require ( golang.org/x/arch v0.23.0 // indirect golang.org/x/crypto v0.48.0 // indirect golang.org/x/net v0.50.0 // indirect - golang.org/x/sys v0.44.0 // indirect + golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.34.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/installer/go.sum b/installer/go.sum index 5df62f23d..7aa7b509f 100644 --- a/installer/go.sum +++ b/installer/go.sum @@ -200,8 +200,8 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= From a21ec9daffb79a37ff377e9bb5d1d34f5d6784f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Thu, 4 Jun 2026 08:53:27 -0600 Subject: [PATCH 17/47] fix[frontend](alerts-view): add a duplication avoid on alert filter fields count (#2127) --- .../alert-generic-filter.component.ts | 74 ++++++++++--------- .../elasticsearch-index.service.ts | 15 +++- 2 files changed, 54 insertions(+), 35 deletions(-) diff --git a/frontend/src/app/data-management/alert-management/shared/components/filters/alert-generic-filter/alert-generic-filter.component.ts b/frontend/src/app/data-management/alert-management/shared/components/filters/alert-generic-filter/alert-generic-filter.component.ts index 2d8d027e3..19dfeb5ec 100644 --- a/frontend/src/app/data-management/alert-management/shared/components/filters/alert-generic-filter/alert-generic-filter.component.ts +++ b/frontend/src/app/data-management/alert-management/shared/components/filters/alert-generic-filter/alert-generic-filter.component.ts @@ -1,6 +1,6 @@ import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core'; import {Subject} from 'rxjs'; -import {takeUntil} from 'rxjs/operators'; +import {debounceTime, distinctUntilChanged, switchMap, takeUntil} from 'rxjs/operators'; import {ALERT_TAGS_FIELD} from '../../../../../../shared/constants/alert/alert-field.constant'; import {ALERT_INDEX_PATTERN} from '../../../../../../shared/constants/main-index-pattern.constant'; import {ElasticDataTypesEnum} from '../../../../../../shared/enums/elastic-data-types.enum'; @@ -30,6 +30,7 @@ export class AlertGenericFilterComponent implements OnInit, OnDestroy { filter: ElasticFilterType; sort: { orderByCount: boolean, sortAsc: boolean } = {orderByCount: true, sortAsc: false}; destroy$: Subject = new Subject(); + private fetchRequest$ = new Subject(); constructor(private elasticSearchIndexService: ElasticSearchIndexService, private alertFiltersBehavior: AlertFiltersBehavior, @@ -37,10 +38,39 @@ export class AlertGenericFilterComponent implements OnInit, OnDestroy { } ngOnInit() { - // this.getFieldValues(); - /** - * If filter is tags subscribe to changes to reload data on add new tag on alert - */ + this.fetchRequest$ + .pipe( + debounceTime(300), + switchMap(() => { + const field = this.setFieldKeyword(); + const filters = this.activeFilters + .filter(value => !value.field.includes(field)); + if (this.search !== undefined && this.search !== '') { + filters.push({ + field: this.fieldFilter.field, + operator: ElasticOperatorsEnum.CONTAIN, + value: this.search + }); + } + const req = { + field, + filters, + index: ALERT_INDEX_PATTERN, + orderByCount: this.sort.orderByCount, + sortAsc: this.sort.sortAsc, + top: this.top + }; + return this.elasticSearchIndexService.getValuesWithCount(req); + }), + takeUntil(this.destroy$) + ) + .subscribe(response => { + this.fieldValues = response.body; + this.loading = false; + this.searching = false; + this.loadingMore = false; + }); + if (this.fieldFilter.field === ALERT_TAGS_FIELD) { this.alertUpdateTagBehavior.$tagRefresh .pipe(takeUntil(this.destroy$)) @@ -50,9 +80,6 @@ export class AlertGenericFilterComponent implements OnInit, OnDestroy { } }); } - /** - * Reset all values of selected filter - */ this.alertFiltersBehavior.$resetFilter .pipe(takeUntil(this.destroy$)) .subscribe(reset => { @@ -74,7 +101,11 @@ export class AlertGenericFilterComponent implements OnInit, OnDestroy { } }); this.alertFiltersBehavior.$filters - .pipe(takeUntil(this.destroy$)) + .pipe( + debounceTime(150), + distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), + takeUntil(this.destroy$) + ) .subscribe((filters: ElasticFilterType[]) => { if (filters) { this.activeFilters = filters; @@ -101,30 +132,7 @@ export class AlertGenericFilterComponent implements OnInit, OnDestroy { } getFieldValues() { - const field = this.setFieldKeyword(); - const filters = this.activeFilters - .filter(value => !value.field.includes(field)); - if (this.search !== undefined && this.search !== '') { - filters.push({ - field: this.fieldFilter.field, - operator: ElasticOperatorsEnum.CONTAIN, - value: this.search - }); - } - const req = { - field, - filters, - index: ALERT_INDEX_PATTERN, - orderByCount: this.sort.orderByCount, - sortAsc: this.sort.sortAsc, - top: this.top - }; - this.elasticSearchIndexService.getValuesWithCount(req).subscribe(response => { - this.fieldValues = response.body; - this.loading = false; - this.searching = false; - this.loadingMore = false; - }); + this.fetchRequest$.next(); } setFieldKeyword(): string { diff --git a/frontend/src/app/shared/services/elasticsearch/elasticsearch-index.service.ts b/frontend/src/app/shared/services/elasticsearch/elasticsearch-index.service.ts index 0f7f38755..ea1ccbf67 100644 --- a/frontend/src/app/shared/services/elasticsearch/elasticsearch-index.service.ts +++ b/frontend/src/app/shared/services/elasticsearch/elasticsearch-index.service.ts @@ -1,16 +1,18 @@ import {HttpClient, HttpResponse} from '@angular/common/http'; import {Injectable} from '@angular/core'; -import {Observable} from 'rxjs'; +import {Observable, Subscription, Subject} from 'rxjs'; import {SERVER_API_URL} from '../../../app.constants'; import {ElasticSearchFieldInfoType} from '../../types/elasticsearch/elastic-search-field-info.type'; import {ElasticsearchIndexType} from '../../types/elasticsearch/elasticsearch-index.type'; import {createRequestOption} from '../../util/request-util'; +import { finalize, shareReplay } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class ElasticSearchIndexService { public resourceUrl = SERVER_API_URL + 'api/elasticsearch/'; + private inFlightRequests = new Map>(); constructor(private http: HttpClient) { } @@ -40,7 +42,16 @@ export class ElasticSearchIndexService { } getValuesWithCount(rq) { - return this.http.post(this.resourceUrl + 'property/values-with-count', rq, {observe: 'response'}); + const key = JSON.stringify(rq); + let req = this.inFlightRequests.get(key); + if (!req) { + req = this.http.post(this.resourceUrl + 'property/values-with-count', rq, {observe: 'response'}).pipe( + finalize(() => this.inFlightRequests.delete(key)), + shareReplay(1) + ); + this.inFlightRequests.set(key, req); + } + return req; } deleteIndexes(indexes: string[]) { From 368721aadbec679eae8593104e177c8299c47a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20L=20Qui=C3=B1ones=20Rojas?= <73146718+JocLRojas@users.noreply.github.com> Date: Tue, 9 Jun 2026 17:14:22 +0300 Subject: [PATCH 18/47] refactor(rules): drop "now-" prefix from within field (#2176) --- .../bitdefender_gz/av_console_lateral_movement.yml | 2 +- rules/antivirus/bitdefender_gz/av_policy_override.yml | 2 +- .../bitdefender_gz/malware_outbreak_multiple_hosts.yml | 2 +- .../multiple_malware_from_single_source.yml | 2 +- .../antivirus/bitdefender_gz/network_threat_detection.yml | 4 ++-- .../bitdefender_gz/ransomware_behavior_detection.yml | 2 +- .../antivirus/bitdefender_gz/usb_malware_propagation.yml | 2 +- .../advanced_threat_tactic_identification.yml | 2 +- .../deceptive-bytes/data_theft_attempt_indicators.yml | 2 +- .../deceptive-bytes/deception_token_access_patterns.yml | 2 +- .../deceptive-bytes/decoy_share_access_monitoring.yml | 2 +- .../deceptive-bytes/honey_table_query_detection.yml | 2 +- .../deceptive-bytes/ransomware_behavior_patterns.yml | 2 +- .../deceptive-bytes/zero_day_behavior_patterns.yml | 2 +- .../esmc-eset/advanced_heuristic_detection_triggers.yml | 2 +- rules/antivirus/esmc-eset/eset_console_abuse.yml | 2 +- rules/antivirus/esmc-eset/eset_quarantine_failures.yml | 2 +- rules/antivirus/kaspersky/data_exfiltration_attempts.yml | 2 +- .../antivirus/kaspersky/kaspersky_ransomware_behavior.yml | 2 +- rules/antivirus/kaspersky/lateral_movement_indicators.yml | 2 +- rules/antivirus/kaspersky/suspicious_network_activity.yml | 2 +- rules/cisco/asa/ips_signature_matches.yml | 2 +- rules/cisco/asa/multiple_failed_vpn_attempts.yml | 8 ++++---- rules/cisco/cs_switch/arp_poisoning_detection.yml | 2 +- rules/cisco/cs_switch/mac_address_spoofing.yml | 2 +- rules/cisco/firepower/c2_nonstandard_port.yml | 2 +- rules/cisco/meraki/meraki_vpn_brute_force.yml | 2 +- rules/cloud/aws/aws/aws_ecs_credential_theft.yml | 2 +- rules/cloud/aws/aws/aws_golden_saml_attack.yml | 6 +++--- rules/cloud/aws/aws/aws_securityhub_finding_evasion.yml | 2 +- rules/cloud/aws/aws/aws_ssm_sendcommand_abuse.yml | 2 +- rules/cloud/aws/aws/aws_sso_suspicious_activities.yml | 2 +- rules/cloud/aws/aws/cloudformation_stack_deletion.yml | 2 +- rules/cloud/aws/aws/console_login_impossible_travel.yml | 2 +- rules/cloud/aws/aws/cross_account_access_anomalies.yml | 2 +- rules/cloud/aws/aws/iam_backdoor_creation_attempts.yml | 2 +- rules/cloud/aws/aws/iam_privilege_escalation_paths.yml | 2 +- rules/cloud/aws/aws/lambda_privilege_escalation.yml | 2 +- rules/cloud/aws/aws/mass_resource_deletion.yml | 2 +- rules/cloud/aws/aws/route53_dns_hijacking.yml | 2 +- rules/cloud/aws/aws/s3_bulk_data_exfiltration.yml | 2 +- rules/cloud/aws/aws/secrets_manager_suspicious_access.yml | 4 ++-- rules/cloud/aws/aws/security_group_modifications.yml | 2 +- rules/cloud/aws/aws/ssm_session_abuse.yml | 2 +- rules/cloud/aws/aws/sts_token_abuse.yml | 2 +- rules/cloud/aws/aws/unusual_api_call_patterns.yml | 2 +- rules/cloud/aws/aws/vpc_flow_log_anomalies.yml | 2 +- .../credential_access_aws_iam_assume_role_brute_force.yml | 2 +- ...credential_access_root_console_failure_brute_force.yml | 2 +- rules/cloud/azure/aks_security_threats.yml | 2 +- rules/cloud/azure/app_registration_abuse.yml | 2 +- rules/cloud/azure/application_gateway_waf_alerts.yml | 2 +- rules/cloud/azure/azure_ad_password_spray.yml | 2 +- rules/cloud/azure/azure_bulk_role_changes.yml | 2 +- rules/cloud/azure/azure_kubernetes_secret_access.yml | 2 +- rules/cloud/azure/azure_laps_credential_dump.yml | 2 +- rules/cloud/azure/azure_ropc_authentication.yml | 2 +- rules/cloud/azure/key_vault_access_spikes.yml | 2 +- rules/cloud/azure/managed_identity_abuse.yml | 2 +- rules/cloud/azure/pim_role_activation_abuse.yml | 2 +- rules/cloud/google/gcp_bigquery_exfiltration.yml | 2 +- rules/cloud/google/gcp_custom_role_creation.yml | 2 +- rules/cloud/google/gcp_probable_password_guess.yml | 2 +- rules/cloud/google/gcp_secret_manager_access.yml | 2 +- rules/cloud/google/gcp_service_account_impersonation.yml | 2 +- .../cloud/google/service_account_key_creation_spikes.yml | 2 +- ...hentication_failures_(possible_brute_force_attack).yml | 2 +- rules/fortinet/fortinet/admin_account_compromise.yml | 2 +- rules/fortinet/fortinet/antivirus_outbreak_detection.yml | 2 +- rules/fortinet/fortinet/dlp_data_exfiltration.yml | 2 +- rules/fortinet/fortinet/fortigate_vpn_brute_force.yml | 2 +- rules/fortinet/fortinet/ips_critical_severity_events.yml | 2 +- .../fortinet/fortiweb/authentication_bypass_attempts.yml | 2 +- .../fortinet/fortiweb/file_upload_security_violations.yml | 2 +- rules/fortinet/fortiweb/fortiweb_sqli_detection.yml | 2 +- rules/fortinet/fortiweb/fortiweb_ssrf_detection.yml | 2 +- rules/fortinet/fortiweb/owasp_top10_violations.yml | 2 +- .../fortiweb/web_application_attacks_detection.yml | 2 +- rules/generic/generic/cross_source_lateral_movement.yml | 2 +- rules/github/action_secret_access.yml | 2 +- rules/github/codeowners_modification.yml | 2 +- rules/github/dependabot_config_poisoning.yml | 2 +- rules/github/mass_repository_cloning.yml | 2 +- rules/ibm/ibm_aix/aix_hmc_access.yml | 2 +- rules/ibm/ibm_aix/aix_nim_abuse.yml | 2 +- rules/ibm/ibm_as_400/as400_ifs_access.yml | 2 +- rules/ibm/ibm_as_400/as400_library_list_manipulation.yml | 2 +- rules/ibm/ibm_as_400/as400_remote_command.yml | 2 +- rules/ibm/ibm_as_400/as400_sql_injection.yml | 2 +- rules/json/json-input/deserialization_attacks.yml | 2 +- rules/json/json-input/graphql_abuse.yml | 2 +- rules/json/json-input/json_injection_attempts.yml | 2 +- rules/json/json-input/mass_assignment_attack.yml | 2 +- rules/json/json-input/nosql_injection_json.yml | 2 +- rules/json/json-input/prototype_pollution_attempts.yml | 2 +- rules/linux/bruteforce_attack.yml | 4 ++-- rules/linux/rhel_family/rhel_kernel_exploits.yml | 2 +- rules/macos/endpoint_security_bypass.yml | 2 +- rules/macos/macos_ransomware_indicators.yml | 2 +- rules/mikrotik/mikrotik_fw/dns_cache_poisoning.yml | 2 +- .../mikrotik_fw/routeros_brute_force_attempts.yml | 2 +- rules/mikrotik/mikrotik_fw/ssh_brute_force_attempts.yml | 2 +- rules/netflow/beaconing_behavior_detection.yml | 2 +- rules/netflow/data_exfiltration_indicators.yml | 2 +- rules/netflow/ddos_traffic_patterns.yml | 2 +- rules/netflow/netflow_cryptomining_traffic.yml | 2 +- rules/netflow/netflow_doh_detection.yml | 2 +- rules/netflow/netflow_icmp_tunnel.yml | 2 +- rules/netflow/netflow_internal_scanning.yml | 2 +- rules/netflow/netflow_lateral_movement_smb_rdp.yml | 4 ++-- rules/netflow/netflow_vpn_unusual_destinations.yml | 2 +- rules/netflow/port_scanning_patterns.yml | 2 +- rules/netflow/tor_usage_detection.yml | 2 +- rules/nids/suricata/base64_dns_queries.yml | 2 +- rules/nids/suricata/base64_encoded_user_agent.yml | 2 +- rules/nids/suricata/cobalt_strike_dns_beacon.yml | 2 +- rules/nids/suricata/cobalt_strike_malleable_c2.yml | 2 +- rules/nids/suricata/command_and_control_traffic.yml | 2 +- rules/nids/suricata/covert_channel_detection.yml | 2 +- rules/nids/suricata/data_exfiltration_patterns.yml | 2 +- rules/nids/suricata/ddos_attack_patterns.yml | 2 +- rules/nids/suricata/dns_tunneling_detection.yml | 2 +- rules/nids/suricata/exploit_attempt_detection.yml | 2 +- rules/nids/suricata/hacktool_user_agents.yml | 2 +- rules/nids/suricata/icmp_tunneling_detection.yml | 2 +- rules/nids/suricata/lateral_movement_indicators.yml | 2 +- rules/nids/suricata/malware_callbacks.yml | 2 +- rules/nids/suricata/nids_ssh_anomalies.yml | 2 +- rules/nids/suricata/nids_tls_certificate_anomalies.yml | 2 +- rules/nids/suricata/nkn_blockchain_c2.yml | 2 +- rules/nids/suricata/port_scan_detection.yml | 4 ++-- rules/nids/suricata/rclone_data_exfiltration.yml | 2 +- rules/nids/suricata/threat_intelligence_iocs.yml | 2 +- rules/nids/suricata/tunneling_detection.yml | 2 +- rules/office365/anti_phishing_policy_bypasses.yml | 2 +- rules/office365/azure_ad_integration_events.yml | 2 +- rules/office365/compliance_alert_patterns.yml | 2 +- rules/office365/conditional_access_bypasses.yml | 2 +- ...s_microsoft_365_potential_password_spraying_attack.yml | 2 +- rules/office365/ediscovery_abuse.yml | 2 +- rules/office365/exchange_admin_changes.yml | 2 +- rules/office365/external_sharing_violations.yml | 2 +- rules/office365/forms_sway_phishing.yml | 2 +- rules/office365/guest_user_invitation_spikes.yml | 2 +- rules/office365/information_barriers_violations.yml | 2 +- rules/office365/mail_flow_rule_changes.yml | 2 +- rules/office365/mass_email_deletion.yml | 4 ++-- rules/office365/mfa_fatigue_push_spam.yml | 2 +- rules/office365/multi_geo_data_violations.yml | 4 ++-- rules/office365/oauth_app_anomalies.yml | 2 +- rules/office365/onedrive_mass_file_access.yml | 6 +++--- .../possible_succesfull_password_guessing_o365.yml | 2 +- rules/office365/power_apps_data_leaks.yml | 6 +++--- rules/office365/power_automate_abuse.yml | 2 +- rules/office365/power_bi_data_export.yml | 2 +- rules/office365/safe_links_click_patterns.yml | 2 +- rules/office365/sharepoint_mass_downloads.yml | 2 +- rules/office365/teams_data_exfiltration.yml | 2 +- rules/office365/teams_external_user_abuse.yml | 2 +- rules/paloalto/pa_firewall/panos_admin_brute_force.yml | 2 +- rules/paloalto/pa_firewall/panos_dns_security_alerts.yml | 2 +- rules/paloalto/pa_firewall/panos_url_filtering_blocks.yml | 2 +- .../paloalto/pa_firewall/zero_day_exploit_prevention.yml | 2 +- rules/pfsense/dns_resolver_cache_poisoning.yml | 2 +- rules/pfsense/pfsense_admin_brute_force.yml | 2 +- rules/pfsense/snort_suricata_ids_alerts.yml | 2 +- .../sonicwall_firewall/anti_spyware_detection.yml | 2 +- rules/sonicwall/sonicwall_firewall/botnet_detection.yml | 2 +- .../sonicwall/sonicwall_firewall/capture_atp_verdicts.yml | 2 +- .../sonicwall_firewall/encrypted_threats_detection.yml | 2 +- .../sonicwall_firewall/gateway_antivirus_detection.yml | 2 +- .../sonicwall_firewall/intrusion_prevention_alert.yml | 2 +- .../sonicwall_firewall/sonicwall_admin_auth_failures.yml | 2 +- .../sonicwall_firewall/sonicwall_vpn_failures.yml | 2 +- .../sophos/sophos_central/behavioral_analysis_alerts.yml | 2 +- .../sophos/sophos_central/exploit_prevention_triggers.yml | 2 +- .../sophos_central/managed_threat_response_alerts.yml | 2 +- .../sophos_central_possible_brute_force_attack.yml | 2 +- .../sophos_central_potential_password_spraying_attack.yml | 2 +- .../advanced_threat_protection_alerts.yml | 2 +- .../sophos_password_guessing_on_administrator_account.yml | 2 +- .../sophos_xg_firewall/sophos_xg_ips_signatures.yml | 2 +- .../sophos_xg_firewall/sophos_xg_vpn_auth_failures.yml | 2 +- .../high_severity_suricata_alerts_were_detected.yml | 2 +- .../medium_severity_suricata_alerts_were_detected.yml | 2 +- rules/syslog/cef/syslog_source_impersonation.yml | 2 +- rules/syslog/cef/user_agent_anomalies.yml | 2 +- rules/vmware/vmware-esxi/vcenter_server_attacks.yml | 2 +- rules/vmware/vmware-esxi/vmware_tools_vulnerabilities.yml | 2 +- rules/vmware/vmware-esxi/vsphere_api_abuse.yml | 2 +- rules/windows/adfs_authentication_anomalies.yml | 2 +- rules/windows/asrep_roasting_detection.yml | 2 +- rules/windows/golden_ticket_detection.yml | 2 +- rules/windows/kerberoasting_detection.yml | 2 +- rules/windows/ntds_extraction_attempts.yml | 2 +- rules/windows/ransom_multiple_file_deletion.yml | 2 +- rules/windows/ransom_note_creation.yml | 2 +- rules/windows/ransom_unusual_file_extension.yml | 2 +- rules/windows/silver_ticket_detection.yml | 2 +- 199 files changed, 215 insertions(+), 215 deletions(-) diff --git a/rules/antivirus/bitdefender_gz/av_console_lateral_movement.yml b/rules/antivirus/bitdefender_gz/av_console_lateral_movement.yml index d00e35ab2..89dd478d0 100644 --- a/rules/antivirus/bitdefender_gz/av_console_lateral_movement.yml +++ b/rules/antivirus/bitdefender_gz/av_console_lateral_movement.yml @@ -35,7 +35,7 @@ afterEvents: - field: log.hostId operator: filter_term value: '{{.log.hostId}}' - within: now-30m + within: 30m count: 10 groupBy: - lastEvent.log.eventType diff --git a/rules/antivirus/bitdefender_gz/av_policy_override.yml b/rules/antivirus/bitdefender_gz/av_policy_override.yml index 62c62da1b..2cf57889c 100644 --- a/rules/antivirus/bitdefender_gz/av_policy_override.yml +++ b/rules/antivirus/bitdefender_gz/av_policy_override.yml @@ -36,7 +36,7 @@ afterEvents: - field: log.hostId operator: filter_term value: '{{.log.hostId}}' - within: now-1h + within: 1h count: 3 groupBy: - lastEvent.log.eventType diff --git a/rules/antivirus/bitdefender_gz/malware_outbreak_multiple_hosts.yml b/rules/antivirus/bitdefender_gz/malware_outbreak_multiple_hosts.yml index 2690509bf..aa26c5e52 100644 --- a/rules/antivirus/bitdefender_gz/malware_outbreak_multiple_hosts.yml +++ b/rules/antivirus/bitdefender_gz/malware_outbreak_multiple_hosts.yml @@ -41,7 +41,7 @@ afterEvents: - field: log.eventType operator: filter_term value: "AntiMalware" - within: now-2h + within: 2h count: 10 groupBy: - lastEvent.log.signatureID diff --git a/rules/antivirus/bitdefender_gz/multiple_malware_from_single_source.yml b/rules/antivirus/bitdefender_gz/multiple_malware_from_single_source.yml index a6e6e74da..9467a0d00 100644 --- a/rules/antivirus/bitdefender_gz/multiple_malware_from_single_source.yml +++ b/rules/antivirus/bitdefender_gz/multiple_malware_from_single_source.yml @@ -47,7 +47,7 @@ afterEvents: - field: log.eventType operator: filter_term value: "AntiMalware" - within: now-1h + within: 1h count: 5 groupBy: - lastEvent.log.hostId diff --git a/rules/antivirus/bitdefender_gz/network_threat_detection.yml b/rules/antivirus/bitdefender_gz/network_threat_detection.yml index 3dd61bcdf..77deba300 100644 --- a/rules/antivirus/bitdefender_gz/network_threat_detection.yml +++ b/rules/antivirus/bitdefender_gz/network_threat_detection.yml @@ -39,7 +39,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-2h + within: 2h count: 5 or: - indexPattern: v11-log-antivirus-bitdefender-gz-* @@ -50,7 +50,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'network-sandboxing' - within: now-4h + within: 4h count: 3 groupBy: - lastEvent.log.hostId diff --git a/rules/antivirus/bitdefender_gz/ransomware_behavior_detection.yml b/rules/antivirus/bitdefender_gz/ransomware_behavior_detection.yml index 98b2f3abb..08fcc0a89 100644 --- a/rules/antivirus/bitdefender_gz/ransomware_behavior_detection.yml +++ b/rules/antivirus/bitdefender_gz/ransomware_behavior_detection.yml @@ -37,7 +37,7 @@ afterEvents: - field: log.hostId operator: filter_term value: '{{.log.hostId}}' - within: now-10m + within: 10m count: 5 groupBy: - lastEvent.log.hostId diff --git a/rules/antivirus/bitdefender_gz/usb_malware_propagation.yml b/rules/antivirus/bitdefender_gz/usb_malware_propagation.yml index 4a541b842..2b0c131e3 100644 --- a/rules/antivirus/bitdefender_gz/usb_malware_propagation.yml +++ b/rules/antivirus/bitdefender_gz/usb_malware_propagation.yml @@ -36,7 +36,7 @@ afterEvents: - field: log.hostId operator: filter_term value: '{{.log.hostId}}' - within: now-30m + within: 30m count: 5 groupBy: - lastEvent.log.eventType diff --git a/rules/antivirus/deceptive-bytes/advanced_threat_tactic_identification.yml b/rules/antivirus/deceptive-bytes/advanced_threat_tactic_identification.yml index 9bf889c95..981c1d205 100644 --- a/rules/antivirus/deceptive-bytes/advanced_threat_tactic_identification.yml +++ b/rules/antivirus/deceptive-bytes/advanced_threat_tactic_identification.yml @@ -43,7 +43,7 @@ afterEvents: - field: log.tacticName operator: filter_term value: '{{.log.tacticName}}' - within: now-15m + within: 15m count: 3 groupBy: - lastEvent.log.tacticName diff --git a/rules/antivirus/deceptive-bytes/data_theft_attempt_indicators.yml b/rules/antivirus/deceptive-bytes/data_theft_attempt_indicators.yml index 0666465e7..135e8de27 100644 --- a/rules/antivirus/deceptive-bytes/data_theft_attempt_indicators.yml +++ b/rules/antivirus/deceptive-bytes/data_theft_attempt_indicators.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.event_type operator: filter_term value: 'decoy_accessed' - within: now-2h + within: 2h count: 3 groupBy: - lastEvent.log.decoy_file diff --git a/rules/antivirus/deceptive-bytes/deception_token_access_patterns.yml b/rules/antivirus/deceptive-bytes/deception_token_access_patterns.yml index bd30bf129..6bfb2d5ef 100644 --- a/rules/antivirus/deceptive-bytes/deception_token_access_patterns.yml +++ b/rules/antivirus/deceptive-bytes/deception_token_access_patterns.yml @@ -40,7 +40,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'token_access' - within: now-1h + within: 1h count: 3 groupBy: - lastEvent.log.tokenId diff --git a/rules/antivirus/deceptive-bytes/decoy_share_access_monitoring.yml b/rules/antivirus/deceptive-bytes/decoy_share_access_monitoring.yml index beefe4961..57fb87eb2 100644 --- a/rules/antivirus/deceptive-bytes/decoy_share_access_monitoring.yml +++ b/rules/antivirus/deceptive-bytes/decoy_share_access_monitoring.yml @@ -37,7 +37,7 @@ afterEvents: - field: log.resourceType operator: filter_term value: 'network_share' - within: now-30m + within: 30m count: 3 deduplicateBy: - adversary.ip diff --git a/rules/antivirus/deceptive-bytes/honey_table_query_detection.yml b/rules/antivirus/deceptive-bytes/honey_table_query_detection.yml index 6e52fb653..c2e7d0403 100644 --- a/rules/antivirus/deceptive-bytes/honey_table_query_detection.yml +++ b/rules/antivirus/deceptive-bytes/honey_table_query_detection.yml @@ -36,7 +36,7 @@ afterEvents: - field: log.eventType operator: filter_term value: decoy_access - within: now-1h + within: 1h count: 5 groupBy: - lastEvent.log.tableName diff --git a/rules/antivirus/deceptive-bytes/ransomware_behavior_patterns.yml b/rules/antivirus/deceptive-bytes/ransomware_behavior_patterns.yml index 9ec7d4f49..01ccabb37 100644 --- a/rules/antivirus/deceptive-bytes/ransomware_behavior_patterns.yml +++ b/rules/antivirus/deceptive-bytes/ransomware_behavior_patterns.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.source_ip operator: filter_term value: '{{.log.source_ip}}' - within: now-15m + within: 15m count: 10 groupBy: - lastEvent.log.hostname diff --git a/rules/antivirus/deceptive-bytes/zero_day_behavior_patterns.yml b/rules/antivirus/deceptive-bytes/zero_day_behavior_patterns.yml index c0f321612..2c7feb007 100644 --- a/rules/antivirus/deceptive-bytes/zero_day_behavior_patterns.yml +++ b/rules/antivirus/deceptive-bytes/zero_day_behavior_patterns.yml @@ -46,7 +46,7 @@ afterEvents: - field: log.processName operator: filter_term value: '{{.log.processName}}' - within: now-30m + within: 30m count: 2 groupBy: - lastEvent.log.exploitTechnique diff --git a/rules/antivirus/esmc-eset/advanced_heuristic_detection_triggers.yml b/rules/antivirus/esmc-eset/advanced_heuristic_detection_triggers.yml index d2644981d..38fdc2c67 100644 --- a/rules/antivirus/esmc-eset/advanced_heuristic_detection_triggers.yml +++ b/rules/antivirus/esmc-eset/advanced_heuristic_detection_triggers.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.headHostname operator: filter_term value: '{{.log.headHostname}}' - within: now-30m + within: 30m count: 3 groupBy: - lastEvent.log.headHostname diff --git a/rules/antivirus/esmc-eset/eset_console_abuse.yml b/rules/antivirus/esmc-eset/eset_console_abuse.yml index ee4c1867e..102896e41 100644 --- a/rules/antivirus/esmc-eset/eset_console_abuse.yml +++ b/rules/antivirus/esmc-eset/eset_console_abuse.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.headHostname operator: filter_term value: '{{.log.headHostname}}' - within: now-30m + within: 30m count: 10 groupBy: - lastEvent.log.headHostname diff --git a/rules/antivirus/esmc-eset/eset_quarantine_failures.yml b/rules/antivirus/esmc-eset/eset_quarantine_failures.yml index 0a90fd4f4..11dc8b439 100644 --- a/rules/antivirus/esmc-eset/eset_quarantine_failures.yml +++ b/rules/antivirus/esmc-eset/eset_quarantine_failures.yml @@ -35,7 +35,7 @@ afterEvents: - field: log.headHostname operator: filter_term value: '{{.log.headHostname}}' - within: now-1h + within: 1h count: 5 groupBy: - lastEvent.log.headHostname diff --git a/rules/antivirus/kaspersky/data_exfiltration_attempts.yml b/rules/antivirus/kaspersky/data_exfiltration_attempts.yml index 1dc83d8f7..906328c90 100644 --- a/rules/antivirus/kaspersky/data_exfiltration_attempts.yml +++ b/rules/antivirus/kaspersky/data_exfiltration_attempts.yml @@ -45,7 +45,7 @@ afterEvents: - field: log.cat operator: filter_term value: NetworkThreat - within: now-30m + within: 30m count: 5 groupBy: - origin.ip diff --git a/rules/antivirus/kaspersky/kaspersky_ransomware_behavior.yml b/rules/antivirus/kaspersky/kaspersky_ransomware_behavior.yml index e17ec7ce8..c23b4a878 100644 --- a/rules/antivirus/kaspersky/kaspersky_ransomware_behavior.yml +++ b/rules/antivirus/kaspersky/kaspersky_ransomware_behavior.yml @@ -36,5 +36,5 @@ afterEvents: - field: log.src operator: filter_term value: '{{.log.src}}' - within: now-10m + within: 10m count: 3 diff --git a/rules/antivirus/kaspersky/lateral_movement_indicators.yml b/rules/antivirus/kaspersky/lateral_movement_indicators.yml index 302374d98..6a143ad55 100644 --- a/rules/antivirus/kaspersky/lateral_movement_indicators.yml +++ b/rules/antivirus/kaspersky/lateral_movement_indicators.yml @@ -41,5 +41,5 @@ afterEvents: - field: log.src operator: filter_term value: '{{.log.src}}' - within: now-2h + within: 2h count: 3 diff --git a/rules/antivirus/kaspersky/suspicious_network_activity.yml b/rules/antivirus/kaspersky/suspicious_network_activity.yml index 286f3edad..dcdad092f 100644 --- a/rules/antivirus/kaspersky/suspicious_network_activity.yml +++ b/rules/antivirus/kaspersky/suspicious_network_activity.yml @@ -46,7 +46,7 @@ afterEvents: - field: log.dstIP operator: filter_term value: '{{.log.dstIP}}' - within: now-30m + within: 30m count: 5 groupBy: - target.ip diff --git a/rules/cisco/asa/ips_signature_matches.yml b/rules/cisco/asa/ips_signature_matches.yml index a6c2ad5b0..e4ed5586a 100644 --- a/rules/cisco/asa/ips_signature_matches.yml +++ b/rules/cisco/asa/ips_signature_matches.yml @@ -35,7 +35,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - adversary.ip diff --git a/rules/cisco/asa/multiple_failed_vpn_attempts.yml b/rules/cisco/asa/multiple_failed_vpn_attempts.yml index 11a61091c..0da2846bb 100644 --- a/rules/cisco/asa/multiple_failed_vpn_attempts.yml +++ b/rules/cisco/asa/multiple_failed_vpn_attempts.yml @@ -40,7 +40,7 @@ afterEvents: - field: log.messageId operator: filter_term value: '113015' - within: now-15m + within: 15m count: 10 or: - indexPattern: v11-log-firewall-cisco-asa-* @@ -51,7 +51,7 @@ afterEvents: - field: log.messageId operator: filter_term value: '113021' - within: now-15m + within: 15m count: 10 - indexPattern: v11-log-firewall-cisco-asa-* with: @@ -61,7 +61,7 @@ afterEvents: - field: log.messageId operator: filter_term value: '109034' - within: now-15m + within: 15m count: 10 - indexPattern: v11-log-firewall-cisco-asa-* with: @@ -71,7 +71,7 @@ afterEvents: - field: log.messageId operator: filter_term value: '611102' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/cisco/cs_switch/arp_poisoning_detection.yml b/rules/cisco/cs_switch/arp_poisoning_detection.yml index b4cc5275b..04dd22d21 100644 --- a/rules/cisco/cs_switch/arp_poisoning_detection.yml +++ b/rules/cisco/cs_switch/arp_poisoning_detection.yml @@ -36,7 +36,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 5 groupBy: - adversary.ip diff --git a/rules/cisco/cs_switch/mac_address_spoofing.yml b/rules/cisco/cs_switch/mac_address_spoofing.yml index e2c5734bc..a887668ad 100644 --- a/rules/cisco/cs_switch/mac_address_spoofing.yml +++ b/rules/cisco/cs_switch/mac_address_spoofing.yml @@ -36,7 +36,7 @@ afterEvents: - field: origin.mac operator: filter_term value: '{{.origin.mac}}' - within: now-10m + within: 10m count: 3 groupBy: - adversary.mac diff --git a/rules/cisco/firepower/c2_nonstandard_port.yml b/rules/cisco/firepower/c2_nonstandard_port.yml index 113d2e4fa..c2a311f29 100644 --- a/rules/cisco/firepower/c2_nonstandard_port.yml +++ b/rules/cisco/firepower/c2_nonstandard_port.yml @@ -40,7 +40,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-1h + within: 1h count: 5 groupBy: - adversary.ip diff --git a/rules/cisco/meraki/meraki_vpn_brute_force.yml b/rules/cisco/meraki/meraki_vpn_brute_force.yml index 191cfd865..639d851fa 100644 --- a/rules/cisco/meraki/meraki_vpn_brute_force.yml +++ b/rules/cisco/meraki/meraki_vpn_brute_force.yml @@ -33,7 +33,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/cloud/aws/aws/aws_ecs_credential_theft.yml b/rules/cloud/aws/aws/aws_ecs_credential_theft.yml index 382b0a8d3..ec1265a9c 100644 --- a/rules/cloud/aws/aws/aws_ecs_credential_theft.yml +++ b/rules/cloud/aws/aws/aws_ecs_credential_theft.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: 'ecs.amazonaws.com' - within: now-30m + within: 30m count: 5 groupBy: - adversary.user diff --git a/rules/cloud/aws/aws/aws_golden_saml_attack.yml b/rules/cloud/aws/aws/aws_golden_saml_attack.yml index 72e7fbc73..ce0332159 100644 --- a/rules/cloud/aws/aws/aws_golden_saml_attack.yml +++ b/rules/cloud/aws/aws/aws_golden_saml_attack.yml @@ -34,7 +34,7 @@ afterEvents: - field: log.userIdentityAccountId operator: filter_term value: '{{.log.userIdentityAccountId}}' - within: now-24h + within: 24h count: 1 or: - indexPattern: v11-log-aws-* @@ -42,14 +42,14 @@ afterEvents: - field: log.eventName operator: filter_term value: 'UpdateSAMLProvider' - within: now-24h + within: 24h count: 1 - indexPattern: v11-log-aws-* with: - field: log.eventName operator: filter_term value: 'CreateSAMLProvider' - within: now-24h + within: 24h count: 1 groupBy: - adversary.user diff --git a/rules/cloud/aws/aws/aws_securityhub_finding_evasion.yml b/rules/cloud/aws/aws/aws_securityhub_finding_evasion.yml index e46543306..ff0058b4a 100644 --- a/rules/cloud/aws/aws/aws_securityhub_finding_evasion.yml +++ b/rules/cloud/aws/aws/aws_securityhub_finding_evasion.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: 'securityhub.amazonaws.com' - within: now-30m + within: 30m count: 5 groupBy: - adversary.user diff --git a/rules/cloud/aws/aws/aws_ssm_sendcommand_abuse.yml b/rules/cloud/aws/aws/aws_ssm_sendcommand_abuse.yml index da076f8d4..a535f49b1 100644 --- a/rules/cloud/aws/aws/aws_ssm_sendcommand_abuse.yml +++ b/rules/cloud/aws/aws/aws_ssm_sendcommand_abuse.yml @@ -36,7 +36,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: 'ssm.amazonaws.com' - within: now-30m + within: 30m count: 5 groupBy: - adversary.user diff --git a/rules/cloud/aws/aws/aws_sso_suspicious_activities.yml b/rules/cloud/aws/aws/aws_sso_suspicious_activities.yml index 1910e0e1a..1b14a9625 100644 --- a/rules/cloud/aws/aws/aws_sso_suspicious_activities.yml +++ b/rules/cloud/aws/aws/aws_sso_suspicious_activities.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: 'sso.amazonaws.com' - within: now-30m + within: 30m count: 10 groupBy: - lastEvent.log.sourceIPAddress diff --git a/rules/cloud/aws/aws/cloudformation_stack_deletion.yml b/rules/cloud/aws/aws/cloudformation_stack_deletion.yml index 33dc84440..e44a89e5d 100644 --- a/rules/cloud/aws/aws/cloudformation_stack_deletion.yml +++ b/rules/cloud/aws/aws/cloudformation_stack_deletion.yml @@ -34,7 +34,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: 'cloudformation.amazonaws.com' - within: now-30m + within: 30m count: 5 groupBy: - lastEvent.log.userIdentityAccountId diff --git a/rules/cloud/aws/aws/console_login_impossible_travel.yml b/rules/cloud/aws/aws/console_login_impossible_travel.yml index 0080164fd..ffe6be2f8 100644 --- a/rules/cloud/aws/aws/console_login_impossible_travel.yml +++ b/rules/cloud/aws/aws/console_login_impossible_travel.yml @@ -41,7 +41,7 @@ afterEvents: - field: origin.geolocation.countryCode operator: must_not_term value: '{{.origin.geolocation.countryCode}}' - within: now-30m + within: 30m count: 1 groupBy: - adversary.user diff --git a/rules/cloud/aws/aws/cross_account_access_anomalies.yml b/rules/cloud/aws/aws/cross_account_access_anomalies.yml index d24f8bc2f..2443f165c 100644 --- a/rules/cloud/aws/aws/cross_account_access_anomalies.yml +++ b/rules/cloud/aws/aws/cross_account_access_anomalies.yml @@ -40,7 +40,7 @@ afterEvents: - field: log.eventName operator: filter_term value: 'AssumeRole' - within: now-15m + within: 15m count: 15 groupBy: - lastEvent.log.responseElementsAssumedRoleUserArn diff --git a/rules/cloud/aws/aws/iam_backdoor_creation_attempts.yml b/rules/cloud/aws/aws/iam_backdoor_creation_attempts.yml index abdb36b08..fd644e9f1 100644 --- a/rules/cloud/aws/aws/iam_backdoor_creation_attempts.yml +++ b/rules/cloud/aws/aws/iam_backdoor_creation_attempts.yml @@ -33,7 +33,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: 'iam.amazonaws.com' - within: now-30m + within: 30m count: 3 groupBy: - lastEvent.log.sourceIPAddress diff --git a/rules/cloud/aws/aws/iam_privilege_escalation_paths.yml b/rules/cloud/aws/aws/iam_privilege_escalation_paths.yml index f52c89873..34d292ccc 100644 --- a/rules/cloud/aws/aws/iam_privilege_escalation_paths.yml +++ b/rules/cloud/aws/aws/iam_privilege_escalation_paths.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: iam.amazonaws.com - within: now-30m + within: 30m count: 3 groupBy: - adversary.user diff --git a/rules/cloud/aws/aws/lambda_privilege_escalation.yml b/rules/cloud/aws/aws/lambda_privilege_escalation.yml index 3f69b0fcf..d97e5ad77 100644 --- a/rules/cloud/aws/aws/lambda_privilege_escalation.yml +++ b/rules/cloud/aws/aws/lambda_privilege_escalation.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.eventName operator: filter_term value: AttachRolePolicy - within: now-1h + within: 1h count: 2 groupBy: - lastEvent.log.requestParameters.roleArn diff --git a/rules/cloud/aws/aws/mass_resource_deletion.yml b/rules/cloud/aws/aws/mass_resource_deletion.yml index 4b9a4068d..921fdb70e 100644 --- a/rules/cloud/aws/aws/mass_resource_deletion.yml +++ b/rules/cloud/aws/aws/mass_resource_deletion.yml @@ -32,7 +32,7 @@ afterEvents: - field: log.userIdentity.arn operator: filter_term value: '{{.log.userIdentity.arn}}' - within: now-10m + within: 10m count: 15 groupBy: - lastEvent.log.sourceIPAddress diff --git a/rules/cloud/aws/aws/route53_dns_hijacking.yml b/rules/cloud/aws/aws/route53_dns_hijacking.yml index c3954daa7..722103fab 100644 --- a/rules/cloud/aws/aws/route53_dns_hijacking.yml +++ b/rules/cloud/aws/aws/route53_dns_hijacking.yml @@ -35,7 +35,7 @@ afterEvents: - field: log.eventName operator: filter_term value: 'ChangeResourceRecordSets' - within: now-30m + within: 30m count: 10 groupBy: - lastEvent.log.sourceIPAddress diff --git a/rules/cloud/aws/aws/s3_bulk_data_exfiltration.yml b/rules/cloud/aws/aws/s3_bulk_data_exfiltration.yml index ad3d42693..062b26f92 100644 --- a/rules/cloud/aws/aws/s3_bulk_data_exfiltration.yml +++ b/rules/cloud/aws/aws/s3_bulk_data_exfiltration.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.eventName operator: filter_term value: GetObject - within: now-15m + within: 15m count: 100 groupBy: - adversary.user diff --git a/rules/cloud/aws/aws/secrets_manager_suspicious_access.yml b/rules/cloud/aws/aws/secrets_manager_suspicious_access.yml index e538d2538..68c7d3da8 100644 --- a/rules/cloud/aws/aws/secrets_manager_suspicious_access.yml +++ b/rules/cloud/aws/aws/secrets_manager_suspicious_access.yml @@ -33,7 +33,7 @@ afterEvents: - field: log.eventName operator: filter_term value: GetSecretValue - within: now-10m + within: 10m count: 10 - indexPattern: v11-log-aws-* with: @@ -43,7 +43,7 @@ afterEvents: - field: log.eventName operator: filter_term value: BatchGetSecretValue - within: now-10m + within: 10m count: 5 groupBy: - lastEvent.log.sourceIPAddress diff --git a/rules/cloud/aws/aws/security_group_modifications.yml b/rules/cloud/aws/aws/security_group_modifications.yml index 7850da9af..3ddb4b0af 100644 --- a/rules/cloud/aws/aws/security_group_modifications.yml +++ b/rules/cloud/aws/aws/security_group_modifications.yml @@ -45,7 +45,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: 'ec2.amazonaws.com' - within: now-30m + within: 30m count: 3 groupBy: - lastEvent.log.sourceIPAddress diff --git a/rules/cloud/aws/aws/ssm_session_abuse.yml b/rules/cloud/aws/aws/ssm_session_abuse.yml index 406f9d7a0..9a2335888 100644 --- a/rules/cloud/aws/aws/ssm_session_abuse.yml +++ b/rules/cloud/aws/aws/ssm_session_abuse.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.eventSource operator: filter_term value: ssm.amazonaws.com - within: now-30m + within: 30m count: 5 groupBy: - adversary.user diff --git a/rules/cloud/aws/aws/sts_token_abuse.yml b/rules/cloud/aws/aws/sts_token_abuse.yml index b9a9827fc..f92b5b183 100644 --- a/rules/cloud/aws/aws/sts_token_abuse.yml +++ b/rules/cloud/aws/aws/sts_token_abuse.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.sourceIPAddress operator: filter_term value: '{{.log.sourceIPAddress}}' - within: now-15m + within: 15m count: 20 groupBy: - lastEvent.log.userIdentityArn diff --git a/rules/cloud/aws/aws/unusual_api_call_patterns.yml b/rules/cloud/aws/aws/unusual_api_call_patterns.yml index 21c87dc89..69dc52ac7 100644 --- a/rules/cloud/aws/aws/unusual_api_call_patterns.yml +++ b/rules/cloud/aws/aws/unusual_api_call_patterns.yml @@ -42,7 +42,7 @@ afterEvents: - field: log.eventName operator: filter_match value: 'Describe List Get Generate' - within: now-10m + within: 10m count: 50 groupBy: - lastEvent.log.sourceIPAddress diff --git a/rules/cloud/aws/aws/vpc_flow_log_anomalies.yml b/rules/cloud/aws/aws/vpc_flow_log_anomalies.yml index 1c63f5b10..1749bec63 100644 --- a/rules/cloud/aws/aws/vpc_flow_log_anomalies.yml +++ b/rules/cloud/aws/aws/vpc_flow_log_anomalies.yml @@ -43,7 +43,7 @@ afterEvents: - field: log.eventName operator: filter_term value: 'DeleteFlowLogs' - within: now-24h + within: 24h count: 2 deduplicateBy: - lastEvent.log.sourceIPAddress diff --git a/rules/cloud/aws/credential_access_aws_iam_assume_role_brute_force.yml b/rules/cloud/aws/credential_access_aws_iam_assume_role_brute_force.yml index d6d3fe952..bfb7daafc 100644 --- a/rules/cloud/aws/credential_access_aws_iam_assume_role_brute_force.yml +++ b/rules/cloud/aws/credential_access_aws_iam_assume_role_brute_force.yml @@ -28,7 +28,7 @@ afterEvents: - field: origin.user operator: filter_term value: '{{.origin.user}}' - within: now-15m + within: 15m count: 5 groupBy: - adversary.ip diff --git a/rules/cloud/aws/credential_access_root_console_failure_brute_force.yml b/rules/cloud/aws/credential_access_root_console_failure_brute_force.yml index 688f46773..b861ed7d5 100644 --- a/rules/cloud/aws/credential_access_root_console_failure_brute_force.yml +++ b/rules/cloud/aws/credential_access_root_console_failure_brute_force.yml @@ -26,7 +26,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 5 groupBy: - adversary.ip diff --git a/rules/cloud/azure/aks_security_threats.yml b/rules/cloud/azure/aks_security_threats.yml index e731659e4..fbb41f16e 100644 --- a/rules/cloud/azure/aks_security_threats.yml +++ b/rules/cloud/azure/aks_security_threats.yml @@ -41,7 +41,7 @@ afterEvents: - field: log.operationName operator: filter_match value: 'Container' - within: now-30m + within: 30m count: 10 groupBy: - lastEvent.log.operationName diff --git a/rules/cloud/azure/app_registration_abuse.yml b/rules/cloud/azure/app_registration_abuse.yml index de3b53e79..9c46b8d54 100644 --- a/rules/cloud/azure/app_registration_abuse.yml +++ b/rules/cloud/azure/app_registration_abuse.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.categoryValue operator: filter_term value: Administrative - within: now-1h + within: 1h count: 3 groupBy: - lastEvent.log.operationName diff --git a/rules/cloud/azure/application_gateway_waf_alerts.yml b/rules/cloud/azure/application_gateway_waf_alerts.yml index 9166ce018..74b7b33a9 100644 --- a/rules/cloud/azure/application_gateway_waf_alerts.yml +++ b/rules/cloud/azure/application_gateway_waf_alerts.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 5 groupBy: - lastEvent.log.ruleId diff --git a/rules/cloud/azure/azure_ad_password_spray.yml b/rules/cloud/azure/azure_ad_password_spray.yml index 974b1a731..ae2170e08 100644 --- a/rules/cloud/azure/azure_ad_password_spray.yml +++ b/rules/cloud/azure/azure_ad_password_spray.yml @@ -40,7 +40,7 @@ afterEvents: - field: log.properties.status.errorCode operator: filter_match value: '5005' - within: now-15m + within: 15m count: 15 groupBy: - lastEvent.log.operationName diff --git a/rules/cloud/azure/azure_bulk_role_changes.yml b/rules/cloud/azure/azure_bulk_role_changes.yml index 30cd78ac3..9ab8cc4ed 100644 --- a/rules/cloud/azure/azure_bulk_role_changes.yml +++ b/rules/cloud/azure/azure_bulk_role_changes.yml @@ -32,7 +32,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 10 groupBy: - adversary.ip diff --git a/rules/cloud/azure/azure_kubernetes_secret_access.yml b/rules/cloud/azure/azure_kubernetes_secret_access.yml index 5ddd8a8ff..0c80809b8 100644 --- a/rules/cloud/azure/azure_kubernetes_secret_access.yml +++ b/rules/cloud/azure/azure_kubernetes_secret_access.yml @@ -33,7 +33,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 5 groupBy: - lastEvent.log.resourceId diff --git a/rules/cloud/azure/azure_laps_credential_dump.yml b/rules/cloud/azure/azure_laps_credential_dump.yml index 53611ce84..54ddc823a 100644 --- a/rules/cloud/azure/azure_laps_credential_dump.yml +++ b/rules/cloud/azure/azure_laps_credential_dump.yml @@ -32,7 +32,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 3 groupBy: - adversary.ip diff --git a/rules/cloud/azure/azure_ropc_authentication.yml b/rules/cloud/azure/azure_ropc_authentication.yml index 585571321..5c0efef20 100644 --- a/rules/cloud/azure/azure_ropc_authentication.yml +++ b/rules/cloud/azure/azure_ropc_authentication.yml @@ -32,7 +32,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 5 groupBy: - adversary.ip diff --git a/rules/cloud/azure/key_vault_access_spikes.yml b/rules/cloud/azure/key_vault_access_spikes.yml index 342011b4d..aa3e0ae88 100644 --- a/rules/cloud/azure/key_vault_access_spikes.yml +++ b/rules/cloud/azure/key_vault_access_spikes.yml @@ -35,7 +35,7 @@ afterEvents: - field: log.category operator: filter_term value: 'AuditEvent' - within: now-10m + within: 10m count: 20 groupBy: - lastEvent.log.resourceId diff --git a/rules/cloud/azure/managed_identity_abuse.yml b/rules/cloud/azure/managed_identity_abuse.yml index 0bc08d811..f63865cb8 100644 --- a/rules/cloud/azure/managed_identity_abuse.yml +++ b/rules/cloud/azure/managed_identity_abuse.yml @@ -36,7 +36,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 5 groupBy: - lastEvent.log.operationName diff --git a/rules/cloud/azure/pim_role_activation_abuse.yml b/rules/cloud/azure/pim_role_activation_abuse.yml index 9fbba9d64..5a2155db0 100644 --- a/rules/cloud/azure/pim_role_activation_abuse.yml +++ b/rules/cloud/azure/pim_role_activation_abuse.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.categoryValue operator: filter_term value: Administrative - within: now-4h + within: 4h count: 3 groupBy: - lastEvent.log.operationName diff --git a/rules/cloud/google/gcp_bigquery_exfiltration.yml b/rules/cloud/google/gcp_bigquery_exfiltration.yml index b41d5b181..b61406607 100644 --- a/rules/cloud/google/gcp_bigquery_exfiltration.yml +++ b/rules/cloud/google/gcp_bigquery_exfiltration.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.protoPayload.serviceName operator: filter_term value: bigquery.googleapis.com - within: now-30m + within: 30m count: 10 groupBy: - lastEvent.log.protoPayload.methodName diff --git a/rules/cloud/google/gcp_custom_role_creation.yml b/rules/cloud/google/gcp_custom_role_creation.yml index a6886f634..75792363c 100644 --- a/rules/cloud/google/gcp_custom_role_creation.yml +++ b/rules/cloud/google/gcp_custom_role_creation.yml @@ -35,7 +35,7 @@ afterEvents: - field: log.protoPayload.authenticationInfo.principalEmail operator: filter_term value: '{{.log.protoPayload.authenticationInfo.principalEmail}}' - within: now-1h + within: 1h count: 2 groupBy: - lastEvent.log.protoPayload.methodName diff --git a/rules/cloud/google/gcp_probable_password_guess.yml b/rules/cloud/google/gcp_probable_password_guess.yml index a900ae913..b83075d98 100644 --- a/rules/cloud/google/gcp_probable_password_guess.yml +++ b/rules/cloud/google/gcp_probable_password_guess.yml @@ -31,7 +31,7 @@ afterEvents: - field: log.protoPayload.authenticationInfo.principalEmail operator: filter_term value: "{{.log.protoPayload.authenticationInfo.principalEmail}}" - within: now-5m + within: 5m count: 5 groupBy: - adversary.ip diff --git a/rules/cloud/google/gcp_secret_manager_access.yml b/rules/cloud/google/gcp_secret_manager_access.yml index 3238288fa..409e23164 100644 --- a/rules/cloud/google/gcp_secret_manager_access.yml +++ b/rules/cloud/google/gcp_secret_manager_access.yml @@ -37,7 +37,7 @@ afterEvents: - field: log.protoPayload.methodName operator: filter_term value: AccessSecretVersion - within: now-15m + within: 15m count: 5 groupBy: - lastEvent.log.protoPayload.methodName diff --git a/rules/cloud/google/gcp_service_account_impersonation.yml b/rules/cloud/google/gcp_service_account_impersonation.yml index b54b29272..3ba35f6e7 100644 --- a/rules/cloud/google/gcp_service_account_impersonation.yml +++ b/rules/cloud/google/gcp_service_account_impersonation.yml @@ -37,7 +37,7 @@ afterEvents: - field: log.protoPayload.authenticationInfo.principalEmail operator: filter_term value: '{{.log.protoPayload.authenticationInfo.principalEmail}}' - within: now-30m + within: 30m count: 10 groupBy: - lastEvent.log.protoPayload.methodName diff --git a/rules/cloud/google/service_account_key_creation_spikes.yml b/rules/cloud/google/service_account_key_creation_spikes.yml index 9ba697853..2ab571783 100644 --- a/rules/cloud/google/service_account_key_creation_spikes.yml +++ b/rules/cloud/google/service_account_key_creation_spikes.yml @@ -33,7 +33,7 @@ afterEvents: - field: log.protoPayload.authenticationInfo.principalEmail operator: filter_term value: '{{.log.protoPayload.authenticationInfo.principalEmail}}' - within: now-1h + within: 1h count: 5 groupBy: - lastEvent.log.protoPayload.authenticationInfo.principalEmail diff --git a/rules/crowdstrike/multiple_authentication_failures_(possible_brute_force_attack).yml b/rules/crowdstrike/multiple_authentication_failures_(possible_brute_force_attack).yml index 52f78b97b..1c7ab31cf 100644 --- a/rules/crowdstrike/multiple_authentication_failures_(possible_brute_force_attack).yml +++ b/rules/crowdstrike/multiple_authentication_failures_(possible_brute_force_attack).yml @@ -17,7 +17,7 @@ where: > exists("origin.ip") afterEvents: - indexPattern: v11-log-crowdstrike-* - within: now-15m + within: 15m count: 5 with: - field: origin.ip diff --git a/rules/fortinet/fortinet/admin_account_compromise.yml b/rules/fortinet/fortinet/admin_account_compromise.yml index 2f971a974..23628f707 100644 --- a/rules/fortinet/fortinet/admin_account_compromise.yml +++ b/rules/fortinet/fortinet/admin_account_compromise.yml @@ -43,7 +43,7 @@ afterEvents: - field: log.user operator: filter_term value: '{{.log.user}}' - within: now-15m + within: 15m count: 5 groupBy: - adversary.ip diff --git a/rules/fortinet/fortinet/antivirus_outbreak_detection.yml b/rules/fortinet/fortinet/antivirus_outbreak_detection.yml index 6481f711d..7e5d7a8ea 100644 --- a/rules/fortinet/fortinet/antivirus_outbreak_detection.yml +++ b/rules/fortinet/fortinet/antivirus_outbreak_detection.yml @@ -42,7 +42,7 @@ afterEvents: - field: action operator: filter_term value: blocked - within: now-1h + within: 1h count: 5 groupBy: - adversary.ip diff --git a/rules/fortinet/fortinet/dlp_data_exfiltration.yml b/rules/fortinet/fortinet/dlp_data_exfiltration.yml index de5c31f22..730da1f23 100644 --- a/rules/fortinet/fortinet/dlp_data_exfiltration.yml +++ b/rules/fortinet/fortinet/dlp_data_exfiltration.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.subtype operator: filter_term value: 'dlp' - within: now-1h + within: 1h count: 3 groupBy: - lastEvent.log.dlp_profile diff --git a/rules/fortinet/fortinet/fortigate_vpn_brute_force.yml b/rules/fortinet/fortinet/fortigate_vpn_brute_force.yml index 4421e8daa..42ffef343 100644 --- a/rules/fortinet/fortinet/fortigate_vpn_brute_force.yml +++ b/rules/fortinet/fortinet/fortigate_vpn_brute_force.yml @@ -35,7 +35,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/fortinet/fortinet/ips_critical_severity_events.yml b/rules/fortinet/fortinet/ips_critical_severity_events.yml index bbe837f9c..0c49f005d 100644 --- a/rules/fortinet/fortinet/ips_critical_severity_events.yml +++ b/rules/fortinet/fortinet/ips_critical_severity_events.yml @@ -31,7 +31,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - adversary.ip diff --git a/rules/fortinet/fortiweb/authentication_bypass_attempts.yml b/rules/fortinet/fortiweb/authentication_bypass_attempts.yml index 3b2db44b2..2e039b6a8 100644 --- a/rules/fortinet/fortiweb/authentication_bypass_attempts.yml +++ b/rules/fortinet/fortiweb/authentication_bypass_attempts.yml @@ -44,7 +44,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - adversary.ip diff --git a/rules/fortinet/fortiweb/file_upload_security_violations.yml b/rules/fortinet/fortiweb/file_upload_security_violations.yml index 1917e99dc..27bb24c24 100644 --- a/rules/fortinet/fortiweb/file_upload_security_violations.yml +++ b/rules/fortinet/fortiweb/file_upload_security_violations.yml @@ -43,7 +43,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 3 groupBy: - adversary.ip diff --git a/rules/fortinet/fortiweb/fortiweb_sqli_detection.yml b/rules/fortinet/fortiweb/fortiweb_sqli_detection.yml index 69744d2d9..c82e9d137 100644 --- a/rules/fortinet/fortiweb/fortiweb_sqli_detection.yml +++ b/rules/fortinet/fortiweb/fortiweb_sqli_detection.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 5 groupBy: - adversary.ip diff --git a/rules/fortinet/fortiweb/fortiweb_ssrf_detection.yml b/rules/fortinet/fortiweb/fortiweb_ssrf_detection.yml index e72e2bfae..2dfe9b15d 100644 --- a/rules/fortinet/fortiweb/fortiweb_ssrf_detection.yml +++ b/rules/fortinet/fortiweb/fortiweb_ssrf_detection.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - adversary.ip diff --git a/rules/fortinet/fortiweb/owasp_top10_violations.yml b/rules/fortinet/fortiweb/owasp_top10_violations.yml index 28e7f94c2..d48a85d47 100644 --- a/rules/fortinet/fortiweb/owasp_top10_violations.yml +++ b/rules/fortinet/fortiweb/owasp_top10_violations.yml @@ -35,7 +35,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 5 groupBy: - adversary.ip diff --git a/rules/fortinet/fortiweb/web_application_attacks_detection.yml b/rules/fortinet/fortiweb/web_application_attacks_detection.yml index e166d6e80..d5b42f86c 100644 --- a/rules/fortinet/fortiweb/web_application_attacks_detection.yml +++ b/rules/fortinet/fortiweb/web_application_attacks_detection.yml @@ -50,7 +50,7 @@ afterEvents: - field: action operator: filter_term value: 'deny' - within: now-15m + within: 15m count: 3 groupBy: - adversary.ip diff --git a/rules/generic/generic/cross_source_lateral_movement.yml b/rules/generic/generic/cross_source_lateral_movement.yml index 9778631bf..01968405c 100644 --- a/rules/generic/generic/cross_source_lateral_movement.yml +++ b/rules/generic/generic/cross_source_lateral_movement.yml @@ -50,7 +50,7 @@ afterEvents: - field: log.message operator: filter_match value: 'remote login OR authenticated OR session opened' - within: now-30m + within: 30m count: 5 groupBy: - adversary.ip diff --git a/rules/github/action_secret_access.yml b/rules/github/action_secret_access.yml index dfad4cc62..bcfeb4fb2 100644 --- a/rules/github/action_secret_access.yml +++ b/rules/github/action_secret_access.yml @@ -37,7 +37,7 @@ afterEvents: - field: log.action operator: filter_match value: secret - within: now-1h + within: 1h count: 3 groupBy: - lastEvent.log.action diff --git a/rules/github/codeowners_modification.yml b/rules/github/codeowners_modification.yml index 6e5346744..fcf6526d8 100644 --- a/rules/github/codeowners_modification.yml +++ b/rules/github/codeowners_modification.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.senderLogin operator: filter_term value: '{{.log.senderLogin}}' - within: now-24h + within: 24h count: 2 groupBy: - lastEvent.log.repositoryName diff --git a/rules/github/dependabot_config_poisoning.yml b/rules/github/dependabot_config_poisoning.yml index bfd8d955e..969c8528f 100644 --- a/rules/github/dependabot_config_poisoning.yml +++ b/rules/github/dependabot_config_poisoning.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.senderLogin operator: filter_term value: '{{.log.senderLogin}}' - within: now-24h + within: 24h count: 2 groupBy: - lastEvent.log.repositoryName diff --git a/rules/github/mass_repository_cloning.yml b/rules/github/mass_repository_cloning.yml index efc797e1f..4b42d7080 100644 --- a/rules/github/mass_repository_cloning.yml +++ b/rules/github/mass_repository_cloning.yml @@ -40,7 +40,7 @@ afterEvents: - field: log.action operator: filter_match value: 'clone fetch' - within: now-30m + within: 30m count: 10 groupBy: - lastEvent.log.senderLogin diff --git a/rules/ibm/ibm_aix/aix_hmc_access.yml b/rules/ibm/ibm_aix/aix_hmc_access.yml index 3e2e71c94..d4614cf06 100644 --- a/rules/ibm/ibm_aix/aix_hmc_access.yml +++ b/rules/ibm/ibm_aix/aix_hmc_access.yml @@ -46,7 +46,7 @@ afterEvents: - field: origin.host operator: filter_term value: '{{.origin.host}}' - within: now-30m + within: 30m count: 3 groupBy: - adversary.host diff --git a/rules/ibm/ibm_aix/aix_nim_abuse.yml b/rules/ibm/ibm_aix/aix_nim_abuse.yml index eb7f3f626..9fec714d2 100644 --- a/rules/ibm/ibm_aix/aix_nim_abuse.yml +++ b/rules/ibm/ibm_aix/aix_nim_abuse.yml @@ -43,7 +43,7 @@ afterEvents: - field: origin.host operator: filter_term value: '{{.origin.host}}' - within: now-30m + within: 30m count: 3 groupBy: - adversary.host diff --git a/rules/ibm/ibm_as_400/as400_ifs_access.yml b/rules/ibm/ibm_as_400/as400_ifs_access.yml index 7889fabe8..e77e8908c 100644 --- a/rules/ibm/ibm_as_400/as400_ifs_access.yml +++ b/rules/ibm/ibm_as_400/as400_ifs_access.yml @@ -47,7 +47,7 @@ afterEvents: - field: log.message operator: filter_match value: 'IFS OR CPYFRMSTMF OR CPYTOSTMF OR NetServer' - within: now-15m + within: 15m count: 10 groupBy: - adversary.host diff --git a/rules/ibm/ibm_as_400/as400_library_list_manipulation.yml b/rules/ibm/ibm_as_400/as400_library_list_manipulation.yml index 06d99f87d..502f56bed 100644 --- a/rules/ibm/ibm_as_400/as400_library_list_manipulation.yml +++ b/rules/ibm/ibm_as_400/as400_library_list_manipulation.yml @@ -43,7 +43,7 @@ afterEvents: - field: origin.user operator: filter_term value: '{{.origin.user}}' - within: now-15m + within: 15m count: 3 groupBy: - adversary.host diff --git a/rules/ibm/ibm_as_400/as400_remote_command.yml b/rules/ibm/ibm_as_400/as400_remote_command.yml index 1373d399b..4666f90d1 100644 --- a/rules/ibm/ibm_as_400/as400_remote_command.yml +++ b/rules/ibm/ibm_as_400/as400_remote_command.yml @@ -40,7 +40,7 @@ afterEvents: - field: origin.user operator: filter_term value: '{{.origin.user}}' - within: now-30m + within: 30m count: 3 groupBy: - adversary.host diff --git a/rules/ibm/ibm_as_400/as400_sql_injection.yml b/rules/ibm/ibm_as_400/as400_sql_injection.yml index 2f984cc6b..02845a385 100644 --- a/rules/ibm/ibm_as_400/as400_sql_injection.yml +++ b/rules/ibm/ibm_as_400/as400_sql_injection.yml @@ -45,7 +45,7 @@ afterEvents: - field: log.message operator: filter_match value: 'SQL error OR syntax error OR UNION SELECT OR DROP' - within: now-15m + within: 15m count: 5 groupBy: - adversary.host diff --git a/rules/json/json-input/deserialization_attacks.yml b/rules/json/json-input/deserialization_attacks.yml index ece44f7b3..dafc0111d 100644 --- a/rules/json/json-input/deserialization_attacks.yml +++ b/rules/json/json-input/deserialization_attacks.yml @@ -42,7 +42,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 3 groupBy: - adversary.ip diff --git a/rules/json/json-input/graphql_abuse.yml b/rules/json/json-input/graphql_abuse.yml index e62516f45..befd24681 100644 --- a/rules/json/json-input/graphql_abuse.yml +++ b/rules/json/json-input/graphql_abuse.yml @@ -37,7 +37,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 5 groupBy: - adversary.ip diff --git a/rules/json/json-input/json_injection_attempts.yml b/rules/json/json-input/json_injection_attempts.yml index ada255cd3..e85aa80eb 100644 --- a/rules/json/json-input/json_injection_attempts.yml +++ b/rules/json/json-input/json_injection_attempts.yml @@ -38,7 +38,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 3 groupBy: - adversary.ip diff --git a/rules/json/json-input/mass_assignment_attack.yml b/rules/json/json-input/mass_assignment_attack.yml index f0a086cad..6df88526f 100644 --- a/rules/json/json-input/mass_assignment_attack.yml +++ b/rules/json/json-input/mass_assignment_attack.yml @@ -38,7 +38,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 3 groupBy: - adversary.ip diff --git a/rules/json/json-input/nosql_injection_json.yml b/rules/json/json-input/nosql_injection_json.yml index 34a7e55d7..cf21ddcd9 100644 --- a/rules/json/json-input/nosql_injection_json.yml +++ b/rules/json/json-input/nosql_injection_json.yml @@ -42,7 +42,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 3 groupBy: - adversary.ip diff --git a/rules/json/json-input/prototype_pollution_attempts.yml b/rules/json/json-input/prototype_pollution_attempts.yml index a72af1010..7f11f9d73 100644 --- a/rules/json/json-input/prototype_pollution_attempts.yml +++ b/rules/json/json-input/prototype_pollution_attempts.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 3 groupBy: - adversary.host diff --git a/rules/linux/bruteforce_attack.yml b/rules/linux/bruteforce_attack.yml index be2cf38c4..fafa9e0a9 100644 --- a/rules/linux/bruteforce_attack.yml +++ b/rules/linux/bruteforce_attack.yml @@ -28,7 +28,7 @@ afterEvents: - field: log.message operator: filter_match value: 'Failed password' - within: now-15m + within: 15m count: 10 or: - indexPattern: v11-log-linux-* @@ -42,7 +42,7 @@ afterEvents: - field: log.message operator: filter_match value: 'authentication failure' - within: now-15m + within: 15m count: 10 groupBy: - origin.ip diff --git a/rules/linux/rhel_family/rhel_kernel_exploits.yml b/rules/linux/rhel_family/rhel_kernel_exploits.yml index 92eaf4198..fbf2b23b5 100644 --- a/rules/linux/rhel_family/rhel_kernel_exploits.yml +++ b/rules/linux/rhel_family/rhel_kernel_exploits.yml @@ -33,7 +33,7 @@ afterEvents: - field: log.facility operator: filter_term value: 'kern' - within: now-5m + within: 5m count: 3 groupBy: - origin.host diff --git a/rules/macos/endpoint_security_bypass.yml b/rules/macos/endpoint_security_bypass.yml index cf6bfdbb1..29203fcfd 100644 --- a/rules/macos/endpoint_security_bypass.yml +++ b/rules/macos/endpoint_security_bypass.yml @@ -41,7 +41,7 @@ afterEvents: - field: system.hostname operator: filter_term value: '{{.system.hostname}}' - within: now-15m + within: 15m count: 2 groupBy: - lastEvent.log.process diff --git a/rules/macos/macos_ransomware_indicators.yml b/rules/macos/macos_ransomware_indicators.yml index 4c84fa4ed..9097ed7e8 100644 --- a/rules/macos/macos_ransomware_indicators.yml +++ b/rules/macos/macos_ransomware_indicators.yml @@ -33,7 +33,7 @@ afterEvents: - field: origin.host operator: filter_term value: '{{.origin.host}}' - within: now-10m + within: 10m count: 50 groupBy: - adversary.host diff --git a/rules/mikrotik/mikrotik_fw/dns_cache_poisoning.yml b/rules/mikrotik/mikrotik_fw/dns_cache_poisoning.yml index abcb1de7c..3e48460af 100644 --- a/rules/mikrotik/mikrotik_fw/dns_cache_poisoning.yml +++ b/rules/mikrotik/mikrotik_fw/dns_cache_poisoning.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.topics operator: filter_term value: 'dns' - within: now-5m + within: 5m count: 10 groupBy: - adversary.ip diff --git a/rules/mikrotik/mikrotik_fw/routeros_brute_force_attempts.yml b/rules/mikrotik/mikrotik_fw/routeros_brute_force_attempts.yml index e5b591ef2..3576bbe73 100644 --- a/rules/mikrotik/mikrotik_fw/routeros_brute_force_attempts.yml +++ b/rules/mikrotik/mikrotik_fw/routeros_brute_force_attempts.yml @@ -34,7 +34,7 @@ afterEvents: - field: log.message operator: filter_match value: 'login failure' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/mikrotik/mikrotik_fw/ssh_brute_force_attempts.yml b/rules/mikrotik/mikrotik_fw/ssh_brute_force_attempts.yml index da92e158a..28eb4ac9a 100644 --- a/rules/mikrotik/mikrotik_fw/ssh_brute_force_attempts.yml +++ b/rules/mikrotik/mikrotik_fw/ssh_brute_force_attempts.yml @@ -39,7 +39,7 @@ afterEvents: - field: protocol operator: filter_term value: 'tcp' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/netflow/beaconing_behavior_detection.yml b/rules/netflow/beaconing_behavior_detection.yml index 0c01028d4..3f5f2ceb3 100644 --- a/rules/netflow/beaconing_behavior_detection.yml +++ b/rules/netflow/beaconing_behavior_detection.yml @@ -41,7 +41,7 @@ afterEvents: - field: dataType operator: filter_term value: netflow - within: now-1h + within: 1h count: 30 groupBy: - adversary.ip diff --git a/rules/netflow/data_exfiltration_indicators.yml b/rules/netflow/data_exfiltration_indicators.yml index 2649b90c4..f3d05530b 100644 --- a/rules/netflow/data_exfiltration_indicators.yml +++ b/rules/netflow/data_exfiltration_indicators.yml @@ -34,7 +34,7 @@ afterEvents: - field: dataType operator: filter_term value: netflow - within: now-1h + within: 1h count: 10 groupBy: - adversary.ip diff --git a/rules/netflow/ddos_traffic_patterns.yml b/rules/netflow/ddos_traffic_patterns.yml index 8c4504047..c44daaa73 100644 --- a/rules/netflow/ddos_traffic_patterns.yml +++ b/rules/netflow/ddos_traffic_patterns.yml @@ -34,7 +34,7 @@ afterEvents: - field: dataType operator: filter_term value: netflow - within: now-5m + within: 5m count: 100 groupBy: - target.ip diff --git a/rules/netflow/netflow_cryptomining_traffic.yml b/rules/netflow/netflow_cryptomining_traffic.yml index 5361818aa..46304ebea 100644 --- a/rules/netflow/netflow_cryptomining_traffic.yml +++ b/rules/netflow/netflow_cryptomining_traffic.yml @@ -37,7 +37,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 5 groupBy: - adversary.ip diff --git a/rules/netflow/netflow_doh_detection.yml b/rules/netflow/netflow_doh_detection.yml index f9b69d3f8..c67c20244 100644 --- a/rules/netflow/netflow_doh_detection.yml +++ b/rules/netflow/netflow_doh_detection.yml @@ -43,7 +43,7 @@ afterEvents: - field: target.port operator: filter_term value: '443' - within: now-1h + within: 1h count: 20 groupBy: - adversary.ip diff --git a/rules/netflow/netflow_icmp_tunnel.yml b/rules/netflow/netflow_icmp_tunnel.yml index 5193b05fb..c54b505da 100644 --- a/rules/netflow/netflow_icmp_tunnel.yml +++ b/rules/netflow/netflow_icmp_tunnel.yml @@ -37,7 +37,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-10m + within: 10m count: 20 groupBy: - adversary.ip diff --git a/rules/netflow/netflow_internal_scanning.yml b/rules/netflow/netflow_internal_scanning.yml index 0d6b69ea5..251ef1afc 100644 --- a/rules/netflow/netflow_internal_scanning.yml +++ b/rules/netflow/netflow_internal_scanning.yml @@ -36,7 +36,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-5m + within: 5m count: 30 deduplicateBy: - adversary.ip diff --git a/rules/netflow/netflow_lateral_movement_smb_rdp.yml b/rules/netflow/netflow_lateral_movement_smb_rdp.yml index cbbcca068..384629b2e 100644 --- a/rules/netflow/netflow_lateral_movement_smb_rdp.yml +++ b/rules/netflow/netflow_lateral_movement_smb_rdp.yml @@ -37,7 +37,7 @@ afterEvents: - field: target.port operator: filter_term value: '445' - within: now-10m + within: 10m count: 10 or: - indexPattern: v11-log-netflow-* @@ -48,7 +48,7 @@ afterEvents: - field: target.port operator: filter_term value: '3389' - within: now-10m + within: 10m count: 10 groupBy: - adversary.ip diff --git a/rules/netflow/netflow_vpn_unusual_destinations.yml b/rules/netflow/netflow_vpn_unusual_destinations.yml index 3c29bdd69..1e8297911 100644 --- a/rules/netflow/netflow_vpn_unusual_destinations.yml +++ b/rules/netflow/netflow_vpn_unusual_destinations.yml @@ -39,7 +39,7 @@ afterEvents: - field: target.port operator: filter_term value: '{{.target.port}}' - within: now-1h + within: 1h count: 3 groupBy: - adversary.ip diff --git a/rules/netflow/port_scanning_patterns.yml b/rules/netflow/port_scanning_patterns.yml index b48786055..25f50b1fb 100644 --- a/rules/netflow/port_scanning_patterns.yml +++ b/rules/netflow/port_scanning_patterns.yml @@ -39,7 +39,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-2m + within: 2m count: 25 deduplicateBy: - adversary.ip diff --git a/rules/netflow/tor_usage_detection.yml b/rules/netflow/tor_usage_detection.yml index 959891b45..1c084ad92 100644 --- a/rules/netflow/tor_usage_detection.yml +++ b/rules/netflow/tor_usage_detection.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 5 groupBy: - adversary.ip diff --git a/rules/nids/suricata/base64_dns_queries.yml b/rules/nids/suricata/base64_dns_queries.yml index b70d07aae..a4819a7af 100644 --- a/rules/nids/suricata/base64_dns_queries.yml +++ b/rules/nids/suricata/base64_dns_queries.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'dns' - within: now-10m + within: 10m count: 5 groupBy: - adversary.ip diff --git a/rules/nids/suricata/base64_encoded_user_agent.yml b/rules/nids/suricata/base64_encoded_user_agent.yml index 6122132dd..60d6e220b 100644 --- a/rules/nids/suricata/base64_encoded_user_agent.yml +++ b/rules/nids/suricata/base64_encoded_user_agent.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'http' - within: now-30m + within: 30m count: 3 groupBy: - lastEvent.log.http.http_user_agent diff --git a/rules/nids/suricata/cobalt_strike_dns_beacon.yml b/rules/nids/suricata/cobalt_strike_dns_beacon.yml index b6fc46b77..98b226af5 100644 --- a/rules/nids/suricata/cobalt_strike_dns_beacon.yml +++ b/rules/nids/suricata/cobalt_strike_dns_beacon.yml @@ -45,7 +45,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'dns' - within: now-15m + within: 15m count: 3 groupBy: - lastEvent.log.dns.query diff --git a/rules/nids/suricata/cobalt_strike_malleable_c2.yml b/rules/nids/suricata/cobalt_strike_malleable_c2.yml index 01b080c64..f8cfde22a 100644 --- a/rules/nids/suricata/cobalt_strike_malleable_c2.yml +++ b/rules/nids/suricata/cobalt_strike_malleable_c2.yml @@ -51,7 +51,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'http' - within: now-30m + within: 30m count: 3 groupBy: - adversary.ip diff --git a/rules/nids/suricata/command_and_control_traffic.yml b/rules/nids/suricata/command_and_control_traffic.yml index 7f5569d2a..815b10e61 100644 --- a/rules/nids/suricata/command_and_control_traffic.yml +++ b/rules/nids/suricata/command_and_control_traffic.yml @@ -47,7 +47,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-1h + within: 1h count: 5 groupBy: - adversary.ip diff --git a/rules/nids/suricata/covert_channel_detection.yml b/rules/nids/suricata/covert_channel_detection.yml index ef93c7727..cee1fb230 100644 --- a/rules/nids/suricata/covert_channel_detection.yml +++ b/rules/nids/suricata/covert_channel_detection.yml @@ -42,7 +42,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 10 groupBy: - adversary.ip diff --git a/rules/nids/suricata/data_exfiltration_patterns.yml b/rules/nids/suricata/data_exfiltration_patterns.yml index 38495d48a..211d418ef 100644 --- a/rules/nids/suricata/data_exfiltration_patterns.yml +++ b/rules/nids/suricata/data_exfiltration_patterns.yml @@ -45,7 +45,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 10 groupBy: - adversary.ip diff --git a/rules/nids/suricata/ddos_attack_patterns.yml b/rules/nids/suricata/ddos_attack_patterns.yml index b995668b5..05612ee99 100644 --- a/rules/nids/suricata/ddos_attack_patterns.yml +++ b/rules/nids/suricata/ddos_attack_patterns.yml @@ -50,7 +50,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-5m + within: 5m count: 50 groupBy: - adversary.ip diff --git a/rules/nids/suricata/dns_tunneling_detection.yml b/rules/nids/suricata/dns_tunneling_detection.yml index e821dc252..6cd2af748 100644 --- a/rules/nids/suricata/dns_tunneling_detection.yml +++ b/rules/nids/suricata/dns_tunneling_detection.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.protocol operator: filter_term value: 'DNS' - within: now-5m + within: 5m count: 50 groupBy: - adversary.ip diff --git a/rules/nids/suricata/exploit_attempt_detection.yml b/rules/nids/suricata/exploit_attempt_detection.yml index 4759e3a8b..fdd52e9c8 100644 --- a/rules/nids/suricata/exploit_attempt_detection.yml +++ b/rules/nids/suricata/exploit_attempt_detection.yml @@ -38,7 +38,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - lastEvent.log.alert.signature diff --git a/rules/nids/suricata/hacktool_user_agents.yml b/rules/nids/suricata/hacktool_user_agents.yml index c1922159c..d289e5efc 100644 --- a/rules/nids/suricata/hacktool_user_agents.yml +++ b/rules/nids/suricata/hacktool_user_agents.yml @@ -79,7 +79,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'http' - within: now-15m + within: 15m count: 10 deduplicateBy: - adversary.ip diff --git a/rules/nids/suricata/icmp_tunneling_detection.yml b/rules/nids/suricata/icmp_tunneling_detection.yml index 88d1f1630..13328557b 100644 --- a/rules/nids/suricata/icmp_tunneling_detection.yml +++ b/rules/nids/suricata/icmp_tunneling_detection.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.protocol operator: filter_term value: 'ICMP' - within: now-10m + within: 10m count: 100 groupBy: - adversary.ip diff --git a/rules/nids/suricata/lateral_movement_indicators.yml b/rules/nids/suricata/lateral_movement_indicators.yml index 6d2939f63..89121f888 100644 --- a/rules/nids/suricata/lateral_movement_indicators.yml +++ b/rules/nids/suricata/lateral_movement_indicators.yml @@ -42,7 +42,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 10 groupBy: - adversary.ip diff --git a/rules/nids/suricata/malware_callbacks.yml b/rules/nids/suricata/malware_callbacks.yml index 2bb3498c6..563fefb62 100644 --- a/rules/nids/suricata/malware_callbacks.yml +++ b/rules/nids/suricata/malware_callbacks.yml @@ -36,7 +36,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 10 groupBy: - adversary.ip diff --git a/rules/nids/suricata/nids_ssh_anomalies.yml b/rules/nids/suricata/nids_ssh_anomalies.yml index 9c4db0d72..932aad8bb 100644 --- a/rules/nids/suricata/nids_ssh_anomalies.yml +++ b/rules/nids/suricata/nids_ssh_anomalies.yml @@ -38,7 +38,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/nids/suricata/nids_tls_certificate_anomalies.yml b/rules/nids/suricata/nids_tls_certificate_anomalies.yml index 9f4a37872..ced8d9fbe 100644 --- a/rules/nids/suricata/nids_tls_certificate_anomalies.yml +++ b/rules/nids/suricata/nids_tls_certificate_anomalies.yml @@ -39,7 +39,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-1h + within: 1h count: 10 groupBy: - adversary.ip diff --git a/rules/nids/suricata/nkn_blockchain_c2.yml b/rules/nids/suricata/nkn_blockchain_c2.yml index 94c963280..15e315047 100644 --- a/rules/nids/suricata/nkn_blockchain_c2.yml +++ b/rules/nids/suricata/nkn_blockchain_c2.yml @@ -43,7 +43,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'dns' - within: now-15m + within: 15m count: 3 groupBy: - lastEvent.log.dns.query diff --git a/rules/nids/suricata/port_scan_detection.yml b/rules/nids/suricata/port_scan_detection.yml index 5bf7142c3..7ea413157 100644 --- a/rules/nids/suricata/port_scan_detection.yml +++ b/rules/nids/suricata/port_scan_detection.yml @@ -48,7 +48,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 50 - indexPattern: v11-log-suricata-* with: @@ -58,7 +58,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-10m + within: 10m count: 20 deduplicateBy: - adversary.ip diff --git a/rules/nids/suricata/rclone_data_exfiltration.yml b/rules/nids/suricata/rclone_data_exfiltration.yml index a1c9563e2..cfd15c130 100644 --- a/rules/nids/suricata/rclone_data_exfiltration.yml +++ b/rules/nids/suricata/rclone_data_exfiltration.yml @@ -42,7 +42,7 @@ afterEvents: - field: log.eventType operator: filter_term value: 'http' - within: now-30m + within: 30m count: 3 groupBy: - adversary.ip diff --git a/rules/nids/suricata/threat_intelligence_iocs.yml b/rules/nids/suricata/threat_intelligence_iocs.yml index a8aa69f1a..8c7dd365d 100644 --- a/rules/nids/suricata/threat_intelligence_iocs.yml +++ b/rules/nids/suricata/threat_intelligence_iocs.yml @@ -37,7 +37,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 3 groupBy: - lastEvent.log.threat_type diff --git a/rules/nids/suricata/tunneling_detection.yml b/rules/nids/suricata/tunneling_detection.yml index fe68ce77c..4dd48db4f 100644 --- a/rules/nids/suricata/tunneling_detection.yml +++ b/rules/nids/suricata/tunneling_detection.yml @@ -49,7 +49,7 @@ afterEvents: - field: target.port operator: filter_term value: '{{.target.port}}' - within: now-30m + within: 30m count: 5 groupBy: - adversary.ip diff --git a/rules/office365/anti_phishing_policy_bypasses.yml b/rules/office365/anti_phishing_policy_bypasses.yml index 4e2fdb8a5..f0d808347 100644 --- a/rules/office365/anti_phishing_policy_bypasses.yml +++ b/rules/office365/anti_phishing_policy_bypasses.yml @@ -36,7 +36,7 @@ afterEvents: - field: log.Operation operator: filter_match value: 'AntiPhish' - within: now-4h + within: 4h count: 2 groupBy: - lastEvent.log.Operation diff --git a/rules/office365/azure_ad_integration_events.yml b/rules/office365/azure_ad_integration_events.yml index 29d7c2203..144d697e3 100644 --- a/rules/office365/azure_ad_integration_events.yml +++ b/rules/office365/azure_ad_integration_events.yml @@ -41,7 +41,7 @@ afterEvents: - field: log.Workload operator: filter_term value: 'AzureActiveDirectory' - within: now-15m + within: 15m count: 5 groupBy: - adversary.ip diff --git a/rules/office365/compliance_alert_patterns.yml b/rules/office365/compliance_alert_patterns.yml index f9df01671..c07f15f6c 100644 --- a/rules/office365/compliance_alert_patterns.yml +++ b/rules/office365/compliance_alert_patterns.yml @@ -50,7 +50,7 @@ afterEvents: - field: log.Workload operator: filter_term value: 'SecurityComplianceCenter' - within: now-2h + within: 2h count: 5 groupBy: - lastEvent.action diff --git a/rules/office365/conditional_access_bypasses.yml b/rules/office365/conditional_access_bypasses.yml index 675816280..32361fbfc 100644 --- a/rules/office365/conditional_access_bypasses.yml +++ b/rules/office365/conditional_access_bypasses.yml @@ -38,7 +38,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 5 groupBy: - adversary.ip diff --git a/rules/office365/credential_access_microsoft_365_potential_password_spraying_attack.yml b/rules/office365/credential_access_microsoft_365_potential_password_spraying_attack.yml index 7cd310228..3b3f95226 100644 --- a/rules/office365/credential_access_microsoft_365_potential_password_spraying_attack.yml +++ b/rules/office365/credential_access_microsoft_365_potential_password_spraying_attack.yml @@ -23,7 +23,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-60s + within: 60s count: 5 groupBy: - adversary.ip diff --git a/rules/office365/ediscovery_abuse.yml b/rules/office365/ediscovery_abuse.yml index aebb8dfde..1a68c129a 100644 --- a/rules/office365/ediscovery_abuse.yml +++ b/rules/office365/ediscovery_abuse.yml @@ -35,7 +35,7 @@ afterEvents: - field: origin.user operator: filter_term value: '{{.origin.user}}' - within: now-1h + within: 1h count: 5 groupBy: - adversary.user diff --git a/rules/office365/exchange_admin_changes.yml b/rules/office365/exchange_admin_changes.yml index 3db46e1f2..dec7289db 100644 --- a/rules/office365/exchange_admin_changes.yml +++ b/rules/office365/exchange_admin_changes.yml @@ -33,7 +33,7 @@ afterEvents: - field: origin.user operator: filter_term value: '{{.origin.user}}' - within: now-1h + within: 1h count: 10 groupBy: - lastEvent.action diff --git a/rules/office365/external_sharing_violations.yml b/rules/office365/external_sharing_violations.yml index 46b0a0158..ce573c5f9 100644 --- a/rules/office365/external_sharing_violations.yml +++ b/rules/office365/external_sharing_violations.yml @@ -48,7 +48,7 @@ afterEvents: - field: origin.user operator: filter_term value: '{{.origin.user}}' - within: now-1h + within: 1h count: 5 groupBy: - lastEvent.log.ObjectId diff --git a/rules/office365/forms_sway_phishing.yml b/rules/office365/forms_sway_phishing.yml index edc0bbd49..cc5c1fdd4 100644 --- a/rules/office365/forms_sway_phishing.yml +++ b/rules/office365/forms_sway_phishing.yml @@ -42,7 +42,7 @@ afterEvents: - field: action operator: filter_match value: 'Form' - within: now-1h + within: 1h count: 3 groupBy: - adversary.user diff --git a/rules/office365/guest_user_invitation_spikes.yml b/rules/office365/guest_user_invitation_spikes.yml index dce4572d8..ef33de6cd 100644 --- a/rules/office365/guest_user_invitation_spikes.yml +++ b/rules/office365/guest_user_invitation_spikes.yml @@ -42,7 +42,7 @@ afterEvents: - field: action operator: filter_term value: 'Invite external user' - within: now-1h + within: 1h count: 10 groupBy: - adversary.user diff --git a/rules/office365/information_barriers_violations.yml b/rules/office365/information_barriers_violations.yml index 445d65d26..c3b08e6ca 100644 --- a/rules/office365/information_barriers_violations.yml +++ b/rules/office365/information_barriers_violations.yml @@ -34,7 +34,7 @@ afterEvents: - field: log.PolicyType operator: filter_term value: 'InformationBarrier' - within: now-12h + within: 12h count: 3 groupBy: - lastEvent.log.TargetUser diff --git a/rules/office365/mail_flow_rule_changes.yml b/rules/office365/mail_flow_rule_changes.yml index 3aa648fab..e989b55d4 100644 --- a/rules/office365/mail_flow_rule_changes.yml +++ b/rules/office365/mail_flow_rule_changes.yml @@ -36,7 +36,7 @@ afterEvents: - field: action operator: filter_match value: 'TransportRule' - within: now-1h + within: 1h count: 3 groupBy: - lastEvent.action diff --git a/rules/office365/mass_email_deletion.yml b/rules/office365/mass_email_deletion.yml index aa73b7ab8..d0012f8fb 100644 --- a/rules/office365/mass_email_deletion.yml +++ b/rules/office365/mass_email_deletion.yml @@ -35,7 +35,7 @@ afterEvents: - field: action operator: filter_term value: 'HardDelete' - within: now-15m + within: 15m count: 100 or: - indexPattern: v11-log-o365-* @@ -46,7 +46,7 @@ afterEvents: - field: action operator: filter_term value: 'SoftDelete' - within: now-15m + within: 15m count: 100 groupBy: - adversary.user diff --git a/rules/office365/mfa_fatigue_push_spam.yml b/rules/office365/mfa_fatigue_push_spam.yml index 475c8cc86..9a6956fad 100644 --- a/rules/office365/mfa_fatigue_push_spam.yml +++ b/rules/office365/mfa_fatigue_push_spam.yml @@ -40,7 +40,7 @@ afterEvents: - field: log.LogonError operator: filter_match value: 'Mfa' - within: now-15m + within: 15m count: 5 groupBy: - adversary.ip diff --git a/rules/office365/multi_geo_data_violations.yml b/rules/office365/multi_geo_data_violations.yml index 336a737e6..a37bf8440 100644 --- a/rules/office365/multi_geo_data_violations.yml +++ b/rules/office365/multi_geo_data_violations.yml @@ -40,7 +40,7 @@ afterEvents: - field: action operator: filter_term value: 'SiteGeoMoveScheduled' - within: now-24h + within: 24h count: 3 or: - indexPattern: v11-log-o365-* @@ -51,7 +51,7 @@ afterEvents: - field: action operator: filter_term value: 'AllowedDataLocationAdded' - within: now-24h + within: 24h count: 2 groupBy: - adversary.ip diff --git a/rules/office365/oauth_app_anomalies.yml b/rules/office365/oauth_app_anomalies.yml index 10ec5a0ad..3bf3637fb 100644 --- a/rules/office365/oauth_app_anomalies.yml +++ b/rules/office365/oauth_app_anomalies.yml @@ -35,7 +35,7 @@ afterEvents: - field: action operator: filter_term value: 'Consent to application' - within: now-1h + within: 1h count: 5 groupBy: - lastEvent.log.appAccessContextClientAppId diff --git a/rules/office365/onedrive_mass_file_access.yml b/rules/office365/onedrive_mass_file_access.yml index af4059a15..66274f77c 100644 --- a/rules/office365/onedrive_mass_file_access.yml +++ b/rules/office365/onedrive_mass_file_access.yml @@ -41,7 +41,7 @@ afterEvents: - field: log.Workload operator: filter_term value: 'OneDrive' - within: now-30m + within: 30m count: 67 or: - indexPattern: v11-log-o365-* @@ -55,7 +55,7 @@ afterEvents: - field: log.Workload operator: filter_term value: 'OneDrive' - within: now-30m + within: 30m count: 67 - indexPattern: v11-log-o365-* with: @@ -68,7 +68,7 @@ afterEvents: - field: log.Workload operator: filter_term value: 'OneDrive' - within: now-30m + within: 30m count: 67 deduplicateBy: - adversary.user diff --git a/rules/office365/possible_succesfull_password_guessing_o365.yml b/rules/office365/possible_succesfull_password_guessing_o365.yml index 32fe75470..a3318c61b 100644 --- a/rules/office365/possible_succesfull_password_guessing_o365.yml +++ b/rules/office365/possible_succesfull_password_guessing_o365.yml @@ -34,7 +34,7 @@ afterEvents: - field: log.clientIP operator: filter_term value: "{{.log.clientIP}}" - within: now-1m + within: 1m count: 10 groupBy: - adversary.ip diff --git a/rules/office365/power_apps_data_leaks.yml b/rules/office365/power_apps_data_leaks.yml index 02cce74e5..048b8daeb 100644 --- a/rules/office365/power_apps_data_leaks.yml +++ b/rules/office365/power_apps_data_leaks.yml @@ -38,7 +38,7 @@ afterEvents: - field: action operator: filter_term value: 'CreateDataConnection' - within: now-12h + within: 12h count: 2 or: - indexPattern: v11-log-o365-* @@ -49,7 +49,7 @@ afterEvents: - field: action operator: filter_term value: 'UpdateDataConnection' - within: now-12h + within: 12h count: 2 - indexPattern: v11-log-o365-* with: @@ -59,7 +59,7 @@ afterEvents: - field: action operator: filter_term value: 'ExportData' - within: now-12h + within: 12h count: 3 groupBy: - adversary.ip diff --git a/rules/office365/power_automate_abuse.yml b/rules/office365/power_automate_abuse.yml index 10067dfc2..a872450c9 100644 --- a/rules/office365/power_automate_abuse.yml +++ b/rules/office365/power_automate_abuse.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.Workload operator: filter_term value: 'PowerAutomate' - within: now-6h + within: 6h count: 10 groupBy: - lastEvent.action diff --git a/rules/office365/power_bi_data_export.yml b/rules/office365/power_bi_data_export.yml index 9dda76cf9..336dce488 100644 --- a/rules/office365/power_bi_data_export.yml +++ b/rules/office365/power_bi_data_export.yml @@ -37,7 +37,7 @@ afterEvents: - field: action operator: filter_match value: 'Export' - within: now-30m + within: 30m count: 5 groupBy: - adversary.user diff --git a/rules/office365/safe_links_click_patterns.yml b/rules/office365/safe_links_click_patterns.yml index 01c1df0ba..78d86622a 100644 --- a/rules/office365/safe_links_click_patterns.yml +++ b/rules/office365/safe_links_click_patterns.yml @@ -34,7 +34,7 @@ afterEvents: - field: action operator: filter_term value: 'ClickedSafeLink' - within: now-30m + within: 30m count: 5 groupBy: - adversary.user diff --git a/rules/office365/sharepoint_mass_downloads.yml b/rules/office365/sharepoint_mass_downloads.yml index 882067137..4252d8f2f 100644 --- a/rules/office365/sharepoint_mass_downloads.yml +++ b/rules/office365/sharepoint_mass_downloads.yml @@ -36,7 +36,7 @@ afterEvents: - field: action operator: filter_term value: 'FileDownloaded' - within: now-30m + within: 30m count: 100 groupBy: - adversary.ip diff --git a/rules/office365/teams_data_exfiltration.yml b/rules/office365/teams_data_exfiltration.yml index 95fccb238..818e77308 100644 --- a/rules/office365/teams_data_exfiltration.yml +++ b/rules/office365/teams_data_exfiltration.yml @@ -35,7 +35,7 @@ afterEvents: - field: log.Workload operator: filter_term value: 'MicrosoftTeams' - within: now-1h + within: 1h count: 20 groupBy: - lastEvent.log.appAccessContextClientAppId diff --git a/rules/office365/teams_external_user_abuse.yml b/rules/office365/teams_external_user_abuse.yml index 5a943c273..300b9adff 100644 --- a/rules/office365/teams_external_user_abuse.yml +++ b/rules/office365/teams_external_user_abuse.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.Parameters operator: filter_match value: '#EXT#' - within: now-1h + within: 1h count: 5 groupBy: - adversary.ip diff --git a/rules/paloalto/pa_firewall/panos_admin_brute_force.yml b/rules/paloalto/pa_firewall/panos_admin_brute_force.yml index b1d606f1e..e395bc50e 100644 --- a/rules/paloalto/pa_firewall/panos_admin_brute_force.yml +++ b/rules/paloalto/pa_firewall/panos_admin_brute_force.yml @@ -36,7 +36,7 @@ afterEvents: - field: log.pa_type operator: filter_term value: 'SYSTEM' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/paloalto/pa_firewall/panos_dns_security_alerts.yml b/rules/paloalto/pa_firewall/panos_dns_security_alerts.yml index 4270f177e..f48a242aa 100644 --- a/rules/paloalto/pa_firewall/panos_dns_security_alerts.yml +++ b/rules/paloalto/pa_firewall/panos_dns_security_alerts.yml @@ -39,7 +39,7 @@ afterEvents: - field: log.pa_subtype operator: filter_term value: 'dns' - within: now-30m + within: 30m count: 3 groupBy: - adversary.ip diff --git a/rules/paloalto/pa_firewall/panos_url_filtering_blocks.yml b/rules/paloalto/pa_firewall/panos_url_filtering_blocks.yml index cdad2ee8b..ec9b867ff 100644 --- a/rules/paloalto/pa_firewall/panos_url_filtering_blocks.yml +++ b/rules/paloalto/pa_firewall/panos_url_filtering_blocks.yml @@ -38,7 +38,7 @@ afterEvents: - field: log.pa_subtype operator: filter_term value: 'url' - within: now-30m + within: 30m count: 5 groupBy: - adversary.ip diff --git a/rules/paloalto/pa_firewall/zero_day_exploit_prevention.yml b/rules/paloalto/pa_firewall/zero_day_exploit_prevention.yml index e3959c3a3..0339ae464 100644 --- a/rules/paloalto/pa_firewall/zero_day_exploit_prevention.yml +++ b/rules/paloalto/pa_firewall/zero_day_exploit_prevention.yml @@ -34,7 +34,7 @@ afterEvents: - field: log.pa_type operator: filter_term value: 'THREAT' - within: now-30m + within: 30m count: 2 groupBy: - adversary.ip diff --git a/rules/pfsense/dns_resolver_cache_poisoning.yml b/rules/pfsense/dns_resolver_cache_poisoning.yml index ac0e1e4cc..53e339204 100644 --- a/rules/pfsense/dns_resolver_cache_poisoning.yml +++ b/rules/pfsense/dns_resolver_cache_poisoning.yml @@ -30,7 +30,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-5m + within: 5m count: 10 groupBy: - lastEvent.log.query_name diff --git a/rules/pfsense/pfsense_admin_brute_force.yml b/rules/pfsense/pfsense_admin_brute_force.yml index e6d9b678e..0d0cda31d 100644 --- a/rules/pfsense/pfsense_admin_brute_force.yml +++ b/rules/pfsense/pfsense_admin_brute_force.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/pfsense/snort_suricata_ids_alerts.yml b/rules/pfsense/snort_suricata_ids_alerts.yml index 718898b3e..38307f527 100644 --- a/rules/pfsense/snort_suricata_ids_alerts.yml +++ b/rules/pfsense/snort_suricata_ids_alerts.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - lastEvent.log.eventType diff --git a/rules/sonicwall/sonicwall_firewall/anti_spyware_detection.yml b/rules/sonicwall/sonicwall_firewall/anti_spyware_detection.yml index d68b03be7..f0d6e5524 100644 --- a/rules/sonicwall/sonicwall_firewall/anti_spyware_detection.yml +++ b/rules/sonicwall/sonicwall_firewall/anti_spyware_detection.yml @@ -37,7 +37,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 3 deduplicateBy: - adversary.ip diff --git a/rules/sonicwall/sonicwall_firewall/botnet_detection.yml b/rules/sonicwall/sonicwall_firewall/botnet_detection.yml index dccfa4ef9..fdedd55ab 100644 --- a/rules/sonicwall/sonicwall_firewall/botnet_detection.yml +++ b/rules/sonicwall/sonicwall_firewall/botnet_detection.yml @@ -31,7 +31,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-2h + within: 2h count: 10 groupBy: - adversary.ip diff --git a/rules/sonicwall/sonicwall_firewall/capture_atp_verdicts.yml b/rules/sonicwall/sonicwall_firewall/capture_atp_verdicts.yml index 4d08688fe..d61d78fa8 100644 --- a/rules/sonicwall/sonicwall_firewall/capture_atp_verdicts.yml +++ b/rules/sonicwall/sonicwall_firewall/capture_atp_verdicts.yml @@ -30,7 +30,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 2 groupBy: - adversary.host diff --git a/rules/sonicwall/sonicwall_firewall/encrypted_threats_detection.yml b/rules/sonicwall/sonicwall_firewall/encrypted_threats_detection.yml index 5460e9ae7..80eac950f 100644 --- a/rules/sonicwall/sonicwall_firewall/encrypted_threats_detection.yml +++ b/rules/sonicwall/sonicwall_firewall/encrypted_threats_detection.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 3 groupBy: - adversary.ip diff --git a/rules/sonicwall/sonicwall_firewall/gateway_antivirus_detection.yml b/rules/sonicwall/sonicwall_firewall/gateway_antivirus_detection.yml index 2a92bbac6..96638b3df 100644 --- a/rules/sonicwall/sonicwall_firewall/gateway_antivirus_detection.yml +++ b/rules/sonicwall/sonicwall_firewall/gateway_antivirus_detection.yml @@ -37,7 +37,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 3 groupBy: - adversary.host diff --git a/rules/sonicwall/sonicwall_firewall/intrusion_prevention_alert.yml b/rules/sonicwall/sonicwall_firewall/intrusion_prevention_alert.yml index 6a5fd80c0..332538062 100644 --- a/rules/sonicwall/sonicwall_firewall/intrusion_prevention_alert.yml +++ b/rules/sonicwall/sonicwall_firewall/intrusion_prevention_alert.yml @@ -37,7 +37,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - adversary.ip diff --git a/rules/sonicwall/sonicwall_firewall/sonicwall_admin_auth_failures.yml b/rules/sonicwall/sonicwall_firewall/sonicwall_admin_auth_failures.yml index 7e61e7287..837882ae0 100644 --- a/rules/sonicwall/sonicwall_firewall/sonicwall_admin_auth_failures.yml +++ b/rules/sonicwall/sonicwall_firewall/sonicwall_admin_auth_failures.yml @@ -35,7 +35,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/sonicwall/sonicwall_firewall/sonicwall_vpn_failures.yml b/rules/sonicwall/sonicwall_firewall/sonicwall_vpn_failures.yml index 65b0f2a9e..3dc38d521 100644 --- a/rules/sonicwall/sonicwall_firewall/sonicwall_vpn_failures.yml +++ b/rules/sonicwall/sonicwall_firewall/sonicwall_vpn_failures.yml @@ -35,7 +35,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/sophos/sophos_central/behavioral_analysis_alerts.yml b/rules/sophos/sophos_central/behavioral_analysis_alerts.yml index e727b4f82..6966d41de 100644 --- a/rules/sophos/sophos_central/behavioral_analysis_alerts.yml +++ b/rules/sophos/sophos_central/behavioral_analysis_alerts.yml @@ -34,7 +34,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 3 groupBy: - lastEvent.log.processPath diff --git a/rules/sophos/sophos_central/exploit_prevention_triggers.yml b/rules/sophos/sophos_central/exploit_prevention_triggers.yml index 645e95872..707041353 100644 --- a/rules/sophos/sophos_central/exploit_prevention_triggers.yml +++ b/rules/sophos/sophos_central/exploit_prevention_triggers.yml @@ -34,7 +34,7 @@ afterEvents: - field: log.endpointId operator: filter_term value: '{{.log.endpointId}}' - within: now-30m + within: 30m count: 2 groupBy: - lastEvent.log.name diff --git a/rules/sophos/sophos_central/managed_threat_response_alerts.yml b/rules/sophos/sophos_central/managed_threat_response_alerts.yml index 919073b87..244649dfe 100644 --- a/rules/sophos/sophos_central/managed_threat_response_alerts.yml +++ b/rules/sophos/sophos_central/managed_threat_response_alerts.yml @@ -35,7 +35,7 @@ afterEvents: - field: log.severity operator: filter_term value: 'critical' - within: now-1h + within: 1h count: 3 groupBy: - adversary.host diff --git a/rules/sophos/sophos_central/sophos_central_possible_brute_force_attack.yml b/rules/sophos/sophos_central/sophos_central_possible_brute_force_attack.yml index ee7dbfbd8..8aae4055e 100644 --- a/rules/sophos/sophos_central/sophos_central_possible_brute_force_attack.yml +++ b/rules/sophos/sophos_central/sophos_central_possible_brute_force_attack.yml @@ -26,7 +26,7 @@ afterEvents: - field: log.ip operator: filter_term value: "{{.log.ip}}" - within: now-5m + within: 5m count: 10 groupBy: - adversary.host diff --git a/rules/sophos/sophos_central/sophos_central_potential_password_spraying_attack.yml b/rules/sophos/sophos_central/sophos_central_potential_password_spraying_attack.yml index a11cafadb..bfabab056 100644 --- a/rules/sophos/sophos_central/sophos_central_potential_password_spraying_attack.yml +++ b/rules/sophos/sophos_central/sophos_central_potential_password_spraying_attack.yml @@ -26,7 +26,7 @@ afterEvents: - field: log.ip operator: filter_term value: "{{.log.ip}}" - within: now-1m + within: 1m count: 10 groupBy: - adversary.host diff --git a/rules/sophos/sophos_xg_firewall/advanced_threat_protection_alerts.yml b/rules/sophos/sophos_xg_firewall/advanced_threat_protection_alerts.yml index 951c8e03d..749795f9f 100644 --- a/rules/sophos/sophos_xg_firewall/advanced_threat_protection_alerts.yml +++ b/rules/sophos/sophos_xg_firewall/advanced_threat_protection_alerts.yml @@ -33,7 +33,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-30m + within: 30m count: 2 groupBy: - adversary.ip diff --git a/rules/sophos/sophos_xg_firewall/sophos_password_guessing_on_administrator_account.yml b/rules/sophos/sophos_xg_firewall/sophos_password_guessing_on_administrator_account.yml index 0fa2c401e..58ae4c048 100644 --- a/rules/sophos/sophos_xg_firewall/sophos_password_guessing_on_administrator_account.yml +++ b/rules/sophos/sophos_xg_firewall/sophos_password_guessing_on_administrator_account.yml @@ -29,7 +29,7 @@ afterEvents: - field: log.Id operator: filter_term value: '17913' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/sophos/sophos_xg_firewall/sophos_xg_ips_signatures.yml b/rules/sophos/sophos_xg_firewall/sophos_xg_ips_signatures.yml index df2ba8452..10e0be3af 100644 --- a/rules/sophos/sophos_xg_firewall/sophos_xg_ips_signatures.yml +++ b/rules/sophos/sophos_xg_firewall/sophos_xg_ips_signatures.yml @@ -35,7 +35,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - adversary.ip diff --git a/rules/sophos/sophos_xg_firewall/sophos_xg_vpn_auth_failures.yml b/rules/sophos/sophos_xg_firewall/sophos_xg_vpn_auth_failures.yml index e9aa1a1ae..4bc1bbc53 100644 --- a/rules/sophos/sophos_xg_firewall/sophos_xg_vpn_auth_failures.yml +++ b/rules/sophos/sophos_xg_firewall/sophos_xg_vpn_auth_failures.yml @@ -35,7 +35,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 10 groupBy: - adversary.ip diff --git a/rules/suricata/high_severity_suricata_alerts_were_detected.yml b/rules/suricata/high_severity_suricata_alerts_were_detected.yml index 34ca86761..66cdfc139 100644 --- a/rules/suricata/high_severity_suricata_alerts_were_detected.yml +++ b/rules/suricata/high_severity_suricata_alerts_were_detected.yml @@ -20,7 +20,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - adversary.ip diff --git a/rules/suricata/medium_severity_suricata_alerts_were_detected.yml b/rules/suricata/medium_severity_suricata_alerts_were_detected.yml index ba635814c..277e9c8cf 100644 --- a/rules/suricata/medium_severity_suricata_alerts_were_detected.yml +++ b/rules/suricata/medium_severity_suricata_alerts_were_detected.yml @@ -20,7 +20,7 @@ afterEvents: - field: target.ip operator: filter_term value: '{{.target.ip}}' - within: now-15m + within: 15m count: 5 deduplicateBy: - target.ip diff --git a/rules/syslog/cef/syslog_source_impersonation.yml b/rules/syslog/cef/syslog_source_impersonation.yml index 09a4ed11e..14991eccb 100644 --- a/rules/syslog/cef/syslog_source_impersonation.yml +++ b/rules/syslog/cef/syslog_source_impersonation.yml @@ -40,7 +40,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 5 groupBy: - lastEvent.log.deviceVendor diff --git a/rules/syslog/cef/user_agent_anomalies.yml b/rules/syslog/cef/user_agent_anomalies.yml index 9fb292bf2..da6a1509d 100644 --- a/rules/syslog/cef/user_agent_anomalies.yml +++ b/rules/syslog/cef/user_agent_anomalies.yml @@ -43,7 +43,7 @@ afterEvents: - field: origin.ip operator: filter_term value: '{{.origin.ip}}' - within: now-1h + within: 1h count: 10 groupBy: - lastEvent.log.requestClientApplication diff --git a/rules/vmware/vmware-esxi/vcenter_server_attacks.yml b/rules/vmware/vmware-esxi/vcenter_server_attacks.yml index 61fce9adc..c57f7437e 100644 --- a/rules/vmware/vmware-esxi/vcenter_server_attacks.yml +++ b/rules/vmware/vmware-esxi/vcenter_server_attacks.yml @@ -45,7 +45,7 @@ afterEvents: - field: origin.hostname operator: filter_term value: '{{.origin.hostname}}' - within: now-30m + within: 30m count: 5 groupBy: - adversary.host diff --git a/rules/vmware/vmware-esxi/vmware_tools_vulnerabilities.yml b/rules/vmware/vmware-esxi/vmware_tools_vulnerabilities.yml index bba758d4f..11428f501 100644 --- a/rules/vmware/vmware-esxi/vmware_tools_vulnerabilities.yml +++ b/rules/vmware/vmware-esxi/vmware_tools_vulnerabilities.yml @@ -38,7 +38,7 @@ afterEvents: - field: origin.hostname operator: filter_term value: '{{.origin.hostname}}' - within: now-15m + within: 15m count: 5 groupBy: - adversary.hostname diff --git a/rules/vmware/vmware-esxi/vsphere_api_abuse.yml b/rules/vmware/vmware-esxi/vsphere_api_abuse.yml index e29697988..cb25a9c1d 100644 --- a/rules/vmware/vmware-esxi/vsphere_api_abuse.yml +++ b/rules/vmware/vmware-esxi/vsphere_api_abuse.yml @@ -46,7 +46,7 @@ afterEvents: - field: origin.hostname operator: filter_term value: '{{.origin.hostname}}' - within: now-5m + within: 5m count: 10 groupBy: - lastEvent.log.eventInfo diff --git a/rules/windows/adfs_authentication_anomalies.yml b/rules/windows/adfs_authentication_anomalies.yml index f88701881..822ee3a08 100644 --- a/rules/windows/adfs_authentication_anomalies.yml +++ b/rules/windows/adfs_authentication_anomalies.yml @@ -31,7 +31,7 @@ afterEvents: - field: origin.ip.keyword operator: filter_term value: '{{.origin.ip}}' - within: now-10m + within: 10m count: 10 groupBy: - origin.ip diff --git a/rules/windows/asrep_roasting_detection.yml b/rules/windows/asrep_roasting_detection.yml index 300944e43..09eecd197 100644 --- a/rules/windows/asrep_roasting_detection.yml +++ b/rules/windows/asrep_roasting_detection.yml @@ -40,7 +40,7 @@ afterEvents: - field: origin.ip.keyword operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - origin.ip diff --git a/rules/windows/golden_ticket_detection.yml b/rules/windows/golden_ticket_detection.yml index e622c365d..9df408ff3 100644 --- a/rules/windows/golden_ticket_detection.yml +++ b/rules/windows/golden_ticket_detection.yml @@ -57,7 +57,7 @@ afterEvents: - field: origin.host operator: filter_term value: '{{.origin.host}}' - within: now-30m + within: 30m count: 3 groupBy: - origin.host diff --git a/rules/windows/kerberoasting_detection.yml b/rules/windows/kerberoasting_detection.yml index fb1068d58..eb2a0c2ab 100644 --- a/rules/windows/kerberoasting_detection.yml +++ b/rules/windows/kerberoasting_detection.yml @@ -44,7 +44,7 @@ afterEvents: - field: origin.ip.keyword operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 3 groupBy: - origin.ip diff --git a/rules/windows/ntds_extraction_attempts.yml b/rules/windows/ntds_extraction_attempts.yml index de393cbcc..a91ea5844 100644 --- a/rules/windows/ntds_extraction_attempts.yml +++ b/rules/windows/ntds_extraction_attempts.yml @@ -42,7 +42,7 @@ afterEvents: - field: origin.host operator: filter_term value: '{{.origin.host}}' - within: now-30m + within: 30m count: 2 groupBy: - origin.host diff --git a/rules/windows/ransom_multiple_file_deletion.yml b/rules/windows/ransom_multiple_file_deletion.yml index 51658cc67..2073ade06 100644 --- a/rules/windows/ransom_multiple_file_deletion.yml +++ b/rules/windows/ransom_multiple_file_deletion.yml @@ -33,7 +33,7 @@ afterEvents: - field: target.user.keyword operator: filter_term value: "{{.target.user}}" - within: now-5m + within: 5m count: 50 groupBy: - origin.ip diff --git a/rules/windows/ransom_note_creation.yml b/rules/windows/ransom_note_creation.yml index ae0ded458..a48fc220f 100644 --- a/rules/windows/ransom_note_creation.yml +++ b/rules/windows/ransom_note_creation.yml @@ -25,7 +25,7 @@ afterEvents: - field: log.EventDataFileName.keyword operator: filter_term value: '{{.log.EventDataFileName}}' - within: now-60s + within: 60s count: 5 groupBy: - origin.ip diff --git a/rules/windows/ransom_unusual_file_extension.yml b/rules/windows/ransom_unusual_file_extension.yml index e19a191c1..243e33436 100644 --- a/rules/windows/ransom_unusual_file_extension.yml +++ b/rules/windows/ransom_unusual_file_extension.yml @@ -25,7 +25,7 @@ afterEvents: - field: target.user.keyword operator: filter_term value: "{{.target.user}}" - within: now-5m + within: 5m count: 20 groupBy: - origin.ip diff --git a/rules/windows/silver_ticket_detection.yml b/rules/windows/silver_ticket_detection.yml index 143fdc8a1..8f4e87eb9 100644 --- a/rules/windows/silver_ticket_detection.yml +++ b/rules/windows/silver_ticket_detection.yml @@ -44,7 +44,7 @@ afterEvents: - field: origin.ip.keyword operator: filter_term value: '{{.origin.ip}}' - within: now-15m + within: 15m count: 5 groupBy: - origin.ip From 9f3cb3a22dc82ed98044ccadf70fb24d95995c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Tue, 9 Jun 2026 08:15:23 -0600 Subject: [PATCH 19/47] fix[backend](tags): removed false positive alerts from releaseToOpen schedule (#2178) --- .../java/com/park/utmstack/service/UtmAlertTagRuleService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/main/java/com/park/utmstack/service/UtmAlertTagRuleService.java b/backend/src/main/java/com/park/utmstack/service/UtmAlertTagRuleService.java index 77ba84e50..ac46bec83 100644 --- a/backend/src/main/java/com/park/utmstack/service/UtmAlertTagRuleService.java +++ b/backend/src/main/java/com/park/utmstack/service/UtmAlertTagRuleService.java @@ -182,6 +182,7 @@ private void releaseToOpen(Instant rulesEvaluationStart) { List filters = new ArrayList<>(); filters.add(new FilterType(Constants.alertStatus, OperatorType.IS, AlertStatus.AUTOMATIC_REVIEW.getCode())); filters.add(new FilterType(Constants.timestamp, OperatorType.IS_LESS_THAN_OR_EQUALS, rulesEvaluationStart.toString())); + filters.add(new FilterType(Constants.alertTags, OperatorType.DOES_NOT_CONTAIN, Constants.FALSE_POSITIVE_TAG)); Query query = SearchUtil.toQuery(filters); String indexPattern = Constants.SYS_INDEX_PATTERN.get(SystemIndexPattern.ALERTS); From 3d82da3f5cc4f189f7ffaf9b72858dd5fb22e54b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Tue, 9 Jun 2026 08:18:53 -0600 Subject: [PATCH 20/47] fix[installer](setup): added lock on installer final phase (#2180) --- installer/setup/apply.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/installer/setup/apply.go b/installer/setup/apply.go index ded00cfa5..6c66cee63 100644 --- a/installer/setup/apply.go +++ b/installer/setup/apply.go @@ -290,17 +290,17 @@ func Apply(version string, updating bool) (string, error) { fmt.Println(" [OK]") } - // if utils.GetLock(10, stack.LocksDir) { + if utils.GetLock(10, stack.LocksDir) { // fmt.Print("Sending sample logs") // if err := SendSampleData(); err != nil { // fmt.Printf("error sending sample data: %v", err) // } - // if err := utils.SetLock(10, stack.LocksDir); err != nil { - // return err - // } - // fmt.Println(" [OK]") - // } + if err := utils.SetLock(10, stack.LocksDir); err != nil { + return "",err + } + fmt.Println(" [OK]") + } return cnf.Password, nil } From 3430ab8726e35ecd3b033169f4181ca29c2d75c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Fri, 12 Jun 2026 08:49:56 -0600 Subject: [PATCH 21/47] fix[frontend](alerts): properly handle update alerts errors (#2193) --- .../alert-action-select/alert-action-select.component.ts | 5 ++++- .../components/alert-complete/alert-complete.component.ts | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/data-management/alert-management/shared/components/alert-action-select/alert-action-select.component.ts b/frontend/src/app/data-management/alert-management/shared/components/alert-action-select/alert-action-select.component.ts index 7fcf92eff..7415b064f 100644 --- a/frontend/src/app/data-management/alert-management/shared/components/alert-action-select/alert-action-select.component.ts +++ b/frontend/src/app/data-management/alert-management/shared/components/alert-action-select/alert-action-select.component.ts @@ -164,7 +164,6 @@ export class AlertActionSelectComponent implements OnInit, OnDestroy { const alert = this.alert; this.changing = true; if (status === AlertStatusEnum.COMPLETED || status === AlertStatusEnum.COMPLETED_AS_FALSE_POSITIVE) { - console.log('status', status); const modalRef = this.modalService.open(AlertCompleteComponent, {centered: true}); modalRef.componentInstance.alertsIDs = [alert.id]; modalRef.componentInstance.canCreateRule = true; @@ -184,6 +183,7 @@ export class AlertActionSelectComponent implements OnInit, OnDestroy { this.syncIncidentAlertStatus([this.alert.id], status); } else { this.changing = false; + this.utmToastService.showError('Error', 'An error occurred while changing the alert status. Please try again later.'); } }); } else { @@ -192,6 +192,9 @@ export class AlertActionSelectComponent implements OnInit, OnDestroy { this.changing = false; this.alertUpdateHistoryBehavior.$refreshHistory.next(true); this.syncIncidentAlertStatus([this.alert.id], status); + }, () => { + this.changing = false; + this.utmToastService.showError('Error', 'An error occurred while changing the alert status. Please try again later.'); }); } } diff --git a/frontend/src/app/data-management/alert-management/shared/components/alert-complete/alert-complete.component.ts b/frontend/src/app/data-management/alert-management/shared/components/alert-complete/alert-complete.component.ts index 87881bbfb..0f01ffff5 100644 --- a/frontend/src/app/data-management/alert-management/shared/components/alert-complete/alert-complete.component.ts +++ b/frontend/src/app/data-management/alert-management/shared/components/alert-complete/alert-complete.component.ts @@ -58,7 +58,10 @@ export class AlertCompleteComponent implements OnInit { this.statusChange.emit('success'); this.activeModal.close(); this.creating = false; - }); + },_err=>{ + this.creating = false; + this.statusChange.emit('failed'); +}); } createRule() { From 6ed54fc362514210f9654e37514fe9fc02361954 Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:30:33 +0300 Subject: [PATCH 22/47] feat(rules/o365): add Inbox Forward Rule with Email Exfiltration detection rule (#2221) --- .../o365-inbox-forward-rule-exfiltration.yml | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 rules/office365/o365-inbox-forward-rule-exfiltration.yml diff --git a/rules/office365/o365-inbox-forward-rule-exfiltration.yml b/rules/office365/o365-inbox-forward-rule-exfiltration.yml new file mode 100644 index 000000000..32fb0fc24 --- /dev/null +++ b/rules/office365/o365-inbox-forward-rule-exfiltration.yml @@ -0,0 +1,34 @@ +# Rule version v1.0.0 + +name: O365 Inbox Forward Rule with Email Exfiltration +description: | + Detects the creation or modification of inbox forwarding rules followed by a burst + of SendAs activity from the same user within 1 hour. This pattern indicates an + attacker who has created email forwarding rules to redirect sensitive emails and + is actively exfiltrating data by sending emails as the compromised user. This is + a common data exfiltration technique used after initial access is gained. +category: "Collection" +technique: "T1114.003 - Email Forwarding Rule" +references: + - "https://attack.mitre.org/techniques/T1114/003/" +dataTypes: + - o365 +adversary: origin +impact: + confidentiality: 3 + integrity: 1 + availability: 0 +where: oneOf("action", ["New-InboxRule", "Set-InboxRule", "UpdateInboxRules"]) +correlation: + - indexPattern: "v11-log-o365-*" + within: 1h + count: 5 + with: + - field: origin.user + operator: filter_term + value: "{{.origin.user}}" + - field: action + operator: filter_term + value: "SendAs" +groupBy: + - adversary.user From a18b5282b49d03e359e8cb280e7308da011244f5 Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:32:17 +0300 Subject: [PATCH 23/47] feat(rules/o365): add Audit Log Purge detection rule (#2220) --- rules/office365/o365-audit-log-purge.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 rules/office365/o365-audit-log-purge.yml diff --git a/rules/office365/o365-audit-log-purge.yml b/rules/office365/o365-audit-log-purge.yml new file mode 100644 index 000000000..bb255dae4 --- /dev/null +++ b/rules/office365/o365-audit-log-purge.yml @@ -0,0 +1,22 @@ +# Rule version v1.0.0 + +name: O365 Audit Log Purge +description: | + Detects attempts to purge, delete, or remove audit log data from Office 365. + Attackers commonly destroy audit evidence to cover their tracks after compromising + an environment. Detection of audit log deletion activities is a strong indicator + of an active adversary attempting to evade detection and hinder incident response. +category: "Defense Evasion" +technique: "T1070 - Indicator Removal" +references: + - "https://attack.mitre.org/techniques/T1070/" +dataTypes: + - o365 +adversary: origin +impact: + confidentiality: 2 + integrity: 3 + availability: 0 +where: oneOf("action", ["DSIPurgeStarted", "AuditSearchDeleted", "HardDelete"]) +groupBy: + - adversary.user From 2a7c8c820b94208764c71d7229935e7ed5843f3b Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:33:14 +0300 Subject: [PATCH 24/47] feat(rules/o365): add Admin Role/Permission Granted detection rule (#2219) --- rules/office365/o365-admin-role-granted.yml | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 rules/office365/o365-admin-role-granted.yml diff --git a/rules/office365/o365-admin-role-granted.yml b/rules/office365/o365-admin-role-granted.yml new file mode 100644 index 000000000..dd10aa3ce --- /dev/null +++ b/rules/office365/o365-admin-role-granted.yml @@ -0,0 +1,25 @@ +# Rule version v1.0.0 + +name: O365 Admin Role/Permission Granted +description: | + Detects when an admin role or elevated permission is granted to a user in Office 365 / + Azure Active Directory. This is detected via "Update user." operations in the Azure + Active Directory workload that include user type modifications in the raw log data. + Note: This rule uses a proxy signal ("Update user." with raw-text probe) as the + canonical "Add member to role." events are not available in the current data. +category: "Persistence" +technique: "T1136 - Create Account" +references: + - "https://attack.mitre.org/techniques/T1136/" +dataTypes: + - o365 +adversary: origin +impact: + confidentiality: 2 + integrity: 3 + availability: 0 +where: equals("action", "Update user.") && + equals("log.Workload", "AzureActiveDirectory") && + contains("log.ModifiedProperties", "TargetId.UserType") +groupBy: + - adversary.user From 7f1ee2a44bd46238d86157d103b41e9be6531a9c Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:34:06 +0300 Subject: [PATCH 25/47] feat(rules/o365): add Admin Role Assignment detection rule (#2218) --- .../office365/o365-admin-role-assignment.yml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 rules/office365/o365-admin-role-assignment.yml diff --git a/rules/office365/o365-admin-role-assignment.yml b/rules/office365/o365-admin-role-assignment.yml new file mode 100644 index 000000000..546ee0ae9 --- /dev/null +++ b/rules/office365/o365-admin-role-assignment.yml @@ -0,0 +1,23 @@ +# Rule version v1.0.0 + +name: O365 Admin Role Assignment +description: | + Detects when an administrator assigns privileged roles, adds members to admin groups, + or grants delegated/app role permissions in Azure Active Directory. This activity can + indicate account compromise or insider threat where an attacker escalates privileges + to maintain persistence within the tenant. +category: "Persistence" +technique: "T1136 - Create Account" +references: + - "https://attack.mitre.org/techniques/T1136/" +dataTypes: + - o365 +adversary: origin +impact: + confidentiality: 2 + integrity: 3 + availability: 0 +where: equals("log.Workload", "AzureActiveDirectory") && oneOf("action", ["Add member to group.", "Add delegated permission grant.", "Add app role assignment grant to user."]) +groupBy: + - adversary.user + - lastEvent.log.ObjectId From d8e82552d83f399eef3e0cf38f4860372dfa21e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20L=20Qui=C3=B1ones=20Rojas?= <73146718+JocLRojas@users.noreply.github.com> Date: Mon, 15 Jun 2026 17:36:13 +0300 Subject: [PATCH 26/47] refactor(rules/google): update GCP correlation rules (#2194) --- rules/cloud/google/anthos_security_events.yml | 10 +++++----- .../google/binary_authorization_bypasses.yml | 6 +++--- .../google/cloud_identity_suspicious_signins.yml | 4 ++-- .../google/gcp_account_disabled_hijacked.yml | 2 +- .../gcp_account_disabled_password_leak.yml | 2 +- .../google/gcp_account_disabled_spamming.yml | 4 ++-- rules/cloud/google/gcp_audit_log_disabling.yml | 16 ++++++++-------- rules/cloud/google/gcp_bigquery_exfiltration.yml | 16 ++++++++-------- .../google/gcp_breakglass_container_deploy.yml | 8 ++++---- rules/cloud/google/gcp_cloud_function_abuse.yml | 14 +++++++------- .../cloud/google/gcp_cryptomining_detection.yml | 4 ++-- rules/cloud/google/gcp_custom_role_creation.yml | 12 ++++++------ ...gcp_defense_evasion_logging_sink_deletion.yml | 2 +- rules/cloud/google/gcp_dlp_reidentification.yml | 8 ++++---- .../google/gcp_domain_api_access_granted.yml | 8 ++++---- ...cp_exfiltration_logging_sink_modification.yml | 2 +- rules/cloud/google/gcp_gov_attack.yml | 2 +- .../google/gcp_impact_storage_bucket_deleted.yml | 2 +- rules/cloud/google/gcp_kms_key_modifications.yml | 10 +++++----- .../gcp_kubernetes_admission_controller.yml | 10 +++++----- rules/cloud/google/gcp_packet_capture_abuse.yml | 8 ++++---- ...ubernetes_rolebindings_created_or_patched.yml | 6 +++--- .../cloud/google/gcp_probable_password_guess.yml | 8 ++++---- rules/cloud/google/gcp_project_manipulation.yml | 10 +++++----- rules/cloud/google/gcp_secret_manager_access.yml | 12 ++++++------ .../google/gcp_service_account_impersonation.yml | 16 ++++++++-------- rules/cloud/google/gcp_storage_exfiltration.yml | 10 +++++----- .../google/gcp_suspicious_login_blocked.yml | 2 +- .../gcp_suspicious_login_less_secure_app.yml | 2 +- .../google/gcp_suspicious_programmatic_login.yml | 2 +- .../gcp_two_step_verification_disabled.yml | 2 +- .../cloud/google/gcp_workload_identity_abuse.yml | 12 ++++++------ .../cloud/google/gcp_workspace_mfa_disabled.yml | 8 ++++---- .../service_account_key_creation_spikes.yml | 12 ++++++------ 34 files changed, 126 insertions(+), 126 deletions(-) diff --git a/rules/cloud/google/anthos_security_events.yml b/rules/cloud/google/anthos_security_events.yml index d7237e524..e8ddacdc8 100644 --- a/rules/cloud/google/anthos_security_events.yml +++ b/rules/cloud/google/anthos_security_events.yml @@ -25,20 +25,20 @@ description: | - Consider implementing additional monitoring for the affected resources where: | ( - oneOf("log.protoPayload.serviceName", ["anthos.googleapis.com", "anthospolicycontroller.googleapis.com", "anthosservicemesh.googleapis.com"]) || + oneOf("log.protoPayloadServiceName", ["anthos.googleapis.com", "anthospolicycontroller.googleapis.com", "anthosservicemesh.googleapis.com"]) || oneOf("log.resourceType", ["k8s_cluster", "gke_cluster"]) ) && ( - contains("log.protoPayload.methodName", "Policy") || + contains("log.protoPayloadMethodName", "Policy") || oneOf("log.jsonPayload.type", ["admission.k8s.io/violation", "policy.violation", "security.alert"]) || oneOf("log.severity", ["ERROR", "WARNING"]) ) && ( equals("log.protoPayload.response.status", "PERMISSION_DENIED") || - contains("log.protoPayload.status.message", "violation") || - contains("log.protoPayload.status.message", "denied") || + contains("log.protoPayloadStatusMessage", "violation") || + contains("log.protoPayloadStatusMessage", "denied") || contains("log.jsonPayload.details", "policy") ) groupBy: - - lastEvent.log.protoPayload.resourceName + - lastEvent.log.protoPayloadResourceName - lastEvent.log.resource.labels.project_id diff --git a/rules/cloud/google/binary_authorization_bypasses.yml b/rules/cloud/google/binary_authorization_bypasses.yml index 832e1a131..dc57c8b55 100644 --- a/rules/cloud/google/binary_authorization_bypasses.yml +++ b/rules/cloud/google/binary_authorization_bypasses.yml @@ -26,7 +26,7 @@ description: | 6. Monitor for any subsequent suspicious activity from deployed containers where: | ( - equals("log.protoPayload.serviceName", "binaryauthorization.googleapis.com") && + equals("log.protoPayloadServiceName", "binaryauthorization.googleapis.com") && ( contains("log.logName", "cloudaudit.googleapis.com/system_event") && (contains("log.protoPayload.response.details", "breakglass") || equals("log.jsonPayload.breakglass", true)) @@ -42,5 +42,5 @@ where: | ) ) groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail - - lastEvent.log.protoPayload.resourceName + - lastEvent.origin.user + - lastEvent.log.protoPayloadResourceName diff --git a/rules/cloud/google/cloud_identity_suspicious_signins.yml b/rules/cloud/google/cloud_identity_suspicious_signins.yml index fe5881c03..c36cfe889 100644 --- a/rules/cloud/google/cloud_identity_suspicious_signins.yml +++ b/rules/cloud/google/cloud_identity_suspicious_signins.yml @@ -25,12 +25,12 @@ description: | 5. If confirmed malicious, reset user credentials immediately 6. Review access logs for any unauthorized activities where: | - equals("log.protoPayload.serviceName", "login.googleapis.com") && + equals("log.protoPayloadServiceName", "login.googleapis.com") && ( equals("log.protoPayload.metadata.event.type", "Suspicious Login") || (equals("log.protoPayload.metadata.event.type", "login") && equals("log.protoPayload.metadata.event.parameter.is_suspicious", true)) || equals("log.protoPayload.metadata.event.parameter.is_suspicious", true) ) groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail + - lastEvent.origin.user - adversary.ip diff --git a/rules/cloud/google/gcp_account_disabled_hijacked.yml b/rules/cloud/google/gcp_account_disabled_hijacked.yml index 0fee02957..daa86c240 100644 --- a/rules/cloud/google/gcp_account_disabled_hijacked.yml +++ b/rules/cloud/google/gcp_account_disabled_hijacked.yml @@ -17,7 +17,7 @@ references: - "https://attack.mitre.org/tactics/TA0009/" - "https://attack.mitre.org/techniques/T1560" where: | - equals("log.protoPayload.methodName", "google.login.LoginService.accountDisabledHijacked") + equals("log.protoPayloadMethodName", "google.login.LoginService.accountDisabledHijacked") groupBy: - target.ip - target.user diff --git a/rules/cloud/google/gcp_account_disabled_password_leak.yml b/rules/cloud/google/gcp_account_disabled_password_leak.yml index 0b02668dc..bf67c2fd3 100644 --- a/rules/cloud/google/gcp_account_disabled_password_leak.yml +++ b/rules/cloud/google/gcp_account_disabled_password_leak.yml @@ -15,7 +15,7 @@ references: - "https://attack.mitre.org/tactics/TA0001/" - "https://attack.mitre.org/techniques/T1078" where: | - equals("log.protoPayload.methodName", "google.login.LoginService.accountDisabledPasswordLeak") + equals("log.protoPayloadMethodName", "google.login.LoginService.accountDisabledPasswordLeak") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_account_disabled_spamming.yml b/rules/cloud/google/gcp_account_disabled_spamming.yml index 3f134af38..b1d79d70a 100644 --- a/rules/cloud/google/gcp_account_disabled_spamming.yml +++ b/rules/cloud/google/gcp_account_disabled_spamming.yml @@ -16,8 +16,8 @@ references: - "https://attack.mitre.org/tactics/TA0001" - "https://attack.mitre.org/techniques/T1566/" where: | - equals("log.protoPayload.methodName", "google.login.LoginService.accountDisabledSpamming") || - equals("log.protoPayload.methodName", "google.login.LoginService.accountDisabledSpammingThroughRelay") + equals("log.protoPayloadMethodName", "google.login.LoginService.accountDisabledSpamming") || + equals("log.protoPayloadMethodName", "google.login.LoginService.accountDisabledSpammingThroughRelay") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_audit_log_disabling.yml b/rules/cloud/google/gcp_audit_log_disabling.yml index bc6f4ee76..3b3486f39 100644 --- a/rules/cloud/google/gcp_audit_log_disabling.yml +++ b/rules/cloud/google/gcp_audit_log_disabling.yml @@ -26,15 +26,15 @@ description: | 7. Implement Organization Policy to prevent log sink deletion 8. Set up alerting on any changes to logging infrastructure where: | - (contains("log.protoPayload.methodName", "DeleteSink") || - contains("log.protoPayload.methodName", "UpdateSink") || - contains("log.protoPayload.methodName", "CreateExclusion") || - contains("log.protoPayload.methodName", "UpdateExclusion") || - contains("log.protoPayload.methodName", "DeleteLog") || - contains("log.protoPayload.methodName", "SetIamPolicy")) && - (contains("log.protoPayload.serviceName", "logging.googleapis.com") || + (contains("log.protoPayloadMethodName", "DeleteSink") || + contains("log.protoPayloadMethodName", "UpdateSink") || + contains("log.protoPayloadMethodName", "CreateExclusion") || + contains("log.protoPayloadMethodName", "UpdateExclusion") || + contains("log.protoPayloadMethodName", "DeleteLog") || + contains("log.protoPayloadMethodName", "SetIamPolicy")) && + (contains("log.protoPayloadServiceName", "logging.googleapis.com") || contains("log.resource.type", "logging_sink") || contains("log.resource.type", "logging_exclusion")) groupBy: - - lastEvent.log.protoPayload.methodName + - lastEvent.log.protoPayloadMethodName - adversary.user diff --git a/rules/cloud/google/gcp_bigquery_exfiltration.yml b/rules/cloud/google/gcp_bigquery_exfiltration.yml index b61406607..86b3dda49 100644 --- a/rules/cloud/google/gcp_bigquery_exfiltration.yml +++ b/rules/cloud/google/gcp_bigquery_exfiltration.yml @@ -26,21 +26,21 @@ description: | 7. Implement VPC Service Controls to restrict data export 8. Enable BigQuery authorized views to restrict data access where: | - contains("log.protoPayload.serviceName", "bigquery.googleapis.com") && - (contains("log.protoPayload.methodName", "jobservice.insert") || - contains("log.protoPayload.methodName", "tableservice.exportdata") || - contains("log.protoPayload.methodName", "datasets.copy")) + contains("log.protoPayloadServiceName", "bigquery.googleapis.com") && + (contains("log.protoPayloadMethodName", "jobservice.insert") || + contains("log.protoPayloadMethodName", "tableservice.exportdata") || + contains("log.protoPayloadMethodName", "datasets.copy")) afterEvents: - indexPattern: v11-log-google-* with: - - field: log.protoPayload.authenticationInfo.principalEmail + - field: origin.user operator: filter_term - value: '{{.log.protoPayload.authenticationInfo.principalEmail}}' - - field: log.protoPayload.serviceName + value: '{{.origin.user}}' + - field: log.protoPayloadServiceName operator: filter_term value: bigquery.googleapis.com within: 30m count: 10 groupBy: - - lastEvent.log.protoPayload.methodName + - lastEvent.log.protoPayloadMethodName - adversary.user diff --git a/rules/cloud/google/gcp_breakglass_container_deploy.yml b/rules/cloud/google/gcp_breakglass_container_deploy.yml index be1606cfc..437967269 100644 --- a/rules/cloud/google/gcp_breakglass_container_deploy.yml +++ b/rules/cloud/google/gcp_breakglass_container_deploy.yml @@ -25,10 +25,10 @@ description: | 6. Scan the deployed container for vulnerabilities and malware 7. Review cluster activity following the deployment where: | - (equals("log.protoPayload.serviceName", "binaryauthorization.googleapis.com") && + (equals("log.protoPayloadServiceName", "binaryauthorization.googleapis.com") && contains("log.protoPayload.response", "breakglass")) || - (contains("log.protoPayload.methodName", "container.clusters") && + (contains("log.protoPayloadMethodName", "container.clusters") && contains("log.protoPayload.request", "breakglass")) groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail - - lastEvent.log.protoPayload.resourceName + - lastEvent.origin.user + - lastEvent.log.protoPayloadResourceName diff --git a/rules/cloud/google/gcp_cloud_function_abuse.yml b/rules/cloud/google/gcp_cloud_function_abuse.yml index 34dc27a94..05d73f89f 100644 --- a/rules/cloud/google/gcp_cloud_function_abuse.yml +++ b/rules/cloud/google/gcp_cloud_function_abuse.yml @@ -26,12 +26,12 @@ description: | 7. Review invocation logs for the function 8. Implement Organization Policy to restrict Cloud Function deployment where: | - ((contains("log.protoPayload.serviceName", "cloudfunctions.googleapis.com") && - (contains("log.protoPayload.methodName", "CreateFunction") || - contains("log.protoPayload.methodName", "UpdateFunction"))) || - (contains("log.protoPayload.serviceName", "run.googleapis.com") && - (contains("log.protoPayload.methodName", "CreateService") || - contains("log.protoPayload.methodName", "ReplaceService")))) + ((contains("log.protoPayloadServiceName", "cloudfunctions.googleapis.com") && + (contains("log.protoPayloadMethodName", "CreateFunction") || + contains("log.protoPayloadMethodName", "UpdateFunction"))) || + (contains("log.protoPayloadServiceName", "run.googleapis.com") && + (contains("log.protoPayloadMethodName", "CreateService") || + contains("log.protoPayloadMethodName", "ReplaceService")))) groupBy: - - lastEvent.log.protoPayload.methodName + - lastEvent.log.protoPayloadMethodName - adversary.user diff --git a/rules/cloud/google/gcp_cryptomining_detection.yml b/rules/cloud/google/gcp_cryptomining_detection.yml index 20991d26a..d06accb9d 100644 --- a/rules/cloud/google/gcp_cryptomining_detection.yml +++ b/rules/cloud/google/gcp_cryptomining_detection.yml @@ -26,12 +26,12 @@ description: | 7. Rotate compromised credentials and review IAM bindings 8. Implement Organization Policy constraints to restrict GPU instance creation where: | - contains("log.protoPayload.methodName", "compute.instances.insert") && + contains("log.protoPayloadMethodName", "compute.instances.insert") && (contains("log.protoPayload.request.machineType", "a2-") || contains("log.protoPayload.request.machineType", "g2-") || contains("log.protoPayload.request.machineType", "n1-highmem-96") || contains("log.protoPayload.request.machineType", "c2d-highcpu") || contains("log.protoPayload.request.guestAccelerators", "nvidia")) groupBy: - - lastEvent.log.protoPayload.resourceName + - lastEvent.log.protoPayloadResourceName - adversary.user diff --git a/rules/cloud/google/gcp_custom_role_creation.yml b/rules/cloud/google/gcp_custom_role_creation.yml index 75792363c..5205ca8c0 100644 --- a/rules/cloud/google/gcp_custom_role_creation.yml +++ b/rules/cloud/google/gcp_custom_role_creation.yml @@ -26,17 +26,17 @@ description: | 7. Implement Organization Policy to restrict custom role creation 8. Use IAM Recommender to identify and reduce excess permissions where: | - contains("log.protoPayload.serviceName", "iam.googleapis.com") && - (contains("log.protoPayload.methodName", "CreateRole") || - contains("log.protoPayload.methodName", "UpdateRole")) + contains("log.protoPayloadServiceName", "iam.googleapis.com") && + (contains("log.protoPayloadMethodName", "CreateRole") || + contains("log.protoPayloadMethodName", "UpdateRole")) afterEvents: - indexPattern: v11-log-google-* with: - - field: log.protoPayload.authenticationInfo.principalEmail + - field: origin.user operator: filter_term - value: '{{.log.protoPayload.authenticationInfo.principalEmail}}' + value: '{{.origin.user}}' within: 1h count: 2 groupBy: - - lastEvent.log.protoPayload.methodName + - lastEvent.log.protoPayloadMethodName - adversary.user diff --git a/rules/cloud/google/gcp_defense_evasion_logging_sink_deletion.yml b/rules/cloud/google/gcp_defense_evasion_logging_sink_deletion.yml index e36fdbfd2..655d3c228 100644 --- a/rules/cloud/google/gcp_defense_evasion_logging_sink_deletion.yml +++ b/rules/cloud/google/gcp_defense_evasion_logging_sink_deletion.yml @@ -23,7 +23,7 @@ references: - "https://attack.mitre.org/techniques/T1562/" - "https://attack.mitre.org/tactics/TA0005/" where: | - regexMatch("log.protoPayload.methodName", "((.+)?sink(s)?\\.delete|(.+)?v(\\w+)\\.ConfigServiceV(\\w+)\\.DeleteSink)") + regexMatch("log.protoPayloadMethodName", "((.+)?sink(s)?\\.delete|(.+)?v(\\w+)\\.ConfigServiceV(\\w+)\\.DeleteSink)") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_dlp_reidentification.yml b/rules/cloud/google/gcp_dlp_reidentification.yml index 7f6bedb40..6061c770f 100644 --- a/rules/cloud/google/gcp_dlp_reidentification.yml +++ b/rules/cloud/google/gcp_dlp_reidentification.yml @@ -24,8 +24,8 @@ description: | 5. If unauthorized, revoke access and investigate potential data exposure 6. Review DLP API permissions and restrict re-identification access where: | - contains("log.protoPayload.methodName", "ReidentifyContent") || - contains("log.protoPayload.methodName", "reidentify") + contains("log.protoPayloadMethodName", "ReidentifyContent") || + contains("log.protoPayloadMethodName", "reidentify") groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail - - lastEvent.log.protoPayload.methodName + - lastEvent.origin.user + - lastEvent.log.protoPayloadMethodName diff --git a/rules/cloud/google/gcp_domain_api_access_granted.yml b/rules/cloud/google/gcp_domain_api_access_granted.yml index 7eda73e84..f964d9411 100644 --- a/rules/cloud/google/gcp_domain_api_access_granted.yml +++ b/rules/cloud/google/gcp_domain_api_access_granted.yml @@ -25,8 +25,8 @@ description: | 6. Audit all API calls made by the service account since the delegation was granted 7. Review Google Workspace admin logs for related changes where: | - contains("log.protoPayload.methodName", "AUTHORIZE_API_CLIENT_ACCESS") || - (contains("log.protoPayload.serviceName", "admin.googleapis.com") && contains("log.protoPayload.methodName", "GrantClientAccess")) + contains("log.protoPayloadMethodName", "AUTHORIZE_API_CLIENT_ACCESS") || + (contains("log.protoPayloadServiceName", "admin.googleapis.com") && contains("log.protoPayloadMethodName", "GrantClientAccess")) groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail - - lastEvent.log.protoPayload.resourceName + - lastEvent.origin.user + - lastEvent.log.protoPayloadResourceName diff --git a/rules/cloud/google/gcp_exfiltration_logging_sink_modification.yml b/rules/cloud/google/gcp_exfiltration_logging_sink_modification.yml index efd4c2dc7..69fb2f055 100644 --- a/rules/cloud/google/gcp_exfiltration_logging_sink_modification.yml +++ b/rules/cloud/google/gcp_exfiltration_logging_sink_modification.yml @@ -23,7 +23,7 @@ references: - "https://attack.mitre.org/techniques/T1537/" - "https://attack.mitre.org/tactics/TA0010/" where: | - regexMatch("log.protoPayload.methodName", "((.+)?sink(s)?\\.update|(.+)?v(\\w+)\\.ConfigServiceV(\\w+)\\.UpdateSink)") + regexMatch("log.protoPayloadMethodName", "((.+)?sink(s)?\\.update|(.+)?v(\\w+)\\.ConfigServiceV(\\w+)\\.UpdateSink)") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_gov_attack.yml b/rules/cloud/google/gcp_gov_attack.yml index ded583f1f..14891b9b8 100644 --- a/rules/cloud/google/gcp_gov_attack.yml +++ b/rules/cloud/google/gcp_gov_attack.yml @@ -21,7 +21,7 @@ references: - "https://attack.mitre.org/tactics/TA0009/" - "https://attack.mitre.org/techniques/T1560" where: | - contains("log.protoPayload.methodName", "google.login.LoginService.govAttackWarning") + contains("log.protoPayloadMethodName", "google.login.LoginService.govAttackWarning") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_impact_storage_bucket_deleted.yml b/rules/cloud/google/gcp_impact_storage_bucket_deleted.yml index f963cdcc7..01cf546f5 100644 --- a/rules/cloud/google/gcp_impact_storage_bucket_deleted.yml +++ b/rules/cloud/google/gcp_impact_storage_bucket_deleted.yml @@ -21,7 +21,7 @@ references: - "https://attack.mitre.org/tactics/TA0040/" - "https://attack.mitre.org/techniques/T1485/" where: | - regexMatch("log.protoPayload.methodName", "(.+)\\.bucket(s)?\\.delete") + regexMatch("log.protoPayloadMethodName", "(.+)\\.bucket(s)?\\.delete") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_kms_key_modifications.yml b/rules/cloud/google/gcp_kms_key_modifications.yml index 9e797c9d7..2fde48aca 100644 --- a/rules/cloud/google/gcp_kms_key_modifications.yml +++ b/rules/cloud/google/gcp_kms_key_modifications.yml @@ -26,10 +26,10 @@ description: | 7. Implement IAM conditions to restrict KMS key destruction permissions 8. Enable Cloud KMS key rotation policies and cross-region key replication where: | - contains("log.protoPayload.serviceName", "cloudkms.googleapis.com") && - (contains("log.protoPayload.methodName", "DestroyCryptoKeyVersion") || - contains("log.protoPayload.methodName", "DisableCryptoKeyVersion") || - contains("log.protoPayload.methodName", "UpdateCryptoKeyPrimaryVersion")) + contains("log.protoPayloadServiceName", "cloudkms.googleapis.com") && + (contains("log.protoPayloadMethodName", "DestroyCryptoKeyVersion") || + contains("log.protoPayloadMethodName", "DisableCryptoKeyVersion") || + contains("log.protoPayloadMethodName", "UpdateCryptoKeyPrimaryVersion")) groupBy: - - lastEvent.log.protoPayload.resourceName + - lastEvent.log.protoPayloadResourceName - adversary.user diff --git a/rules/cloud/google/gcp_kubernetes_admission_controller.yml b/rules/cloud/google/gcp_kubernetes_admission_controller.yml index 36dee4292..528a2032b 100644 --- a/rules/cloud/google/gcp_kubernetes_admission_controller.yml +++ b/rules/cloud/google/gcp_kubernetes_admission_controller.yml @@ -24,9 +24,9 @@ description: | 5. If unauthorized, delete the webhook and audit all recent workload deployments 6. Review cluster RBAC for webhook management permissions where: | - contains("log.protoPayload.methodName", "admissionregistration.k8s.io") && - (contains("log.protoPayload.methodName", "mutatingwebhookconfigurations") || contains("log.protoPayload.methodName", "validatingwebhookconfigurations")) && - (contains("log.protoPayload.methodName", "create") || contains("log.protoPayload.methodName", "update") || contains("log.protoPayload.methodName", "patch")) + contains("log.protoPayloadMethodName", "admissionregistration.k8s.io") && + (contains("log.protoPayloadMethodName", "mutatingwebhookconfigurations") || contains("log.protoPayloadMethodName", "validatingwebhookconfigurations")) && + (contains("log.protoPayloadMethodName", "create") || contains("log.protoPayloadMethodName", "update") || contains("log.protoPayloadMethodName", "patch")) groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail - - lastEvent.log.protoPayload.resourceName + - lastEvent.origin.user + - lastEvent.log.protoPayloadResourceName diff --git a/rules/cloud/google/gcp_packet_capture_abuse.yml b/rules/cloud/google/gcp_packet_capture_abuse.yml index 18f83bf2a..fd6097f38 100644 --- a/rules/cloud/google/gcp_packet_capture_abuse.yml +++ b/rules/cloud/google/gcp_packet_capture_abuse.yml @@ -25,8 +25,8 @@ description: | 6. Review the mirrored traffic destination for data exfiltration 7. Check for captured credentials or sensitive data where: | - contains("log.protoPayload.methodName", "PacketMirrorings") && - (contains("log.protoPayload.methodName", "insert") || contains("log.protoPayload.methodName", "patch") || contains("log.protoPayload.methodName", "create")) + contains("log.protoPayloadMethodName", "PacketMirrorings") && + (contains("log.protoPayloadMethodName", "insert") || contains("log.protoPayloadMethodName", "patch") || contains("log.protoPayloadMethodName", "create")) groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail - - lastEvent.log.protoPayload.resourceName + - lastEvent.origin.user + - lastEvent.log.protoPayloadResourceName diff --git a/rules/cloud/google/gcp_privilege_escalation_kubernetes_rolebindings_created_or_patched.yml b/rules/cloud/google/gcp_privilege_escalation_kubernetes_rolebindings_created_or_patched.yml index b6d33f0f7..4db11baf1 100644 --- a/rules/cloud/google/gcp_privilege_escalation_kubernetes_rolebindings_created_or_patched.yml +++ b/rules/cloud/google/gcp_privilege_escalation_kubernetes_rolebindings_created_or_patched.yml @@ -20,9 +20,9 @@ references: - "https://attack.mitre.org/tactics/TA0004/" - "https://attack.mitre.org/techniques/T1548" where: | - contains("log.protoPayload.methodName", ".rbac") && - regexMatch("log.protoPayload.methodName", '((.+)\\.)?(cluster)?rolebinding(s)?\\.(create|patch)$') && - !equals("log.protoPayload.authenticationInfo.principalEmail", "system:addon-manager") + contains("log.protoPayloadMethodName", ".rbac") && + regexMatch("log.protoPayloadMethodName", '((.+)\\.)?(cluster)?rolebinding(s)?\\.(create|patch)$') && + !equals("origin.user", "system:addon-manager") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_probable_password_guess.yml b/rules/cloud/google/gcp_probable_password_guess.yml index b83075d98..ba128d97a 100644 --- a/rules/cloud/google/gcp_probable_password_guess.yml +++ b/rules/cloud/google/gcp_probable_password_guess.yml @@ -21,16 +21,16 @@ description: Adversaries with no prior knowledge of legitimate credentials withi account the target's policies on password complexity or use policies that may lock accounts out after a number of failed attempts. where: | - equals("log.protoPayload.methodName", "google.login.LoginService.loginFailure") && exists("log.protoPayload.authenticationInfo.principalEmail") + equals("log.protoPayloadMethodName", "google.login.LoginService.loginFailure") && exists("origin.user") afterEvents: - indexPattern: v11-log-google-* with: - - field: log.protoPayload.methodName + - field: log.protoPayloadMethodName operator: filter_term value: "google.login.LoginService.loginFailure" - - field: log.protoPayload.authenticationInfo.principalEmail + - field: origin.user operator: filter_term - value: "{{.log.protoPayload.authenticationInfo.principalEmail}}" + value: "{{.origin.user}}" within: 5m count: 5 groupBy: diff --git a/rules/cloud/google/gcp_project_manipulation.yml b/rules/cloud/google/gcp_project_manipulation.yml index 9ddf26e2d..d56a7f90b 100644 --- a/rules/cloud/google/gcp_project_manipulation.yml +++ b/rules/cloud/google/gcp_project_manipulation.yml @@ -26,10 +26,10 @@ description: | 7. Implement Organization Policy constraints for project creation 8. Enable alerts for projects created outside approved folders where: | - contains("log.protoPayload.serviceName", "cloudresourcemanager.googleapis.com") && - (contains("log.protoPayload.methodName", "CreateProject") || - contains("log.protoPayload.methodName", "DeleteProject") || - contains("log.protoPayload.methodName", "UndeleteProject")) + contains("log.protoPayloadServiceName", "cloudresourcemanager.googleapis.com") && + (contains("log.protoPayloadMethodName", "CreateProject") || + contains("log.protoPayloadMethodName", "DeleteProject") || + contains("log.protoPayloadMethodName", "UndeleteProject")) groupBy: - - lastEvent.log.protoPayload.methodName + - lastEvent.log.protoPayloadMethodName - adversary.user diff --git a/rules/cloud/google/gcp_secret_manager_access.yml b/rules/cloud/google/gcp_secret_manager_access.yml index 409e23164..2c2c8dfb4 100644 --- a/rules/cloud/google/gcp_secret_manager_access.yml +++ b/rules/cloud/google/gcp_secret_manager_access.yml @@ -26,19 +26,19 @@ description: | 7. Review Secret Manager IAM bindings and apply least privilege 8. Enable VPC Service Controls to restrict secret access where: | - contains("log.protoPayload.serviceName", "secretmanager.googleapis.com") && - contains("log.protoPayload.methodName", "AccessSecretVersion") + contains("log.protoPayloadServiceName", "secretmanager.googleapis.com") && + contains("log.protoPayloadMethodName", "AccessSecretVersion") afterEvents: - indexPattern: v11-log-google-* with: - - field: log.protoPayload.authenticationInfo.principalEmail + - field: origin.user operator: filter_term - value: '{{.log.protoPayload.authenticationInfo.principalEmail}}' - - field: log.protoPayload.methodName + value: '{{.origin.user}}' + - field: log.protoPayloadMethodName operator: filter_term value: AccessSecretVersion within: 15m count: 5 groupBy: - - lastEvent.log.protoPayload.methodName + - lastEvent.log.protoPayloadMethodName - adversary.user diff --git a/rules/cloud/google/gcp_service_account_impersonation.yml b/rules/cloud/google/gcp_service_account_impersonation.yml index 3ba35f6e7..8efc57aec 100644 --- a/rules/cloud/google/gcp_service_account_impersonation.yml +++ b/rules/cloud/google/gcp_service_account_impersonation.yml @@ -26,19 +26,19 @@ description: | 7. Review the service account's access patterns for anomalies 8. Implement Organization Policy constraints to limit service account impersonation where: | - (contains("log.protoPayload.methodName", "GenerateAccessToken") || - contains("log.protoPayload.methodName", "GenerateIdToken") || - contains("log.protoPayload.methodName", "SignBlob") || - contains("log.protoPayload.methodName", "SignJwt")) && - contains("log.protoPayload.serviceName", "iamcredentials.googleapis.com") + (contains("log.protoPayloadMethodName", "GenerateAccessToken") || + contains("log.protoPayloadMethodName", "GenerateIdToken") || + contains("log.protoPayloadMethodName", "SignBlob") || + contains("log.protoPayloadMethodName", "SignJwt")) && + contains("log.protoPayloadServiceName", "iamcredentials.googleapis.com") afterEvents: - indexPattern: v11-log-google-* with: - - field: log.protoPayload.authenticationInfo.principalEmail + - field: origin.user operator: filter_term - value: '{{.log.protoPayload.authenticationInfo.principalEmail}}' + value: '{{.origin.user}}' within: 30m count: 10 groupBy: - - lastEvent.log.protoPayload.methodName + - lastEvent.log.protoPayloadMethodName - adversary.user diff --git a/rules/cloud/google/gcp_storage_exfiltration.yml b/rules/cloud/google/gcp_storage_exfiltration.yml index 0a592a032..5c597a4fc 100644 --- a/rules/cloud/google/gcp_storage_exfiltration.yml +++ b/rules/cloud/google/gcp_storage_exfiltration.yml @@ -26,13 +26,13 @@ description: | 7. Review VPC Service Controls for the project 8. Enable Cloud Storage audit logging for data access events where: | - contains("log.protoPayload.serviceName", "storage.googleapis.com") && - (contains("log.protoPayload.methodName", "storage.setIamPermissions") || - contains("log.protoPayload.methodName", "storage.buckets.update") || - contains("log.protoPayload.methodName", "storage.objects.update")) && + contains("log.protoPayloadServiceName", "storage.googleapis.com") && + (contains("log.protoPayloadMethodName", "storage.setIamPermissions") || + contains("log.protoPayloadMethodName", "storage.buckets.update") || + contains("log.protoPayloadMethodName", "storage.objects.update")) && (contains("log.protoPayload.request.policy.bindings", "allUsers") || contains("log.protoPayload.request.policy.bindings", "allAuthenticatedUsers") || contains("log.protoPayload.request.acl", "allUsers")) groupBy: - - lastEvent.log.protoPayload.resourceName + - lastEvent.log.protoPayloadResourceName - adversary.user diff --git a/rules/cloud/google/gcp_suspicious_login_blocked.yml b/rules/cloud/google/gcp_suspicious_login_blocked.yml index 766586556..d49a112fa 100644 --- a/rules/cloud/google/gcp_suspicious_login_blocked.yml +++ b/rules/cloud/google/gcp_suspicious_login_blocked.yml @@ -15,7 +15,7 @@ references: - "https://attack.mitre.org/tactics/TA0001/" - "https://attack.mitre.org/techniques/T1078" where: | - equals("log.protoPayload.methodName", "google.login.LoginService.suspiciousLogin") + equals("log.protoPayloadMethodName", "google.login.LoginService.suspiciousLogin") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_suspicious_login_less_secure_app.yml b/rules/cloud/google/gcp_suspicious_login_less_secure_app.yml index 9d09148c6..296247604 100644 --- a/rules/cloud/google/gcp_suspicious_login_less_secure_app.yml +++ b/rules/cloud/google/gcp_suspicious_login_less_secure_app.yml @@ -16,7 +16,7 @@ references: - "https://attack.mitre.org/tactics/TA0001/" - "https://attack.mitre.org/techniques/T1190" where: | - equals("log.protoPayload.methodName", "google.login.LoginService.suspiciousLoginLessSecureApp") + equals("log.protoPayloadMethodName", "google.login.LoginService.suspiciousLoginLessSecureApp") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_suspicious_programmatic_login.yml b/rules/cloud/google/gcp_suspicious_programmatic_login.yml index 30198c1e4..6a001763d 100644 --- a/rules/cloud/google/gcp_suspicious_programmatic_login.yml +++ b/rules/cloud/google/gcp_suspicious_programmatic_login.yml @@ -15,7 +15,7 @@ references: - "https://attack.mitre.org/tactics/TA0006" - "https://attack.mitre.org/techniques/T1110" where: | - equals("log.protoPayload.methodName", "google.login.LoginService.suspiciousProgrammaticLogin") + equals("log.protoPayloadMethodName", "google.login.LoginService.suspiciousProgrammaticLogin") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_two_step_verification_disabled.yml b/rules/cloud/google/gcp_two_step_verification_disabled.yml index 5fb834a76..e8a451b39 100644 --- a/rules/cloud/google/gcp_two_step_verification_disabled.yml +++ b/rules/cloud/google/gcp_two_step_verification_disabled.yml @@ -15,7 +15,7 @@ references: - "https://attack.mitre.org/tactics/TA0005" - "https://attack.mitre.org/techniques/T1562/" where: | - equals("log.protoPayload.methodName", "google.login.LoginService.2svDisable") + equals("log.protoPayloadMethodName", "google.login.LoginService.2svDisable") groupBy: - adversary.ip - adversary.user diff --git a/rules/cloud/google/gcp_workload_identity_abuse.yml b/rules/cloud/google/gcp_workload_identity_abuse.yml index dd0306305..9feed074d 100644 --- a/rules/cloud/google/gcp_workload_identity_abuse.yml +++ b/rules/cloud/google/gcp_workload_identity_abuse.yml @@ -26,11 +26,11 @@ description: | 7. Audit all existing workload identity configurations for unauthorized providers 8. Implement Organization Policy to restrict workload identity pool creation where: | - contains("log.protoPayload.serviceName", "iam.googleapis.com") && - (contains("log.protoPayload.methodName", "CreateWorkloadIdentityPool") || - contains("log.protoPayload.methodName", "CreateWorkloadIdentityPoolProvider") || - contains("log.protoPayload.methodName", "UpdateWorkloadIdentityPool") || - contains("log.protoPayload.methodName", "UpdateWorkloadIdentityPoolProvider")) + contains("log.protoPayloadServiceName", "iam.googleapis.com") && + (contains("log.protoPayloadMethodName", "CreateWorkloadIdentityPool") || + contains("log.protoPayloadMethodName", "CreateWorkloadIdentityPoolProvider") || + contains("log.protoPayloadMethodName", "UpdateWorkloadIdentityPool") || + contains("log.protoPayloadMethodName", "UpdateWorkloadIdentityPoolProvider")) groupBy: - - lastEvent.log.protoPayload.methodName + - lastEvent.log.protoPayloadMethodName - adversary.user diff --git a/rules/cloud/google/gcp_workspace_mfa_disabled.yml b/rules/cloud/google/gcp_workspace_mfa_disabled.yml index 7826ea729..e3ac2f448 100644 --- a/rules/cloud/google/gcp_workspace_mfa_disabled.yml +++ b/rules/cloud/google/gcp_workspace_mfa_disabled.yml @@ -25,8 +25,8 @@ description: | 6. Check for other security policy changes from the same admin 7. Audit admin roles and consider implementing super admin 2SV enforcement where: | - contains("log.protoPayload.methodName", "ENFORCE_STRONG_AUTHENTICATION") || - (contains("log.protoPayload.serviceName", "admin.googleapis.com") && contains("log.protoPayload.methodName", "2sv") && contains("log.protoPayload.request", "disable")) + contains("log.protoPayloadMethodName", "ENFORCE_STRONG_AUTHENTICATION") || + (contains("log.protoPayloadServiceName", "admin.googleapis.com") && contains("log.protoPayloadMethodName", "2sv") && contains("log.protoPayload.request", "disable")) groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail - - lastEvent.log.protoPayload.methodName + - lastEvent.origin.user + - lastEvent.log.protoPayloadMethodName diff --git a/rules/cloud/google/service_account_key_creation_spikes.yml b/rules/cloud/google/service_account_key_creation_spikes.yml index 2ab571783..2d62bbdd6 100644 --- a/rules/cloud/google/service_account_key_creation_spikes.yml +++ b/rules/cloud/google/service_account_key_creation_spikes.yml @@ -25,16 +25,16 @@ description: | 6. Review access patterns and identify any unusual resource access or API calls 7. Consider rotating or disabling the created keys if unauthorized activity is confirmed where: | - equals("log.protoPayload.methodName", "google.iam.admin.v1.CreateServiceAccountKey") && - equals("log.protoPayload.serviceName", "iam.googleapis.com") + equals("log.protoPayloadMethodName", "google.iam.admin.v1.CreateServiceAccountKey") && + equals("log.protoPayloadServiceName", "iam.googleapis.com") afterEvents: - indexPattern: v11-log-google-* with: - - field: log.protoPayload.authenticationInfo.principalEmail + - field: origin.user operator: filter_term - value: '{{.log.protoPayload.authenticationInfo.principalEmail}}' + value: '{{.origin.user}}' within: 1h count: 5 groupBy: - - lastEvent.log.protoPayload.authenticationInfo.principalEmail - - lastEvent.log.protoPayload.methodName + - lastEvent.origin.user + - lastEvent.log.protoPayloadMethodName From 6173802c4dc05a24dfacb7d77dcfbf40c8803c43 Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:41:51 +0300 Subject: [PATCH 27/47] feature(rules/google): add rule GCS Sensitive Data Access (#2187) --- rules/cloud/google/gcp_gcs_data_access.yml | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules/cloud/google/gcp_gcs_data_access.yml diff --git a/rules/cloud/google/gcp_gcs_data_access.yml b/rules/cloud/google/gcp_gcs_data_access.yml new file mode 100644 index 000000000..f9487cdb0 --- /dev/null +++ b/rules/cloud/google/gcp_gcs_data_access.yml @@ -0,0 +1,30 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP Cloud Storage — Sensitive Data Access +impact: + confidentiality: 4 + integrity: 1 + availability: 1 +category: Discovery +technique: "T1083 - File and Directory Discovery" +adversary: origin +references: + - https://cloud.google.com/storage/docs/audit-logging + - https://cloud.google.com/logging/docs/audit/cal-categories#cloud_storage + - https://attack.mitre.org/techniques/T1083/ +description: | + Detects data access operations (object listing) on GCS buckets via the data_access audit log. Attackers enumerate bucket contents after gaining access to identify sensitive files for exfiltration. Listing objects is often the precursor to bulk download or data theft. + + Next Steps: + 1. Verify if the data access was from an authorized service or user + 2. Check which bucket was accessed and what type of data it contains + 3. Review if the user has a legitimate business need to access this bucket + 4. Look for subsequent object download operations from the same user + 5. Check the OAuth client ID to identify the application performing access + 6. Review bucket-level IAM bindings for overly permissive access +where: | + equals("log.protoPayloadServiceName", "storage.googleapis.com") && + oneOf("log.protoPayloadMethodName", ["storage.objects.list", "storage.buckets.getStorageLayout"]) && + contains("log.logName", "data_access") && exists("origin.user") From 6fe13a13c02c02c351b690dcb0360c64d66759c9 Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:46:01 +0300 Subject: [PATCH 28/47] feature(rules/google): add rule GCS Bucket Deleted (#2186) --- rules/cloud/google/gcp_gcs_bucket_deleted.yml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules/cloud/google/gcp_gcs_bucket_deleted.yml diff --git a/rules/cloud/google/gcp_gcs_bucket_deleted.yml b/rules/cloud/google/gcp_gcs_bucket_deleted.yml new file mode 100644 index 000000000..8f9d373ce --- /dev/null +++ b/rules/cloud/google/gcp_gcs_bucket_deleted.yml @@ -0,0 +1,30 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP Cloud Storage Bucket Deleted +impact: + confidentiality: 3 + integrity: 3 + availability: 3 +category: Impact +technique: "T1485 - Data Destroyed" +adversary: origin +references: + - https://cloud.google.com/storage/docs/audit-logging + - https://cloud.google.com/logging/docs/audit/cal-categories#cloud_storage + - https://attack.mitre.org/techniques/T1485/ +description: | + Detects deletion of a Google Cloud Storage (GCS) bucket. Attackers may delete buckets containing evidence, backups, or critical data as part of ransomware or anti-forensics. Unexpected bucket deletion is a strong indicator of data destruction or cover tracks. + + Next Steps: + 1. Verify if the deletion was part of an authorized maintenance window + 2. Check if the bucket contained critical data or backups + 3. Attempt to recover the bucket from versioning or backups if available + 4. Investigate the user's other actions for signs of data destruction + 5. Review if other storage resources were deleted in the same window + 6. Check if the bucket had object versioning enabled for recovery +where: | + equals("log.protoPayloadServiceName", "storage.googleapis.com") && + equals("log.protoPayloadMethodName", "storage.buckets.delete") && + exists("origin.user") From 8bd0067d31d9e41ba3d6a2026e2769a8a4ade093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20L=20Qui=C3=B1ones=20Rojas?= <73146718+JocLRojas@users.noreply.github.com> Date: Mon, 15 Jun 2026 17:47:27 +0300 Subject: [PATCH 29/47] Tune bruteforce correlation and drop unreliable PTH rule (#2192) * fix(rules/windows): tighten bruteforce_attack correlation scope * fix(rules/windows): scope multi-failure-then-success rule by source * chore(rules/windows): remove pass_the_hash_detection rule * fix(rules/windows): fix of the redundant field 'origin.host' that appears twice in the deduplicateBy array. --- rules/windows/bruteforce_attack.yml | 9 ++- ...iple_logon_failure_followed_by_success.yml | 9 ++- rules/windows/pass_the_hash_detection.yml | 66 ------------------- 3 files changed, 16 insertions(+), 68 deletions(-) delete mode 100644 rules/windows/pass_the_hash_detection.yml diff --git a/rules/windows/bruteforce_attack.yml b/rules/windows/bruteforce_attack.yml index c5ee4dc7a..eb664c56c 100644 --- a/rules/windows/bruteforce_attack.yml +++ b/rules/windows/bruteforce_attack.yml @@ -23,8 +23,15 @@ afterEvents: - field: target.user.keyword operator: filter_term value: "{{.target.user}}" - within: now-5m + - field: origin.host.keyword + operator: filter_term + value: "{{.origin.host}}" + - field: origin.ip.keyword + operator: filter_term + value: "{{.origin.ip}}" + within: 5m count: 10 deduplicateBy: - origin.host - target.user + - origin.ip diff --git a/rules/windows/bruteforce_multiple_logon_failure_followed_by_success.yml b/rules/windows/bruteforce_multiple_logon_failure_followed_by_success.yml index 4dde95082..5bccb7233 100644 --- a/rules/windows/bruteforce_multiple_logon_failure_followed_by_success.yml +++ b/rules/windows/bruteforce_multiple_logon_failure_followed_by_success.yml @@ -23,8 +23,15 @@ afterEvents: - field: target.user.keyword operator: filter_term value: "{{.target.user}}" - within: now-5m + - field: origin.host.keyword + operator: filter_term + value: "{{.origin.host}}" + - field: origin.ip.keyword + operator: filter_term + value: "{{.origin.ip}}" + within: 5m count: 10 deduplicateBy: - origin.ip - target.user + - origin.host diff --git a/rules/windows/pass_the_hash_detection.yml b/rules/windows/pass_the_hash_detection.yml deleted file mode 100644 index 5efab1b6a..000000000 --- a/rules/windows/pass_the_hash_detection.yml +++ /dev/null @@ -1,66 +0,0 @@ -# Rule version v1.0.0 - -dataTypes: - - wineventlog -name: Pass-the-Hash Attack Detection -impact: - confidentiality: 3 - integrity: 3 - availability: 2 -category: Lateral Movement -technique: "T1550.002 - Use Alternate Authentication Material: Pass the Hash" -adversary: origin -references: - - https://attack.mitre.org/techniques/T1550/002/ - - https://www.sans.org/blog/pass-the-hash-attack-detection/ - - https://stealthbits.com/blog/how-to-detect-pass-the-hash-attacks/ -description: | - Detects Pass-the-Hash attacks by monitoring for NTLM authentication (Event ID 4624) with - LogonType 9 (NewCredentials) or LogonType 3 (Network) from unusual sources, combined with - the use of Seclogon service. Attackers use stolen NTLM hashes to authenticate without - knowing the plaintext password, commonly through tools like Mimikatz sekurlsa::pth, - Impacket, or CrackMapExec. - - Next Steps: - 1. Identify the source IP and user account used for the NTLM authentication - 2. Verify if the source host should be authenticating with NTLM to this target - 3. Check for prior credential dumping activity on the source host - 4. Review if the authentication was followed by lateral movement or data access - 5. Reset the compromised account password and any related accounts - 6. Implement NTLM restrictions via Group Policy where possible - 7. Enable Windows Defender Credential Guard to protect NTLM hashes -where: | - ( - equals("log.eventCode", "4624") && - equals("log.channel", "Security") && - equals("log.eventDataLogonType", "9") && - equals("log.eventDataAuthenticationPackageName", "Negotiate") && - !regexMatch("log.eventDataSubjectUserName", "(?i)^(SYSTEM|LOCAL SERVICE|NETWORK SERVICE|ANONYMOUS LOGON|-|\\$)") && - exists("target.user") && - !regexMatch("target.user", "(?i)\\$$") - ) || - ( - equals("log.eventCode", "4624") && - equals("log.channel", "Security") && - equals("log.eventDataLogonType", "3") && - equals("log.eventDataLmPackageName", "NTLM V1") && - exists("origin.ip") && - !equals("origin.ip", "-") && - !equals("origin.ip", "::1") && - !equals("origin.ip", "127.0.0.1") - ) -afterEvents: - - indexPattern: v11-log-wineventlog-* - with: - - field: origin.ip.keyword - operator: filter_term - value: '{{.origin.ip}}' - - field: log.eventCode - operator: filter_term - value: '4624' - within: now-30m - count: 3 -groupBy: - - origin.ip - - origin.host - - target.user From 10a181de7822114204d313b3f970611911caffd8 Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:50:45 +0300 Subject: [PATCH 30/47] feature(rules/google): add rule Privileged Role Granted - Owner or Editor (#2190) --- .../google/gcp_privileged_role_granted.yml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 rules/cloud/google/gcp_privileged_role_granted.yml diff --git a/rules/cloud/google/gcp_privileged_role_granted.yml b/rules/cloud/google/gcp_privileged_role_granted.yml new file mode 100644 index 000000000..71a64a27d --- /dev/null +++ b/rules/cloud/google/gcp_privileged_role_granted.yml @@ -0,0 +1,31 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP Privileged Role Granted — Owner or Editor +impact: + confidentiality: 5 + integrity: 5 + availability: 3 +category: Privilege Escalation +technique: "T1078 - Valid Accounts" +adversary: origin +references: + - https://cloud.google.com/iam/docs/understanding-roles#basic + - https://cloud.google.com/logging/docs/audit/cal-categories#iam + - https://attack.mitre.org/techniques/T1078/ +description: | + Detects when a highly privileged GCP IAM role (Owner, Editor, or IAM Admin) is granted to a user or service account. These roles provide broad access to all resources and are prime targets for privilege escalation. An attacker gaining Owner or Editor access can effectively control the entire project. + + Next Steps: + 1. Verify the IAM binding change against the change management process + 2. Identify the exact role granted and the target principal + 3. Check if the principal is a human user or a service account + 4. If unauthorized, immediately revoke the binding via IAM audit log + 5. Review the actor's Cloud Shell and gcloud session history + 6. Rotate credentials for any service accounts that were granted elevated roles +where: | + equals("log.protoPayloadServiceName", "cloudresourcemanager.googleapis.com") && + equals("log.protoPayloadMethodName", "SetIamPolicy") && + (contains("log.protoPayload.response.bindings", "roles/owner") || + contains("log.protoPayload.response.bindings", "roles/editor")) && exists("origin.user") From fcf9820b3d7a9ab8ec8e7a98cb2e809e3aade08e Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:51:32 +0300 Subject: [PATCH 31/47] feature(rules/google): add rule Cloud Logging Sink Modified (#2189) --- .../google/gcp_logging_sink_modified.yml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules/cloud/google/gcp_logging_sink_modified.yml diff --git a/rules/cloud/google/gcp_logging_sink_modified.yml b/rules/cloud/google/gcp_logging_sink_modified.yml new file mode 100644 index 000000000..5c797bd1b --- /dev/null +++ b/rules/cloud/google/gcp_logging_sink_modified.yml @@ -0,0 +1,30 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP Cloud Logging Sink Modified +impact: + confidentiality: 2 + integrity: 3 + availability: 2 +category: Defense Evasion +technique: "T1070 - Indicator Removal" +adversary: origin +references: + - https://cloud.google.com/logging/docs/audit/cal-categories#cloud_logging + - https://cloud.google.com/logging/docs/sinks + - https://attack.mitre.org/techniques/T1070/ +description: | + Detects creation, modification, or deletion of Cloud Logging sinks. Attackers may manipulate logging sinks to redirect, suppress, or delete audit trail data, effectively blinding security monitoring. This is a classic defense evasion technique. + + Next Steps: + 1. Verify if the sink change was authorized by the logging/SECOPS team + 2. For deletions: check if the sink was forwarding to a security tool (SIEM, SOAR) + 3. For creations: verify the destination is a legitimate logging backend + 4. For updates: compare the old and new sink configurations + 5. Restore any deleted security-relevant sinks immediately + 6. Review Cloud Audit logs for other logging configuration changes +where: | + equals("log.protoPayloadServiceName", "logging.googleapis.com") && + oneof("log.protoPayloadMethodName", ["google.logging.v2.ConfigServiceV2.CreateSink", "google.logging.v2.ConfigServiceV2.DeleteSink", "google.logging.v2.ConfigServiceV2.UpdateSink"]) && + exists("origin.user") From e67fc13db773b9a3d82e71b2299c68afe4c59945 Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 17:52:26 +0300 Subject: [PATCH 32/47] feature(rules/google): add rule Firewall Open Ingress (#2182) --- .../google/gcp_firewall_open_ingress.yml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules/cloud/google/gcp_firewall_open_ingress.yml diff --git a/rules/cloud/google/gcp_firewall_open_ingress.yml b/rules/cloud/google/gcp_firewall_open_ingress.yml new file mode 100644 index 000000000..e8484b299 --- /dev/null +++ b/rules/cloud/google/gcp_firewall_open_ingress.yml @@ -0,0 +1,30 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP Firewall Rule Created — Open Ingress +impact: + confidentiality: 3 + integrity: 3 + availability: 2 +category: Initial Access +technique: "T1190 - Exploit Public-Facing Application" +adversary: origin +references: + - https://cloud.google.com/firewall/docs/rules/create-manage#creating_a_firewall_rule + - https://cloud.google.com/logging/docs/audit/cal-categories#compute_engine + - https://attack.mitre.org/techniques/T1190/ +description: | + Detects the creation of a GCP VPC firewall rule that allows ingress traffic from 0.0.0.0/0 (any source) on sensitive ports (RDP 3389, SSH 22, SQL 1433, 3306, 5432, etc.). This is a common early-stage tactic to open attack surface for lateral movement or direct exploitation. + + Next Steps: + 1. Verify if the firewall rule was authorized by the network/security team + 2. Check the source IP and user for legitimacy (was it a known admin?) + 3. Review the firewall rule scope — consider restricting sourceRanges to known IP CIDRs + 4. Check if the targeted VMs have compensating controls (SSH keys, MFA bastion) + 5. If unauthorized, delete the rule and investigate the user's session + 6. Review Cloud Audit logs for other firewall changes in the same time window +where: | + equals("log.protoPayloadServiceName", "compute.googleapis.com") && + equals("log.protoPayloadMethodName", "v1.compute.firewalls.insert") && + exists("origin.user") \ No newline at end of file From 03681bb17945f5c1237b9b9ea5365063d5924ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20L=20Qui=C3=B1ones=20Rojas?= <73146718+JocLRojas@users.noreply.github.com> Date: Mon, 15 Jun 2026 18:05:21 +0300 Subject: [PATCH 33/47] Update filters: GCP, Sophos XG, Windows (#2175) * feat(filters/gcp): add Cloud Audit Logs (protoPayload) support * fix(filters/sophos-xg): guard renames and actionResult against missing fields * chore(filters/windows): rename log.data.SubStatus field * fix(filters/sophos-xg): correct operator precedence in actionResult guard --- filters/google/gcp.yml | 107 +++++++++++++++++++++++++- filters/sophos/sophos_xg_firewall.yml | 22 +++++- filters/windows/windows-events.yml | 5 ++ 3 files changed, 130 insertions(+), 4 deletions(-) diff --git a/filters/google/gcp.yml b/filters/google/gcp.yml index b945ae337..b096faedb 100644 --- a/filters/google/gcp.yml +++ b/filters/google/gcp.yml @@ -1,7 +1,8 @@ -# GCP filter, version 2.1.2 -# +# GCP filter, version 2.2.0 +# # Documentations # 1- https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry +# 2- https://cloud.google.com/logging/docs/audit (protoPayload / AuditLog) pipeline: - dataTypes: @@ -251,6 +252,75 @@ pipeline: - log.resource.type to: log.resourceType + # .......................................................................# + # Renaming protoPayload fields (Cloud Audit Logs — AuditLog message) + # .......................................................................# + # NOTE: log.protoPayload.@type is NOT renamed here. The engine treats + # paths containing '@' as complex and the rename plugin errors with + # "cannot delete value from a complex path". The whole log.protoPayload + # subtree is dropped in the final delete step, so the field is cleaned + # up implicitly. We use log.protoPayloadMethodName (always present in + # AuditLog) as the discriminator for protoPayload-derived actionResult. + - rename: + from: + - log.protoPayload.authenticationInfo.principalEmail + to: origin.user + + - rename: + from: + - log.protoPayload.authenticationInfo.principalSubject + to: log.protoPayloadPrincipalSubject + + - rename: + from: + - log.protoPayload.authenticationInfo.oauthInfo.oauthClientId + to: log.protoPayloadOauthClientId + + - rename: + from: + - log.protoPayload.requestMetadata.callerIp + to: origin.ip + + - rename: + from: + - log.protoPayload.requestMetadata.callerSuppliedUserAgent + to: log.httpUserAgent + + - rename: + from: + - log.protoPayload.methodName + to: log.protoPayloadMethodName + + - rename: + from: + - log.protoPayload.serviceName + to: log.protoPayloadServiceName + + - rename: + from: + - log.protoPayload.resourceName + to: log.protoPayloadResourceName + + - rename: + from: + - log.protoPayload.resourceLocation.currentLocations + to: log.protoPayloadResourceLocation + + - rename: + from: + - log.protoPayload.authorizationInfo + to: log.protoPayloadAuthorizationInfo + + - rename: + from: + - log.protoPayload.status.code + to: log.protoPayloadStatusCode + + - rename: + from: + - log.protoPayload.status.message + to: log.protoPayloadStatusMessage + # .......................................................................# # Renaming operation field # .......................................................................# @@ -303,6 +373,11 @@ pipeline: - statusCode to: int + - cast: + fields: + - log.protoPayloadStatusCode + to: int + # Adding severity field based on log.severity - add: function: "string" @@ -383,6 +458,34 @@ pipeline: value: "denied" where: equals("log.jsonPayloadEnforcedEdgeSecurityPolicyOutcome", "DENY") + # Adding actionResult for Cloud Audit Logs (protoPayload): + # In GCP AuditLog, status.code follows google.rpc.Code — 0/absent = OK, + # any non-zero code = error. We only apply this when the event is an + # AuditLog (log.protoPayloadMethodName is always present in AuditLog; + # used as discriminator since log.protoPayload.@type can't be renamed + # due to the '@' character) so non-audit logs keep their existing + # actionResult derivation. + - add: + function: "string" + params: + key: actionResult + value: "success" + where: 'exists("log.protoPayloadMethodName") && !exists("log.protoPayloadStatusCode")' + + - add: + function: "string" + params: + key: actionResult + value: "success" + where: 'exists("log.protoPayloadMethodName") && equals("log.protoPayloadStatusCode", 0)' + + - add: + function: "string" + params: + key: actionResult + value: "failure" + where: 'exists("log.protoPayloadMethodName") && greaterThan("log.protoPayloadStatusCode", 0)' + # Adding geolocation to origin.ip - dynamic: plugin: com.utmstack.geolocation diff --git a/filters/sophos/sophos_xg_firewall.yml b/filters/sophos/sophos_xg_firewall.yml index 1feb4926e..feddeaad7 100644 --- a/filters/sophos/sophos_xg_firewall.yml +++ b/filters/sophos/sophos_xg_firewall.yml @@ -1,4 +1,4 @@ -# Sophos_XG filter, version 3.0.5 +# Sophos_XG filter, version 3.0.6 # Supports SF 20.0 version log types # See manual: https://docs.sophos.com/nsg/sophos-firewall/20.0/pdf/sf-syslog-guide-20.0.pdf # and documentation https://docs.sophos.com/nsg/sophos-firewall/20.0/Help/en-us/webhelp/onlinehelp/AdministratorHelp/Logs/TroubleshootingLogs/LogFileDetails/index.html#https-ftp-waf @@ -318,6 +318,7 @@ pipeline: from: - log.statuscode to: log.statusCode + where: exists("log.statuscode") - rename: from: @@ -682,11 +683,27 @@ pipeline: - origin.bytesSent to: float + # Adding actionResult based on log.subtype value + - add: + function: 'string' + params: + key: actionResult + value: 'denied' + where: exists("log.subType") && equals("log.subType", "Denied") + + - add: + function: 'string' + params: + key: actionResult + value: 'accepted' + where: exists("log.subType") && equals("log.subType", "Accepted") || equals("log.subType", "Allowed") + # Renaming "log.statusCode" to "statusCode" to add it to the event structure - rename: from: - log.statusCode to: statusCode + where: exists("log.statusCode") # Adding actionResult # denied by default @@ -695,13 +712,14 @@ pipeline: params: key: actionResult value: 'denied' + where: exists("statusCode") - add: function: 'string' params: key: actionResult value: 'accepted' - where: (greaterOrEqual("statusCode", 200) && lessOrEqual("statusCode", 299)) || (greaterOrEqual("statusCode", 300) && lessOrEqual("statusCode", 399) && greaterThan("origin.bytesReceived", 0)) + where: exists("statusCode") && ((greaterOrEqual("statusCode", 200) && lessOrEqual("statusCode", 299)) || (greaterOrEqual("statusCode", 300) && lessOrEqual("statusCode", 399) && greaterThan("origin.bytesReceived", 0))) # Removing unused fields - delete: diff --git a/filters/windows/windows-events.yml b/filters/windows/windows-events.yml index 0b277730c..a8dcceb73 100644 --- a/filters/windows/windows-events.yml +++ b/filters/windows/windows-events.yml @@ -45,6 +45,11 @@ pipeline: - log.data.SubjectUserSid to: log.eventDataSubjectUserSid + - rename: + from: + - log.data.SubStatus + to: log.eventDataSubStatus + - rename: from: - log.data.PrivilegeList From 118814cde5baa6bbf8610ed60755af88ae47f39b Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 18:05:52 +0300 Subject: [PATCH 34/47] feature(rules/google): add rule Audit Logging Configuration Changed (#2181) --- .../cloud/google/gcp_audit_config_changed.yml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules/cloud/google/gcp_audit_config_changed.yml diff --git a/rules/cloud/google/gcp_audit_config_changed.yml b/rules/cloud/google/gcp_audit_config_changed.yml new file mode 100644 index 000000000..46984d548 --- /dev/null +++ b/rules/cloud/google/gcp_audit_config_changed.yml @@ -0,0 +1,30 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP Audit Logging Configuration Changed +impact: + confidentiality: 3 + integrity: 3 + availability: 2 +category: Defense Evasion +technique: "T1562 - Impair Defenses" +adversary: origin +references: + - https://cloud.google.com/logging/docs/audit/configure#overview + - https://cloud.google.com/iam/docs/audit-logging + - https://attack.mitre.org/techniques/T1562/ +description: | + Detects changes to audit logging configuration via IAM policy updates that modify auditConfigs. Attackers may disable DATA_READ, DATA_WRITE, or ADMIN_READ audit log types to hide their activities. This is detected by SetIamPolicy calls that include auditConfigs in the request payload. + + Next Steps: + 1. Check which service's audit logging was modified (iam, compute, storage, etc.) + 2. Verify if audit log types were disabled (empty auditLogConfigs) or added + 3. If disabled, re-enable audit logging for the affected service immediately + 4. Review the full IAM policy to check for concurrent privilege escalation + 5. Investigate the user's other actions in the same time window + 6. Ensure organization-level policies enforce audit logging (prevent re-disable) +where: | + equals("log.protoPayloadServiceName", "cloudresourcemanager.googleapis.com") && + equals("log.protoPayloadMethodName", "SetIamPolicy") && + exists("origin.user") From c160fc7a87c41113fc18128a0aae3a42d5e4454b Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 18:06:31 +0300 Subject: [PATCH 35/47] Add GCP rule: IAM Policy Changed - Privilege Escalation (#2188) * feature(rules/google): add rule IAM Policy Changed - Privilege Escalation * fix(rule/google): changing 'exists(log.protoPayload.request.policy.auditConfigs)' to 'exists(log.protoPayload.request.policy.bindings) to improve detection logic --- rules/cloud/google/gcp_iam_policy_changed.yml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules/cloud/google/gcp_iam_policy_changed.yml diff --git a/rules/cloud/google/gcp_iam_policy_changed.yml b/rules/cloud/google/gcp_iam_policy_changed.yml new file mode 100644 index 000000000..611d275c5 --- /dev/null +++ b/rules/cloud/google/gcp_iam_policy_changed.yml @@ -0,0 +1,30 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP IAM Policy Changed — Privilege Escalation +impact: + confidentiality: 4 + integrity: 4 + availability: 3 +category: Privilege Escalation +technique: "T1098 - Account Manipulation" +adversary: origin +references: + - https://cloud.google.com/iam/docs/audit-logging#admin-activity + - https://cloud.google.com/logging/docs/audit/cal-categories#iam + - https://attack.mitre.org/techniques/T1098/ +description: | + Detects changes to IAM policies at the project or resource level in GCP. This includes granting high-privilege roles (Owner, Editor, IAM Admin) to users or service accounts. Attackers commonly use IAM policy modifications to escalate privileges and establish persistence. + + Next Steps: + 1. Verify if the IAM change was authorized and matches a change request + 2. Check which roles were granted — especially Owner, Editor, or IAM Admin + 3. Identify the target user or service account receiving new privileges + 4. If unauthorized, revoke the binding immediately and rotate credentials + 5. Review the actor's session for other privilege escalation attempts + 6. Check if the service account's workload identity was compromised +where: | + oneof("log.protoPayloadServiceName", ["cloudresourcemanager.googleapis.com", "pubsub.googleapis.com"]) && + oneof("log.protoPayloadMethodName", ["SetIamPolicy", "google.iam.v1.IAMPolicy.SetIamPolicy"]) && + exists("log.protoPayload.request.policy.bindings") && contains("log.logName", "activity") && exists("origin.user") From 3fc6a0a464b0bf3b992b8ecbfd52254630d22c8e Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 18:07:30 +0300 Subject: [PATCH 36/47] feature(rules/google): add rule Firewall Rule Deleted (#2183) --- .../google/gcp_firewall_rule_deleted.yml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules/cloud/google/gcp_firewall_rule_deleted.yml diff --git a/rules/cloud/google/gcp_firewall_rule_deleted.yml b/rules/cloud/google/gcp_firewall_rule_deleted.yml new file mode 100644 index 000000000..c323bfdb5 --- /dev/null +++ b/rules/cloud/google/gcp_firewall_rule_deleted.yml @@ -0,0 +1,30 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP Firewall Rule Deleted +impact: + confidentiality: 2 + integrity: 2 + availability: 3 +category: Impact +technique: "T1562 - Impair Defenses" +adversary: origin +references: + - https://cloud.google.com/firewall/docs/rules/create-manage#deleting_a_firewall_rule + - https://cloud.google.com/logging/docs/audit/cal-categories#compute_engine + - https://attack.mitre.org/techniques/T1562/ +description: | + Detects deletion of a GCP VPC firewall rule. Attackers may delete security rules (such as egress filters or blocking rules) to facilitate data exfiltration or lateral movement. Unexpected firewall deletions should be investigated promptly. + + Next Steps: + 1. Verify if the deletion was part of an authorized change window + 2. Identify the deleted firewall rule's purpose (security blocking vs routine rule) + 3. Check if the user has a legitimate reason for the change + 4. Re-create the rule if it was a security control + 5. Review other compute firewall changes in the same time window + 6. Check if the user's account shows signs of compromise +where: | + equals("log.protoPayloadServiceName", "compute.googleapis.com") && + equals("log.protoPayloadMethodName", "v1.compute.firewalls.delete") && + exists("origin.user") From 6468c5fd62487901682e7904fb4426dcc27b8489 Mon Sep 17 00:00:00 2001 From: developutm Date: Mon, 15 Jun 2026 18:19:49 +0300 Subject: [PATCH 37/47] feature(rules/google): add rule GCS Bucket Created (#2185) --- rules/cloud/google/gcp_gcs_bucket_created.yml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules/cloud/google/gcp_gcs_bucket_created.yml diff --git a/rules/cloud/google/gcp_gcs_bucket_created.yml b/rules/cloud/google/gcp_gcs_bucket_created.yml new file mode 100644 index 000000000..41a21f77f --- /dev/null +++ b/rules/cloud/google/gcp_gcs_bucket_created.yml @@ -0,0 +1,30 @@ +# Rule version v1.0.0 + +dataTypes: + - google +name: GCP Cloud Storage Bucket Created +impact: + confidentiality: 3 + integrity: 2 + availability: 1 +category: Collection +technique: "T1560 - Archive Collected Data" +adversary: origin +references: + - https://cloud.google.com/storage/docs/audit-logging + - https://cloud.google.com/logging/docs/audit/cal-categories#cloud_storage + - https://attack.mitre.org/techniques/T1560/ +description: | + Detects creation of a new Google Cloud Storage (GCS) bucket. Attackers may create buckets to stage stolen data, host malware, or establish command-and-control infrastructure. Unexpected bucket creation should be investigated, especially if the bucket has public access configured. + + Next Steps: + 1. Verify if the bucket creation was authorized + 2. Check the bucket's name and location for suspicious patterns + 3. Review the bucket's IAM bindings and uniform bucket-level access settings + 4. Check if the bucket has public access or default object ACLs + 5. If unauthorized, delete the bucket and investigate the user + 6. Review other storage operations by the same user in the same time window +where: | + equals("log.protoPayloadServiceName", "storage.googleapis.com") && + equals("log.protoPayloadMethodName", "storage.buckets.create") && + exists("origin.user") From 55d1a6a197c95d57816aa1596f25ff50c189c09e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20L=20Qui=C3=B1ones=20Rojas?= <73146718+JocLRojas@users.noreply.github.com> Date: Mon, 15 Jun 2026 23:08:30 +0300 Subject: [PATCH 38/47] fix(rules/google): rebalance CIA impact scores for GCP rules (#2227) --- rules/cloud/google/gcp_gcs_data_access.yml | 2 +- rules/cloud/google/gcp_iam_policy_changed.yml | 6 +++--- rules/cloud/google/gcp_privileged_role_granted.yml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rules/cloud/google/gcp_gcs_data_access.yml b/rules/cloud/google/gcp_gcs_data_access.yml index f9487cdb0..fe0aeefb2 100644 --- a/rules/cloud/google/gcp_gcs_data_access.yml +++ b/rules/cloud/google/gcp_gcs_data_access.yml @@ -4,7 +4,7 @@ dataTypes: - google name: GCP Cloud Storage — Sensitive Data Access impact: - confidentiality: 4 + confidentiality: 3 integrity: 1 availability: 1 category: Discovery diff --git a/rules/cloud/google/gcp_iam_policy_changed.yml b/rules/cloud/google/gcp_iam_policy_changed.yml index 611d275c5..4916be7de 100644 --- a/rules/cloud/google/gcp_iam_policy_changed.yml +++ b/rules/cloud/google/gcp_iam_policy_changed.yml @@ -4,9 +4,9 @@ dataTypes: - google name: GCP IAM Policy Changed — Privilege Escalation impact: - confidentiality: 4 - integrity: 4 - availability: 3 + confidentiality: 3 + integrity: 3 + availability: 2 category: Privilege Escalation technique: "T1098 - Account Manipulation" adversary: origin diff --git a/rules/cloud/google/gcp_privileged_role_granted.yml b/rules/cloud/google/gcp_privileged_role_granted.yml index 71a64a27d..e94599e82 100644 --- a/rules/cloud/google/gcp_privileged_role_granted.yml +++ b/rules/cloud/google/gcp_privileged_role_granted.yml @@ -4,9 +4,9 @@ dataTypes: - google name: GCP Privileged Role Granted — Owner or Editor impact: - confidentiality: 5 - integrity: 5 - availability: 3 + confidentiality: 3 + integrity: 3 + availability: 1 category: Privilege Escalation technique: "T1078 - Valid Accounts" adversary: origin From b6cad63100cea4086b50652199fe85995ebd3338 Mon Sep 17 00:00:00 2001 From: Yorjander Hernandez Vergara Date: Mon, 15 Jun 2026 16:26:22 -0400 Subject: [PATCH 39/47] feat[ci](pr-review): severity-based merge gate; exclude rules/filters/definitions from AI review --- .github/ai-prompts/README.md | 48 ++++--- .github/ai-prompts/bugs.md | 38 +++--- .github/scripts/ai-review.sh | 17 ++- .github/scripts/approver.sh | 125 +++++++++++-------- .github/workflows/_pr-reusable-ai-review.yml | 35 ++++++ 5 files changed, 176 insertions(+), 87 deletions(-) diff --git a/.github/ai-prompts/README.md b/.github/ai-prompts/README.md index 7e330126b..ac992b851 100644 --- a/.github/ai-prompts/README.md +++ b/.github/ai-prompts/README.md @@ -27,7 +27,7 @@ this exact shape (no markdown, no code fences, no extra text): "summary": "", "findings": [ { - "severity": "high" | "medium" | "low", + "severity": "critical" | "high" | "medium" | "low", "file": "", "line": , "message": "" @@ -36,22 +36,33 @@ this exact shape (no markdown, no code fences, no extra text): } ``` +### Severity drives the merge gate + +The approver blocks the merge based on **severity**, not on how many findings +there are. Pick the lowest severity that honestly fits — don't inflate a nit. + +- **`critical` / `high` → BLOCKING.** Something that can break: crashes, nil + dereferences, data loss/corruption, races/deadlocks, broken or unsafe DB + migrations, security holes, breaking API/proto/contract changes. These stop + auto-merge. +- **`medium` / `low` → non-blocking WARNING.** Real but contained: missing + user feedback, inconsistent patterns, naming, typos in docs/strings, style. + Reported as warnings; the PR can still merge. + ### Tier semantics -- **Tier 1 — Approve.** The change is simple, doesn't touch critical logic, - no issues detected. The approver aggregates all tiers and, if every - prompt returns Tier 1, approves the PR. -- **Tier 2 — Changes requested.** Minor issues the author must fix before - merging: typos, small bugs, out-of-context code, noticeable style - problems, incomplete mocks or tests. -- **Tier 3 — Engineer review required.** The diff touches critical paths - (crypto, auth, DB migrations, installer, gRPC contracts, CI/CD, secret - handling) or introduces changes the model can't judge with sufficient - confidence. The approver blocks the merge and @mentions the senior - engineering team. - -The approver takes the **maximum tier** across all prompts: if security -returns Tier 1 but architecture returns Tier 3, the final verdict is Tier 3. +`tier` is a coarse signal. The gate uses severity for blocking, **plus** Tier 3: + +- **Tier 1** — fine to merge; no high/critical issues (minor warnings allowed). +- **Tier 2** — at least one high-severity bug that should be fixed. +- **Tier 3** — engineer review required / could break. Critical paths (crypto, + auth, DB migrations, installer, gRPC contracts, CI/CD, secret handling) or + changes the model can't judge confidently. Always blocks and @mentions the + team. + +**The merge is blocked if** any finding is `high`/`critical`, **or** any prompt +returns Tier 3, **or** no review ran. Otherwise the approver approves the PR +(any medium/low findings ride along as warnings). ### When there's nothing to report @@ -60,10 +71,9 @@ Tier 1, a brief `summary` ("No security concerns detected.") and ### Unparseable responses -If the model returns something that isn't valid JSON matching the schema, -the approver treats it as **Tier 2** with a generic finding asking for -manual review. Fail-safe behaviour — we'd rather block and ask for human -review than let something pass without understanding it. +If the model returns something that isn't valid JSON matching the schema, the +approver treats it as a blocking `high` finding. Fail-safe behaviour — we'd +rather hold for a human than let something pass without understanding it. ## Picking a model diff --git a/.github/ai-prompts/bugs.md b/.github/ai-prompts/bugs.md index 465bcec4f..02379e60b 100644 --- a/.github/ai-prompts/bugs.md +++ b/.github/ai-prompts/bugs.md @@ -44,25 +44,31 @@ You are a senior code reviewer. Review the Pull Request diff looking for rest of the diff. Even in a 100-file PR dominated by backend changes, a single misspelling in a guide or a personal name in a customer-facing doc still warrants a finding — do not skip it because "the real work is -elsewhere". When you find any of these, set tier to AT LEAST 2. +elsewhere". Report these as `low`/`medium` (they're warnings, not blockers). **Ignore** preexisting issues on lines not touched by the diff. -## How to assign tier +## Severity (this is what blocks the merge) -- **Tier 1** — No concrete bugs detected AND no user-facing string - anomalies (typos, internal references, contact info leaks). The change - looks correct. -- **Tier 2** — Concrete but contained bugs the author must fix before - merging (off-by-one, error swallowing, unclosed resources, - out-of-context code). **Always Tier 2 minimum** if you find any - user-facing string anomaly: typos in docs/guides/messages, personal - names or internal handles in customer-facing content, internal URLs - or ticket IDs leaking into public docs. -- **Tier 3** — A bug that may cause data corruption, deadlock, large-scale - leaks, or any issue whose impact the author shouldn't fix without a - second opinion. Also applies if the diff touches DB migrations, error - handling on transactional paths, or complex concurrency. +Pick the lowest severity that honestly fits; don't inflate a nit. + +- **`critical` / `high` — blocking.** A bug that will actually break behavior: + nil/null deref, out-of-bounds, race/deadlock, goroutine/resource leak, + unhandled error on an important path, inverted logic, malformed query, a + migration that breaks existing data, out-of-context code that changes + behavior. Use `critical` for data corruption, deadlock, or large-scale leaks. +- **`medium` / `low` — non-blocking warning.** Real but contained: missing + user feedback, inconsistent error-handling style, naming, typos in + docs/guides/messages, personal names or internal handles/URLs/ticket IDs in + customer-facing content. + +## Tier + +- **Tier 1** — no high/critical bugs (minor warnings are fine). +- **Tier 2** — at least one high-severity bug to fix before merging. +- **Tier 3** — could cause data corruption, deadlock, or large-scale leaks, or + the diff touches DB migrations, transactional error handling, or complex + concurrency and needs a second opinion. ## Output @@ -73,7 +79,7 @@ Respond with valid JSON ONLY (no markdown, no backticks, no extra text): "tier": 1 | 2 | 3, "summary": "", "findings": [ - {"severity": "high"|"medium"|"low", "file": "", "line": , "message": ""} + {"severity": "critical"|"high"|"medium"|"low", "file": "", "line": , "message": ""} ] } ``` diff --git a/.github/scripts/ai-review.sh b/.github/scripts/ai-review.sh index 4696701a0..25f18c478 100755 --- a/.github/scripts/ai-review.sh +++ b/.github/scripts/ai-review.sh @@ -47,10 +47,10 @@ write_fallback() { tier: 2, summary: "AI review could not parse model response — manual review recommended.", findings: [{ - severity: "medium", + severity: "high", file: "(n/a)", line: 0, - message: $reason + message: ($reason + " (fail-safe: a review that cannot run is treated as blocking).") }] }' > "$OUTPUT_FILE" echo "::warning::Wrote fallback result: $reason" @@ -83,6 +83,19 @@ MODEL="${prompt_model:-$DEFAULT_MODEL}" echo "::group::AI review — prompt: $prompt_name (model: $MODEL)" +# --- Nothing to review ------------------------------------------------------- +# The diff can be empty after upstream filtering (e.g. a PR that only touches +# excluded rules/filters/definitions paths). Pass as Tier 1 instead of calling +# the model with an empty diff. +if [[ ! -s "$DIFF_FILE" ]] || ! grep -q '[^[:space:]]' "$DIFF_FILE"; then + jq -n --arg prompt "$prompt_name" --arg model "$MODEL" \ + '{prompt: $prompt, model: $model, tier: 1, summary: "No reviewable changes in this diff (excluded paths only).", findings: []}' \ + > "$OUTPUT_FILE" + echo "Empty diff — wrote Tier 1 pass." + echo "::endgroup::" + exit 0 +fi + # --- Build request body ------------------------------------------------------ prompt_body=$(tail -n "+${body_start}" "$PROMPT_FILE") diff --git a/.github/scripts/approver.sh b/.github/scripts/approver.sh index a127668c1..66395e1d7 100755 --- a/.github/scripts/approver.sh +++ b/.github/scripts/approver.sh @@ -143,10 +143,17 @@ fi # ============================================================================= # 2. AI verdict — read every ai-review-* artifact +# +# Gate policy (severity-based): only HIGH/CRITICAL findings — or an explicit +# Tier 3 (critical path / needs a human), or a review that couldn't run — +# block the merge. MEDIUM/LOW findings are surfaced as non-blocking warnings +# and do NOT stop auto-merge. # ============================================================================= declare -a ai_results=() declare -i max_tier=1 +has_block_sev=false # any high/critical finding +has_any_findings=false # any finding at all (for warning vs clean wording) ai_findings_md="" shopt -s nullglob @@ -154,37 +161,55 @@ for d in "$ARTIFACTS_DIR"/ai-review-*/; do f="${d}result.json" [[ -f "$f" ]] || continue ai_results+=("$f") + tier=$(jq -r '.tier // 2' "$f") - if (( tier > max_tier )); then - max_tier=$tier + (( tier > max_tier )) && max_tier=$tier + + if jq -e '[(.findings // [])[].severity // "" | ascii_downcase] | any(. == "high" or . == "critical")' "$f" >/dev/null 2>&1; then + has_block_sev=true + fi + if jq -e '((.findings // []) | length) > 0' "$f" >/dev/null 2>&1; then + has_any_findings=true fi done shopt -u nullglob +no_ai=false if [[ ${#ai_results[@]} -eq 0 ]]; then - echo "::warning::No AI review artifacts — treating as tier 2 fail-safe" - max_tier=2 + echo "::warning::No AI review artifacts — fail-safe block" + no_ai=true fi -# Build a markdown section per AI prompt result. +# Final AI gate: block on a high/critical finding, an explicit Tier 3, or a +# review that did not run. Tier 2 on its own (only medium/low) does NOT block. +ai_blocked=false +if $no_ai || $has_block_sev || (( max_tier >= 3 )); then + ai_blocked=true +fi + +# Build a markdown section per AI prompt result, labelled by what it found +# (blocking high/critical vs non-blocking warnings vs clean). for f in "${ai_results[@]}"; do prompt=$(jq -r '.prompt // "unknown"' "$f") model=$(jq -r '.model // "?"' "$f") - tier=$(jq -r '.tier // 2' "$f") summary=$(jq -r '.summary // "(no summary)"' "$f") + p_block=$(jq -r '[(.findings // [])[].severity // "" | ascii_downcase] | any(. == "high" or . == "critical")' "$f" 2>/dev/null || echo false) + p_count=$(jq -r '(.findings // []) | length' "$f" 2>/dev/null || echo 0) + p_tier=$(jq -r '.tier // 2' "$f") findings=$(jq -r ' - .findings // [] | + (.findings // []) | if length == 0 then " _No findings._" else map(" - **\(.severity // "?")** `\(.file // "?"):\(.line // "?")` — \(.message // "")") | join("\n") end ' "$f") - case "$tier" in - 1) icon="✅" label="Tier 1 — looks clean" ;; - 2) icon="⚠️" label="Tier 2 — changes requested" ;; - 3) icon="🛑" label="Tier 3 — engineer review required" ;; - *) icon="❓" label="Tier ?" ;; - esac + if [[ "$p_block" == "true" || "$p_tier" == "3" ]]; then + icon="🛑" label="blocking — must fix before merge" + elif (( p_count > 0 )); then + icon="⚠️" label="non-blocking warnings" + else + icon="✅" label="clean" + fi ai_findings_md+=$'\n'"#### $icon \`$prompt\` (\`$model\`) — $label"$'\n\n' ai_findings_md+="**Summary:** $summary"$'\n\n' ai_findings_md+="$findings"$'\n' @@ -219,32 +244,30 @@ else fi # --- AI verdict comment (always) --- -case "$max_tier" in - 1) - ai_header="### ✅ AI review — Approved" - ai_intro="All prompts returned Tier 1. No blocking issues detected in this diff." - ;; - 2) - ai_header="### ⚠️ AI review — Changes requested" - ai_intro="One or more prompts found issues the author should fix before merging. Details below." - ;; - 3) - mention="" - if [[ -n "$TIER3_REVIEWERS" ]]; then - IFS=',' read -ra handles <<< "$TIER3_REVIEWERS" - for h in "${handles[@]}"; do - h="$(echo "$h" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/^@//')" - [[ -n "$h" ]] && mention+="@$h " - done - fi - ai_header="### 🛑 AI review — Engineer review required" - ai_intro="This PR touches critical paths or introduces changes the model cannot judge with sufficient confidence. ${mention}please review." - ;; - *) - ai_header="### ❓ AI review — Unknown verdict" - ai_intro="The approver could not determine an overall tier." - ;; -esac +if $no_ai; then + ai_header="### ❓ AI review — could not run" + ai_intro="No AI results were produced, so the merge is held for a human. Check the workflow logs." +elif (( max_tier >= 3 )); then + mention="" + if [[ -n "$TIER3_REVIEWERS" ]]; then + IFS=',' read -ra handles <<< "$TIER3_REVIEWERS" + for h in "${handles[@]}"; do + h="$(echo "$h" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/^@//')" + [[ -n "$h" ]] && mention+="@$h " + done + fi + ai_header="### 🛑 AI review — Engineer review required" + ai_intro="This PR touches critical paths or introduces changes the model cannot judge with sufficient confidence. ${mention}please review." +elif $has_block_sev; then + ai_header="### 🛑 AI review — Blocking issues" + ai_intro="One or more high/critical issues can break things and must be fixed before merging. Details below." +elif $has_any_findings; then + ai_header="### ✅ AI review — Approved with warnings" + ai_intro="Only minor (medium/low) issues were found. They won't block the merge, but consider addressing them." +else + ai_header="### ✅ AI review — Approved" + ai_intro="No issues detected in this diff." +fi ai_body=$(cat < /tmp/pr.diff echo "Diff size: $(wc -c < /tmp/pr.diff) bytes" + - name: Exclude rules/filters/definitions from the review diff + # Changes under any "rules", "filters" or "definitions" folder are + # content (detection rules, correlation filters, definitions), not code, + # so they're dropped before the AI sees the diff. Per-file sections are + # split on the "diff --git" header and any whose path contains one of + # those folder names (at any depth) is removed. + run: | + python3 - <<'PY' + import re + + path = "/tmp/pr.diff" + with open(path, "r", encoding="utf-8", errors="replace") as fh: + content = fh.read() + + EXCLUDED = {"rules", "filters", "definitions"} + sections = re.split(r'(?m)^(?=diff --git )', content) + + def is_excluded(section: str) -> bool: + m = re.match(r'diff --git a/(.+?) b/(.+)', section) + if not m: + return False + for p in (m.group(1).strip(), m.group(2).strip()): + if EXCLUDED.intersection(p.split('/')): + return True + return False + + kept = [s for s in sections if s and not is_excluded(s)] + out = "".join(kept) + with open(path, "w", encoding="utf-8") as fh: + fh.write(out) + + dropped = sum(1 for s in sections if s and is_excluded(s)) + print(f"Dropped {dropped} excluded file section(s); filtered diff size: {len(out)} bytes") + PY + - name: Run AI review env: PROMPT_FILE: ${{ matrix.prompt.path }} From ba4361320b587497f36de863c0562247217b773a Mon Sep 17 00:00:00 2001 From: Yorjander Hernandez Vergara Date: Tue, 16 Jun 2026 08:52:22 -0400 Subject: [PATCH 40/47] fix[ci](pr-review): don't gate routine go.mod/go.sum bumps as Tier 3 --- .github/ai-prompts/README.md | 10 ++++++++++ .github/ai-prompts/architecture.md | 30 ++++++++++++++++++++++++++---- .github/ai-prompts/security.md | 23 ++++++++++++++++++++++- 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/.github/ai-prompts/README.md b/.github/ai-prompts/README.md index ac992b851..cf87603d4 100644 --- a/.github/ai-prompts/README.md +++ b/.github/ai-prompts/README.md @@ -64,6 +64,16 @@ there are. Pick the lowest severity that honestly fits — don't inflate a nit. returns Tier 3, **or** no review ran. Otherwise the approver approves the PR (any medium/low findings ride along as warnings). +### Routine dependency bumps + +A separate required check (`go_deps`) already enforces that Go modules are on +their latest version, so mass `go.mod` / `go.sum` bumps are routine and +expected. The `architecture` and `security` prompts treat a version bump of +existing modules as **Tier 1** — not an architectural/agent-breaking change +and not a vulnerability — and only flag genuine anomalies (new deps, major +breaking jumps, downgrades, known-vulnerable pins, suspicious `replace` +directives). Don't add prompts that re-block on routine bumps. + ### When there's nothing to report Tier 1, a brief `summary` ("No security concerns detected.") and diff --git a/.github/ai-prompts/architecture.md b/.github/ai-prompts/architecture.md index 0777d6ee8..d1b8499c8 100644 --- a/.github/ai-prompts/architecture.md +++ b/.github/ai-prompts/architecture.md @@ -32,6 +32,27 @@ React/Angular frontend). Your job is to spot **architectural deviations**. **Ignore** style, naming, formatting, or refactors that don't affect structure. +## Routine dependency updates are not architectural changes + +A separate **required** CI check (`go_deps` / `go-deps.sh --check`) already +enforces that every Go module is on its latest version and still builds, so +mass `go.mod` / `go.sum` bumps are an expected, routine part of this repo's +workflow. A version bump of existing modules is **not** an architectural +deviation and **not** an agent-breaking change — even when: + +- it lands under `agent/`, `agent-manager/`, `installer/`, or a plugin (the + file path alone is not a contract or wire-protocol change), or +- the bumped module is security-relevant (SDKs, gRPC, protobuf, crypto). + +A diff that is **only** dependency version bumps of existing modules is +**Tier 1** — do not raise `high` findings or escalate to Tier 3 for it. Do +still flag a change that is more than a routine bump: a brand-new +third-party dependency, a *major* version jump documented as breaking, a +**downgrade**, or a new/edited `replace` directive pointing somewhere +unexpected. The critical-path and agent-breaking rules below are about +**code and contract** changes (protos, wire protocol, auth, migrations), not +manifest version bumps. + ## How to assign tier - **Tier 1** — No architectural deviations detected. @@ -45,10 +66,11 @@ structure. - Installer (`installer/`). - Auth / crypto / secret handling. - GitHub Actions workflows or CI scripts. - - **Agent code (`agent/`), agent-manager wire protocol, or any change - that forces a synchronized agent+server upgrade.** Deployed agents - in the field may be on older versions; breaking their compatibility - requires senior review and a coordinated rollout plan. + - **Agent code or contract** (`agent/` logic, agent-manager wire + protocol — **not** a routine `go.mod`/`go.sum` version bump) **or any + change that forces a synchronized agent+server upgrade.** Deployed + agents in the field may be on older versions; breaking their + compatibility requires senior review and a coordinated rollout plan. - Any change that breaks backwards compatibility of a public endpoint or persisted schema. diff --git a/.github/ai-prompts/security.md b/.github/ai-prompts/security.md index 20d40b55a..c5e76a875 100644 --- a/.github/ai-prompts/security.md +++ b/.github/ai-prompts/security.md @@ -37,6 +37,25 @@ do not skip it. **Ignore** preexisting issues on lines not touched by the diff. +## Routine dependency updates are not vulnerabilities + +A separate **required** CI check (`go_deps`) already enforces that every Go +module is on its latest version, so mass `go.mod` / `go.sum` bumps are a +routine, expected part of this repo's workflow. A version bump of an +existing dependency — **including** security-relevant ones (threatwinds +SDK, gRPC, protobuf, gofalcon, crypto libraries) — is **not by itself a +vulnerability** and does **not** count as touching a "security-critical +path" below. Do not raise a finding or mark Tier 3 merely because a +security-related module was bumped to a newer version. + +A diff that is **only** dependency version bumps is **Tier 1** for the +vulnerability checks (the information-disclosure check still applies to any +user-facing text in the diff). Do raise a finding when a dependency change +is more than a routine bump: a pin to a **known-vulnerable or yanked** +version, a **downgrade** that reintroduces a fixed CVE, a new dependency +from an untrusted / typosquatted source, or a `replace` directive +redirecting a module somewhere unexpected. + ## How to assign tier - **Tier 1** — No vulnerabilities introduced by this diff AND no @@ -50,7 +69,9 @@ do not skip it. secret handling, installer, token/JWT generation) or introduces a high-impact vulnerability (RCE, auth bypass, secret leak). Even if the change looks fine, if it touches these paths mark Tier 3 — human - verification outweighs your individual confidence. + verification outweighs your individual confidence. (A `go.mod` / `go.sum` + version bump does **not** count as touching these paths — see *Routine + dependency updates* above.) ## Output From 8b51f2d557a8e746ecf98626dfcda084b53f9ee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Tue, 16 Jun 2026 06:58:13 -0600 Subject: [PATCH 41/47] fix[backend](alert_responses): reduces schedule time to executeResponse se from 5mins to 15 seconds (#2230) * fix[backend](alert_responses): reduces schedule time to executeResponse from 5mins to 15 seconds * fix[backend](go_deps): updated go dependencies --- agent-manager/go.mod | 36 ++-- agent-manager/go.sum | 73 ++++--- agent/go.mod | 50 ++--- agent/go.sum | 109 ++++++----- as400/go.mod | 50 ++--- as400/go.sum | 101 +++++----- as400/updater/go.mod | 39 ++-- as400/updater/go.sum | 85 ++++---- .../UtmAlertResponseRuleService.java | 2 +- installer/go.mod | 4 +- installer/go.sum | 8 +- plugins/alerts/go.mod | 50 ++--- plugins/alerts/go.sum | 119 ++++++------ plugins/aws/go.mod | 82 ++++---- plugins/aws/go.sum | 165 ++++++++-------- plugins/azure/go.mod | 54 +++--- plugins/azure/go.sum | 109 ++++++----- plugins/bitdefender/go.mod | 50 ++--- plugins/bitdefender/go.sum | 101 +++++----- plugins/config/go.mod | 52 ++--- plugins/config/go.sum | 125 ++++++------ plugins/crowdstrike/go.mod | 51 ++--- plugins/crowdstrike/go.sum | 105 +++++----- plugins/events/go.mod | 50 ++--- plugins/events/go.sum | 119 ++++++------ plugins/feeds/go.mod | 54 +++--- plugins/feeds/go.sum | 129 ++++++------ plugins/gcp/go.mod | 48 ++--- plugins/gcp/go.sum | 97 +++++----- plugins/geolocation/go.mod | 50 ++--- plugins/geolocation/go.sum | 119 ++++++------ plugins/inputs/go.mod | 49 ++--- plugins/inputs/go.sum | 99 +++++----- plugins/modules-config/go.mod | 90 ++++----- plugins/modules-config/go.sum | 183 +++++++++--------- plugins/o365/go.mod | 50 ++--- plugins/o365/go.sum | 101 +++++----- plugins/soc-ai/go.mod | 52 ++--- plugins/soc-ai/go.sum | 125 ++++++------ plugins/sophos/go.mod | 50 ++--- plugins/sophos/go.sum | 101 +++++----- plugins/stats/go.mod | 52 ++--- plugins/stats/go.sum | 125 ++++++------ utmstack-collector/go.mod | 50 ++--- utmstack-collector/go.sum | 109 ++++++----- 45 files changed, 1769 insertions(+), 1753 deletions(-) diff --git a/agent-manager/go.mod b/agent-manager/go.mod index 94b393864..9b9abd399 100644 --- a/agent-manager/go.mod +++ b/agent-manager/go.mod @@ -13,19 +13,19 @@ require ( gorm.io/gorm v1.31.1 ) -require go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect +require go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect require ( - 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // indirect github.com/gabriel-vasile/mimetype v1.4.13 // indirect - github.com/gin-contrib/sse v1.1.0 // indirect + github.com/gin-contrib/sse v1.1.1 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect @@ -36,20 +36,20 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // 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.21 + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/threatwinds/go-sdk v1.1.26 github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.3.1 // 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/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/net v0.55.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 + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect ) diff --git a/agent-manager/go.sum b/agent-manager/go.sum index 747140f19..d13015931 100644 --- a/agent-manager/go.sum +++ b/agent-manager/go.sum @@ -1,23 +1,23 @@ 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= 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= @@ -30,10 +30,10 @@ 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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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= @@ -61,22 +61,22 @@ github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzh github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 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/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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -89,16 +89,16 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -113,23 +113,22 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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.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/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= 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.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= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/agent/go.mod b/agent/go.mod index 316ae7e01..0872ebf07 100644 --- a/agent/go.mod +++ b/agent/go.mod @@ -13,10 +13,10 @@ require ( 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.21 + github.com/threatwinds/go-sdk v1.1.26 github.com/threatwinds/logger v1.2.3 github.com/utmstack/UTMStack/shared v0.0.0 - golang.org/x/sys v0.45.0 + golang.org/x/sys v0.46.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 gorm.io/gorm v1.31.1 @@ -25,24 +25,24 @@ require ( replace github.com/utmstack/UTMStack/shared => ../shared require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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.13 // indirect - github.com/gin-contrib/sse v1.1.0 // indirect - github.com/gin-gonic/gin v1.11.0 // indirect + github.com/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // indirect github.com/glebarez/go-sqlite v1.22.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -51,30 +51,32 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/ncruces/go-strftime v1.0.0 // indirect github.com/opensearch-project/opensearch-go/v4 v4.6.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // indirect github.com/prometheus/procfs v0.19.2 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/spf13/pflag v1.0.9 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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/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 + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // 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 340588e8b..0ad73d31f 100644 --- a/agent/go.sum +++ b/agent/go.sum @@ -1,19 +1,19 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= 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= @@ -33,10 +33,10 @@ github.com/fsnotify/fsnotify v1.10.1 h1:b0/UzAf9yR5rhf3RPm9gf3ehBPpf0oZKIjtpKrx5 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= -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-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ= github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc= github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw= @@ -51,16 +51,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -91,8 +91,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -104,8 +104,8 @@ github.com/netsampler/goflow2 v1.3.7 h1:XZaTy8kkMnGXpJ9hS3KbO1McyrFTpVNhVFEx9rNh github.com/netsampler/goflow2 v1.3.7/go.mod h1:4UZsVGVAs//iMCptUHn3WNScztJeUhZH7kDW2+/vDdQ= 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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= @@ -113,8 +113,8 @@ github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4 github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= 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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -138,16 +138,14 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= 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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -158,6 +156,8 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -172,35 +172,34 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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/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/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= 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.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.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= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/as400/go.mod b/as400/go.mod index 0a25b6089..2eebf9324 100644 --- a/as400/go.mod +++ b/as400/go.mod @@ -8,7 +8,7 @@ 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.1.21 + github.com/threatwinds/go-sdk v1.1.26 github.com/threatwinds/logger v1.2.3 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 @@ -17,53 +17,55 @@ require ( ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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.13 // indirect - github.com/gin-contrib/sse v1.1.0 // indirect - github.com/gin-gonic/gin v1.11.0 // indirect + github.com/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // 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/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // 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/quic-go/quic-go v0.59.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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 + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // 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 diff --git a/as400/go.sum b/as400/go.sum index 9e3d605c2..fc9bcfeb5 100644 --- a/as400/go.sum +++ b/as400/go.sum @@ -1,19 +1,19 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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= @@ -26,10 +26,10 @@ github.com/elastic/go-windows v1.0.2 h1:yoLLsAsV5cfg9FLhZ9EXZ2n2sQFKeDYrHenkcivY github.com/elastic/go-windows v1.0.2/go.mod h1:bGcDpBzXgYSqM0Gx3DM4+UxFj300SZLixie9u9ixLM8= 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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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/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= @@ -44,16 +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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -83,8 +83,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -92,8 +92,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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= @@ -101,8 +101,8 @@ github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0leargg 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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/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= @@ -120,16 +120,14 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= 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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -140,6 +138,8 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -154,29 +154,28 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/as400/updater/go.mod b/as400/updater/go.mod index be55ccee3..a09209405 100644 --- a/as400/updater/go.mod +++ b/as400/updater/go.mod @@ -4,45 +4,46 @@ go 1.25.5 require ( github.com/kardianos/service v1.2.4 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 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.15.0 // indirect - github.com/bytedance/sonic/loader v0.5.0 // indirect - github.com/cloudwego/base64x v0.1.6 // indirect + github.com/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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/net v0.52.0 // indirect - golang.org/x/sys v0.42.0 // indirect - golang.org/x/text v0.35.0 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.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 f3b4ce71f..e29b92161 100644 --- a/as400/updater/go.sum +++ b/as400/updater/go.sum @@ -1,31 +1,31 @@ -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/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= -github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= +github.com/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= +github.com/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= 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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -45,22 +45,22 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 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/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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -74,39 +74,38 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= 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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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/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= +go.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0= 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.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.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= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= +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.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/alert_response_rule/UtmAlertResponseRuleService.java b/backend/src/main/java/com/park/utmstack/service/alert_response_rule/UtmAlertResponseRuleService.java index 7f4489c00..c081f224a 100644 --- a/backend/src/main/java/com/park/utmstack/service/alert_response_rule/UtmAlertResponseRuleService.java +++ b/backend/src/main/java/com/park/utmstack/service/alert_response_rule/UtmAlertResponseRuleService.java @@ -264,7 +264,7 @@ private String buildCommand(String rawCommand, String alertJson) { } } - @Scheduled(fixedDelay = 5, timeUnit = TimeUnit.MINUTES) + @Scheduled(fixedDelay = 30, timeUnit = TimeUnit.SECONDS) public void executeRuleCommands() { final String ctx = CLASSNAME + ".executeRuleCommands"; try { diff --git a/installer/go.mod b/installer/go.mod index 793aa0c58..2aba0409e 100644 --- a/installer/go.mod +++ b/installer/go.mod @@ -3,7 +3,7 @@ module github.com/utmstack/UTMStack/installer go 1.25.1 require ( - github.com/cloudfoundry/gosigar v1.3.120 + github.com/cloudfoundry/gosigar v1.3.121 github.com/docker/docker v28.5.2+incompatible github.com/kardianos/service v1.2.4 github.com/shirou/gopsutil/v3 v3.24.5 @@ -76,7 +76,7 @@ require ( golang.org/x/arch v0.23.0 // indirect golang.org/x/crypto v0.48.0 // indirect golang.org/x/net v0.50.0 // indirect - golang.org/x/sys v0.45.0 // indirect + golang.org/x/sys v0.46.0 // indirect golang.org/x/text v0.34.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/installer/go.sum b/installer/go.sum index 7aa7b509f..6aef3ada7 100644 --- a/installer/go.sum +++ b/installer/go.sum @@ -16,8 +16,8 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= 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/cloudfoundry/gosigar v1.3.120 h1:YkYIRO/Abp1CRqvfzOgP8kiuWT1wJi1/ZBfwvNjstTQ= -github.com/cloudfoundry/gosigar v1.3.120/go.mod h1:h0cx9zTwKaigG61uVYSCcXCvcHIJsrmgd16feJ1VZX4= +github.com/cloudfoundry/gosigar v1.3.121 h1:xI9QecCKAAlNrekPdyKWm2HhcawhdcDWz209SoLPFK8= +github.com/cloudfoundry/gosigar v1.3.121/go.mod h1:km183jBg82AQnCfmDHneesBBS2t6jT4vxWC+zP5RAoA= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -200,8 +200,8 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= diff --git a/plugins/alerts/go.mod b/plugins/alerts/go.mod index ca08bd619..11bd07e8d 100644 --- a/plugins/alerts/go.mod +++ b/plugins/alerts/go.mod @@ -3,53 +3,55 @@ module github.com/utmstack/UTMStack/plugins/alerts go 1.25.5 require ( - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 github.com/tidwall/gjson v1.19.0 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect + github.com/quic-go/quic-go v0.59.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.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-20260203192932-546029d2fa20 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect - google.golang.org/grpc v1.80.0 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/grpc v1.81.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/alerts/go.sum b/plugins/alerts/go.sum index a037f26f7..305c43ecc 100644 --- a/plugins/alerts/go.sum +++ b/plugins/alerts/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -59,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -68,15 +68,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -90,8 +90,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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= @@ -106,45 +106,46 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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= -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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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-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.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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/plugins/aws/go.mod b/plugins/aws/go.mod index a4b0ee8d7..db6c99d00 100644 --- a/plugins/aws/go.mod +++ b/plugins/aws/go.mod @@ -3,70 +3,72 @@ module github.com/utmstack/UTMStack/plugins/aws go 1.25.5 require ( - github.com/aws/aws-sdk-go-v2 v1.41.7 - github.com/aws/aws-sdk-go-v2/config v1.32.18 - github.com/aws/aws-sdk-go-v2/credentials v1.19.17 + github.com/aws/aws-sdk-go-v2 v1.42.0 + github.com/aws/aws-sdk-go-v2/config v1.32.25 + github.com/aws/aws-sdk-go-v2/credentials v1.19.24 github.com/google/uuid v1.6.0 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 ) require ( - github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 // indirect - github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect - github.com/bytedance/gopkg v0.1.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.30 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.2.0 // indirect + github.com/bytedance/gopkg v0.1.4 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/opensearch-project/opensearch-go/v4 v4.6.0 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect - github.com/aws/smithy-go v1.25.1 // 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/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.29 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.29 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.29 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.76.0 + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.29 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.31.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.43.3 // indirect + github.com/aws/smithy-go v1.27.1 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.1 // 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 + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/plugins/aws/go.sum b/plugins/aws/go.sum index f19d299a1..9dbdfdae7 100644 --- a/plugins/aws/go.sum +++ b/plugins/aws/go.sum @@ -1,59 +1,59 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/aws/aws-sdk-go-v2 v1.41.7 h1:DWpAJt66FmnnaRIOT/8ASTucrvuDPZASqhhLey6tLY8= -github.com/aws/aws-sdk-go-v2 v1.41.7/go.mod h1:4LAfZOPHNVNQEckOACQx60Y8pSRjIkNZQz1w92xpMJc= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 h1:gx1AwW1Iyk9Z9dD9F4akX5gnN3QZwUB20GGKH/I+Rho= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10/go.mod h1:qqY157uZoqm5OXq/amuaBJyC9hgBCBQnsaWnPe905GY= -github.com/aws/aws-sdk-go-v2/config v1.32.18 h1:Hcia46bxhGgF3BaSnG8nSNCWmqTK6bj9xN9/FJ3WK6Q= -github.com/aws/aws-sdk-go-v2/config v1.32.18/go.mod h1:zEjCAYmxqDadH1WX8CdBvmLKhUEUVFgKRQG38zjDmrY= -github.com/aws/aws-sdk-go-v2/credentials v1.19.17 h1:gP2nkGsS+KMvF/jfFz2Vv2qiiOqWKyPACSzPsqHgoW8= -github.com/aws/aws-sdk-go-v2/credentials v1.19.17/go.mod h1:Bsew3S/moG5iT77giPj1q8wb/s0RE5/QfH+ASjYtuQc= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 h1:UuSfcORqNSz/ey3VPRS8TcVH2Ikf0/sC+Hdj400QI6U= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23/go.mod h1:+G/OSGiOFnSOkYloKj/9M35s74LgVAdJBSD5lsFfqKg= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 h1:GpT/TrnBYuE5gan2cZbTtvP+JlHsutdmlV2YfEyNde0= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23/go.mod h1:xYWD6BS9ywC5bS3sz9Xh04whO/hzK2plt2Zkyrp4JuA= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 h1:bpd8vxhlQi2r1hiueOw02f/duEPTMK59Q4QMAoTTtTo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23/go.mod h1:15DfR2nw+CRHIk0tqNyifu3G1YdAOy68RftkhMDDwYk= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 h1:OQqn11BtaYv1WLUowvcA30MpzIu8Ti4pcLPIIyoKZrA= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24/go.mod h1:X5ZJyfwVrWA96GzPmUCWFQaEARPR7gCrpq2E92PJwAE= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 h1:6TqDeYdvJJEIJGg5ICy7nzC7/UuHk2Eg3wrpb5bWKPM= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0/go.mod h1:MLJu3PUd8fp5Qvj4CiLvyY5H8y7kxHKlTp060Wsd+Vc= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 h1:FLudkZLt5ci0ozzgkVo8BJGwvqNaZbTWb3UcucAateA= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9/go.mod h1:w7wZ/s9qK7c8g4al+UyoF1Sp/Z45UwMGcqIzLWVQHWk= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 h1:pbrxO/kuIwgEsOPLkaHu0O+m4fNgLU8B3vxQ+72jTPw= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23/go.mod h1:/CMNUqoj46HpS3MNRDEDIwcgEnrtZlKRaHNaHxIFpNA= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 h1:TdJ+HdzOBhU8+iVAOGUTU63VXopcumCOF1paFulHWZc= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.11/go.mod h1:R82ZRExE/nheo0N+T8zHPcLRTcH8MGsnR3BiVGX0TwI= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 h1:7byT8HUWrgoRp6sXjxtZwgOKfhss5fW6SkLBtqzgRoE= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.17/go.mod h1:xNWknVi4Ezm1vg1QsB/5EWpAJURq22uqd38U8qKvOJc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 h1:nDARhv/oF55bcxF7rCI/4PDxOKnVXVWwDuDwCs2I2SQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg= -github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 h1:F/M5Y9I3nwr2IEpshZgh1GeHpOItExNM9L1euNuh/fk= -github.com/aws/aws-sdk-go-v2/service/sts v1.42.1/go.mod h1:mTNxImtovCOEEuD65mKW7DCsL+2gjEH+RPEAexAzAio= -github.com/aws/smithy-go v1.25.1 h1:J8ERsGSU7d+aCmdQur5Txg6bVoYelvQJgtZehD12GkI= -github.com/aws/smithy-go v1.25.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= -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/aws/aws-sdk-go-v2 v1.42.0 h1:XvXMJTkFQtpBKIWZnmr9ZEOc2InWM2yldjXEJ/bymhA= +github.com/aws/aws-sdk-go-v2 v1.42.0/go.mod h1:27+ACypSLljLAEKsCYOmrjKh83vuTRkuAe9Uv/3A4bg= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13 h1:p1BBrg/Hhp6uK7zpejeI8QFXHJeC/mynzi04Sl03k9g= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13/go.mod h1:8cIfkE9MDhkRZGpQ22aV6/lkYeYSozpz16Smrs5x4Ls= +github.com/aws/aws-sdk-go-v2/config v1.32.25 h1:ACCejvStYoilgwrfegSt5ZntCbPrk52qfwyNcnl3omM= +github.com/aws/aws-sdk-go-v2/config v1.32.25/go.mod h1:LJyU8sDRbXUxFn8xMJIGP+v9QYYwveNLI8a/giAOiAs= +github.com/aws/aws-sdk-go-v2/credentials v1.19.24 h1:2hQqYCV9yqyePQ9o6dCrZc/zO8U3TwPr9mIKlZnPu/I= +github.com/aws/aws-sdk-go-v2/credentials v1.19.24/go.mod h1:IDwpACtwqHLISdzfwUUNq4P9DsB/h5BLg4FwJPNfqFY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.29 h1:r6qZHbT+wxgWO/e9vYNUEtg7lv5+UN3pRqKhLXvnArg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.29/go.mod h1:QRnaRcTVGKPGRy8w78HMQtKUGRYcnMZAANATkeVA6Mo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.29 h1:f3vKqSo13fhTYb+JEcXwXefZQE26I1FB5eTSniU67ko= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.29/go.mod h1:MzoLFUArKGpGD+ukmPiTPG1X5x4o6M2kq4v2dr1FiEc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.29 h1:RdwIf/CuUsvJX3RgJagbOyotl/cxoLY4xviKuE7p2GY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.29/go.mod h1:71wt8W2EgswdZy9Mf9KNnzxZ3TiZlv4caKghPktDOkA= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.30 h1:VTGy885W5DKBxWRUJbym9hytNaYzsyaPkCHGRRMAOhU= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.30/go.mod h1:AS0HycUvJRFvTt613AYDOgO2jzw+00cVSMny8XB3yMY= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.76.0 h1:wdP7t2nMLk/EzDTqVgBuBBvY7I461+kPn2+wUyQSelY= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.76.0/go.mod h1:N336OxQ6TvRbb6V1esVE8PtQFU86YvYaS+lVjsJTmP0= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12 h1:ZD2+BSw9vFsNlKYIasSNt3uDbjqqXIBcM13UJv/Lx2k= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12/go.mod h1:Ms4zlcVBbXbiP7EVLhl+lgjvA/a7YphqQ3Ih3174EmI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.29 h1:DRebniUGZ2MqiiIVmQJ04vIXr918hubdHMnarSLEWyU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.29/go.mod h1:LfRkPCD8YHDM2E5eTkos2UpwYeZnBcVarTa8L59bJHA= +github.com/aws/aws-sdk-go-v2/service/signin v1.2.0 h1:3nXpRcFwRCW8n7HgO2QGy0Dc20eQNfBuUemGQhpF8m8= +github.com/aws/aws-sdk-go-v2/service/signin v1.2.0/go.mod h1:LxYujSTLPRlp2vTtcUO/+1ilrew8ytt6SvQyOgejzFQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.31.3 h1:ey1XLTYXb9PcLt4535632o5kCGXNXEhNb620Dqwuylo= +github.com/aws/aws-sdk-go-v2/service/sso v1.31.3/go.mod h1:Lk7PlmoTYryQmyBG0EXqj5BcUbj3whXdU2s3yGI3EAc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.6 h1:yLr03zQE/5Eu5l3QU0Si+xMbLMbSDF2YXsigqXngs6g= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.6/go.mod h1:Q5N6icH+KJZDLh+ESNwzdv6cZ6vLFF/egy3IOxWhmz4= +github.com/aws/aws-sdk-go-v2/service/sts v1.43.3 h1:VrIhKRCSK1umelSgB9RghvA9RTUYeQffyAS5ApXehNI= +github.com/aws/aws-sdk-go-v2/service/sts v1.43.3/go.mod h1:r8wkDOuLaaMFqFiYAb8dGY2A3gJCOujMc6CFOVC4Zhc= +github.com/aws/smithy-go v1.27.1 h1:4T340VFndXtADGF52gYa1POyL7s9E4Z1OeZ1hCscIw8= +github.com/aws/smithy-go v1.27.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= +github.com/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -64,16 +64,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -91,8 +91,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -100,15 +100,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -122,14 +122,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -140,6 +138,8 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -154,29 +154,28 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/plugins/azure/go.mod b/plugins/azure/go.mod index 0ec306018..9ca08d17b 100644 --- a/plugins/azure/go.mod +++ b/plugins/azure/go.mod @@ -3,58 +3,60 @@ module github.com/utmstack/UTMStack/plugins/azure go 1.25.5 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2 v2.0.2 - github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.7.0 + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.8.0 github.com/google/uuid v1.6.0 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 // indirect github.com/Azure/go-amqp v1.5.1 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.1 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/arch v0.24.0 // indirect - golang.org/x/crypto v0.51.0 // indirect - golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect - golang.org/x/net v0.54.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.37.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 + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.53.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.56.0 // indirect + golang.org/x/sys v0.46.0 // indirect + golang.org/x/text v0.38.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/azure/go.sum b/plugins/azure/go.sum index 28c1340bb..8d917cc85 100644 --- a/plugins/azure/go.sum +++ b/plugins/azure/go.sum @@ -1,7 +1,7 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1 h1:jHb/wfvRikGdxMXYV3QG/SzUOPYN9KEUUuC0Yd0/vC0= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1/go.mod h1:pzBXCYn05zvYIrwLgtK8Ap8QcjRg+0i76tMQdWN6wOk= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 h1:aokoqcHvaGjiM3VpjKDfMMnF/8epJ+Q1HLJ7CudztqE= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0/go.mod h1:/WYEx9pcM9Y+Dd/APJaNlSvVSvzl54rrMdZT5+Oi2LM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0= github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 h1:fhqpLE3UEXi9lPaBRpQ6XuRW0nU7hgg4zlmZZa+a9q4= @@ -12,24 +12,24 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/eventhub/armeventhub v1.3. github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/eventhub/armeventhub v1.3.0/go.mod h1:TSH7DcFItwAufy0Lz+Ft2cyopExCpxbOxI5SkH4dRNo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1 h1:/Zt+cDPnpC3OVDm/JKLOs7M2DKmLRIIp3XIx9pHHiig= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1/go.mod h1:Ng3urmn6dYe8gnbCMoHHVl5APYz2txho3koEkV2o2HA= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.7.0 h1:BM85pSYlVYQHdq00nxyPoOkyLF5NArJG3bOsrmbwr4k= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.7.0/go.mod h1:QYjP2cB7ZYtS/8jAbE0VSBZde/tjExqGjp+8JY6/+ts= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.8.0 h1:irsmOWwkp0KCTTNS5e2hdFeIvSQClQo2No3IaNmL3Vw= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.8.0/go.mod h1:GWcBkQj3MqN7ozHKLaCCAuNLiXoIGv2RtanfAwSjY/Y= github.com/Azure/go-amqp v1.5.1 h1:WyiPTz2C3zVvDL7RLAqwWdeoYhMtX62MZzQoP09fzsU= github.com/Azure/go-amqp v1.5.1/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2 h1:RHK7bS+HQMslb1sZpAokUt+zTVmue0hKSs2C791hhzU= github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= github.com/coder/websocket v1.8.14 h1:9L0p0iKiNOibykf283eHkKUHHrpG7f65OE3BhhO7v9g= github.com/coder/websocket v1.8.14/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -40,10 +40,10 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= 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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -54,10 +54,10 @@ 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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= @@ -66,8 +66,8 @@ github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= 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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -89,8 +89,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -98,8 +98,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -107,8 +107,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -122,14 +122,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -140,6 +138,8 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -154,29 +154,28 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= -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.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/plugins/bitdefender/go.mod b/plugins/bitdefender/go.mod index d7a0f1086..45ec78a47 100644 --- a/plugins/bitdefender/go.mod +++ b/plugins/bitdefender/go.mod @@ -5,52 +5,54 @@ go 1.25.5 require ( github.com/google/uuid v1.6.0 github.com/gorilla/mux v1.8.1 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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 + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/bitdefender/go.sum b/plugins/bitdefender/go.sum index 380a564c8..fda5acf7c 100644 --- a/plugins/bitdefender/go.sum +++ b/plugins/bitdefender/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -61,8 +61,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -70,15 +70,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -92,14 +92,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -110,6 +108,8 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -124,29 +124,28 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/plugins/config/go.mod b/plugins/config/go.mod index 1291c76dd..aad49c224 100644 --- a/plugins/config/go.mod +++ b/plugins/config/go.mod @@ -4,53 +4,55 @@ go 1.25.5 require ( github.com/lib/pq v1.12.3 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.6.0 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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-20260203192932-546029d2fa20 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect - google.golang.org/grpc v1.80.0 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/grpc v1.81.1 // indirect google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/plugins/config/go.sum b/plugins/config/go.sum index 094e9cd7b..c262005fa 100644 --- a/plugins/config/go.sum +++ b/plugins/config/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -61,8 +61,8 @@ github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.12.3 h1:tTWxr2YLKwIvK90ZXEw8GP7UFHtcbTtty8zsI+YjrfQ= github.com/lib/pq v1.12.3/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -70,15 +70,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -92,14 +92,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -110,45 +108,46 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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= -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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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-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.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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/plugins/crowdstrike/go.mod b/plugins/crowdstrike/go.mod index 52e79b7d9..fbf61eb60 100644 --- a/plugins/crowdstrike/go.mod +++ b/plugins/crowdstrike/go.mod @@ -3,26 +3,26 @@ module github.com/utmstack/UTMStack/plugins/crowdstrike go 1.25.5 require ( - github.com/crowdstrike/gofalcon v0.20.1 + github.com/crowdstrike/gofalcon v0.21.0 github.com/google/uuid v1.6.0 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/blang/semver/v4 v4.0.0 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cloudwego/base64x v0.1.6 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.24.2 // indirect @@ -48,46 +48,47 @@ require ( github.com/go-openapi/validate v0.25.1 // 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.30.1 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opensearch-project/opensearch-go/v4 v4.6.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect github.com/sirupsen/logrus v1.9.4 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/gjson v1.19.0 // 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.1 // indirect go.mongodb.org/mongo-driver v1.17.7 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // 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/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.36.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/api v0.0.0-20260226221140-a57be14db171 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/crowdstrike/go.sum b/plugins/crowdstrike/go.sum index 280fa3acc..1a90b0e60 100644 --- a/plugins/crowdstrike/go.sum +++ b/plugins/crowdstrike/go.sum @@ -1,33 +1,33 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= 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/crowdstrike/gofalcon v0.20.1 h1:cqdvyNeJvaQ9sK0k09h/n+z308VJffS+4JfgS+bNaSY= -github.com/crowdstrike/gofalcon v0.20.1/go.mod h1:GYbhi35odSf8qFrcxAX6Sx7N/QIJyz8vKmUzuam7Xd8= +github.com/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= +github.com/crowdstrike/gofalcon v0.21.0 h1:vMHpMtzidy07VxhQHMRH6uzHsOL3Efk6y829efDdOUQ= +github.com/crowdstrike/gofalcon v0.21.0/go.mod h1:GYbhi35odSf8qFrcxAX6Sx7N/QIJyz8vKmUzuam7Xd8= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -87,18 +87,18 @@ 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.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w= -github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM= +github.com/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -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-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -116,8 +116,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -127,15 +127,15 @@ github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= @@ -151,14 +151,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -171,6 +169,8 @@ github.com/wI2L/jsondiff v0.7.0 h1:1lH1G37GhBPqCfp/lrs91rf/2j3DktX6qYAKZkLuCQQ= github.com/wI2L/jsondiff v0.7.0/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM= go.mongodb.org/mongo-driver v1.17.7 h1:a9w+U3Vt67eYzcfq3k/OAv284/uUUkL0uP75VE5rCOU= go.mongodb.org/mongo-driver v1.17.7/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +go.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -185,33 +185,32 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= 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.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= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/plugins/events/go.mod b/plugins/events/go.mod index 4e73e7cba..ec018cd55 100644 --- a/plugins/events/go.mod +++ b/plugins/events/go.mod @@ -3,52 +3,54 @@ module github.com/utmstack/UTMStack/plugins/events go 1.25.5 require ( - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 github.com/tidwall/gjson v1.19.0 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect + github.com/quic-go/quic-go v0.59.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.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-20260203192932-546029d2fa20 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect - google.golang.org/grpc v1.80.0 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/grpc v1.81.1 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/plugins/events/go.sum b/plugins/events/go.sum index a037f26f7..305c43ecc 100644 --- a/plugins/events/go.sum +++ b/plugins/events/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -59,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -68,15 +68,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -90,8 +90,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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= @@ -106,45 +106,46 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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= -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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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-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.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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/plugins/feeds/go.mod b/plugins/feeds/go.mod index 58cfffae1..ca3a21142 100644 --- a/plugins/feeds/go.mod +++ b/plugins/feeds/go.mod @@ -5,54 +5,56 @@ go 1.25.5 require ( github.com/AtlasInsideCorp/AtlasInsideAES v1.0.0 github.com/opensearch-project/opensearch-go/v2 v2.3.0 - github.com/threatwinds/go-sdk v1.1.21 - golang.org/x/sync v0.20.0 + github.com/threatwinds/go-sdk v1.1.26 + golang.org/x/sync v0.21.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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-20260203192932-546029d2fa20 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect - google.golang.org/grpc v1.80.0 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/grpc v1.81.1 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/plugins/feeds/go.sum b/plugins/feeds/go.sum index 6014e62b0..f621df8c1 100644 --- a/plugins/feeds/go.sum +++ b/plugins/feeds/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/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= @@ -17,26 +17,26 @@ github.com/aws/aws-sdk-go-v2/service/sso v1.12.10/go.mod h1:ouy2P4z6sJN70fR3ka3w github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10/go.mod h1:AFvkxc8xfBe8XA+5St5XIHHrQQtkxqrRincx4hmMHOk= github.com/aws/aws-sdk-go-v2/service/sts v1.19.0/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8= github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -47,16 +47,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= @@ -77,8 +77,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -88,16 +88,16 @@ github.com/opensearch-project/opensearch-go/v2 v2.3.0 h1:nQIEMr+A92CkhHrZgUhcfsr github.com/opensearch-project/opensearch-go/v2 v2.3.0/go.mod h1:8LDr9FCgUTVoT+5ESjc2+iaZuldqE+23Iq0r1XeNue8= 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -112,14 +112,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -131,44 +129,46 @@ github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2W github.com/wI2L/jsondiff v0.7.0 h1:1lH1G37GhBPqCfp/lrs91rf/2j3DktX6qYAKZkLuCQQ= github.com/wI2L/jsondiff v0.7.0/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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= -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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -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/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -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/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -176,9 +176,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -188,20 +187,20 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -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/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 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-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.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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/plugins/gcp/go.mod b/plugins/gcp/go.mod index f9b52cc6d..ae9e76dce 100644 --- a/plugins/gcp/go.mod +++ b/plugins/gcp/go.mod @@ -5,14 +5,14 @@ go 1.25.8 require ( cloud.google.com/go/pubsub v1.50.2 github.com/google/uuid v1.6.0 - github.com/threatwinds/go-sdk v1.1.21 - google.golang.org/api v0.282.0 + github.com/threatwinds/go-sdk v1.1.26 + google.golang.org/api v0.284.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect cloud.google.com/go v0.123.0 // indirect cloud.google.com/go/auth v0.20.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect @@ -20,24 +20,24 @@ require ( cloud.google.com/go/iam v1.5.3 // indirect cloud.google.com/go/pubsub/v2 v2.4.0 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cloudwego/base64x v0.1.6 // indirect + github.com/cloudwego/base64x v0.1.7 // indirect github.com/felixge/httpsnoop v1.0.4 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.16 // indirect github.com/googleapis/gax-go/v2 v2.22.0 // indirect @@ -45,18 +45,19 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.1 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect @@ -64,19 +65,20 @@ require ( go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/arch v0.24.0 // indirect - golang.org/x/crypto v0.51.0 // indirect - golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect - golang.org/x/sync v0.20.0 // indirect + golang.org/x/sync v0.21.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/gcp/go.sum b/plugins/gcp/go.sum index 730c86718..d17035354 100644 --- a/plugins/gcp/go.sum +++ b/plugins/gcp/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= @@ -22,18 +22,18 @@ cloud.google.com/go/pubsub/v2 v2.4.0/go.mod h1:2lS/XQKq5qtOMs6kHBK+WX1ytUC36kLl2 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= 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/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= -github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= +github.com/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik= github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4= @@ -54,10 +54,10 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= 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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -69,10 +69,10 @@ 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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -91,8 +91,8 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= 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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -123,8 +123,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -132,8 +132,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -142,8 +142,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -158,14 +158,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -178,6 +176,8 @@ github.com/wI2L/jsondiff v0.7.0 h1:1lH1G37GhBPqCfp/lrs91rf/2j3DktX6qYAKZkLuCQQ= github.com/wI2L/jsondiff v0.7.0/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM= go.einride.tech/aip v0.83.0 h1:TI21IdeOnLTwZEJ3BxtImIZk6bsN2Q+sd0x99SLiQ+M= go.einride.tech/aip v0.83.0/go.mod h1:E8+wdTApA70odnpFzJgsGogHozC2JCIhFJBKPr8bVig= +go.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= @@ -198,19 +198,19 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -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/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -228,13 +228,12 @@ golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -251,8 +250,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.282.0 h1:WmJiSVqUnKqJCpJOx7YADbXaC+9DDsnGSfllFSj7R2I= -google.golang.org/api v0.282.0/go.mod h1:6Wssta4c5n9qHq5CBhmlai5h/PUa1djdDAIhYEHyvcM= +google.golang.org/api v0.284.0 h1:i+cKTgeQRcRySkP7QTl5PDO7/pAm8EcMFIUMlNbk4Vc= +google.golang.org/api v0.284.0/go.mod h1:AU44fU+XVZOCcd8uLaBIa/ZgzgPf/0qqY3+m7lQaado= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -260,10 +259,10 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgnawEVsOn6OFsnpyxNPRY9QV01dNB0= google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= -google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI= -google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 h1:PvEgGJf9C/1u5CHkInMg7UFYYUoiaQmW2LbtH0pjB78= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/plugins/geolocation/go.mod b/plugins/geolocation/go.mod index 41948e480..88a37ca41 100644 --- a/plugins/geolocation/go.mod +++ b/plugins/geolocation/go.mod @@ -3,53 +3,55 @@ module github.com/utmstack/UTMStack/plugins/geolocation go 1.25.5 require ( - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 github.com/tidwall/gjson v1.19.0 github.com/tidwall/sjson v1.2.5 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect + github.com/quic-go/quic-go v0.59.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.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-20260203192932-546029d2fa20 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect - google.golang.org/grpc v1.80.0 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/grpc v1.81.1 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/plugins/geolocation/go.sum b/plugins/geolocation/go.sum index 08dce0851..ad2e2e9de 100644 --- a/plugins/geolocation/go.sum +++ b/plugins/geolocation/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -59,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -68,15 +68,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -90,8 +90,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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= @@ -109,45 +109,46 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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= -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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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-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.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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/plugins/inputs/go.mod b/plugins/inputs/go.mod index cd1a024af..68dac18c3 100644 --- a/plugins/inputs/go.mod +++ b/plugins/inputs/go.mod @@ -5,52 +5,53 @@ go 1.25.5 require ( github.com/gin-gonic/gin v1.12.0 github.com/google/uuid v1.6.0 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // indirect github.com/gabriel-vasile/mimetype v1.4.13 // indirect - github.com/gin-contrib/sse v1.1.0 // indirect + github.com/gin-contrib/sse v1.1.1 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.1 // indirect - go.mongodb.org/mongo-driver/v2 v2.5.0 // 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 + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/inputs/go.sum b/plugins/inputs/go.sum index 2e2a8a71f..305c43ecc 100644 --- a/plugins/inputs/go.sum +++ b/plugins/inputs/go.sum @@ -1,25 +1,25 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= 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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -59,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -68,15 +68,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -90,14 +90,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -108,8 +106,8 @@ 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.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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -124,29 +122,28 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/plugins/modules-config/go.mod b/plugins/modules-config/go.mod index 3e9aef7b5..dce6b3bd6 100644 --- a/plugins/modules-config/go.mod +++ b/plugins/modules-config/go.mod @@ -6,54 +6,54 @@ require ( cloud.google.com/go/pubsub v1.50.2 github.com/AtlasInsideCorp/AtlasInsideAES v1.0.0 github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2 v2.0.2 - github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.7.0 - github.com/aws/aws-sdk-go-v2/config v1.32.18 - github.com/aws/aws-sdk-go-v2/credentials v1.19.17 - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 - github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 - github.com/crowdstrike/gofalcon v0.20.1 + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.8.0 + github.com/aws/aws-sdk-go-v2/config v1.32.25 + github.com/aws/aws-sdk-go-v2/credentials v1.19.24 + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.76.0 + github.com/aws/aws-sdk-go-v2/service/sts v1.43.3 + github.com/crowdstrike/gofalcon v0.21.0 github.com/gin-gonic/gin v1.12.0 - github.com/threatwinds/go-sdk v1.1.21 - golang.org/x/sync v0.20.0 - google.golang.org/api v0.282.0 + github.com/threatwinds/go-sdk v1.1.26 + golang.org/x/sync v0.21.0 + google.golang.org/api v0.284.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect cloud.google.com/go v0.123.0 // indirect cloud.google.com/go/auth v0.20.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.5.3 // indirect cloud.google.com/go/pubsub/v2 v2.4.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 // indirect github.com/Azure/go-amqp v1.5.1 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect - github.com/aws/aws-sdk-go-v2 v1.41.7 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect - github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 // indirect - github.com/aws/smithy-go v1.25.1 // indirect + github.com/aws/aws-sdk-go-v2 v1.42.0 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.29 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.29 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.29 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.30 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.29 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.2.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.31.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.6 // indirect + github.com/aws/smithy-go v1.27.1 // indirect github.com/blang/semver/v4 v4.0.0 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cloudwego/base64x v0.1.6 // indirect + github.com/cloudwego/base64x v0.1.7 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/gabriel-vasile/mimetype v1.4.13 // indirect - github.com/gin-contrib/sse v1.1.0 // indirect + github.com/gin-contrib/sse v1.1.1 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.24.2 // indirect @@ -79,11 +79,11 @@ require ( github.com/go-openapi/validate v0.25.1 // 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.30.1 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.16 // indirect @@ -92,22 +92,22 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opensearch-project/opensearch-go/v4 v4.6.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect github.com/sirupsen/logrus v1.9.4 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/gjson v1.19.0 // 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.1 // indirect go.mongodb.org/mongo-driver v1.17.7 // indirect - go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect @@ -115,19 +115,19 @@ require ( go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/arch v0.24.0 // indirect - golang.org/x/crypto v0.51.0 // indirect - golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect - golang.org/x/net v0.55.0 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.53.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.56.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect - golang.org/x/sys v0.45.0 // indirect - golang.org/x/text v0.37.0 // indirect + golang.org/x/sys v0.46.0 // indirect + golang.org/x/text v0.38.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/modules-config/go.sum b/plugins/modules-config/go.sum index 7028f3a99..3934118e2 100644 --- a/plugins/modules-config/go.sum +++ b/plugins/modules-config/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= @@ -21,8 +21,8 @@ cloud.google.com/go/pubsub/v2 v2.4.0 h1:oMKNiBQpXImRWnHYla9uSU66ZzByZwBSCJOEs/pT cloud.google.com/go/pubsub/v2 v2.4.0/go.mod h1:2lS/XQKq5qtOMs6kHBK+WX1ytUC36kLl2ig3zqsGUx8= 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/Azure/azure-sdk-for-go/sdk/azcore v1.21.1 h1:jHb/wfvRikGdxMXYV3QG/SzUOPYN9KEUUuC0Yd0/vC0= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1/go.mod h1:pzBXCYn05zvYIrwLgtK8Ap8QcjRg+0i76tMQdWN6wOk= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 h1:aokoqcHvaGjiM3VpjKDfMMnF/8epJ+Q1HLJ7CudztqE= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0/go.mod h1:/WYEx9pcM9Y+Dd/APJaNlSvVSvzl54rrMdZT5+Oi2LM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0= github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 h1:fhqpLE3UEXi9lPaBRpQ6XuRW0nU7hgg4zlmZZa+a9q4= @@ -33,8 +33,8 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/eventhub/armeventhub v1.3. github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/eventhub/armeventhub v1.3.0/go.mod h1:TSH7DcFItwAufy0Lz+Ft2cyopExCpxbOxI5SkH4dRNo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1 h1:/Zt+cDPnpC3OVDm/JKLOs7M2DKmLRIIp3XIx9pHHiig= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1/go.mod h1:Ng3urmn6dYe8gnbCMoHHVl5APYz2txho3koEkV2o2HA= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.7.0 h1:BM85pSYlVYQHdq00nxyPoOkyLF5NArJG3bOsrmbwr4k= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.7.0/go.mod h1:QYjP2cB7ZYtS/8jAbE0VSBZde/tjExqGjp+8JY6/+ts= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.8.0 h1:irsmOWwkp0KCTTNS5e2hdFeIvSQClQo2No3IaNmL3Vw= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.8.0/go.mod h1:GWcBkQj3MqN7ozHKLaCCAuNLiXoIGv2RtanfAwSjY/Y= github.com/Azure/go-amqp v1.5.1 h1:WyiPTz2C3zVvDL7RLAqwWdeoYhMtX62MZzQoP09fzsU= github.com/Azure/go-amqp v1.5.1/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2 h1:RHK7bS+HQMslb1sZpAokUt+zTVmue0hKSs2C791hhzU= @@ -42,61 +42,61 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2/go.mod h1:HKpQ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= 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/aws/aws-sdk-go-v2 v1.41.7 h1:DWpAJt66FmnnaRIOT/8ASTucrvuDPZASqhhLey6tLY8= -github.com/aws/aws-sdk-go-v2 v1.41.7/go.mod h1:4LAfZOPHNVNQEckOACQx60Y8pSRjIkNZQz1w92xpMJc= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 h1:gx1AwW1Iyk9Z9dD9F4akX5gnN3QZwUB20GGKH/I+Rho= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10/go.mod h1:qqY157uZoqm5OXq/amuaBJyC9hgBCBQnsaWnPe905GY= -github.com/aws/aws-sdk-go-v2/config v1.32.18 h1:Hcia46bxhGgF3BaSnG8nSNCWmqTK6bj9xN9/FJ3WK6Q= -github.com/aws/aws-sdk-go-v2/config v1.32.18/go.mod h1:zEjCAYmxqDadH1WX8CdBvmLKhUEUVFgKRQG38zjDmrY= -github.com/aws/aws-sdk-go-v2/credentials v1.19.17 h1:gP2nkGsS+KMvF/jfFz2Vv2qiiOqWKyPACSzPsqHgoW8= -github.com/aws/aws-sdk-go-v2/credentials v1.19.17/go.mod h1:Bsew3S/moG5iT77giPj1q8wb/s0RE5/QfH+ASjYtuQc= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 h1:UuSfcORqNSz/ey3VPRS8TcVH2Ikf0/sC+Hdj400QI6U= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23/go.mod h1:+G/OSGiOFnSOkYloKj/9M35s74LgVAdJBSD5lsFfqKg= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 h1:GpT/TrnBYuE5gan2cZbTtvP+JlHsutdmlV2YfEyNde0= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23/go.mod h1:xYWD6BS9ywC5bS3sz9Xh04whO/hzK2plt2Zkyrp4JuA= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 h1:bpd8vxhlQi2r1hiueOw02f/duEPTMK59Q4QMAoTTtTo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23/go.mod h1:15DfR2nw+CRHIk0tqNyifu3G1YdAOy68RftkhMDDwYk= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 h1:OQqn11BtaYv1WLUowvcA30MpzIu8Ti4pcLPIIyoKZrA= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24/go.mod h1:X5ZJyfwVrWA96GzPmUCWFQaEARPR7gCrpq2E92PJwAE= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0 h1:6TqDeYdvJJEIJGg5ICy7nzC7/UuHk2Eg3wrpb5bWKPM= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.0/go.mod h1:MLJu3PUd8fp5Qvj4CiLvyY5H8y7kxHKlTp060Wsd+Vc= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 h1:FLudkZLt5ci0ozzgkVo8BJGwvqNaZbTWb3UcucAateA= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9/go.mod h1:w7wZ/s9qK7c8g4al+UyoF1Sp/Z45UwMGcqIzLWVQHWk= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 h1:pbrxO/kuIwgEsOPLkaHu0O+m4fNgLU8B3vxQ+72jTPw= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23/go.mod h1:/CMNUqoj46HpS3MNRDEDIwcgEnrtZlKRaHNaHxIFpNA= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 h1:TdJ+HdzOBhU8+iVAOGUTU63VXopcumCOF1paFulHWZc= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.11/go.mod h1:R82ZRExE/nheo0N+T8zHPcLRTcH8MGsnR3BiVGX0TwI= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 h1:7byT8HUWrgoRp6sXjxtZwgOKfhss5fW6SkLBtqzgRoE= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.17/go.mod h1:xNWknVi4Ezm1vg1QsB/5EWpAJURq22uqd38U8qKvOJc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 h1:nDARhv/oF55bcxF7rCI/4PDxOKnVXVWwDuDwCs2I2SQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg= -github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 h1:F/M5Y9I3nwr2IEpshZgh1GeHpOItExNM9L1euNuh/fk= -github.com/aws/aws-sdk-go-v2/service/sts v1.42.1/go.mod h1:mTNxImtovCOEEuD65mKW7DCsL+2gjEH+RPEAexAzAio= -github.com/aws/smithy-go v1.25.1 h1:J8ERsGSU7d+aCmdQur5Txg6bVoYelvQJgtZehD12GkI= -github.com/aws/smithy-go v1.25.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= +github.com/aws/aws-sdk-go-v2 v1.42.0 h1:XvXMJTkFQtpBKIWZnmr9ZEOc2InWM2yldjXEJ/bymhA= +github.com/aws/aws-sdk-go-v2 v1.42.0/go.mod h1:27+ACypSLljLAEKsCYOmrjKh83vuTRkuAe9Uv/3A4bg= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13 h1:p1BBrg/Hhp6uK7zpejeI8QFXHJeC/mynzi04Sl03k9g= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13/go.mod h1:8cIfkE9MDhkRZGpQ22aV6/lkYeYSozpz16Smrs5x4Ls= +github.com/aws/aws-sdk-go-v2/config v1.32.25 h1:ACCejvStYoilgwrfegSt5ZntCbPrk52qfwyNcnl3omM= +github.com/aws/aws-sdk-go-v2/config v1.32.25/go.mod h1:LJyU8sDRbXUxFn8xMJIGP+v9QYYwveNLI8a/giAOiAs= +github.com/aws/aws-sdk-go-v2/credentials v1.19.24 h1:2hQqYCV9yqyePQ9o6dCrZc/zO8U3TwPr9mIKlZnPu/I= +github.com/aws/aws-sdk-go-v2/credentials v1.19.24/go.mod h1:IDwpACtwqHLISdzfwUUNq4P9DsB/h5BLg4FwJPNfqFY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.29 h1:r6qZHbT+wxgWO/e9vYNUEtg7lv5+UN3pRqKhLXvnArg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.29/go.mod h1:QRnaRcTVGKPGRy8w78HMQtKUGRYcnMZAANATkeVA6Mo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.29 h1:f3vKqSo13fhTYb+JEcXwXefZQE26I1FB5eTSniU67ko= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.29/go.mod h1:MzoLFUArKGpGD+ukmPiTPG1X5x4o6M2kq4v2dr1FiEc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.29 h1:RdwIf/CuUsvJX3RgJagbOyotl/cxoLY4xviKuE7p2GY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.29/go.mod h1:71wt8W2EgswdZy9Mf9KNnzxZ3TiZlv4caKghPktDOkA= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.30 h1:VTGy885W5DKBxWRUJbym9hytNaYzsyaPkCHGRRMAOhU= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.30/go.mod h1:AS0HycUvJRFvTt613AYDOgO2jzw+00cVSMny8XB3yMY= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.76.0 h1:wdP7t2nMLk/EzDTqVgBuBBvY7I461+kPn2+wUyQSelY= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.76.0/go.mod h1:N336OxQ6TvRbb6V1esVE8PtQFU86YvYaS+lVjsJTmP0= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12 h1:ZD2+BSw9vFsNlKYIasSNt3uDbjqqXIBcM13UJv/Lx2k= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12/go.mod h1:Ms4zlcVBbXbiP7EVLhl+lgjvA/a7YphqQ3Ih3174EmI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.29 h1:DRebniUGZ2MqiiIVmQJ04vIXr918hubdHMnarSLEWyU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.29/go.mod h1:LfRkPCD8YHDM2E5eTkos2UpwYeZnBcVarTa8L59bJHA= +github.com/aws/aws-sdk-go-v2/service/signin v1.2.0 h1:3nXpRcFwRCW8n7HgO2QGy0Dc20eQNfBuUemGQhpF8m8= +github.com/aws/aws-sdk-go-v2/service/signin v1.2.0/go.mod h1:LxYujSTLPRlp2vTtcUO/+1ilrew8ytt6SvQyOgejzFQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.31.3 h1:ey1XLTYXb9PcLt4535632o5kCGXNXEhNb620Dqwuylo= +github.com/aws/aws-sdk-go-v2/service/sso v1.31.3/go.mod h1:Lk7PlmoTYryQmyBG0EXqj5BcUbj3whXdU2s3yGI3EAc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.6 h1:yLr03zQE/5Eu5l3QU0Si+xMbLMbSDF2YXsigqXngs6g= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.6/go.mod h1:Q5N6icH+KJZDLh+ESNwzdv6cZ6vLFF/egy3IOxWhmz4= +github.com/aws/aws-sdk-go-v2/service/sts v1.43.3 h1:VrIhKRCSK1umelSgB9RghvA9RTUYeQffyAS5ApXehNI= +github.com/aws/aws-sdk-go-v2/service/sts v1.43.3/go.mod h1:r8wkDOuLaaMFqFiYAb8dGY2A3gJCOujMc6CFOVC4Zhc= +github.com/aws/smithy-go v1.27.1 h1:4T340VFndXtADGF52gYa1POyL7s9E4Z1OeZ1hCscIw8= +github.com/aws/smithy-go v1.27.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= 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/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= -github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= +github.com/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik= github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4= github.com/coder/websocket v1.8.14 h1:9L0p0iKiNOibykf283eHkKUHHrpG7f65OE3BhhO7v9g= github.com/coder/websocket v1.8.14/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= -github.com/crowdstrike/gofalcon v0.20.1 h1:cqdvyNeJvaQ9sK0k09h/n+z308VJffS+4JfgS+bNaSY= -github.com/crowdstrike/gofalcon v0.20.1/go.mod h1:GYbhi35odSf8qFrcxAX6Sx7N/QIJyz8vKmUzuam7Xd8= +github.com/crowdstrike/gofalcon v0.21.0 h1:vMHpMtzidy07VxhQHMRH6uzHsOL3Efk6y829efDdOUQ= +github.com/crowdstrike/gofalcon v0.21.0/go.mod h1:GYbhi35odSf8qFrcxAX6Sx7N/QIJyz8vKmUzuam7Xd8= 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= @@ -116,8 +116,8 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= 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-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= 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.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -179,12 +179,12 @@ 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.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w= -github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM= +github.com/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -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-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= @@ -207,8 +207,8 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= 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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -243,8 +243,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -254,8 +254,8 @@ github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= @@ -266,8 +266,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= @@ -284,14 +284,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -306,8 +304,8 @@ go.einride.tech/aip v0.83.0 h1:TI21IdeOnLTwZEJ3BxtImIZk6bsN2Q+sd0x99SLiQ+M= go.einride.tech/aip v0.83.0/go.mod h1:E8+wdTApA70odnpFzJgsGogHozC2JCIhFJBKPr8bVig= go.mongodb.org/mongo-driver v1.17.7 h1:a9w+U3Vt67eYzcfq3k/OAv284/uUUkL0uP75VE5rCOU= go.mongodb.org/mongo-driver v1.17.7/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= -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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= @@ -328,19 +326,19 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -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/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -350,27 +348,26 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= -golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -381,8 +378,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.282.0 h1:WmJiSVqUnKqJCpJOx7YADbXaC+9DDsnGSfllFSj7R2I= -google.golang.org/api v0.282.0/go.mod h1:6Wssta4c5n9qHq5CBhmlai5h/PUa1djdDAIhYEHyvcM= +google.golang.org/api v0.284.0 h1:i+cKTgeQRcRySkP7QTl5PDO7/pAm8EcMFIUMlNbk4Vc= +google.golang.org/api v0.284.0/go.mod h1:AU44fU+XVZOCcd8uLaBIa/ZgzgPf/0qqY3+m7lQaado= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -390,10 +387,10 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgnawEVsOn6OFsnpyxNPRY9QV01dNB0= google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= -google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI= -google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 h1:PvEgGJf9C/1u5CHkInMg7UFYYUoiaQmW2LbtH0pjB78= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/plugins/o365/go.mod b/plugins/o365/go.mod index 5916dc687..7c0b4f383 100644 --- a/plugins/o365/go.mod +++ b/plugins/o365/go.mod @@ -4,52 +4,54 @@ go 1.25.5 require ( github.com/google/uuid v1.6.0 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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 + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/o365/go.sum b/plugins/o365/go.sum index 8e722fba0..305c43ecc 100644 --- a/plugins/o365/go.sum +++ b/plugins/o365/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -59,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -68,15 +68,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -90,14 +90,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -108,6 +106,8 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -122,29 +122,28 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/plugins/soc-ai/go.mod b/plugins/soc-ai/go.mod index 21f201614..45ce2c5bb 100644 --- a/plugins/soc-ai/go.mod +++ b/plugins/soc-ai/go.mod @@ -2,54 +2,56 @@ module github.com/utmstack/UTMStack/plugins/soc-ai go 1.25.5 -require google.golang.org/grpc v1.80.0 +require google.golang.org/grpc v1.81.1 require ( - github.com/bytedance/gopkg v0.1.3 // indirect + github.com/bytedance/gopkg v0.1.4 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/opensearch-project/opensearch-go/v4 v4.6.0 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect - github.com/threatwinds/go-sdk v1.1.21 - github.com/tidwall/gjson v1.18.0 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // indirect + github.com/threatwinds/go-sdk v1.1.26 + github.com/tidwall/gjson v1.19.0 // 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.1 // 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-20260203192932-546029d2fa20 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/plugins/soc-ai/go.sum b/plugins/soc-ai/go.sum index 5280f6f49..305c43ecc 100644 --- a/plugins/soc-ai/go.sum +++ b/plugins/soc-ai/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -59,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -68,15 +68,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -90,14 +90,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -108,45 +106,46 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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= -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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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-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.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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/plugins/sophos/go.mod b/plugins/sophos/go.mod index a6ecba838..ee3d99010 100644 --- a/plugins/sophos/go.mod +++ b/plugins/sophos/go.mod @@ -4,52 +4,54 @@ go 1.25.5 require ( github.com/google/uuid v1.6.0 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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 + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/sophos/go.sum b/plugins/sophos/go.sum index 8e722fba0..305c43ecc 100644 --- a/plugins/sophos/go.sum +++ b/plugins/sophos/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -59,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -68,15 +68,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -90,14 +90,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -108,6 +106,8 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -122,29 +122,28 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= diff --git a/plugins/stats/go.mod b/plugins/stats/go.mod index 9ad87c838..3b3bba844 100644 --- a/plugins/stats/go.mod +++ b/plugins/stats/go.mod @@ -4,52 +4,54 @@ go 1.25.5 require ( github.com/google/uuid v1.6.0 - github.com/threatwinds/go-sdk v1.1.21 + github.com/threatwinds/go-sdk v1.1.26 google.golang.org/protobuf v1.36.11 ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect + github.com/cloudwego/base64x v0.1.7 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // 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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // 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/pelletier/go-toml/v2 v2.3.1 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect + github.com/tidwall/gjson v1.19.0 // 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.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-20260203192932-546029d2fa20 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect - google.golang.org/grpc v1.80.0 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/grpc v1.81.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/stats/go.sum b/plugins/stats/go.sum index 5280f6f49..305c43ecc 100644 --- a/plugins/stats/go.sum +++ b/plugins/stats/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= 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.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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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= @@ -32,16 +32,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -59,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -68,15 +68,15 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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= @@ -90,14 +90,12 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= -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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -108,45 +106,46 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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= -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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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.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= +golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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-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.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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/utmstack-collector/go.mod b/utmstack-collector/go.mod index f96619bc0..8c783e622 100644 --- a/utmstack-collector/go.mod +++ b/utmstack-collector/go.mod @@ -9,7 +9,7 @@ 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.1.21 + github.com/threatwinds/go-sdk v1.1.26 github.com/threatwinds/logger v1.2.3 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 @@ -18,14 +18,14 @@ require ( ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // 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/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.2 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cloudwego/base64x v0.1.6 // indirect + github.com/cloudwego/base64x v0.1.7 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect @@ -36,24 +36,24 @@ require ( github.com/elastic/go-windows v1.0.2 // indirect github.com/felixge/httpsnoop v1.0.4 // 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/gin-contrib/sse v1.1.1 // indirect + github.com/gin-gonic/gin v1.12.0 // indirect github.com/glebarez/go-sqlite v1.22.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.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.30.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/go-playground/validator/v10 v10.30.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect - github.com/google/cel-go v0.27.0 // indirect + github.com/google/cel-go v0.28.1 // 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/leodido/go-urn v1.4.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/sys/atomicwriter v0.1.0 // indirect github.com/moby/term v0.5.2 // indirect @@ -64,33 +64,35 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/opensearch-project/opensearch-go/v4 v4.6.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/prometheus/procfs v0.19.2 // indirect github.com/quic-go/qpack v0.6.0 // indirect - github.com/quic-go/quic-go v0.59.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/gjson v1.19.0 // 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.1 // indirect + go.mongodb.org/mongo-driver/v2 v2.6.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.39.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // 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 + go.yaml.in/yaml/v2 v2.4.4 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/arch v0.27.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.14.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 + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect diff --git a/utmstack-collector/go.sum b/utmstack-collector/go.sum index a57ad4f2c..94796ffa8 100644 --- a/utmstack-collector/go.sum +++ b/utmstack-collector/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/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/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= @@ -8,18 +8,18 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= 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/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/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHCo= +github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= 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/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= +github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -48,10 +48,10 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= 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= -github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko= +github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= +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/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ= github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc= github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw= @@ -67,16 +67,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.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/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= +github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/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.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= -github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/cel-go v0.28.1 h1:YWIwi77J4xIsYUwAF/iIuS6haffzIHS8yWI8glSbLWM= +github.com/google/cel-go v0.28.1/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 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= @@ -105,8 +105,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= @@ -130,8 +130,8 @@ github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJw github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= 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/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -141,8 +141,8 @@ github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4 github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= 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/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -161,16 +161,14 @@ 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.21 h1:ZT/6Rb9szOLzXZdUgSa9eSDD4f5ljNDdzBWvR8hXTIE= -github.com/threatwinds/go-sdk v1.1.21/go.mod h1:kuU3op/tHVgoDhVeP4KHvyHXQKWSmmdEwJPUr0sGRLI= +github.com/threatwinds/go-sdk v1.1.26 h1:9anBTRXXnNfft9FDgdasMOMUxtqlzE1Cm2b81lndFQQ= +github.com/threatwinds/go-sdk v1.1.26/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ= 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/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= 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= @@ -181,6 +179,8 @@ 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.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8= +go.mongodb.org/mongo-driver/v2 v2.6.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/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= @@ -203,37 +203,36 @@ go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjce go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= 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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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/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/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= +golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= +golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= 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.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= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= 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/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/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= From 80c844cd17bd72066596736875a0f56b42b732d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Tue, 16 Jun 2026 07:21:55 -0600 Subject: [PATCH 42/47] fix[backend](alert_responses): fixed powershell commands syntax errors (#2228) * fix[backend](alert_responses): fixed powershell commands syntax errors * fix[backend](go_deps): updated go dependencies --- ...01_fix_response_action_template_syntax.xml | 61 +++++++++++++++++++ .../resources/config/liquibase/master.xml | 2 + 2 files changed, 63 insertions(+) create mode 100644 backend/src/main/resources/config/liquibase/changelog/20260615001_fix_response_action_template_syntax.xml diff --git a/backend/src/main/resources/config/liquibase/changelog/20260615001_fix_response_action_template_syntax.xml b/backend/src/main/resources/config/liquibase/changelog/20260615001_fix_response_action_template_syntax.xml new file mode 100644 index 000000000..1849b227e --- /dev/null +++ b/backend/src/main/resources/config/liquibase/changelog/20260615001_fix_response_action_template_syntax.xml @@ -0,0 +1,61 @@ + + + + + Drop broken duplicate response action templates whose clean equivalents already exist (33→43, 36→38, 37→39). + + + + + + + Fix typo (applicactionname) and remove malformed $($(...)) nesting in template 106. + + + + + + + Fix bash nested double-quote bug in $(rpm/dpkg | grep ...) for templates 107, 108, 109. + + + + + + + Replace tr ' ' '\n' (literal backslash-n inside single quotes) with a self-skip in the loop for templates 122, 123. + + /dev/null ;; esac; done' + WHERE id = 123; + ]]> + + + + diff --git a/backend/src/main/resources/config/liquibase/master.xml b/backend/src/main/resources/config/liquibase/master.xml index a46172272..f90f793ad 100644 --- a/backend/src/main/resources/config/liquibase/master.xml +++ b/backend/src/main/resources/config/liquibase/master.xml @@ -599,4 +599,6 @@ + + From 8badb0d5a859e7c9e92a951be2fd0889ce0b74f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Tue, 16 Jun 2026 07:26:26 -0600 Subject: [PATCH 43/47] fix[backend](incident_response_audit): enabled filters on agents-with command query (#2226) * fix[backend](incident_response_audit): enabled filters on agents-with-command query * fix[backend](go_deps): updated go dependencies --------- Signed-off-by: Yorjander Hernandez Vergara <99102374+Kbayero@users.noreply.github.com> Co-authored-by: Yorjander Hernandez Vergara <99102374+Kbayero@users.noreply.github.com> --- .../rest/agent_manager/AgentManagerResource.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/park/utmstack/web/rest/agent_manager/AgentManagerResource.java b/backend/src/main/java/com/park/utmstack/web/rest/agent_manager/AgentManagerResource.java index c0c28f94d..4d746af20 100644 --- a/backend/src/main/java/com/park/utmstack/web/rest/agent_manager/AgentManagerResource.java +++ b/backend/src/main/java/com/park/utmstack/web/rest/agent_manager/AgentManagerResource.java @@ -69,14 +69,18 @@ public ResponseEntity> listAgents( } @GetMapping("/agents-with-commands") - public ResponseEntity> listAgentsWithCommands() { + public ResponseEntity> listAgentsWithCommands( + @RequestParam(required = false) Integer pageNumber, + @RequestParam(required = false) Integer pageSize, + @RequestParam(required = false) String searchQuery, + @RequestParam(required = false) String sortBy) { final String ctx = CLASSNAME + ".listAgentsWithCommands"; try { ListRequest request = ListRequest.newBuilder() - .setPageNumber(1) - .setPageSize(1000000) - .setSearchQuery("") - .setSortBy("") + .setPageNumber(pageNumber != null ? pageNumber : 0) + .setPageSize(pageSize != null ? pageSize : 1000000) + .setSearchQuery(searchQuery != null ? searchQuery : "") + .setSortBy(sortBy != null ? sortBy : "") .build(); ListAgentsResponseDTO response = agentGrpcService.listAgentWithCommands(request); List agentDTOList = response.getAgents(); From 6678f629134dee3771a4715f34f4b832adf0f7e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Tue, 16 Jun 2026 09:18:53 -0600 Subject: [PATCH 44/47] =?UTF-8?q?fix[backend](compilance=5Freports):=20mig?= =?UTF-8?q?rated=20compilance=20reports=20from=20ol=E2=80=A6=20(#2232)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix[backend](compilance_reports): migrated compilance reports from old table to new one * fix[backend](compilance_reports): added rollback marker robustness and unconditional sentinel deletion --- ...liance_report_config_to_control_config.xml | 148 ++++++++++++++++++ .../resources/config/liquibase/master.xml | 2 + 2 files changed, 150 insertions(+) create mode 100644 backend/src/main/resources/config/liquibase/changelog/20260623001_migrate_compliance_report_config_to_control_config.xml diff --git a/backend/src/main/resources/config/liquibase/changelog/20260623001_migrate_compliance_report_config_to_control_config.xml b/backend/src/main/resources/config/liquibase/changelog/20260623001_migrate_compliance_report_config_to_control_config.xml new file mode 100644 index 000000000..bb4d110af --- /dev/null +++ b/backend/src/main/resources/config/liquibase/changelog/20260623001_migrate_compliance_report_config_to_control_config.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + diff --git a/backend/src/main/resources/config/liquibase/master.xml b/backend/src/main/resources/config/liquibase/master.xml index f90f793ad..fac5aa1b9 100644 --- a/backend/src/main/resources/config/liquibase/master.xml +++ b/backend/src/main/resources/config/liquibase/master.xml @@ -601,4 +601,6 @@ + + From a71113ac6836a15b4e6c589108eeb930ba4a454c Mon Sep 17 00:00:00 2001 From: Yorjander Hernandez Vergara Date: Wed, 17 Jun 2026 01:44:03 -0400 Subject: [PATCH 45/47] chore: update golang dependencies --- plugins/gcp/go.mod | 12 ++++++------ plugins/gcp/go.sum | 24 ++++++++++++------------ plugins/modules-config/go.mod | 4 ++-- plugins/modules-config/go.sum | 8 ++++---- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/plugins/gcp/go.mod b/plugins/gcp/go.mod index ae9e76dce..c0662ae37 100644 --- a/plugins/gcp/go.mod +++ b/plugins/gcp/go.mod @@ -6,7 +6,7 @@ require ( cloud.google.com/go/pubsub v1.50.2 github.com/google/uuid v1.6.0 github.com/threatwinds/go-sdk v1.1.26 - google.golang.org/api v0.284.0 + google.golang.org/api v0.285.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) @@ -68,17 +68,17 @@ require ( go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.27.0 // indirect - golang.org/x/crypto v0.52.0 // indirect + golang.org/x/crypto v0.53.0 // indirect golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect - golang.org/x/net v0.55.0 // indirect + golang.org/x/net v0.56.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.21.0 // indirect - golang.org/x/sys v0.45.0 // indirect - golang.org/x/text v0.37.0 // indirect + golang.org/x/sys v0.46.0 // indirect + golang.org/x/text v0.38.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/gcp/go.sum b/plugins/gcp/go.sum index d17035354..a934f30dd 100644 --- a/plugins/gcp/go.sum +++ b/plugins/gcp/go.sum @@ -206,8 +206,8 @@ golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU= golang.org/x/arch v0.27.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= -golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q= golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= @@ -220,8 +220,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= -golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= @@ -234,12 +234,12 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -250,8 +250,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.284.0 h1:i+cKTgeQRcRySkP7QTl5PDO7/pAm8EcMFIUMlNbk4Vc= -google.golang.org/api v0.284.0/go.mod h1:AU44fU+XVZOCcd8uLaBIa/ZgzgPf/0qqY3+m7lQaado= +google.golang.org/api v0.285.0 h1:B7eHHoKGAX/LrPkQvhQqnGwjgWxofbdGwCTQvpm8FkM= +google.golang.org/api v0.285.0/go.mod h1:NlOlUIr8MPoIhT9Bb/oUnRuHbJOLwxb6JSYJM8Yz+jQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -261,8 +261,8 @@ google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgn google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad h1:45WmJvIV6C2+O/jjLkPUH+F3aOj/1miDoU2DD0+NWbg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/plugins/modules-config/go.mod b/plugins/modules-config/go.mod index dce6b3bd6..b75c42fa7 100644 --- a/plugins/modules-config/go.mod +++ b/plugins/modules-config/go.mod @@ -15,7 +15,7 @@ require ( github.com/gin-gonic/gin v1.12.0 github.com/threatwinds/go-sdk v1.1.26 golang.org/x/sync v0.21.0 - google.golang.org/api v0.284.0 + google.golang.org/api v0.285.0 google.golang.org/grpc v1.81.1 google.golang.org/protobuf v1.36.11 ) @@ -127,7 +127,7 @@ require ( golang.org/x/time v0.15.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/plugins/modules-config/go.sum b/plugins/modules-config/go.sum index 3934118e2..03e1f595f 100644 --- a/plugins/modules-config/go.sum +++ b/plugins/modules-config/go.sum @@ -378,8 +378,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.284.0 h1:i+cKTgeQRcRySkP7QTl5PDO7/pAm8EcMFIUMlNbk4Vc= -google.golang.org/api v0.284.0/go.mod h1:AU44fU+XVZOCcd8uLaBIa/ZgzgPf/0qqY3+m7lQaado= +google.golang.org/api v0.285.0 h1:B7eHHoKGAX/LrPkQvhQqnGwjgWxofbdGwCTQvpm8FkM= +google.golang.org/api v0.285.0/go.mod h1:NlOlUIr8MPoIhT9Bb/oUnRuHbJOLwxb6JSYJM8Yz+jQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -389,8 +389,8 @@ google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgn google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad h1:45WmJvIV6C2+O/jjLkPUH+F3aOj/1miDoU2DD0+NWbg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 9f58b4b8051aa8143f762bcc31e5eaf70dc35b07 Mon Sep 17 00:00:00 2001 From: Yorjander Hernandez Vergara Date: Wed, 17 Jun 2026 07:56:24 -0400 Subject: [PATCH 46/47] fix[ci]: fix changelog script failing when tag doesn't exist yet and unblock installer on changelog failure --- .github/scripts/generate-changelog.sh | 40 +++++++++++++------ .github/workflows/v11-deployment-pipeline.yml | 2 +- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/.github/scripts/generate-changelog.sh b/.github/scripts/generate-changelog.sh index b0cc9e77d..7118f502b 100755 --- a/.github/scripts/generate-changelog.sh +++ b/.github/scripts/generate-changelog.sh @@ -52,20 +52,35 @@ command -v git >/dev/null || { echo "git is required"; exit 1; } : "${THREATWINDS_API_KEY:?THREATWINDS_API_KEY is required}" : "${THREATWINDS_API_SECRET:?THREATWINDS_API_SECRET is required}" +# ─── Resolve current ref (tag may not exist yet when pipeline runs) ──────────── +if git rev-parse "$CURRENT_TAG" >/dev/null 2>&1; then + CURRENT_REF="$CURRENT_TAG" +else + echo "Tag $CURRENT_TAG not found in repo yet, using HEAD" + CURRENT_REF="HEAD" +fi + # ─── Resolve previous tag if not provided ───────────────────────────────────── if [ -z "$PREVIOUS_TAG" ]; then echo "Auto-detecting previous tag..." ALL_TAGS=$(git tag --sort=-v:refname) - FOUND_CURRENT=false - for tag in $ALL_TAGS; do - if [ "$FOUND_CURRENT" = true ]; then - PREVIOUS_TAG="$tag" - break - fi - if [ "$tag" = "$CURRENT_TAG" ]; then - FOUND_CURRENT=true - fi - done + if [ "$CURRENT_REF" = "$CURRENT_TAG" ]; then + # Tag exists: find the tag immediately before CURRENT_TAG + FOUND_CURRENT=false + for tag in $ALL_TAGS; do + if [ "$FOUND_CURRENT" = true ]; then + PREVIOUS_TAG="$tag" + break + fi + if [ "$tag" = "$CURRENT_TAG" ]; then + FOUND_CURRENT=true + fi + done + else + # Tag doesn't exist yet: use the most recent existing tag + PREVIOUS_TAG=$(echo "$ALL_TAGS" | head -1) + [ -n "$PREVIOUS_TAG" ] && echo "Tag not yet created; using most recent existing tag: $PREVIOUS_TAG" + fi if [ -z "$PREVIOUS_TAG" ]; then PREVIOUS_TAG=$(git rev-list --max-parents=0 HEAD | head -1) echo "No previous tag found, using first commit: $PREVIOUS_TAG" @@ -73,13 +88,14 @@ if [ -z "$PREVIOUS_TAG" ]; then fi echo "Current tag: $CURRENT_TAG" +echo "Current ref: $CURRENT_REF" echo "Previous tag: $PREVIOUS_TAG" echo "Model: $MODEL" echo # ─── Collect commits ────────────────────────────────────────────────────────── -COMMITS=$(git log "${PREVIOUS_TAG}..${CURRENT_TAG}" --pretty=format:"- %h %s (%an)" --no-merges) -COMMIT_COUNT=$(git rev-list --count "${PREVIOUS_TAG}..${CURRENT_TAG}" --no-merges) +COMMITS=$(git log "${PREVIOUS_TAG}..${CURRENT_REF}" --pretty=format:"- %h %s (%an)" --no-merges) +COMMIT_COUNT=$(git rev-list --count "${PREVIOUS_TAG}..${CURRENT_REF}" --no-merges) if [ -z "$COMMITS" ]; then echo "No commits found between $PREVIOUS_TAG and $CURRENT_TAG." diff --git a/.github/workflows/v11-deployment-pipeline.yml b/.github/workflows/v11-deployment-pipeline.yml index 988f63e61..6f01b57ac 100644 --- a/.github/workflows/v11-deployment-pipeline.yml +++ b/.github/workflows/v11-deployment-pipeline.yml @@ -561,7 +561,7 @@ jobs: build_installer_release: name: Build & Upload Installer needs: [generate_changelog, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment == 'rc' }} + if: ${{ always() && needs.setup_deployment.result == 'success' && needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment == 'rc' && needs.generate_changelog.result != 'cancelled' }} uses: ./.github/workflows/installer-release.yml with: version: ${{ needs.setup_deployment.outputs.tag }} From d959803831f39fd17ee5bb19fde1ef8ccd1cf160 Mon Sep 17 00:00:00 2001 From: Yorjander Hernandez Vergara Date: Wed, 17 Jun 2026 09:43:32 -0400 Subject: [PATCH 47/47] ci: simplify v11 pipeline to trigger on release events instead of push to v11 --- .github/workflows/installer-release.yml | 11 +- .github/workflows/v11-deployment-pipeline.yml | 183 +++--------------- 2 files changed, 32 insertions(+), 162 deletions(-) diff --git a/.github/workflows/installer-release.yml b/.github/workflows/installer-release.yml index f4ecfc071..0e7bd4ecd 100644 --- a/.github/workflows/installer-release.yml +++ b/.github/workflows/installer-release.yml @@ -12,7 +12,7 @@ on: required: true type: string environment: - description: 'Environment (dev, rc, or production)' + description: 'Environment (dev or production)' required: true type: string prerelease: @@ -188,14 +188,12 @@ jobs: sudo /usr/local/bin/utmstack_installer # ============================================ - # V11 RC / Production - Build installer and upload to GitHub release. - # The `prerelease` input controls whether the GitHub Release is marked as - # a prerelease (rc) or a normal release (production). + # V11 Production - Build installer and upload to GitHub release. # ============================================ build_v11_release: name: Build V11 Installer for Release runs-on: ubuntu-24.04 - if: inputs.version_major == 'v11' && (inputs.environment == 'rc' || inputs.environment == 'production') + if: inputs.version_major == 'v11' && inputs.environment == 'production' steps: - name: Check out code uses: actions/checkout@v4 @@ -228,7 +226,7 @@ jobs: GONOPROXY: github.com/utmstack GONOSUMDB: github.com/utmstack run: | - echo "Building V11 Installer for prerelease (branch=prod)" + echo "Building V11 Installer for release (branch=prod)" go build -o installer -v -ldflags "\ -X 'github.com/utmstack/UTMStack/installer/config.DEFAULT_BRANCH=prod' \ -X 'github.com/utmstack/UTMStack/installer/config.INSTALLER_VERSION=${{ inputs.version }}' \ @@ -243,6 +241,5 @@ jobs: tag_name: ${{ inputs.version }} body_path: /tmp/CHANGELOG.md draft: false - prerelease: ${{ inputs.prerelease }} files: | ./installer/installer diff --git a/.github/workflows/v11-deployment-pipeline.yml b/.github/workflows/v11-deployment-pipeline.yml index 6f01b57ac..c717d9ad0 100644 --- a/.github/workflows/v11-deployment-pipeline.yml +++ b/.github/workflows/v11-deployment-pipeline.yml @@ -4,9 +4,8 @@ on: push: branches: - 'release/v11**' - - 'v11' release: - types: [ released ] + types: [published] jobs: setup_deployment: @@ -61,101 +60,26 @@ jobs: echo "event_processor_tag=${{ vars.TW_EVENT_PROCESSOR_VERSION_DEV }}" >> $GITHUB_OUTPUT # ===================================================================== - # RC — push to v11 + # PRODUCTION — release.published (prerelease or not) # - # Tag derivation walks two CMs to handle both the normal flow and - # the hotfix flow without divergent code paths: - # - # 1. CM DEV gives us the candidate BASE (strip `-dev.N`). - # 2. CM PROD gives us the latest version already in production. - # 3. If BASE > PROD → use BASE. Normal flow. - # If BASE <= PROD → BASE is already released (hotfix scenario) - # so bump the patch of PROD instead. Avoids overwriting an - # already-shipped tag and matches the roll-forward policy. - # ===================================================================== - elif ${{ github.event_name == 'push' && github.ref == 'refs/heads/v11' }}; then - ENVIRONMENT="rc" - CM_URL="https://cm.utmstack.com" - CM_DEV_URL="https://cm.dev.utmstack.com" - echo "Environment: $ENVIRONMENT" - echo "CM URL (target): $CM_URL" - echo "CM URL (source for base): $CM_DEV_URL" - - DEV_RESPONSE=$(curl -s "${CM_DEV_URL}/api/v1/versions/latest") - LATEST_DEV_VERSION=$(echo "$DEV_RESPONSE" | jq -r '.version // empty') - echo "Latest dev version from CM DEV: $LATEST_DEV_VERSION" - - if [ -z "$LATEST_DEV_VERSION" ]; then - echo "❌ No dev version found in CM DEV — cannot derive RC base. Push a release/v11.x.x branch first." - exit 1 - fi - - BASE=$(echo "$LATEST_DEV_VERSION" | sed -E 's/-dev\.[0-9]+$//') - echo "BASE derived from CM DEV: $BASE" - - if [[ ! "$BASE" =~ ^v11\. ]]; then - echo "❌ Derived BASE '$BASE' is not a v11 release." - exit 1 - fi - - # Double-check against production to detect the hotfix scenario. - PROD_RESPONSE=$(curl -s "${CM_URL}/api/v1/versions/latest") - PROD_LATEST=$(echo "$PROD_RESPONSE" | jq -r '.version // empty') - echo "Latest production version from CM PROD: ${PROD_LATEST:-}" - - if [ -n "$PROD_LATEST" ]; then - # sort -V puts the higher semver last. - HIGHER=$(printf '%s\n%s\n' "$BASE" "$PROD_LATEST" | sort -V | tail -1) - if [ "$HIGHER" = "$BASE" ] && [ "$BASE" != "$PROD_LATEST" ]; then - # BASE is strictly newer than PROD — use it as-is. - TAG="$BASE" - echo "BASE ($BASE) > PROD ($PROD_LATEST) — using BASE as RC tag." - else - # PROD is >= BASE → BASE was already released (hotfix case). - # Bump the patch of PROD. - MAJOR_MINOR=$(echo "$PROD_LATEST" | sed -E 's/^(v[0-9]+\.[0-9]+)\.[0-9]+.*$/\1/') - PATCH=$(echo "$PROD_LATEST" | sed -E 's/^v[0-9]+\.[0-9]+\.([0-9]+).*$/\1/') - NEW_PATCH=$((PATCH + 1)) - TAG="${MAJOR_MINOR}.${NEW_PATCH}" - echo "BASE ($BASE) <= PROD ($PROD_LATEST) — hotfix scenario. Bumping patch: $TAG" - fi - else - # CM PROD has no versions yet — use BASE. - TAG="$BASE" - echo "CM PROD is empty — using BASE as RC tag." - fi - - echo "RC tag: $TAG" - - echo "tag=$TAG" >> $GITHUB_OUTPUT - echo "environment=$ENVIRONMENT" >> $GITHUB_OUTPUT - echo "cm_url=$CM_URL" >> $GITHUB_OUTPUT - echo "event_processor_tag=${{ vars.TW_EVENT_PROCESSOR_VERSION_PROD }}" >> $GITHUB_OUTPUT - - # ===================================================================== - # PRODUCTION — release.released (non-prerelease publish) - # - # Production does NOT rebuild anything. The images, installer, and - # changelog are all artifacts of the RC run. The production trigger - # only needs to tell CM "this version is now available to community - # instances" via a promote endpoint (TODO: define and wire up). + # The tag is taken directly from the release event — no CM queries. + # Always runs a full build and deploys to our production instances. # ===================================================================== - elif ${{ github.event_name == 'release' && github.event.action == 'released' }}; then - ENVIRONMENT="production" + elif ${{ github.event_name == 'release' }}; then CM_URL="https://cm.utmstack.com" - echo "Environment: $ENVIRONMENT" - echo "CM URL: $CM_URL" - TAG="${{ github.event.release.tag_name }}" - echo "Tag from release: $TAG" + echo "Event: release, tag=$TAG" if [[ ! "$TAG" =~ ^v11\. ]]; then echo "⏭️ Skipping: tag '$TAG' is not a v11 release." exit 0 fi + echo "Environment: production (our instances)" + echo "CM URL: $CM_URL" + echo "tag=$TAG" >> $GITHUB_OUTPUT - echo "environment=$ENVIRONMENT" >> $GITHUB_OUTPUT + echo "environment=production" >> $GITHUB_OUTPUT echo "cm_url=$CM_URL" >> $GITHUB_OUTPUT echo "event_processor_tag=${{ vars.TW_EVENT_PROCESSOR_VERSION_PROD }}" >> $GITHUB_OUTPUT fi @@ -163,7 +87,7 @@ jobs: build_agent: name: Build Agent Binaries needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} runs-on: ubuntu-24.04 steps: - name: Check out code into the right branch @@ -263,7 +187,7 @@ jobs: sign_agent_windows: name: Sign Windows Agent Binaries needs: [build_agent, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-sign-agent.yml with: os: windows @@ -283,7 +207,7 @@ jobs: sign_agent_macos: name: Sign macOS Agent Binaries needs: [build_agent, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-sign-agent.yml with: os: macos @@ -297,7 +221,7 @@ jobs: build_utmstack_collector: name: Build UTMStack Collector needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} runs-on: ubuntu-24.04 steps: - name: Check out code into the right branch @@ -331,7 +255,7 @@ jobs: build_agent_manager: name: Build Agent Manager Microservice needs: [sign_agent_windows, sign_agent_macos, build_utmstack_collector, setup_deployment] - if: ${{ always() && needs.sign_agent_windows.result == 'success' && needs.sign_agent_macos.result == 'success' && needs.build_utmstack_collector.result == 'success' && needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ always() && needs.sign_agent_windows.result == 'success' && needs.sign_agent_macos.result == 'success' && needs.build_utmstack_collector.result == 'success' && needs.setup_deployment.outputs.tag != '' }} runs-on: ubuntu-24.04 steps: - name: Check out code into the right branch @@ -425,7 +349,7 @@ jobs: build_event_processor: name: Build Event Processor Microservice needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} runs-on: ubuntu-24.04 steps: - name: Check out code into the right branch @@ -483,7 +407,7 @@ jobs: build_backend: name: Build Backend Microservice needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-java.yml with: image_name: backend @@ -496,7 +420,7 @@ jobs: build_frontend: name: Build Frontend Microservice needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-node.yml with: image_name: frontend @@ -505,7 +429,7 @@ jobs: build_user_auditor: name: Build User-Auditor Microservice needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-java.yml with: image_name: user-auditor @@ -517,7 +441,7 @@ jobs: build_web_pdf: name: Build Web-PDF Microservice needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ needs.setup_deployment.outputs.tag != '' }} uses: ./.github/workflows/reusable-java.yml with: image_name: web-pdf @@ -541,12 +465,10 @@ jobs: steps: - run: echo "✅ All builds completed successfully." - # AI changelog runs only on RC. Production reuses the same release notes - # because the GitHub Release was already created during RC. generate_changelog: name: Generate Changelog needs: [all_builds_complete, setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment == 'rc' }} + if: ${{ needs.setup_deployment.outputs.tag != '' && github.event_name == 'release' }} uses: ./.github/workflows/generate-changelog.yml with: current_tag: ${{ needs.setup_deployment.outputs.tag }} @@ -554,20 +476,17 @@ jobs: THREATWINDS_API_KEY: ${{ secrets.THREATWINDS_API_KEY }} THREATWINDS_API_SECRET: ${{ secrets.THREATWINDS_API_SECRET }} - # Installer build runs only on RC. The resulting binary is uploaded to the - # GitHub Release as a prerelease asset. When the release is later promoted - # to non-prerelease (which triggers production), the installer is already - # there — no rebuild needed. + # Installer build runs on any GitHub release event (prerelease or not). + # The binary is uploaded to the release that triggered this pipeline. build_installer_release: name: Build & Upload Installer needs: [generate_changelog, setup_deployment] - if: ${{ always() && needs.setup_deployment.result == 'success' && needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment == 'rc' && needs.generate_changelog.result != 'cancelled' }} + if: ${{ always() && needs.setup_deployment.result == 'success' && needs.setup_deployment.outputs.tag != '' && github.event_name == 'release' && needs.generate_changelog.result != 'cancelled' }} uses: ./.github/workflows/installer-release.yml with: version: ${{ needs.setup_deployment.outputs.tag }} version_major: v11 - environment: rc - prerelease: true + environment: ${{ needs.setup_deployment.outputs.environment }} changelog: ${{ needs.generate_changelog.outputs.changelog }} secrets: API_SECRET: ${{ secrets.API_SECRET }} @@ -588,12 +507,10 @@ jobs: CM_ENCRYPT_SALT: ${{ secrets.CM_ENCRYPT_SALT }} CM_SIGN_PUBLIC_KEY: ${{ secrets.CM_SIGN_PUBLIC_KEY }} - # Publish a new version to CM. Runs for dev and rc — production does NOT - # re-publish because the rc run already registered v11.x.x in CM PROD. publish_new_version: name: Publish New Version to Customer Manager needs: [all_builds_complete, generate_changelog, setup_deployment] - if: ${{ always() && needs.all_builds_complete.result == 'success' && needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ always() && needs.all_builds_complete.result == 'success' && needs.setup_deployment.outputs.tag != '' }} runs-on: ubuntu-24.04 steps: - name: Check out code @@ -606,7 +523,7 @@ jobs: TAG: ${{ needs.setup_deployment.outputs.tag }} CM_URL: ${{ needs.setup_deployment.outputs.cm_url }} run: | - # Use AI changelog for rc / production, generic for dev. + # Use AI changelog for production releases, generic for dev. if [ "$ENVIRONMENT" != "dev" ] && [ -n "$CHANGELOG_CONTENT" ]; then changelog="$CHANGELOG_CONTENT" else @@ -641,13 +558,10 @@ jobs: echo "Response: $response" - # Schedule the freshly-published version. For dev, this targets the dev - # instance list; for rc, the RC instance list. Production does NOT use this - # job — promotion to community lives in `promote_to_community` below. schedule: name: Schedule release to our instances needs: [publish_new_version, setup_deployment] - if: ${{ always() && needs.publish_new_version.result == 'success' && needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment != 'production' }} + if: ${{ always() && needs.publish_new_version.result == 'success' && needs.setup_deployment.outputs.tag != '' }} runs-on: ubuntu-24.04 env: ENVIRONMENT: ${{ needs.setup_deployment.outputs.environment }} @@ -665,7 +579,6 @@ jobs: instance_ids="${{ vars.SCHEDULE_INSTANCES_DEV }}" auth_json='${{ secrets.CM_SERVICE_ACCOUNT_DEV }}' else - # rc uses prod variables instance_ids="${{ vars.SCHEDULE_INSTANCES_PROD }}" auth_json='${{ secrets.CM_SERVICE_ACCOUNT_PROD }}' fi @@ -703,45 +616,5 @@ jobs: echo "✅ Scheduled release for all instances with version $TAG" - promote_to_community: - name: Promote to Community - needs: [setup_deployment] - if: ${{ needs.setup_deployment.outputs.tag != '' && needs.setup_deployment.outputs.environment == 'production' }} - runs-on: ubuntu-24.04 - env: - TAG: ${{ needs.setup_deployment.outputs.tag }} - CM_URL: ${{ needs.setup_deployment.outputs.cm_url }} - steps: - - name: Schedule update for all community instances - run: | - echo "🚀 Promoting $TAG to community" - echo " CM URL: $CM_URL" - - cmAuth=$(echo '${{ secrets.CM_SERVICE_ACCOUNT_PROD }}' | jq -r '.') - auth_id=$(echo "$cmAuth" | jq -r '.id') - auth_key=$(echo "$cmAuth" | jq -r '.key') - - body=$(jq -n \ - --arg version "$TAG" \ - '{version: $version, edition: "community"}') - - response=$(curl -sS -w "\n%{http_code}" -X POST "${CM_URL}/api/v1/updates" \ - -H "Content-Type: application/json" \ - -H "id: $auth_id" \ - -H "key: $auth_key" \ - -d "$body") - - http_code=$(echo "$response" | tail -n1) - payload=$(echo "$response" | sed '$d') - - echo "HTTP $http_code" - echo "Response: $payload" - - if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 300 ]; then - echo "✅ Community broadcast scheduled for $TAG" - else - echo "❌ Community broadcast failed (HTTP $http_code)" - exit 1 - fi