main
ts 120 lines 3.72 KB
Raw
1 import type { FlaskBaseResponse } from "@/types/flask.d"
2 import type { CustomerNetworkConnector, NetworkConnector } from "@/types/networkConnectors.d"
3 import { HttpClient } from "../httpClient"
4
5 export interface NewNetworkConnector {
6 customer_code: string
7 customer_name: string
8 network_connector_name: string
9 network_connector_auth_keys: {
10 auth_key_name: string
11 auth_value: string
12 }[]
13 }
14
15 export interface NewNetworkConnectorPayload extends NewNetworkConnector {
16 network_connector_config: {
17 auth_type: string
18 config_key: string
19 config_value: string
20 }
21 }
22
23 export interface FortinetProvision {
24 tcp_enabled: boolean
25 udp_enabled: boolean
26 hot_data_retention: number
27 index_replicas: number
28 }
29
30 export interface FortinetProvisionPayload extends FortinetProvision {
31 customer_code: string
32 integration_name: string
33 }
34
35 export interface SonicwallProvision {
36 tcp_enabled: boolean
37 hot_data_retention: number
38 index_replicas: number
39 }
40
41 export interface SonicwallProvisionPayload extends SonicwallProvision {
42 customer_code: string
43 integration_name: string
44 }
45
46 export interface SentinelOneProvision {
47 tls_enabled: boolean
48 hot_data_retention: number
49 index_replicas: number
50 }
51
52 export interface SentinelOneProvisionPayload extends SentinelOneProvision {
53 customer_code: string
54 integration_name: string
55 }
56
57 // TODO-FE: refactor
58 export default {
59 // #region Network Connector
60 getAvailableNetworkConnectors() {
61 return HttpClient.get<FlaskBaseResponse & { network_connector_keys: NetworkConnector[] }>(
62 `/network_connectors/available_network_connectors`
63 )
64 },
65 getCustomerNetworkConnectors(customerCode: string) {
66 return HttpClient.get<FlaskBaseResponse & { available_network_connectors: CustomerNetworkConnector[] }>(
67 `/network_connectors/customer_network_connectors/${customerCode}`
68 )
69 },
70 createNetworkConnector(props: NewNetworkConnector) {
71 const payload: NewNetworkConnectorPayload = {
72 ...props,
73 network_connector_config: {
74 auth_type: "Fortinet",
75 config_key: "firewall",
76 config_value: "not applicable"
77 }
78 }
79 return HttpClient.post<FlaskBaseResponse>(`/network_connectors/create_network_connector`, payload)
80 },
81 deleteNetworkConnector(customerCode: string, networkConnectorName: string) {
82 return HttpClient.delete<FlaskBaseResponse>(`/network_connectors/delete_network_connector`, {
83 data: { customer_code: customerCode, network_connector_name: networkConnectorName }
84 })
85 },
86 decommissionNetworkConnector(customerCode: string, networkConnectorName: string) {
87 return HttpClient.post<FlaskBaseResponse>(`/stack_decommissioning/graylog/decommission/network_connector`, {
88 customer_code: customerCode,
89 network_connector: networkConnectorName
90 })
91 },
92 // #endregion
93
94 // #region Provision
95 fortinetProvision(customerCode: string, networkConnectorName: string, props: FortinetProvision) {
96 const payload: FortinetProvisionPayload = {
97 ...props,
98 customer_code: customerCode,
99 integration_name: networkConnectorName
100 }
101 return HttpClient.post<FlaskBaseResponse>(`/stack_provisioning/graylog/provision/fortinet`, payload)
102 },
103 sonicwallProvision(customerCode: string, networkConnectorName: string, props: SonicwallProvision) {
104 const payload: SonicwallProvisionPayload = {
105 ...props,
106 customer_code: customerCode,
107 integration_name: networkConnectorName
108 }
109 return HttpClient.post<FlaskBaseResponse>(`/stack_provisioning/graylog/provision/sonicwall`, payload)
110 },
111 sentineloneProvision(customerCode: string, networkConnectorName: string, props: SentinelOneProvision) {
112 const payload: SentinelOneProvisionPayload = {
113 ...props,
114 customer_code: customerCode,
115 integration_name: networkConnectorName
116 }
117 return HttpClient.post<FlaskBaseResponse>(`/stack_provisioning/graylog/provision/sentinelone`, payload)
118 }
119 // #endregion
120 }