| 1 | import type { AlertSourceContent, WazuhRuleExclude } from "@/types/alerts.d" |
| 2 | import type { FlaskBaseResponse } from "@/types/flask.d" |
| 3 | import type { WazuhFileDetails, WazuhFileItem } from "@/types/wazuh/rules.d" |
| 4 | import { HttpClient } from "../../httpClient" |
| 5 | |
| 6 | // Interface for rules query parameters |
| 7 | export interface RulesQueryParams { |
| 8 | /** Show results in human-readable format */ |
| 9 | pretty?: boolean |
| 10 | /** Disable timeout response */ |
| 11 | wait_for_complete?: boolean |
| 12 | /** First element to return in the collection */ |
| 13 | offset?: number |
| 14 | /** Maximum number of elements to return */ |
| 15 | limit?: number |
| 16 | /** Sort the collection by a field or fields */ |
| 17 | sort?: string | null |
| 18 | /** Look for elements containing the specified string */ |
| 19 | search?: string | null |
| 20 | /** Filter by relative directory name */ |
| 21 | relative_dirname?: string | null |
| 22 | /** Filter by filename of rule files */ |
| 23 | filename?: string[] | null |
| 24 | /** Filter by list status (enabled, disabled, all) */ |
| 25 | status?: string | null |
| 26 | /** Query to filter results by */ |
| 27 | q?: string | null |
| 28 | /** Select which fields to return */ |
| 29 | select?: string[] | null |
| 30 | /** Look for distinct values */ |
| 31 | distinct?: boolean |
| 32 | } |
| 33 | |
| 34 | export default { |
| 35 | wazuhManagerRuleExclude(source: AlertSourceContent) { |
| 36 | return HttpClient.post<FlaskBaseResponse & WazuhRuleExclude>(`/wazuh_manager/rule/exclude`, { |
| 37 | integration: "wazuh-rule-exclusion", |
| 38 | prompt: source |
| 39 | }) |
| 40 | }, |
| 41 | getRulesFileList(query: RulesQueryParams, signal?: AbortSignal) { |
| 42 | return HttpClient.get<FlaskBaseResponse & { results: WazuhFileItem[]; total_items: number }>( |
| 43 | `/wazuh_manager/rules/files`, |
| 44 | { |
| 45 | params: query, |
| 46 | signal |
| 47 | } |
| 48 | ) |
| 49 | }, |
| 50 | getRulesFile(filename: string) { |
| 51 | return HttpClient.get<FlaskBaseResponse & WazuhFileDetails>(`/wazuh_manager/rules/files/${filename}`, { |
| 52 | params: { raw: true, pretty: false, wait_for_complete: false } |
| 53 | }) |
| 54 | }, |
| 55 | updateRulesFile(filename: string, rules: File) { |
| 56 | const form = new FormData() |
| 57 | form.append("file", new Blob([rules], { type: rules.type }), rules.name) |
| 58 | |
| 59 | return HttpClient.put<FlaskBaseResponse & WazuhFileDetails>(`/wazuh_manager/rules/files/${filename}`, form) |
| 60 | }, |
| 61 | restartManager() { |
| 62 | return HttpClient.post<FlaskBaseResponse>(`/wazuh_manager/management/restart`) |
| 63 | } |
| 64 | } |