Merge branch 'nightly' of github.com:yashsinghcodes/Shuffle into nightly
This commit is contained in:
@@ -5,6 +5,7 @@ go 1.24.0
|
||||
toolchain go1.24.3
|
||||
|
||||
//replace github.com/shuffle/shuffle-shared => ../../../shuffle-shared
|
||||
|
||||
//replace github.com/frikky/schemaless => ../../../schemaless
|
||||
|
||||
//replace github.com/frikky/kin-openapi => ../../../../git/kin-openapi
|
||||
@@ -25,8 +26,8 @@ require (
|
||||
github.com/gorilla/mux v1.8.1
|
||||
github.com/h2non/filetype v1.1.3
|
||||
github.com/satori/go.uuid v1.2.0
|
||||
github.com/shuffle/shuffle-shared v0.9.40
|
||||
github.com/shuffle/singul v0.0.19
|
||||
github.com/shuffle/shuffle-shared v0.9.51
|
||||
github.com/shuffle/singul v0.0.20
|
||||
golang.org/x/crypto v0.40.0
|
||||
google.golang.org/api v0.236.0
|
||||
google.golang.org/grpc v1.72.2
|
||||
@@ -74,7 +75,7 @@ require (
|
||||
github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect
|
||||
github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/frikky/schemaless v0.0.23 // indirect
|
||||
github.com/frikky/schemaless v0.0.24 // indirect
|
||||
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
|
||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
||||
github.com/go-jose/go-jose/v4 v4.0.5 // indirect
|
||||
|
||||
@@ -38,8 +38,8 @@ import {
|
||||
Avatar,
|
||||
} from "@mui/material";
|
||||
|
||||
import {
|
||||
DataGrid,
|
||||
import {
|
||||
DataGrid,
|
||||
GridColDef,
|
||||
} from '@mui/x-data-grid';
|
||||
|
||||
@@ -70,15 +70,15 @@ import {
|
||||
VisibilityOff as VisibilityOffIcon,
|
||||
Clear as ClearIcon,
|
||||
Add as AddIcon,
|
||||
Rocket as RocketIcon,
|
||||
Webhook as WebhookIcon,
|
||||
Air as AirIcon,
|
||||
RocketLaunch as RocketLaunchIcon,
|
||||
Rocket as RocketIcon,
|
||||
Webhook as WebhookIcon,
|
||||
Air as AirIcon,
|
||||
RocketLaunch as RocketLaunchIcon,
|
||||
Send as SendIcon,
|
||||
SmartToy as SmartToyIcon,
|
||||
Settings as SettingsIcon,
|
||||
FilterAlt as FilterAltIcon,
|
||||
CompareArrows as CompareArrowsIcon,
|
||||
CompareArrows as CompareArrowsIcon,
|
||||
} from "@mui/icons-material";
|
||||
import { Context } from "../context/ContextApi.jsx";
|
||||
|
||||
@@ -104,7 +104,7 @@ const useStyles = makeStyles({
|
||||
},
|
||||
});
|
||||
|
||||
//
|
||||
//
|
||||
|
||||
//const CacheView = (props) => {
|
||||
const CacheView = memo((props) => {
|
||||
@@ -130,7 +130,7 @@ const CacheView = memo((props) => {
|
||||
const [cursors, setCursors] = useState({
|
||||
0: "",
|
||||
})
|
||||
const [_, setUpdate] = useState(Math.random())
|
||||
const [_, setUpdate] = useState(Math.random())
|
||||
const [selectedRows, setSelectedRows] = useState([]);
|
||||
// Direct category migration from ../components/Files.jsx
|
||||
const [selectAllChecked, setSelectAllChecked] = React.useState(false)
|
||||
@@ -170,7 +170,7 @@ const CacheView = memo((props) => {
|
||||
"key": "workflow_id",
|
||||
"value": "",
|
||||
}],
|
||||
"icon": <AirIcon />,
|
||||
"icon": <AirIcon />,
|
||||
"enabled": false,
|
||||
},
|
||||
{
|
||||
@@ -203,7 +203,7 @@ const CacheView = memo((props) => {
|
||||
"key": "webhook_url",
|
||||
"value": "",
|
||||
}],
|
||||
"icon": <WebhookIcon />,
|
||||
"icon": <WebhookIcon />,
|
||||
"enabled": false,
|
||||
},
|
||||
|
||||
@@ -237,7 +237,7 @@ const CacheView = memo((props) => {
|
||||
|
||||
const [categoryAutomations, setCategoryAutomations] = useState(defaultAutomation)
|
||||
const [categoryConfig, setCategoryConfig] = useState(undefined)
|
||||
|
||||
|
||||
const { themeMode, brandColor } = useContext(Context);
|
||||
const theme = getTheme(themeMode, brandColor);
|
||||
const classes = useStyles();
|
||||
@@ -312,9 +312,9 @@ const CacheView = memo((props) => {
|
||||
|
||||
useEffect(() => {
|
||||
getWorkflows()
|
||||
getApps()
|
||||
getApps()
|
||||
|
||||
var chosenCategory = selectedCategory
|
||||
var chosenCategory = selectedCategory
|
||||
const urlParams = new URLSearchParams(window.location.search)
|
||||
const categoryParam = urlParams.get("category")
|
||||
if (categoryParam && categoryParam !== undefined && categoryParam !== "default" && categoryParam !== "") {
|
||||
@@ -335,7 +335,7 @@ const CacheView = memo((props) => {
|
||||
|
||||
if (event.key === 'Escape'){ // not working for some reasons
|
||||
console.log('escape pressed')
|
||||
setRenderTextBox(false);
|
||||
setRenderTextBox(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -359,7 +359,7 @@ const CacheView = memo((props) => {
|
||||
|
||||
if (page !== undefined && page !== null && page >= 0) {
|
||||
if (cursors[page-1] !== undefined && cursors[page-1] !== null && cursors[page-1] !== "") {
|
||||
url += "&cursor=" + cursors[page-1]
|
||||
url += "&cursor=" + cursors[page-1]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -405,8 +405,8 @@ const CacheView = memo((props) => {
|
||||
}
|
||||
|
||||
// Especially important during first load
|
||||
if (index < 2 && (category === "default" || category === "" || category === undefined)) {
|
||||
// If it exists and isn't blank/default, load it
|
||||
if (index < 2 && (category === "default" || category === "" || category === undefined)) {
|
||||
// If it exists and isn't blank/default, load it
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const categoryParam = urlParams.get("category");
|
||||
if (categoryParam && categoryParam !== undefined && categoryParam !== "default" && categoryParam !== "") {
|
||||
@@ -414,7 +414,7 @@ const CacheView = memo((props) => {
|
||||
if (index === undefined || index === null) {
|
||||
index = 0
|
||||
}
|
||||
|
||||
|
||||
listOrgCache(orgId, categoryParam, index+1, amount, page)
|
||||
} else {
|
||||
setSelectedCategory("default");
|
||||
@@ -478,10 +478,10 @@ const CacheView = memo((props) => {
|
||||
} else {
|
||||
setCategoryAutomations(defaultAutomation)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//toast.warn("Failed to load keys. Please try again or contact support@shuffler if this persists.")
|
||||
|
||||
|
||||
if (category !== undefined && category !== null && category !== "" && category !== "default") {
|
||||
toast.info(`No keys to load in category ${category}`)
|
||||
setSelectedCategory(category)
|
||||
@@ -495,6 +495,9 @@ const CacheView = memo((props) => {
|
||||
|
||||
|
||||
const deleteEntry = (orgId, key, itemCategory, refreshList) => {
|
||||
|
||||
console.log(`Deleting entry for orgId: ${orgId}, key: ${key}, category: ${itemCategory}`);
|
||||
|
||||
const method = "POST"
|
||||
const url = `${globalUrl}/api/v1/orgs/${orgId}/delete_cache`
|
||||
var parsed = {
|
||||
@@ -534,8 +537,8 @@ const CacheView = memo((props) => {
|
||||
};
|
||||
|
||||
const editOrgCache = (orgId) => {
|
||||
var entry = {
|
||||
key: dataValue.key,
|
||||
var entry = {
|
||||
key: dataValue.key,
|
||||
value: value,
|
||||
category: selectedCategory,
|
||||
}
|
||||
@@ -587,10 +590,10 @@ const CacheView = memo((props) => {
|
||||
};
|
||||
|
||||
const addOrgCache = (orgId) => {
|
||||
const cache = {
|
||||
key: key,
|
||||
const cache = {
|
||||
key: key,
|
||||
value: value,
|
||||
category: selectedCategory,
|
||||
category: selectedCategory,
|
||||
}
|
||||
|
||||
setCacheInput([cache]);
|
||||
@@ -709,7 +712,7 @@ const CacheView = memo((props) => {
|
||||
fullWidth={true}
|
||||
autoComplete="Key"
|
||||
placeholder="abc"
|
||||
id="keyfield"
|
||||
id="keyfield"
|
||||
margin="normal"
|
||||
variant="outlined"
|
||||
value={editCache ? dataValue.key : key}
|
||||
@@ -728,7 +731,7 @@ const CacheView = memo((props) => {
|
||||
autoFixJson(value)
|
||||
}}
|
||||
>
|
||||
<AutoFixNormalIcon />
|
||||
<AutoFixNormalIcon />
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
</div>
|
||||
@@ -758,7 +761,7 @@ const CacheView = memo((props) => {
|
||||
/>
|
||||
|
||||
|
||||
{editCache ?
|
||||
{editCache ?
|
||||
<div>
|
||||
<Typography variant="body2" color="textSecondary" style={{ marginTop: 10, }}>
|
||||
Created: {timestamp(dataValue?.created)}
|
||||
@@ -841,7 +844,7 @@ const CacheView = memo((props) => {
|
||||
}
|
||||
};
|
||||
|
||||
const changeDistribution = (id, selectedSubOrg) => {
|
||||
const changeDistribution = (id, selectedSubOrg) => {
|
||||
|
||||
editFileConfig(id, [...new Set(selectedSubOrg)], selectedCategory)
|
||||
}
|
||||
@@ -855,8 +858,8 @@ const CacheView = memo((props) => {
|
||||
category: category === undefined || category === "" || category === "default" ? "" : category,
|
||||
}
|
||||
|
||||
console.log("data: ", data);
|
||||
|
||||
console.log("data: ", data);
|
||||
|
||||
const url = `${globalUrl}/api/v1/orgs/${orgId}/cache/config`;
|
||||
|
||||
fetch(url, {
|
||||
@@ -989,7 +992,7 @@ const CacheView = memo((props) => {
|
||||
const originalIcon = automation.icon
|
||||
if (typeof automation.icon !== "string") {
|
||||
automation.icon = "";
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const url = `${globalUrl}/api/v2/datastore/automate`
|
||||
@@ -999,7 +1002,7 @@ const CacheView = memo((props) => {
|
||||
}
|
||||
|
||||
if (settings !== undefined && settings !== null && Object.keys(settings).length > 0) {
|
||||
data["settings"] = settings
|
||||
data["settings"] = settings
|
||||
}
|
||||
|
||||
fetch(url, {
|
||||
@@ -1049,7 +1052,7 @@ const CacheView = memo((props) => {
|
||||
}
|
||||
}
|
||||
|
||||
const runSave = () => {
|
||||
const runSave = () => {
|
||||
setUpdated(false)
|
||||
|
||||
const newAutomations = [...categoryAutomations]
|
||||
@@ -1062,11 +1065,11 @@ const CacheView = memo((props) => {
|
||||
}
|
||||
|
||||
return (
|
||||
<div key={index} style={{
|
||||
marginBottom: 10,
|
||||
<div key={index} style={{
|
||||
marginBottom: 10,
|
||||
backgroundColor: hovered ? theme.palette.hoverColor : "transparent",
|
||||
paddingTop: 5,
|
||||
}}
|
||||
paddingTop: 5,
|
||||
}}
|
||||
onMouseEnter={() => setHovered(true)}
|
||||
onMouseLeave={() => setHovered(false)}
|
||||
>
|
||||
@@ -1085,15 +1088,15 @@ const CacheView = memo((props) => {
|
||||
setUpdatedAutomation(updatedAutomation)
|
||||
setUpdated(true)
|
||||
|
||||
setUpdate(Math.random())
|
||||
setUpdate(Math.random())
|
||||
}}
|
||||
/>
|
||||
</Tooltip>
|
||||
<div
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
cursor: !automation?.disabled ? "pointer" : "not-allowed",
|
||||
width: "100%",
|
||||
width: "100%",
|
||||
}}
|
||||
disabled={automation?.disabled === true}
|
||||
onClick={() => {
|
||||
@@ -1109,30 +1112,30 @@ const CacheView = memo((props) => {
|
||||
}
|
||||
}}
|
||||
>
|
||||
{typeof automation?.icon === "string" && automation?.icon?.length > 0 ?
|
||||
{typeof automation?.icon === "string" && automation?.icon?.length > 0 ?
|
||||
<img src={automation.icon} alt={automation.name} style={{ width: 20, height: 20, }} />
|
||||
:
|
||||
automation.icon
|
||||
}
|
||||
|
||||
<Typography variant="body1" style={{
|
||||
color: automation?.disabled === true ? theme.palette.text.secondary : theme.palette.text.primary,
|
||||
marginLeft: 10,
|
||||
<Typography variant="body1" style={{
|
||||
color: automation?.disabled === true ? theme.palette.text.secondary : theme.palette.text.primary,
|
||||
marginLeft: 10,
|
||||
}}>
|
||||
{automation.name}
|
||||
</Typography>
|
||||
</div>
|
||||
|
||||
{automation?.disabled !== true ?
|
||||
{automation?.disabled !== true ?
|
||||
<Button
|
||||
style={{
|
||||
style={{
|
||||
borderRadius: theme.palette.borderRadius,
|
||||
textTransform: 'none',
|
||||
textTransform: 'none',
|
||||
color: updated ? theme.palette.primary.main : theme.palette.text.secondary,
|
||||
marginTop: -6,
|
||||
|
||||
position: "absolute",
|
||||
right: 25,
|
||||
right: 25,
|
||||
}}
|
||||
disabled={!updated}
|
||||
onClick={(e) => {
|
||||
@@ -1187,7 +1190,7 @@ const CacheView = memo((props) => {
|
||||
if (newValue.length > 0) {
|
||||
updatedAutomation.enabled = true
|
||||
} else {
|
||||
updatedAutomation.enabled = false
|
||||
updatedAutomation.enabled = false
|
||||
}
|
||||
|
||||
updatedAutomation.options[optionIndex] = option
|
||||
@@ -1241,8 +1244,8 @@ const CacheView = memo((props) => {
|
||||
value={data}
|
||||
>
|
||||
<Typography style={{
|
||||
display: "flex",
|
||||
marginTop: 5,
|
||||
display: "flex",
|
||||
marginTop: 5,
|
||||
color: keyfound ? red : theme.palette.text.primary,
|
||||
}}>
|
||||
<div style={{marginRight: 10, }}>
|
||||
@@ -1296,7 +1299,7 @@ const CacheView = memo((props) => {
|
||||
/>
|
||||
)
|
||||
} else if (option?.key === "workflow_id") {
|
||||
return (
|
||||
return (
|
||||
<Autocomplete
|
||||
key={optionIndex}
|
||||
|
||||
@@ -1323,7 +1326,7 @@ const CacheView = memo((props) => {
|
||||
if (newValue.length > 0) {
|
||||
updatedAutomation.enabled = true
|
||||
} else {
|
||||
updatedAutomation.enabled = false
|
||||
updatedAutomation.enabled = false
|
||||
}
|
||||
|
||||
updatedAutomation.options[optionIndex] = option
|
||||
@@ -1435,8 +1438,8 @@ const CacheView = memo((props) => {
|
||||
fullWidth
|
||||
style={{
|
||||
...theme.palette.textFieldStyle,
|
||||
marginBottom: 20,
|
||||
marginTop: 10,
|
||||
marginBottom: 20,
|
||||
marginTop: 10,
|
||||
}}
|
||||
InputProps={{
|
||||
style: {
|
||||
@@ -1448,9 +1451,9 @@ const CacheView = memo((props) => {
|
||||
defaultValue={option.value}
|
||||
onBlur={(e) => {
|
||||
if (e.target.value === "") {
|
||||
updatedAutomation.enabled = false
|
||||
updatedAutomation.enabled = false
|
||||
} else {
|
||||
updatedAutomation.enabled = true
|
||||
updatedAutomation.enabled = true
|
||||
}
|
||||
|
||||
updatedAutomation.options[optionIndex].value = e.target.value;
|
||||
@@ -1468,7 +1471,7 @@ const CacheView = memo((props) => {
|
||||
|
||||
const setCategorySettingsField = (field, value) => {
|
||||
// Check if categoryConfig.settings is set or not. Otherwise set it.
|
||||
var categoryConfig2 = categoryConfig
|
||||
var categoryConfig2 = categoryConfig
|
||||
if (categoryConfig === undefined || categoryConfig === null) {
|
||||
categoryConfig2 = {}
|
||||
}
|
||||
@@ -1481,16 +1484,16 @@ const CacheView = memo((props) => {
|
||||
setCategoryConfig(categoryConfig2)
|
||||
|
||||
saveAutomation(
|
||||
categoryAutomations,
|
||||
categoryAutomations,
|
||||
categoryConfig2.settings,
|
||||
)
|
||||
}
|
||||
|
||||
const columns: GridColDef<(typeof rows)[number]>[] = [
|
||||
{
|
||||
field: 'key',
|
||||
headerName: 'Key',
|
||||
width: 200,
|
||||
{
|
||||
field: 'key',
|
||||
headerName: 'Key',
|
||||
width: 200,
|
||||
filterable: true,
|
||||
sortable: true,
|
||||
},
|
||||
@@ -1502,10 +1505,10 @@ const CacheView = memo((props) => {
|
||||
renderCell: (props) => {
|
||||
const data = props.row
|
||||
|
||||
if (data?.category?.toLowerCase() === "protected") {
|
||||
if (data?.category?.toLowerCase() === "protected") {
|
||||
return (
|
||||
<Typography
|
||||
variant="body2"
|
||||
<Typography
|
||||
variant="body2"
|
||||
type="password"
|
||||
style={{maxHeight: 200, overflow: "hidden", }}
|
||||
>
|
||||
@@ -1532,7 +1535,7 @@ const CacheView = memo((props) => {
|
||||
backgroundColor: theme.palette.platformColor,
|
||||
border: theme.palette.defaultBorder,
|
||||
padding: 5,
|
||||
minWidth: 500,
|
||||
minWidth: 500,
|
||||
maxHeight: 500,
|
||||
overflowY: "auto",
|
||||
}}
|
||||
@@ -1605,16 +1608,16 @@ const CacheView = memo((props) => {
|
||||
style={{
|
||||
color: "white",
|
||||
backgroundColor: iconDetails?.iconBackgroundColor || theme.palette.primary.secondary,
|
||||
marginLeft: 15,
|
||||
marginLeft: 15,
|
||||
height: 30,
|
||||
width: 30,
|
||||
width: 30,
|
||||
cursor: data.category !== "" && data.category !== "default" ? "pointer" : "default",
|
||||
}}
|
||||
variant="rounded"
|
||||
>
|
||||
{iconDetails?.originalIcon ?
|
||||
iconDetails?.originalIcon
|
||||
:
|
||||
:
|
||||
avatarLetter
|
||||
}
|
||||
</Avatar>
|
||||
@@ -1633,7 +1636,7 @@ const CacheView = memo((props) => {
|
||||
renderCell: (props) => {
|
||||
const data = props.row
|
||||
|
||||
return (
|
||||
return (
|
||||
<span style={{ display: "flex" }}>
|
||||
{data?.workflow_id === "" || data?.workflow_id === null || data?.workflow_id === undefined || data?.workflow_id?.length !== 36 ?
|
||||
<IconButton
|
||||
@@ -1643,7 +1646,7 @@ const CacheView = memo((props) => {
|
||||
<OpenInNewIcon
|
||||
style={{
|
||||
color:
|
||||
data.workflow_id?.length === 36
|
||||
data.workflow_id?.length === 36
|
||||
? "#FF8444"
|
||||
: "grey",
|
||||
}}
|
||||
@@ -1697,7 +1700,7 @@ const CacheView = memo((props) => {
|
||||
onClick={(e) => {
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
// Try to make the value JSON indented
|
||||
// Try to make the value JSON indented
|
||||
const valid = validateJson(data.value)
|
||||
var newvalue = data.value
|
||||
if (valid.valid) {
|
||||
@@ -1867,23 +1870,23 @@ const CacheView = memo((props) => {
|
||||
const isAutomating = categoryAutomations?.find((automation) => automation.enabled) !== undefined
|
||||
return (
|
||||
<div style={{
|
||||
minHeight: 2000,
|
||||
height: isSelectedDataStore?"100%":null,
|
||||
minHeight: 2000,
|
||||
height: isSelectedDataStore?"100%":null,
|
||||
|
||||
paddingBottom: isSelectedDataStore?null:250,
|
||||
boxSizing: "border-box",
|
||||
width: isSelectedDataStore? "100%" :null,
|
||||
transition: "width 0.3s ease",
|
||||
padding:isSelectedDataStore?"27px 10px 27px 27px":null,
|
||||
color: isSelectedDataStore?'#ffffff':null,
|
||||
backgroundColor: isSelectedDataStore? theme.palette.platformColor :null,
|
||||
borderTopRightRadius: isSelectedDataStore?'8px':null,
|
||||
borderBottomRightRadius: isSelectedDataStore?'8px':null,
|
||||
borderLeft: theme.palette.defaultBorder
|
||||
paddingBottom: isSelectedDataStore?null:250,
|
||||
boxSizing: "border-box",
|
||||
width: isSelectedDataStore? "100%" :null,
|
||||
transition: "width 0.3s ease",
|
||||
padding:isSelectedDataStore?"27px 10px 27px 27px":null,
|
||||
color: isSelectedDataStore?'#ffffff':null,
|
||||
backgroundColor: isSelectedDataStore? theme.palette.platformColor :null,
|
||||
borderTopRightRadius: isSelectedDataStore?'8px':null,
|
||||
borderBottomRightRadius: isSelectedDataStore?'8px':null,
|
||||
borderLeft: theme.palette.defaultBorder
|
||||
}}>
|
||||
{modalView}
|
||||
|
||||
<CollectIngestModal
|
||||
<CollectIngestModal
|
||||
globalUrl={globalUrl}
|
||||
open={showCollectIngestMenu}
|
||||
setOpen={setShowCollectIngestMenu}
|
||||
@@ -1906,14 +1909,14 @@ const CacheView = memo((props) => {
|
||||
Shuffle Datastore
|
||||
</Typography>
|
||||
|
||||
{userdata?.support === true ?
|
||||
{userdata?.support === true ?
|
||||
<Tooltip title={"Collect (support only)"} style={{}} aria-label={""}>
|
||||
<span style={{position: "absolute", right: 0, }}>
|
||||
<Button
|
||||
style={{
|
||||
whiteSpace: "nowrap",
|
||||
height: 35,
|
||||
textTransform: 'none',
|
||||
style={{
|
||||
whiteSpace: "nowrap",
|
||||
height: 35,
|
||||
textTransform: 'none',
|
||||
|
||||
//border: isAutomating ? `1px solid ${theme.palette.primary.main}` : null,
|
||||
}}
|
||||
@@ -1924,10 +1927,10 @@ const CacheView = memo((props) => {
|
||||
}}
|
||||
>
|
||||
<FilterAltIcon style={{marginRight: 10, }}/>
|
||||
Collect (beta)
|
||||
Collect (beta)
|
||||
</Button>
|
||||
</span>
|
||||
</Tooltip>
|
||||
</Tooltip>
|
||||
: null}
|
||||
</div>
|
||||
|
||||
@@ -1957,14 +1960,14 @@ const CacheView = memo((props) => {
|
||||
style={{textTransform: isSelectedDataStore ? 'capitalize':null, width : isSelectedDataStore ? 120 : null, height:isSelectedDataStore?40:null}}
|
||||
variant="contained"
|
||||
color="primary"
|
||||
onClick={() =>{
|
||||
onClick={() =>{
|
||||
setEditCache(false)
|
||||
setModalOpen(true)
|
||||
|
||||
setValue("")
|
||||
}}
|
||||
>
|
||||
Add Key
|
||||
Add Key
|
||||
</Button>
|
||||
<Button
|
||||
style={{ marginRight: 15, width:isSelectedDataStore ? 81:null, height:isSelectedDataStore?40:null, }}
|
||||
@@ -2038,9 +2041,9 @@ const CacheView = memo((props) => {
|
||||
<MenuItem
|
||||
key={index}
|
||||
value={data}
|
||||
style={{
|
||||
color: theme.palette.textFieldStyle.color,
|
||||
display: "flex",
|
||||
style={{
|
||||
color: theme.palette.textFieldStyle.color,
|
||||
display: "flex",
|
||||
borderBottom: theme.palette.defaultBorder,
|
||||
}}
|
||||
>
|
||||
@@ -2061,17 +2064,17 @@ const CacheView = memo((props) => {
|
||||
) : null}
|
||||
|
||||
<div style={{display: "inline-flex", position:"relative", top: 8}}>
|
||||
{renderTextBox ?
|
||||
{renderTextBox ?
|
||||
<Tooltip title={"Close"} style={{}} aria-label={""}>
|
||||
<Button
|
||||
style={{
|
||||
height: 35,
|
||||
borderRadius: 4,
|
||||
textTransform: 'none',
|
||||
style={{
|
||||
height: 35,
|
||||
borderRadius: 4,
|
||||
textTransform: 'none',
|
||||
fontSize: 16,
|
||||
borderRadius: "0px 5px 5px 0px",
|
||||
|
||||
marginRight: 10,
|
||||
marginRight: 10,
|
||||
}}
|
||||
color="secondary"
|
||||
variant="contained"
|
||||
@@ -2086,12 +2089,12 @@ const CacheView = memo((props) => {
|
||||
:
|
||||
<Tooltip title={"Add or find category"} style={{}} aria-label={""}>
|
||||
<Button
|
||||
style={{
|
||||
whiteSpace: "nowrap",
|
||||
width: datastoreCategories !== undefined && datastoreCategories !== null && datastoreCategories.length > 1 ? 50 : 169,
|
||||
height: 35,
|
||||
textTransform: 'none',
|
||||
fontSize: 16,
|
||||
style={{
|
||||
whiteSpace: "nowrap",
|
||||
width: datastoreCategories !== undefined && datastoreCategories !== null && datastoreCategories.length > 1 ? 50 : 169,
|
||||
height: 35,
|
||||
textTransform: 'none',
|
||||
fontSize: 16,
|
||||
|
||||
borderRadius: "0px 5px 5px 0px",
|
||||
}}
|
||||
@@ -2104,7 +2107,7 @@ const CacheView = memo((props) => {
|
||||
<AddIcon/>
|
||||
{datastoreCategories !== undefined && datastoreCategories !== null && datastoreCategories.length > 1 ? "" : "Category"}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</Tooltip>
|
||||
}
|
||||
|
||||
{renderTextBox && <TextField
|
||||
@@ -2115,11 +2118,11 @@ const CacheView = memo((props) => {
|
||||
const foundValue = event.target.value.trim();
|
||||
if(event.key === 'Enter' && foundValue?.length > 0){
|
||||
setUpdateToThisCategory(event.target.value)
|
||||
|
||||
|
||||
listOrgCache(orgId, event.target.value, 0, pageSize, 0)
|
||||
setPage(0)
|
||||
}
|
||||
|
||||
|
||||
}}
|
||||
style={{
|
||||
height: 35,
|
||||
@@ -2151,10 +2154,10 @@ const CacheView = memo((props) => {
|
||||
<Tooltip title={"Automate current Category"} style={{}} aria-label={""}>
|
||||
<span>
|
||||
<Button
|
||||
style={{
|
||||
whiteSpace: "nowrap",
|
||||
height: 35,
|
||||
textTransform: 'none',
|
||||
style={{
|
||||
whiteSpace: "nowrap",
|
||||
height: 35,
|
||||
textTransform: 'none',
|
||||
|
||||
border: isAutomating ? `1px solid ${theme.palette.primary.main}` : null,
|
||||
}}
|
||||
@@ -2162,27 +2165,27 @@ const CacheView = memo((props) => {
|
||||
color="secondary"
|
||||
disabled={selectedCategory === undefined || selectedCategory === "" || selectedCategory === "default"}
|
||||
onClick={() => {
|
||||
// Set up:
|
||||
// Workflow triggers for when a key is added/edited/deleted.
|
||||
// Automatic ingest mechanisms:
|
||||
// Set up:
|
||||
// Workflow triggers for when a key is added/edited/deleted.
|
||||
// Automatic ingest mechanisms:
|
||||
// - IOCs (monitor URLs)
|
||||
// - Singul ingest
|
||||
setShowAutomationMenu(true)
|
||||
}}
|
||||
>
|
||||
{isAutomating ? <RocketLaunchIcon style={{color: theme.palette.primary.main, marginRight: 10 }}/> : <RocketIcon style={{marginRight: 10, color: theme.palette.secondary.main, }} />}
|
||||
Automate (beta)
|
||||
Automate (beta)
|
||||
</Button>
|
||||
</span>
|
||||
</Tooltip>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip title={"Other category settings"} style={{}} aria-label={""}>
|
||||
<Button
|
||||
style={{
|
||||
whiteSpace: "nowrap",
|
||||
height: 35,
|
||||
textTransform: 'none',
|
||||
marginLeft: 3,
|
||||
style={{
|
||||
whiteSpace: "nowrap",
|
||||
height: 35,
|
||||
textTransform: 'none',
|
||||
marginLeft: 3,
|
||||
}}
|
||||
variant="outlined"
|
||||
color="secondary"
|
||||
@@ -2193,10 +2196,10 @@ const CacheView = memo((props) => {
|
||||
>
|
||||
<SettingsIcon style={{color: theme.palette.secondary.main, }} />
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</Tooltip>
|
||||
</ButtonGroup>
|
||||
|
||||
{showAutomationMenu || showSettingsMenu ?
|
||||
{showAutomationMenu || showSettingsMenu ?
|
||||
<Dialog
|
||||
open={showAutomationMenu || showSettingsMenu}
|
||||
onClose={() => {
|
||||
@@ -2227,7 +2230,7 @@ const CacheView = memo((props) => {
|
||||
<DialogTitle>
|
||||
</DialogTitle>
|
||||
<DialogContent style={{ paddingLeft: "30px", paddingRight: '30px', backgroundColor: theme.palette.DialogStyle.backgroundColor, }}>
|
||||
{showSettingsMenu === true ?
|
||||
{showSettingsMenu === true ?
|
||||
<div>
|
||||
<Typography variant="h6" style={{ color: theme.palette.text.primary, marginBottom: 20 }}>
|
||||
<SettingsIcon style={{ verticalAlign: "middle", marginRight: 10 }} />
|
||||
@@ -2237,7 +2240,7 @@ const CacheView = memo((props) => {
|
||||
<div style={{display: "flex", marginTop: 50, }}>
|
||||
<div style={{flex: 2, }}>
|
||||
<Typography variant="body1" style={{ color: theme.palette.text.primary, }}>
|
||||
Timeout
|
||||
Timeout
|
||||
</Typography>
|
||||
<Typography variant="body2" style={{ color: theme.palette.text.secondary, marginBottom: 20 }}>
|
||||
You can set a timeout for the category. This will delete all keys in this category after the specified time. Timeout is in seconds and based on last <b>EDITED</b> time.
|
||||
@@ -2266,7 +2269,7 @@ const CacheView = memo((props) => {
|
||||
toast.info("Timeout must be a number. Setting to 0.")
|
||||
} else {
|
||||
timeoutValue = parseInt(e.target.value, 10)
|
||||
if (timeoutValue < 60) {
|
||||
if (timeoutValue < 60) {
|
||||
toast.info("Timeout must be between 60 seconds or more. Setting to 0.")
|
||||
}
|
||||
|
||||
@@ -2283,7 +2286,7 @@ const CacheView = memo((props) => {
|
||||
<div style={{display: "flex", marginTop: 25, }}>
|
||||
<div style={{flex: 3, }}>
|
||||
<Typography variant="body1" style={{ color: theme.palette.text.primary, }}>
|
||||
{categoryConfig?.settings?.public === true ? "" : "NOT"} Public
|
||||
{categoryConfig?.settings?.public === true ? "" : "NOT"} Public
|
||||
</Typography>
|
||||
<Typography variant="body2" style={{ color: theme.palette.text.secondary, marginBottom: 20 }}>
|
||||
This will make the url for this category public. Metadata will be cleared, except for timestamps. Types: keys,ndjson,csv,values,json,meta
|
||||
@@ -2330,7 +2333,7 @@ const CacheView = memo((props) => {
|
||||
When
|
||||
</Typography>
|
||||
<Typography variant="body1" style={{ color: theme.palette.text.primary, marginBottom: 20 }}>
|
||||
A key is edited
|
||||
A key is edited
|
||||
</Typography>
|
||||
|
||||
<Typography variant="body2" style={{ color: theme.palette.text.secondary, marginTop: 100, marginBottom: 20 }}>
|
||||
@@ -2339,16 +2342,16 @@ const CacheView = memo((props) => {
|
||||
{categoryAutomations.map((automation, index) => {
|
||||
|
||||
return (
|
||||
<AutomationOptions
|
||||
<AutomationOptions
|
||||
key={index}
|
||||
automation={automation}
|
||||
index={index}
|
||||
/>
|
||||
automation={automation}
|
||||
index={index}
|
||||
/>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
: null}
|
||||
@@ -2374,17 +2377,17 @@ const CacheView = memo((props) => {
|
||||
setSelectedRows(newSelection);
|
||||
}}
|
||||
keepNonExistentRowsSelected={false}
|
||||
getRowId={(row) => `${row?.key}_${row?.category}`}
|
||||
getRowId={(row) => row?.category ? `${row.key}_${row.category}` : row.key}
|
||||
|
||||
autoHeight={true}
|
||||
sx={{
|
||||
marginTop: 1,
|
||||
marginTop: 1,
|
||||
height: listCache.length*52+500,
|
||||
width: "100%",
|
||||
'.MuiTablePagination-selectLabel, .MuiTablePagination-select, .MuiTablePagination-selectIcon': {
|
||||
display: 'none',
|
||||
},
|
||||
marginBottom: 20,
|
||||
marginBottom: 20,
|
||||
}}
|
||||
|
||||
loading={cachedLoaded === false}
|
||||
@@ -2404,7 +2407,7 @@ const CacheView = memo((props) => {
|
||||
|
||||
setCursors({
|
||||
0: "",
|
||||
})
|
||||
})
|
||||
}}
|
||||
|
||||
|
||||
@@ -2441,20 +2444,20 @@ const CacheView = memo((props) => {
|
||||
}}
|
||||
>
|
||||
<div style={{
|
||||
width: 1200,
|
||||
margin: "auto",
|
||||
padding: 10,
|
||||
width: 1200,
|
||||
margin: "auto",
|
||||
padding: 10,
|
||||
backgroundColor: theme.palette.platformColor,
|
||||
borderRadius: 4,
|
||||
border: "1px solid rgba(255, 255, 255, 0.5)",
|
||||
|
||||
display: "flex",
|
||||
textAlign: "center",
|
||||
textAlign: "center",
|
||||
}}>
|
||||
<Typography variant="body2" style={{ color: theme.palette.text.primary, marginRight: 50, marginTop: 6, marginLeft: 350, }}>
|
||||
{page * pageSize + 1} - {Math.min((page + 1) * pageSize, totalAmount)} of {totalAmount}
|
||||
</Typography>
|
||||
|
||||
|
||||
<Pagination
|
||||
count={Number.parseInt(totalAmount/pageSize)}
|
||||
page={page+1}
|
||||
@@ -2462,7 +2465,7 @@ const CacheView = memo((props) => {
|
||||
var disabled = false
|
||||
if (item?.type === "page") {
|
||||
if (cursors[item.page-1] === undefined) {
|
||||
disabled = true
|
||||
disabled = true
|
||||
}
|
||||
}
|
||||
if (item?.type === "previous") {
|
||||
@@ -2470,7 +2473,7 @@ const CacheView = memo((props) => {
|
||||
}
|
||||
|
||||
if (cachedLoaded === false) {
|
||||
disabled = true
|
||||
disabled = true
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -2530,10 +2533,10 @@ const CacheView = memo((props) => {
|
||||
variant={"outlined"}
|
||||
color="secondary"
|
||||
>
|
||||
<DeleteOutlineIcon
|
||||
<DeleteOutlineIcon
|
||||
style={{
|
||||
color: red,
|
||||
marginRight: 10,
|
||||
marginRight: 10,
|
||||
}}
|
||||
/>
|
||||
Delete {selectedRows.length} Key{ selectedRows.length > 1 ? "s" : "" }
|
||||
|
||||
@@ -10,7 +10,7 @@ require (
|
||||
github.com/docker/docker v28.3.3+incompatible
|
||||
github.com/docker/go-connections v0.5.0
|
||||
github.com/satori/go.uuid v1.2.0
|
||||
github.com/shuffle/shuffle-shared v0.9.30
|
||||
github.com/shuffle/shuffle-shared v0.9.51
|
||||
k8s.io/api v0.33.1
|
||||
k8s.io/apimachinery v0.33.1
|
||||
)
|
||||
@@ -58,7 +58,7 @@ require (
|
||||
github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/frikky/kin-openapi v0.42.0 // indirect
|
||||
github.com/frikky/schemaless v0.0.20 // indirect
|
||||
github.com/frikky/schemaless v0.0.24 // indirect
|
||||
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
|
||||
github.com/ghodss/yaml v1.0.0 // indirect
|
||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
||||
@@ -93,8 +93,6 @@ require (
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||
github.com/opencontainers/image-spec v1.1.1 // indirect
|
||||
github.com/opensearch-project/opensearch-go v1.1.0 // indirect
|
||||
github.com/opensearch-project/opensearch-go/v2 v2.3.0 // indirect
|
||||
github.com/osteele/liquid v1.7.0 // indirect
|
||||
github.com/osteele/tuesday v1.0.3 // indirect
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
|
||||
@@ -105,6 +103,7 @@ require (
|
||||
github.com/sendgrid/rest v2.6.9+incompatible // indirect
|
||||
github.com/sendgrid/sendgrid-go v3.16.1+incompatible // indirect
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
||||
github.com/shuffle/opensearch-go/v4 v4.0.0 // indirect
|
||||
github.com/skeema/knownhosts v1.3.1 // indirect
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
|
||||
@@ -70,20 +70,6 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFI
|
||||
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
|
||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
|
||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
|
||||
github.com/aws/aws-sdk-go v1.42.27/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc=
|
||||
github.com/aws/aws-sdk-go v1.44.263/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.18.25/go.mod h1:dZnYpD5wTW/dQF0rRNLVypB396zWCcPiBIvdvSWHEg4=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.24/go.mod h1:jYPYi99wUOPIFi0rhiOvXeSEReVOzBqFNOX5bXYoG2o=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3/go.mod h1:4Q0UFP0YJf0NrsEuEYHpM9fTSEVnD16Z3uyEF7J9JGM=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34/go.mod h1:Etz2dj6UHYuw+Xw830KfzCfWGMzqvUTCjUj5b76GVDc=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27/go.mod h1:EOwBD4J4S5qYszS5/3DpkejfuK+Z5/1uzICfPaZLtqw=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.12.10/go.mod h1:ouy2P4z6sJN70fR3ka3wD3Ro3KezSxU6eKGQI2+2fjI=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10/go.mod h1:AFvkxc8xfBe8XA+5St5XIHHrQQtkxqrRincx4hmMHOk=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.19.0/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8=
|
||||
github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
||||
github.com/bradfitz/gomemcache v0.0.0-20250403215159-8d39553ac7cf h1:TqhNAT4zKbTdLa62d2HDBFdvgSbIGB3eJE8HqhgiL9I=
|
||||
github.com/bradfitz/gomemcache v0.0.0-20250403215159-8d39553ac7cf/go.mod h1:r5xuitiExdLAJ09PR7vBVENGvp4ZuTBeWTGtxuX3K+c=
|
||||
github.com/bradfitz/slice v0.0.0-20180809154707-2b758aa73013 h1:/P9/RL0xgWE+ehnCUUN5h3RpG3dmoMCOONO1CCvq23Y=
|
||||
@@ -142,8 +128,8 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2
|
||||
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/frikky/kin-openapi v0.42.0 h1:d5Z6vnuQ6RnCCPIxZaDL+TH2ODLxT8abytOt+Zh+Kd0=
|
||||
github.com/frikky/kin-openapi v0.42.0/go.mod h1:ev9OZAw7Bv5p0w93j91++6a1ElPzGcCofst+kmrWsj4=
|
||||
github.com/frikky/schemaless v0.0.20 h1:S/A2pQcRN9qa2RnufvxwCeM06trjG0JLTF3urt1tFQI=
|
||||
github.com/frikky/schemaless v0.0.20/go.mod h1:m9s+6gALXhA5ZERCrJw+jI2rRtTPNa8mkl4vav9sxnY=
|
||||
github.com/frikky/schemaless v0.0.24 h1:1bNg96gm82yLbRlDS0haQH/96X3GlCAEuTCSasXIJZE=
|
||||
github.com/frikky/schemaless v0.0.24/go.mod h1:m9s+6gALXhA5ZERCrJw+jI2rRtTPNa8mkl4vav9sxnY=
|
||||
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
|
||||
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
|
||||
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
||||
@@ -209,7 +195,6 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||
@@ -246,8 +231,6 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
|
||||
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
|
||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
@@ -295,10 +278,6 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
|
||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
|
||||
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
|
||||
github.com/opensearch-project/opensearch-go v1.1.0 h1:eG5sh3843bbU1itPRjA9QXbxcg8LaZ+DjEzQH9aLN3M=
|
||||
github.com/opensearch-project/opensearch-go v1.1.0/go.mod h1:+6/XHCuTH+fwsMJikZEWsucZ4eZMma3zNSeLrTtVGbo=
|
||||
github.com/opensearch-project/opensearch-go/v2 v2.3.0 h1:nQIEMr+A92CkhHrZgUhcfsrZjibvB3APXf2a1VwCmMQ=
|
||||
github.com/opensearch-project/opensearch-go/v2 v2.3.0/go.mod h1:8LDr9FCgUTVoT+5ESjc2+iaZuldqE+23Iq0r1XeNue8=
|
||||
github.com/osteele/liquid v1.7.0 h1:VsbPSchE5D5S5scylAIvERET4dnCxsO6IDri2oSJ5Dk=
|
||||
github.com/osteele/liquid v1.7.0/go.mod h1:xU0Z2dn2hOQIEFEWNmeltOmCtfhtoW/2fCyiNQeNG+U=
|
||||
github.com/osteele/tuesday v1.0.3 h1:SrCmo6sWwSgnvs1bivmXLvD7Ko9+aJvvkmDjB5G4FTU=
|
||||
@@ -328,8 +307,10 @@ github.com/sendgrid/sendgrid-go v3.16.1+incompatible h1:zWhTmB0Y8XCDzeWIm2/BIt1G
|
||||
github.com/sendgrid/sendgrid-go v3.16.1+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||
github.com/shuffle/shuffle-shared v0.9.30 h1:3CYvNyD7sTxdxoZjTVrtaDqFvSWQRKAFGaga6rPGf8A=
|
||||
github.com/shuffle/shuffle-shared v0.9.30/go.mod h1:PhDEizuz4SmJaSmy0+yrFWwD1mXVUsy8/knKlrqF1qw=
|
||||
github.com/shuffle/opensearch-go/v4 v4.0.0 h1:Mh85CD1MwOgXiFFYlzS1llnvdqL3CztRdR1ZT/SLIjU=
|
||||
github.com/shuffle/opensearch-go/v4 v4.0.0/go.mod h1:gVLZKQE5khQWMb68XBtgKrhu78oLGL2zHwAGnFMDwC0=
|
||||
github.com/shuffle/shuffle-shared v0.9.51 h1:jOlFr0cdhPkJxRxlFHddBSIucm62T8e2DVM2PGDkahY=
|
||||
github.com/shuffle/shuffle-shared v0.9.51/go.mod h1:g03P/ZM8pUwBbdxW0l9A1siMMuemEQshgDpO9hF23eE=
|
||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
@@ -354,10 +335,19 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
|
||||
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
||||
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
||||
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
||||
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
|
||||
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
||||
github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
|
||||
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
|
||||
github.com/wI2L/jsondiff v0.7.0 h1:1lH1G37GhBPqCfp/lrs91rf/2j3DktX6qYAKZkLuCQQ=
|
||||
github.com/wI2L/jsondiff v0.7.0/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM=
|
||||
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
|
||||
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
|
||||
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
|
||||
@@ -452,9 +442,7 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
|
||||
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
|
||||
@@ -497,13 +485,11 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
|
||||
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
|
||||
golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
|
||||
@@ -515,7 +501,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
|
||||
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
|
||||
|
||||
@@ -115,8 +115,8 @@ var memcached = os.Getenv("SHUFFLE_MEMCACHED")
|
||||
var queuePerMinute = os.Getenv("SHUFFLE_EXECUTION_PER_MINIUTE")
|
||||
var queuePerMinuteInt int
|
||||
|
||||
// For it to download from Sigma?
|
||||
var pipelineApikey = os.Getenv("SHUFFLE_PIPELINE_AUTH")
|
||||
// Used to download file categories. Not required since 2.1.1
|
||||
var pipelineApikey = ""
|
||||
var pipelineUrl = os.Getenv("SHUFFLE_PIPELINE_URL")
|
||||
|
||||
var executionIds = []string{}
|
||||
@@ -2182,6 +2182,18 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
if os.Getenv("SHUFFLE_PIPELINE_STANDALONE") == "true" {
|
||||
log.Printf("[INFO] Allowing use of standalone pipeline (tenzir). URL: %s", pipelineUrl)
|
||||
|
||||
//if os.Getenv("SHUFFLE_SKIP_PIPELINES") == "false" {
|
||||
// os.Setenv("SHUFFLE_SKIP_PIPELINES", "true")
|
||||
//}
|
||||
|
||||
//if os.Getenv("SHUFFLE_PIPELINE_ENABLED") == "true" {
|
||||
// os.Setenv("SHUFFLE_PIPELINE_ENABLED", "false")
|
||||
//}
|
||||
}
|
||||
|
||||
// Block until a signal is received
|
||||
if shuffle.IsRunningInCluster() {
|
||||
log.Printf("[INFO] Running inside k8s cluster")
|
||||
@@ -3003,6 +3015,7 @@ func handlePipeline(incRequest shuffle.ExecutionRequest) error {
|
||||
}
|
||||
|
||||
func deployTenzirNode() error {
|
||||
// Disabled all pipeline features
|
||||
if os.Getenv("SHUFFLE_SKIP_PIPELINES") == "false" || os.Getenv("SHUFFLE_PIPELINE_ENABLED") == "true" {
|
||||
// return errors.New("Pipelines are disabled by user with SHUFFLE_SKIP_PIPELINES")
|
||||
//log.Printf("[INFO] Pipelines are enabled by user")
|
||||
@@ -3010,8 +3023,13 @@ func deployTenzirNode() error {
|
||||
return errors.New("Pipelines are disabled by user with SHUFFLE_SKIP_PIPELINES")
|
||||
}
|
||||
|
||||
// Specifically for standalone tenzir
|
||||
if os.Getenv("SHUFFLE_PIPELINE_STANDALONE") == "true" {
|
||||
return nil
|
||||
}
|
||||
|
||||
if isKubernetes == "true" {
|
||||
return errors.New("Kubernetes not implemented for Tenzir node")
|
||||
return errors.New("Tenzir not implemented for k8s")
|
||||
}
|
||||
|
||||
err := checkTenzirNode()
|
||||
@@ -3217,12 +3235,21 @@ func createAndStartTenzirNode(ctx context.Context, containerName, imageName stri
|
||||
hostConfig.Mounts = []mount.Mount{}
|
||||
}
|
||||
|
||||
//networkingConfig := &network.NetworkingConfig{
|
||||
// EndpointsConfig: map[string]*network.EndpointSettings{
|
||||
// "tenzir-network": {
|
||||
// IPAMConfig: &network.EndpointIPAMConfig{
|
||||
// IPv4Address: "192.168.102.100",
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
//}
|
||||
|
||||
networkingConfig := &network.NetworkingConfig{
|
||||
EndpointsConfig: map[string]*network.EndpointSettings{
|
||||
"tenzir-network": {
|
||||
IPAMConfig: &network.EndpointIPAMConfig{
|
||||
IPv4Address: "192.168.102.100",
|
||||
},
|
||||
IPAMConfig: nil,
|
||||
Aliases: []string{"tenzir-node"},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -3277,7 +3304,7 @@ func createAndStartTenzirNode(ctx context.Context, containerName, imageName stri
|
||||
|
||||
log.Printf("[INFO] Successfully deployed Tenzir Node! Setting up default syslog listener on TCP/1514 AND UDP/1514")
|
||||
|
||||
command := `from "tcp://0.0.0.0:1514" { read_syslog } | import`
|
||||
command := `load_tcp "0.0.0.0:1514" { read_syslog } | import`
|
||||
_, err = createPipeline(command, "default-syslog-tcp-514")
|
||||
if err != nil {
|
||||
log.Printf("[ERROR] Failed to create tcp syslog pipeline: %s", err)
|
||||
|
||||
Reference in New Issue
Block a user