import React, { useState } from "react"; import { Container, Box, TextField, Switch, Typography, Button, CircularProgress, Paper, } from "@mui/material"; import { toast } from "react-toastify"; import theme from '../theme.jsx'; import DetectionRuleCard from "../components/DetectionRuleCard.jsx"; 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/detection/${action}`; fetch(url, { method: "PUT", credentials: "include", headers: { "Content-Type": "application/json", }, }) .then((response) => response.json().then((responseJson) => { if (responseJson["success"] === true) { if (action === "enable_folder") setFolderDisabled(false); else setFolderDisabled(true); } else { //toast(`failed to disable rule`); } }) ) .catch((error) => { console.log(`Error in ${action} the rule: `, error); toast(`An error occurred while ${action} the rule`); }); }; const Detection = (props) => { const { globalUrl, ruleInfo, folderDisabled, setFolderDisabled, isTenzirActive } = props; const [searchQuery, setSearchQuery] = useState(""); const [loading, setLoading] = useState(false); const handleConnectClick = () => { if (!isTenzirActive) { setLoading(true); const url = `${globalUrl}/api/v1/detection/siem/connect`; fetch(url, { method: "GET", credentials: "include", headers: { "Content-Type": "application/json", }, }) .then((response) => response.json().then((responseJson) => { if (responseJson["success"] === true) { setTimeout(() => { setLoading(false); window.location.reload(); }, 15000); } else { setLoading(false); toast("Failed to connect to SIEM"); } }) ) .catch((error) => { setLoading(false); console.log(`Error in connecting to SIEM: `, error); toast("An error occurred while connecting to SIEM"); }); } else { console.log("Already connected to SIEM"); } }; const filteredRules = ruleInfo?.filter((rule) => rule.title.toLowerCase().includes(searchQuery.toLowerCase()) || rule.description.toLowerCase().includes(searchQuery.toLowerCase()) ); return ( Sigma Detection Rules setSearchQuery(e.target.value)} /> {/* { uploadFiles(event.target.files); }} /> */} Global disable/enable handleDirectoryChange(folderDisabled, setFolderDisabled, globalUrl, isTenzirActive) } disabled={!isTenzirActive} /> {filteredRules?.length > 0 ? filteredRules.map((card) => { console.log("RULE CARD: ", card); return ( ) }) : null } ); }; export default Detection;