main
ts 64 lines 2.16 KB
Raw
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 }