making enable / disable button to work only when connected to the siem

This commit is contained in:
satti-hari-krishna-reddy
2024-07-16 20:27:09 +05:30
parent 94749e679e
commit d6b78612df
3 changed files with 164 additions and 188 deletions
+11 -89
View File
@@ -1,4 +1,4 @@
import React, { useState, useRef } from "react";
import React, { useState } from "react";
import {
Container,
Box,
@@ -7,12 +7,16 @@ import {
Typography,
Button,
} from "@mui/material";
import { Publish as PublishIcon } from "@mui/icons-material";
import { toast } from "react-toastify";
import RuleCard from "./RuleCard";
import CircularProgress from "@material-ui/core/CircularProgress";
const handleDirectoryChange = (folderDisabled, setFolderDisabled, globalUrl) => {
const handleDirectoryChange = (folderDisabled, setFolderDisabled, globalUrl, isTenzirActive) => {
if (!isTenzirActive) {
toast("connect to siem first for global enable/disable to work");
return;
}
const action = folderDisabled ? "enable_folder" : "disable_folder";
const url = `${globalUrl}/api/v1/files/detection/${action}`;
@@ -44,94 +48,11 @@ const Detection = ({
ruleInfo,
folderDisabled,
setFolderDisabled,
openEditBar,
isTenzirActive,
}) => {
const [searchQuery, setSearchQuery] = useState("");
const uploadRef = useRef(null);
const [loading, setLoading] = useState(false);
const uploadFiles = (files) => {
for (const key in files) {
try {
const filename = files[key].name;
const filedata = new FormData();
filedata.append("shuffle_file", files[key]);
if (typeof files[key] === "object") {
handleCreateFile(filename, filedata);
}
} catch (e) {
console.log("Error in dropzone: ", e);
}
}
setTimeout(() => {
// Additional logic if needed
}, 2500);
};
const handleCreateFile = (filename, file) => {
const data = {
filename: filename,
org_id: "default",
workflow_id: "global",
namespace: "sigma",
};
fetch(globalUrl + "/api/v1/files/create", {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
},
credentials: "include",
body: JSON.stringify(data),
})
.then((response) => {
if (response.status !== 200) {
console.log("Status not 200 for apps :O!");
return;
}
return response.json();
})
.then((responseJson) => {
if (responseJson.success === true) {
handleFileUpload(responseJson.id, file);
} else {
toast("Failed to upload file ", filename);
}
})
.catch((error) => {
toast("Failed to upload file ", filename);
console.log(error.toString());
});
};
const handleFileUpload = (file_id, file) => {
fetch(`${globalUrl}/api/v1/files/${file_id}/upload`, {
method: "POST",
credentials: "include",
body: file,
})
.then((response) => {
if (response.status !== 200 && response.status !== 201) {
console.log("Status not 200 for apps :O!");
toast("File was created, but failed to upload.");
return;
}
return response.json();
})
.then((responseJson) => {
// Handle the response as needed
})
.catch((error) => {
toast(error.toString());
});
};
const handleConnectClick = () => {
if (!isTenzirActive) {
setLoading(true);
@@ -150,7 +71,7 @@ const Detection = ({
setTimeout(() => {
setLoading(false);
window.location.reload();
}, 5000);
}, 15000);
} else {
setLoading(false);
toast("Failed to connect to SIEM");
@@ -240,8 +161,9 @@ const Detection = ({
<Switch
checked={!folderDisabled}
onChange={() =>
handleDirectoryChange(folderDisabled, setFolderDisabled, globalUrl)
handleDirectoryChange(folderDisabled, setFolderDisabled, globalUrl, isTenzirActive)
}
disabled={!isTenzirActive}
/>
</Box>
</Box>
@@ -263,7 +185,7 @@ const Detection = ({
file_id={card.file_id}
globalUrl={globalUrl}
folderDisabled={folderDisabled}
openEditBar={() => openEditBar(card)}
isTenzirActive={isTenzirActive}
{...card}
/>
))}