main
ts 68 lines 2.45 KB
Raw
1 import type { FlaskBaseResponse } from "@/types/flask.d"
2 import type { SigmaQuery, SigmaRuleLevels, SigmaTimeInterval } from "@/types/sigma.d"
3 import { HttpClient } from "../httpClient"
4
5 export default {
6 /** client-side pagination (1k+ items) */
7 getAvailable() {
8 return HttpClient.get<FlaskBaseResponse & { sigma_queries: SigmaQuery[] }>(`/sigma/queries/available`)
9 },
10 /** client-side pagination (1k+ items) */
11 getActive() {
12 return HttpClient.get<FlaskBaseResponse & { sigma_queries: SigmaQuery[] }>(`/sigma/queries/active`)
13 },
14 /** client-side pagination (1k+ items) */
15 getInactive() {
16 return HttpClient.get<FlaskBaseResponse & { sigma_queries: SigmaQuery[] }>(`/sigma/queries/inactive`)
17 },
18 downloadRules() {
19 return HttpClient.post<FlaskBaseResponse>(`/sigma/download`, {
20 url: "https://github.com/SigmaHQ/sigma/releases/download/r2024-07-17/sigma_all_rules.zip",
21 folder: "windows"
22 })
23 },
24 /** It may take several minutes */
25 uploadRules(ruleLevels: SigmaRuleLevels[]) {
26 return HttpClient.post<FlaskBaseResponse>(`/sigma/bulk-upload-to-db`, {
27 rule_levels: ruleLevels
28 })
29 },
30 uploadRulesFile(file: File) {
31 const form = new FormData()
32 form.append("file", new Blob([file], { type: file.type }), file.name)
33
34 return HttpClient.post<FlaskBaseResponse>(`/sigma/upload`, form)
35 },
36 /** It may take several minutes */
37 activateAllQueries() {
38 return HttpClient.post<FlaskBaseResponse & { enabled_queries: string[] }>(`/sigma/activate-all-queries`)
39 },
40 /** It may take several minutes */
41 deactivateAllQueries() {
42 return HttpClient.post<FlaskBaseResponse & { disabled_queries: string[] }>(`/sigma/deactivate-all-queries`)
43 },
44 /** returns the updated query */
45 setQueryActive(ruleName: string, active: boolean) {
46 return HttpClient.put<FlaskBaseResponse & { sigma_queries: SigmaQuery[] }>(`/sigma/queries/set-active`, {
47 rule_name: ruleName,
48 active
49 })
50 },
51 /** returns the updated query */
52 setQueryTimeInterval(ruleName: string, timeInterval: SigmaTimeInterval) {
53 return HttpClient.put<FlaskBaseResponse & { sigma_queries: SigmaQuery[] }>(`/sigma/queries/set-time-interval`, {
54 rule_name: ruleName,
55 time_interval: timeInterval
56 })
57 },
58 deleteRule(ruleName: string) {
59 return HttpClient.delete<FlaskBaseResponse & { deleted_queries: string[] }>(`/sigma/queries/delete`, {
60 params: {
61 rule_name: ruleName
62 }
63 })
64 },
65 deleteAllRules() {
66 return HttpClient.delete<FlaskBaseResponse & { deleted_queries: string[] }>(`/sigma/queries/delete-all`)
67 }
68 }