Merge branch 'nightly' of github.com:yashsinghcodes/Shuffle into nightly

This commit is contained in:
yashsinghcodes
2025-11-10 13:52:07 +05:30
5 changed files with 216 additions and 201 deletions
+4 -3
View File
@@ -5,6 +5,7 @@ go 1.24.0
toolchain go1.24.3 toolchain go1.24.3
//replace github.com/shuffle/shuffle-shared => ../../../shuffle-shared //replace github.com/shuffle/shuffle-shared => ../../../shuffle-shared
//replace github.com/frikky/schemaless => ../../../schemaless //replace github.com/frikky/schemaless => ../../../schemaless
//replace github.com/frikky/kin-openapi => ../../../../git/kin-openapi //replace github.com/frikky/kin-openapi => ../../../../git/kin-openapi
@@ -25,8 +26,8 @@ require (
github.com/gorilla/mux v1.8.1 github.com/gorilla/mux v1.8.1
github.com/h2non/filetype v1.1.3 github.com/h2non/filetype v1.1.3
github.com/satori/go.uuid v1.2.0 github.com/satori/go.uuid v1.2.0
github.com/shuffle/shuffle-shared v0.9.40 github.com/shuffle/shuffle-shared v0.9.51
github.com/shuffle/singul v0.0.19 github.com/shuffle/singul v0.0.20
golang.org/x/crypto v0.40.0 golang.org/x/crypto v0.40.0
google.golang.org/api v0.236.0 google.golang.org/api v0.236.0
google.golang.org/grpc v1.72.2 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/go-control-plane/envoy v1.32.4 // indirect
github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect
github.com/felixge/httpsnoop v1.0.4 // 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/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-jose/go-jose/v4 v4.0.5 // indirect github.com/go-jose/go-jose/v4 v4.0.5 // indirect
+157 -154
View File
@@ -38,8 +38,8 @@ import {
Avatar, Avatar,
} from "@mui/material"; } from "@mui/material";
import { import {
DataGrid, DataGrid,
GridColDef, GridColDef,
} from '@mui/x-data-grid'; } from '@mui/x-data-grid';
@@ -70,15 +70,15 @@ import {
VisibilityOff as VisibilityOffIcon, VisibilityOff as VisibilityOffIcon,
Clear as ClearIcon, Clear as ClearIcon,
Add as AddIcon, Add as AddIcon,
Rocket as RocketIcon, Rocket as RocketIcon,
Webhook as WebhookIcon, Webhook as WebhookIcon,
Air as AirIcon, Air as AirIcon,
RocketLaunch as RocketLaunchIcon, RocketLaunch as RocketLaunchIcon,
Send as SendIcon, Send as SendIcon,
SmartToy as SmartToyIcon, SmartToy as SmartToyIcon,
Settings as SettingsIcon, Settings as SettingsIcon,
FilterAlt as FilterAltIcon, FilterAlt as FilterAltIcon,
CompareArrows as CompareArrowsIcon, CompareArrows as CompareArrowsIcon,
} from "@mui/icons-material"; } from "@mui/icons-material";
import { Context } from "../context/ContextApi.jsx"; import { Context } from "../context/ContextApi.jsx";
@@ -104,7 +104,7 @@ const useStyles = makeStyles({
}, },
}); });
// //
//const CacheView = (props) => { //const CacheView = (props) => {
const CacheView = memo((props) => { const CacheView = memo((props) => {
@@ -130,7 +130,7 @@ const CacheView = memo((props) => {
const [cursors, setCursors] = useState({ const [cursors, setCursors] = useState({
0: "", 0: "",
}) })
const [_, setUpdate] = useState(Math.random()) const [_, setUpdate] = useState(Math.random())
const [selectedRows, setSelectedRows] = useState([]); const [selectedRows, setSelectedRows] = useState([]);
// Direct category migration from ../components/Files.jsx // Direct category migration from ../components/Files.jsx
const [selectAllChecked, setSelectAllChecked] = React.useState(false) const [selectAllChecked, setSelectAllChecked] = React.useState(false)
@@ -170,7 +170,7 @@ const CacheView = memo((props) => {
"key": "workflow_id", "key": "workflow_id",
"value": "", "value": "",
}], }],
"icon": <AirIcon />, "icon": <AirIcon />,
"enabled": false, "enabled": false,
}, },
{ {
@@ -203,7 +203,7 @@ const CacheView = memo((props) => {
"key": "webhook_url", "key": "webhook_url",
"value": "", "value": "",
}], }],
"icon": <WebhookIcon />, "icon": <WebhookIcon />,
"enabled": false, "enabled": false,
}, },
@@ -237,7 +237,7 @@ const CacheView = memo((props) => {
const [categoryAutomations, setCategoryAutomations] = useState(defaultAutomation) const [categoryAutomations, setCategoryAutomations] = useState(defaultAutomation)
const [categoryConfig, setCategoryConfig] = useState(undefined) const [categoryConfig, setCategoryConfig] = useState(undefined)
const { themeMode, brandColor } = useContext(Context); const { themeMode, brandColor } = useContext(Context);
const theme = getTheme(themeMode, brandColor); const theme = getTheme(themeMode, brandColor);
const classes = useStyles(); const classes = useStyles();
@@ -312,9 +312,9 @@ const CacheView = memo((props) => {
useEffect(() => { useEffect(() => {
getWorkflows() getWorkflows()
getApps() getApps()
var chosenCategory = selectedCategory var chosenCategory = selectedCategory
const urlParams = new URLSearchParams(window.location.search) const urlParams = new URLSearchParams(window.location.search)
const categoryParam = urlParams.get("category") const categoryParam = urlParams.get("category")
if (categoryParam && categoryParam !== undefined && categoryParam !== "default" && categoryParam !== "") { if (categoryParam && categoryParam !== undefined && categoryParam !== "default" && categoryParam !== "") {
@@ -335,7 +335,7 @@ const CacheView = memo((props) => {
if (event.key === 'Escape'){ // not working for some reasons if (event.key === 'Escape'){ // not working for some reasons
console.log('escape pressed') console.log('escape pressed')
setRenderTextBox(false); setRenderTextBox(false);
} }
} }
@@ -359,7 +359,7 @@ const CacheView = memo((props) => {
if (page !== undefined && page !== null && page >= 0) { if (page !== undefined && page !== null && page >= 0) {
if (cursors[page-1] !== undefined && cursors[page-1] !== null && cursors[page-1] !== "") { 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 // Especially important during first load
if (index < 2 && (category === "default" || category === "" || category === undefined)) { if (index < 2 && (category === "default" || category === "" || category === undefined)) {
// If it exists and isn't blank/default, load it // If it exists and isn't blank/default, load it
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
const categoryParam = urlParams.get("category"); const categoryParam = urlParams.get("category");
if (categoryParam && categoryParam !== undefined && categoryParam !== "default" && categoryParam !== "") { if (categoryParam && categoryParam !== undefined && categoryParam !== "default" && categoryParam !== "") {
@@ -414,7 +414,7 @@ const CacheView = memo((props) => {
if (index === undefined || index === null) { if (index === undefined || index === null) {
index = 0 index = 0
} }
listOrgCache(orgId, categoryParam, index+1, amount, page) listOrgCache(orgId, categoryParam, index+1, amount, page)
} else { } else {
setSelectedCategory("default"); setSelectedCategory("default");
@@ -478,10 +478,10 @@ const CacheView = memo((props) => {
} else { } else {
setCategoryAutomations(defaultAutomation) setCategoryAutomations(defaultAutomation)
} }
} }
} else { } else {
//toast.warn("Failed to load keys. Please try again or contact support@shuffler if this persists.") //toast.warn("Failed to load keys. Please try again or contact support@shuffler if this persists.")
if (category !== undefined && category !== null && category !== "" && category !== "default") { if (category !== undefined && category !== null && category !== "" && category !== "default") {
toast.info(`No keys to load in category ${category}`) toast.info(`No keys to load in category ${category}`)
setSelectedCategory(category) setSelectedCategory(category)
@@ -495,6 +495,9 @@ const CacheView = memo((props) => {
const deleteEntry = (orgId, key, itemCategory, refreshList) => { const deleteEntry = (orgId, key, itemCategory, refreshList) => {
console.log(`Deleting entry for orgId: ${orgId}, key: ${key}, category: ${itemCategory}`);
const method = "POST" const method = "POST"
const url = `${globalUrl}/api/v1/orgs/${orgId}/delete_cache` const url = `${globalUrl}/api/v1/orgs/${orgId}/delete_cache`
var parsed = { var parsed = {
@@ -534,8 +537,8 @@ const CacheView = memo((props) => {
}; };
const editOrgCache = (orgId) => { const editOrgCache = (orgId) => {
var entry = { var entry = {
key: dataValue.key, key: dataValue.key,
value: value, value: value,
category: selectedCategory, category: selectedCategory,
} }
@@ -587,10 +590,10 @@ const CacheView = memo((props) => {
}; };
const addOrgCache = (orgId) => { const addOrgCache = (orgId) => {
const cache = { const cache = {
key: key, key: key,
value: value, value: value,
category: selectedCategory, category: selectedCategory,
} }
setCacheInput([cache]); setCacheInput([cache]);
@@ -709,7 +712,7 @@ const CacheView = memo((props) => {
fullWidth={true} fullWidth={true}
autoComplete="Key" autoComplete="Key"
placeholder="abc" placeholder="abc"
id="keyfield" id="keyfield"
margin="normal" margin="normal"
variant="outlined" variant="outlined"
value={editCache ? dataValue.key : key} value={editCache ? dataValue.key : key}
@@ -728,7 +731,7 @@ const CacheView = memo((props) => {
autoFixJson(value) autoFixJson(value)
}} }}
> >
<AutoFixNormalIcon /> <AutoFixNormalIcon />
</IconButton> </IconButton>
</Tooltip> </Tooltip>
</div> </div>
@@ -758,7 +761,7 @@ const CacheView = memo((props) => {
/> />
{editCache ? {editCache ?
<div> <div>
<Typography variant="body2" color="textSecondary" style={{ marginTop: 10, }}> <Typography variant="body2" color="textSecondary" style={{ marginTop: 10, }}>
Created: {timestamp(dataValue?.created)} 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) editFileConfig(id, [...new Set(selectedSubOrg)], selectedCategory)
} }
@@ -855,8 +858,8 @@ const CacheView = memo((props) => {
category: category === undefined || category === "" || category === "default" ? "" : category, category: category === undefined || category === "" || category === "default" ? "" : category,
} }
console.log("data: ", data); console.log("data: ", data);
const url = `${globalUrl}/api/v1/orgs/${orgId}/cache/config`; const url = `${globalUrl}/api/v1/orgs/${orgId}/cache/config`;
fetch(url, { fetch(url, {
@@ -989,7 +992,7 @@ const CacheView = memo((props) => {
const originalIcon = automation.icon const originalIcon = automation.icon
if (typeof automation.icon !== "string") { if (typeof automation.icon !== "string") {
automation.icon = ""; automation.icon = "";
} }
}) })
const url = `${globalUrl}/api/v2/datastore/automate` 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) { if (settings !== undefined && settings !== null && Object.keys(settings).length > 0) {
data["settings"] = settings data["settings"] = settings
} }
fetch(url, { fetch(url, {
@@ -1049,7 +1052,7 @@ const CacheView = memo((props) => {
} }
} }
const runSave = () => { const runSave = () => {
setUpdated(false) setUpdated(false)
const newAutomations = [...categoryAutomations] const newAutomations = [...categoryAutomations]
@@ -1062,11 +1065,11 @@ const CacheView = memo((props) => {
} }
return ( return (
<div key={index} style={{ <div key={index} style={{
marginBottom: 10, marginBottom: 10,
backgroundColor: hovered ? theme.palette.hoverColor : "transparent", backgroundColor: hovered ? theme.palette.hoverColor : "transparent",
paddingTop: 5, paddingTop: 5,
}} }}
onMouseEnter={() => setHovered(true)} onMouseEnter={() => setHovered(true)}
onMouseLeave={() => setHovered(false)} onMouseLeave={() => setHovered(false)}
> >
@@ -1085,15 +1088,15 @@ const CacheView = memo((props) => {
setUpdatedAutomation(updatedAutomation) setUpdatedAutomation(updatedAutomation)
setUpdated(true) setUpdated(true)
setUpdate(Math.random()) setUpdate(Math.random())
}} }}
/> />
</Tooltip> </Tooltip>
<div <div
style={{ style={{
display: "flex", display: "flex",
cursor: !automation?.disabled ? "pointer" : "not-allowed", cursor: !automation?.disabled ? "pointer" : "not-allowed",
width: "100%", width: "100%",
}} }}
disabled={automation?.disabled === true} disabled={automation?.disabled === true}
onClick={() => { 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, }} /> <img src={automation.icon} alt={automation.name} style={{ width: 20, height: 20, }} />
: :
automation.icon automation.icon
} }
<Typography variant="body1" style={{ <Typography variant="body1" style={{
color: automation?.disabled === true ? theme.palette.text.secondary : theme.palette.text.primary, color: automation?.disabled === true ? theme.palette.text.secondary : theme.palette.text.primary,
marginLeft: 10, marginLeft: 10,
}}> }}>
{automation.name} {automation.name}
</Typography> </Typography>
</div> </div>
{automation?.disabled !== true ? {automation?.disabled !== true ?
<Button <Button
style={{ style={{
borderRadius: theme.palette.borderRadius, borderRadius: theme.palette.borderRadius,
textTransform: 'none', textTransform: 'none',
color: updated ? theme.palette.primary.main : theme.palette.text.secondary, color: updated ? theme.palette.primary.main : theme.palette.text.secondary,
marginTop: -6, marginTop: -6,
position: "absolute", position: "absolute",
right: 25, right: 25,
}} }}
disabled={!updated} disabled={!updated}
onClick={(e) => { onClick={(e) => {
@@ -1187,7 +1190,7 @@ const CacheView = memo((props) => {
if (newValue.length > 0) { if (newValue.length > 0) {
updatedAutomation.enabled = true updatedAutomation.enabled = true
} else { } else {
updatedAutomation.enabled = false updatedAutomation.enabled = false
} }
updatedAutomation.options[optionIndex] = option updatedAutomation.options[optionIndex] = option
@@ -1241,8 +1244,8 @@ const CacheView = memo((props) => {
value={data} value={data}
> >
<Typography style={{ <Typography style={{
display: "flex", display: "flex",
marginTop: 5, marginTop: 5,
color: keyfound ? red : theme.palette.text.primary, color: keyfound ? red : theme.palette.text.primary,
}}> }}>
<div style={{marginRight: 10, }}> <div style={{marginRight: 10, }}>
@@ -1296,7 +1299,7 @@ const CacheView = memo((props) => {
/> />
) )
} else if (option?.key === "workflow_id") { } else if (option?.key === "workflow_id") {
return ( return (
<Autocomplete <Autocomplete
key={optionIndex} key={optionIndex}
@@ -1323,7 +1326,7 @@ const CacheView = memo((props) => {
if (newValue.length > 0) { if (newValue.length > 0) {
updatedAutomation.enabled = true updatedAutomation.enabled = true
} else { } else {
updatedAutomation.enabled = false updatedAutomation.enabled = false
} }
updatedAutomation.options[optionIndex] = option updatedAutomation.options[optionIndex] = option
@@ -1435,8 +1438,8 @@ const CacheView = memo((props) => {
fullWidth fullWidth
style={{ style={{
...theme.palette.textFieldStyle, ...theme.palette.textFieldStyle,
marginBottom: 20, marginBottom: 20,
marginTop: 10, marginTop: 10,
}} }}
InputProps={{ InputProps={{
style: { style: {
@@ -1448,9 +1451,9 @@ const CacheView = memo((props) => {
defaultValue={option.value} defaultValue={option.value}
onBlur={(e) => { onBlur={(e) => {
if (e.target.value === "") { if (e.target.value === "") {
updatedAutomation.enabled = false updatedAutomation.enabled = false
} else { } else {
updatedAutomation.enabled = true updatedAutomation.enabled = true
} }
updatedAutomation.options[optionIndex].value = e.target.value; updatedAutomation.options[optionIndex].value = e.target.value;
@@ -1468,7 +1471,7 @@ const CacheView = memo((props) => {
const setCategorySettingsField = (field, value) => { const setCategorySettingsField = (field, value) => {
// Check if categoryConfig.settings is set or not. Otherwise set it. // Check if categoryConfig.settings is set or not. Otherwise set it.
var categoryConfig2 = categoryConfig var categoryConfig2 = categoryConfig
if (categoryConfig === undefined || categoryConfig === null) { if (categoryConfig === undefined || categoryConfig === null) {
categoryConfig2 = {} categoryConfig2 = {}
} }
@@ -1481,16 +1484,16 @@ const CacheView = memo((props) => {
setCategoryConfig(categoryConfig2) setCategoryConfig(categoryConfig2)
saveAutomation( saveAutomation(
categoryAutomations, categoryAutomations,
categoryConfig2.settings, categoryConfig2.settings,
) )
} }
const columns: GridColDef<(typeof rows)[number]>[] = [ const columns: GridColDef<(typeof rows)[number]>[] = [
{ {
field: 'key', field: 'key',
headerName: 'Key', headerName: 'Key',
width: 200, width: 200,
filterable: true, filterable: true,
sortable: true, sortable: true,
}, },
@@ -1502,10 +1505,10 @@ const CacheView = memo((props) => {
renderCell: (props) => { renderCell: (props) => {
const data = props.row const data = props.row
if (data?.category?.toLowerCase() === "protected") { if (data?.category?.toLowerCase() === "protected") {
return ( return (
<Typography <Typography
variant="body2" variant="body2"
type="password" type="password"
style={{maxHeight: 200, overflow: "hidden", }} style={{maxHeight: 200, overflow: "hidden", }}
> >
@@ -1532,7 +1535,7 @@ const CacheView = memo((props) => {
backgroundColor: theme.palette.platformColor, backgroundColor: theme.palette.platformColor,
border: theme.palette.defaultBorder, border: theme.palette.defaultBorder,
padding: 5, padding: 5,
minWidth: 500, minWidth: 500,
maxHeight: 500, maxHeight: 500,
overflowY: "auto", overflowY: "auto",
}} }}
@@ -1605,16 +1608,16 @@ const CacheView = memo((props) => {
style={{ style={{
color: "white", color: "white",
backgroundColor: iconDetails?.iconBackgroundColor || theme.palette.primary.secondary, backgroundColor: iconDetails?.iconBackgroundColor || theme.palette.primary.secondary,
marginLeft: 15, marginLeft: 15,
height: 30, height: 30,
width: 30, width: 30,
cursor: data.category !== "" && data.category !== "default" ? "pointer" : "default", cursor: data.category !== "" && data.category !== "default" ? "pointer" : "default",
}} }}
variant="rounded" variant="rounded"
> >
{iconDetails?.originalIcon ? {iconDetails?.originalIcon ?
iconDetails?.originalIcon iconDetails?.originalIcon
: :
avatarLetter avatarLetter
} }
</Avatar> </Avatar>
@@ -1633,7 +1636,7 @@ const CacheView = memo((props) => {
renderCell: (props) => { renderCell: (props) => {
const data = props.row const data = props.row
return ( return (
<span style={{ display: "flex" }}> <span style={{ display: "flex" }}>
{data?.workflow_id === "" || data?.workflow_id === null || data?.workflow_id === undefined || data?.workflow_id?.length !== 36 ? {data?.workflow_id === "" || data?.workflow_id === null || data?.workflow_id === undefined || data?.workflow_id?.length !== 36 ?
<IconButton <IconButton
@@ -1643,7 +1646,7 @@ const CacheView = memo((props) => {
<OpenInNewIcon <OpenInNewIcon
style={{ style={{
color: color:
data.workflow_id?.length === 36 data.workflow_id?.length === 36
? "#FF8444" ? "#FF8444"
: "grey", : "grey",
}} }}
@@ -1697,7 +1700,7 @@ const CacheView = memo((props) => {
onClick={(e) => { onClick={(e) => {
e.preventDefault() e.preventDefault()
e.stopPropagation() e.stopPropagation()
// Try to make the value JSON indented // Try to make the value JSON indented
const valid = validateJson(data.value) const valid = validateJson(data.value)
var newvalue = data.value var newvalue = data.value
if (valid.valid) { if (valid.valid) {
@@ -1867,23 +1870,23 @@ const CacheView = memo((props) => {
const isAutomating = categoryAutomations?.find((automation) => automation.enabled) !== undefined const isAutomating = categoryAutomations?.find((automation) => automation.enabled) !== undefined
return ( return (
<div style={{ <div style={{
minHeight: 2000, minHeight: 2000,
height: isSelectedDataStore?"100%":null, height: isSelectedDataStore?"100%":null,
paddingBottom: isSelectedDataStore?null:250, paddingBottom: isSelectedDataStore?null:250,
boxSizing: "border-box", boxSizing: "border-box",
width: isSelectedDataStore? "100%" :null, width: isSelectedDataStore? "100%" :null,
transition: "width 0.3s ease", transition: "width 0.3s ease",
padding:isSelectedDataStore?"27px 10px 27px 27px":null, padding:isSelectedDataStore?"27px 10px 27px 27px":null,
color: isSelectedDataStore?'#ffffff':null, color: isSelectedDataStore?'#ffffff':null,
backgroundColor: isSelectedDataStore? theme.palette.platformColor :null, backgroundColor: isSelectedDataStore? theme.palette.platformColor :null,
borderTopRightRadius: isSelectedDataStore?'8px':null, borderTopRightRadius: isSelectedDataStore?'8px':null,
borderBottomRightRadius: isSelectedDataStore?'8px':null, borderBottomRightRadius: isSelectedDataStore?'8px':null,
borderLeft: theme.palette.defaultBorder borderLeft: theme.palette.defaultBorder
}}> }}>
{modalView} {modalView}
<CollectIngestModal <CollectIngestModal
globalUrl={globalUrl} globalUrl={globalUrl}
open={showCollectIngestMenu} open={showCollectIngestMenu}
setOpen={setShowCollectIngestMenu} setOpen={setShowCollectIngestMenu}
@@ -1906,14 +1909,14 @@ const CacheView = memo((props) => {
Shuffle Datastore Shuffle Datastore
</Typography> </Typography>
{userdata?.support === true ? {userdata?.support === true ?
<Tooltip title={"Collect (support only)"} style={{}} aria-label={""}> <Tooltip title={"Collect (support only)"} style={{}} aria-label={""}>
<span style={{position: "absolute", right: 0, }}> <span style={{position: "absolute", right: 0, }}>
<Button <Button
style={{ style={{
whiteSpace: "nowrap", whiteSpace: "nowrap",
height: 35, height: 35,
textTransform: 'none', textTransform: 'none',
//border: isAutomating ? `1px solid ${theme.palette.primary.main}` : null, //border: isAutomating ? `1px solid ${theme.palette.primary.main}` : null,
}} }}
@@ -1924,10 +1927,10 @@ const CacheView = memo((props) => {
}} }}
> >
<FilterAltIcon style={{marginRight: 10, }}/> <FilterAltIcon style={{marginRight: 10, }}/>
Collect (beta) Collect (beta)
</Button> </Button>
</span> </span>
</Tooltip> </Tooltip>
: null} : null}
</div> </div>
@@ -1957,14 +1960,14 @@ const CacheView = memo((props) => {
style={{textTransform: isSelectedDataStore ? 'capitalize':null, width : isSelectedDataStore ? 120 : null, height:isSelectedDataStore?40:null}} style={{textTransform: isSelectedDataStore ? 'capitalize':null, width : isSelectedDataStore ? 120 : null, height:isSelectedDataStore?40:null}}
variant="contained" variant="contained"
color="primary" color="primary"
onClick={() =>{ onClick={() =>{
setEditCache(false) setEditCache(false)
setModalOpen(true) setModalOpen(true)
setValue("") setValue("")
}} }}
> >
Add Key Add Key
</Button> </Button>
<Button <Button
style={{ marginRight: 15, width:isSelectedDataStore ? 81:null, height:isSelectedDataStore?40:null, }} style={{ marginRight: 15, width:isSelectedDataStore ? 81:null, height:isSelectedDataStore?40:null, }}
@@ -2038,9 +2041,9 @@ const CacheView = memo((props) => {
<MenuItem <MenuItem
key={index} key={index}
value={data} value={data}
style={{ style={{
color: theme.palette.textFieldStyle.color, color: theme.palette.textFieldStyle.color,
display: "flex", display: "flex",
borderBottom: theme.palette.defaultBorder, borderBottom: theme.palette.defaultBorder,
}} }}
> >
@@ -2061,17 +2064,17 @@ const CacheView = memo((props) => {
) : null} ) : null}
<div style={{display: "inline-flex", position:"relative", top: 8}}> <div style={{display: "inline-flex", position:"relative", top: 8}}>
{renderTextBox ? {renderTextBox ?
<Tooltip title={"Close"} style={{}} aria-label={""}> <Tooltip title={"Close"} style={{}} aria-label={""}>
<Button <Button
style={{ style={{
height: 35, height: 35,
borderRadius: 4, borderRadius: 4,
textTransform: 'none', textTransform: 'none',
fontSize: 16, fontSize: 16,
borderRadius: "0px 5px 5px 0px", borderRadius: "0px 5px 5px 0px",
marginRight: 10, marginRight: 10,
}} }}
color="secondary" color="secondary"
variant="contained" variant="contained"
@@ -2086,12 +2089,12 @@ const CacheView = memo((props) => {
: :
<Tooltip title={"Add or find category"} style={{}} aria-label={""}> <Tooltip title={"Add or find category"} style={{}} aria-label={""}>
<Button <Button
style={{ style={{
whiteSpace: "nowrap", whiteSpace: "nowrap",
width: datastoreCategories !== undefined && datastoreCategories !== null && datastoreCategories.length > 1 ? 50 : 169, width: datastoreCategories !== undefined && datastoreCategories !== null && datastoreCategories.length > 1 ? 50 : 169,
height: 35, height: 35,
textTransform: 'none', textTransform: 'none',
fontSize: 16, fontSize: 16,
borderRadius: "0px 5px 5px 0px", borderRadius: "0px 5px 5px 0px",
}} }}
@@ -2104,7 +2107,7 @@ const CacheView = memo((props) => {
<AddIcon/> <AddIcon/>
{datastoreCategories !== undefined && datastoreCategories !== null && datastoreCategories.length > 1 ? "" : "Category"} {datastoreCategories !== undefined && datastoreCategories !== null && datastoreCategories.length > 1 ? "" : "Category"}
</Button> </Button>
</Tooltip> </Tooltip>
} }
{renderTextBox && <TextField {renderTextBox && <TextField
@@ -2115,11 +2118,11 @@ const CacheView = memo((props) => {
const foundValue = event.target.value.trim(); const foundValue = event.target.value.trim();
if(event.key === 'Enter' && foundValue?.length > 0){ if(event.key === 'Enter' && foundValue?.length > 0){
setUpdateToThisCategory(event.target.value) setUpdateToThisCategory(event.target.value)
listOrgCache(orgId, event.target.value, 0, pageSize, 0) listOrgCache(orgId, event.target.value, 0, pageSize, 0)
setPage(0) setPage(0)
} }
}} }}
style={{ style={{
height: 35, height: 35,
@@ -2151,10 +2154,10 @@ const CacheView = memo((props) => {
<Tooltip title={"Automate current Category"} style={{}} aria-label={""}> <Tooltip title={"Automate current Category"} style={{}} aria-label={""}>
<span> <span>
<Button <Button
style={{ style={{
whiteSpace: "nowrap", whiteSpace: "nowrap",
height: 35, height: 35,
textTransform: 'none', textTransform: 'none',
border: isAutomating ? `1px solid ${theme.palette.primary.main}` : null, border: isAutomating ? `1px solid ${theme.palette.primary.main}` : null,
}} }}
@@ -2162,27 +2165,27 @@ const CacheView = memo((props) => {
color="secondary" color="secondary"
disabled={selectedCategory === undefined || selectedCategory === "" || selectedCategory === "default"} disabled={selectedCategory === undefined || selectedCategory === "" || selectedCategory === "default"}
onClick={() => { onClick={() => {
// Set up: // Set up:
// Workflow triggers for when a key is added/edited/deleted. // Workflow triggers for when a key is added/edited/deleted.
// Automatic ingest mechanisms: // Automatic ingest mechanisms:
// - IOCs (monitor URLs) // - IOCs (monitor URLs)
// - Singul ingest // - Singul ingest
setShowAutomationMenu(true) setShowAutomationMenu(true)
}} }}
> >
{isAutomating ? <RocketLaunchIcon style={{color: theme.palette.primary.main, marginRight: 10 }}/> : <RocketIcon style={{marginRight: 10, color: theme.palette.secondary.main, }} />} {isAutomating ? <RocketLaunchIcon style={{color: theme.palette.primary.main, marginRight: 10 }}/> : <RocketIcon style={{marginRight: 10, color: theme.palette.secondary.main, }} />}
Automate (beta) Automate (beta)
</Button> </Button>
</span> </span>
</Tooltip> </Tooltip>
<Tooltip title={"Other category settings"} style={{}} aria-label={""}> <Tooltip title={"Other category settings"} style={{}} aria-label={""}>
<Button <Button
style={{ style={{
whiteSpace: "nowrap", whiteSpace: "nowrap",
height: 35, height: 35,
textTransform: 'none', textTransform: 'none',
marginLeft: 3, marginLeft: 3,
}} }}
variant="outlined" variant="outlined"
color="secondary" color="secondary"
@@ -2193,10 +2196,10 @@ const CacheView = memo((props) => {
> >
<SettingsIcon style={{color: theme.palette.secondary.main, }} /> <SettingsIcon style={{color: theme.palette.secondary.main, }} />
</Button> </Button>
</Tooltip> </Tooltip>
</ButtonGroup> </ButtonGroup>
{showAutomationMenu || showSettingsMenu ? {showAutomationMenu || showSettingsMenu ?
<Dialog <Dialog
open={showAutomationMenu || showSettingsMenu} open={showAutomationMenu || showSettingsMenu}
onClose={() => { onClose={() => {
@@ -2227,7 +2230,7 @@ const CacheView = memo((props) => {
<DialogTitle> <DialogTitle>
</DialogTitle> </DialogTitle>
<DialogContent style={{ paddingLeft: "30px", paddingRight: '30px', backgroundColor: theme.palette.DialogStyle.backgroundColor, }}> <DialogContent style={{ paddingLeft: "30px", paddingRight: '30px', backgroundColor: theme.palette.DialogStyle.backgroundColor, }}>
{showSettingsMenu === true ? {showSettingsMenu === true ?
<div> <div>
<Typography variant="h6" style={{ color: theme.palette.text.primary, marginBottom: 20 }}> <Typography variant="h6" style={{ color: theme.palette.text.primary, marginBottom: 20 }}>
<SettingsIcon style={{ verticalAlign: "middle", marginRight: 10 }} /> <SettingsIcon style={{ verticalAlign: "middle", marginRight: 10 }} />
@@ -2237,7 +2240,7 @@ const CacheView = memo((props) => {
<div style={{display: "flex", marginTop: 50, }}> <div style={{display: "flex", marginTop: 50, }}>
<div style={{flex: 2, }}> <div style={{flex: 2, }}>
<Typography variant="body1" style={{ color: theme.palette.text.primary, }}> <Typography variant="body1" style={{ color: theme.palette.text.primary, }}>
Timeout Timeout
</Typography> </Typography>
<Typography variant="body2" style={{ color: theme.palette.text.secondary, marginBottom: 20 }}> <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. 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.") toast.info("Timeout must be a number. Setting to 0.")
} else { } else {
timeoutValue = parseInt(e.target.value, 10) 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.") 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={{display: "flex", marginTop: 25, }}>
<div style={{flex: 3, }}> <div style={{flex: 3, }}>
<Typography variant="body1" style={{ color: theme.palette.text.primary, }}> <Typography variant="body1" style={{ color: theme.palette.text.primary, }}>
{categoryConfig?.settings?.public === true ? "" : "NOT"} Public {categoryConfig?.settings?.public === true ? "" : "NOT"} Public
</Typography> </Typography>
<Typography variant="body2" style={{ color: theme.palette.text.secondary, marginBottom: 20 }}> <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 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 When
</Typography> </Typography>
<Typography variant="body1" style={{ color: theme.palette.text.primary, marginBottom: 20 }}> <Typography variant="body1" style={{ color: theme.palette.text.primary, marginBottom: 20 }}>
A key is edited A key is edited
</Typography> </Typography>
<Typography variant="body2" style={{ color: theme.palette.text.secondary, marginTop: 100, marginBottom: 20 }}> <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) => { {categoryAutomations.map((automation, index) => {
return ( return (
<AutomationOptions <AutomationOptions
key={index} key={index}
automation={automation} automation={automation}
index={index} index={index}
/> />
) )
})} })}
</div> </div>
} }
</DialogContent> </DialogContent>
</Dialog> </Dialog>
: null} : null}
@@ -2374,17 +2377,17 @@ const CacheView = memo((props) => {
setSelectedRows(newSelection); setSelectedRows(newSelection);
}} }}
keepNonExistentRowsSelected={false} keepNonExistentRowsSelected={false}
getRowId={(row) => `${row?.key}_${row?.category}`} getRowId={(row) => row?.category ? `${row.key}_${row.category}` : row.key}
autoHeight={true} autoHeight={true}
sx={{ sx={{
marginTop: 1, marginTop: 1,
height: listCache.length*52+500, height: listCache.length*52+500,
width: "100%", width: "100%",
'.MuiTablePagination-selectLabel, .MuiTablePagination-select, .MuiTablePagination-selectIcon': { '.MuiTablePagination-selectLabel, .MuiTablePagination-select, .MuiTablePagination-selectIcon': {
display: 'none', display: 'none',
}, },
marginBottom: 20, marginBottom: 20,
}} }}
loading={cachedLoaded === false} loading={cachedLoaded === false}
@@ -2404,7 +2407,7 @@ const CacheView = memo((props) => {
setCursors({ setCursors({
0: "", 0: "",
}) })
}} }}
@@ -2441,20 +2444,20 @@ const CacheView = memo((props) => {
}} }}
> >
<div style={{ <div style={{
width: 1200, width: 1200,
margin: "auto", margin: "auto",
padding: 10, padding: 10,
backgroundColor: theme.palette.platformColor, backgroundColor: theme.palette.platformColor,
borderRadius: 4, borderRadius: 4,
border: "1px solid rgba(255, 255, 255, 0.5)", border: "1px solid rgba(255, 255, 255, 0.5)",
display: "flex", display: "flex",
textAlign: "center", textAlign: "center",
}}> }}>
<Typography variant="body2" style={{ color: theme.palette.text.primary, marginRight: 50, marginTop: 6, marginLeft: 350, }}> <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} {page * pageSize + 1} - {Math.min((page + 1) * pageSize, totalAmount)} of {totalAmount}
</Typography> </Typography>
<Pagination <Pagination
count={Number.parseInt(totalAmount/pageSize)} count={Number.parseInt(totalAmount/pageSize)}
page={page+1} page={page+1}
@@ -2462,7 +2465,7 @@ const CacheView = memo((props) => {
var disabled = false var disabled = false
if (item?.type === "page") { if (item?.type === "page") {
if (cursors[item.page-1] === undefined) { if (cursors[item.page-1] === undefined) {
disabled = true disabled = true
} }
} }
if (item?.type === "previous") { if (item?.type === "previous") {
@@ -2470,7 +2473,7 @@ const CacheView = memo((props) => {
} }
if (cachedLoaded === false) { if (cachedLoaded === false) {
disabled = true disabled = true
} }
return ( return (
@@ -2530,10 +2533,10 @@ const CacheView = memo((props) => {
variant={"outlined"} variant={"outlined"}
color="secondary" color="secondary"
> >
<DeleteOutlineIcon <DeleteOutlineIcon
style={{ style={{
color: red, color: red,
marginRight: 10, marginRight: 10,
}} }}
/> />
Delete {selectedRows.length} Key{ selectedRows.length > 1 ? "s" : "" } Delete {selectedRows.length} Key{ selectedRows.length > 1 ? "s" : "" }
+3 -4
View File
@@ -10,7 +10,7 @@ require (
github.com/docker/docker v28.3.3+incompatible github.com/docker/docker v28.3.3+incompatible
github.com/docker/go-connections v0.5.0 github.com/docker/go-connections v0.5.0
github.com/satori/go.uuid v1.2.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/api v0.33.1
k8s.io/apimachinery 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/envoyproxy/protoc-gen-validate v1.2.1 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/frikky/kin-openapi v0.42.0 // 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/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/ghodss/yaml v1.0.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // 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/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.1 // 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/liquid v1.7.0 // indirect
github.com/osteele/tuesday v1.0.3 // indirect github.com/osteele/tuesday v1.0.3 // indirect
github.com/patrickmn/go-cache v2.1.0+incompatible // 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/rest v2.6.9+incompatible // indirect
github.com/sendgrid/sendgrid-go v3.16.1+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/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/skeema/knownhosts v1.3.1 // indirect
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/pflag v1.0.5 // indirect
+18 -33
View File
@@ -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/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 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= 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 h1:TqhNAT4zKbTdLa62d2HDBFdvgSbIGB3eJE8HqhgiL9I=
github.com/bradfitz/gomemcache v0.0.0-20250403215159-8d39553ac7cf/go.mod h1:r5xuitiExdLAJ09PR7vBVENGvp4ZuTBeWTGtxuX3K+c= 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= 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/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 h1:d5Z6vnuQ6RnCCPIxZaDL+TH2ODLxT8abytOt+Zh+Kd0=
github.com/frikky/kin-openapi v0.42.0/go.mod h1:ev9OZAw7Bv5p0w93j91++6a1ElPzGcCofst+kmrWsj4= 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.24 h1:1bNg96gm82yLbRlDS0haQH/96X3GlCAEuTCSasXIJZE=
github.com/frikky/schemaless v0.0.20/go.mod h1:m9s+6gALXhA5ZERCrJw+jI2rRtTPNa8mkl4vav9sxnY= 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 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= 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.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.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.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.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 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= 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/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 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= 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 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= 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/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 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= 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 h1:VsbPSchE5D5S5scylAIvERET4dnCxsO6IDri2oSJ5Dk=
github.com/osteele/liquid v1.7.0/go.mod h1:xU0Z2dn2hOQIEFEWNmeltOmCtfhtoW/2fCyiNQeNG+U= github.com/osteele/liquid v1.7.0/go.mod h1:xU0Z2dn2hOQIEFEWNmeltOmCtfhtoW/2fCyiNQeNG+U=
github.com/osteele/tuesday v1.0.3 h1:SrCmo6sWwSgnvs1bivmXLvD7Ko9+aJvvkmDjB5G4FTU= 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/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 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= 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/opensearch-go/v4 v4.0.0 h1:Mh85CD1MwOgXiFFYlzS1llnvdqL3CztRdR1ZT/SLIjU=
github.com/shuffle/shuffle-shared v0.9.30/go.mod h1:PhDEizuz4SmJaSmy0+yrFWwD1mXVUsy8/knKlrqF1qw= 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.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= 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.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.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.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.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 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 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= 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= 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-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-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-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.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.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 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= 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-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-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.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.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= 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-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.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.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 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= 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.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.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
+34 -7
View File
@@ -115,8 +115,8 @@ var memcached = os.Getenv("SHUFFLE_MEMCACHED")
var queuePerMinute = os.Getenv("SHUFFLE_EXECUTION_PER_MINIUTE") var queuePerMinute = os.Getenv("SHUFFLE_EXECUTION_PER_MINIUTE")
var queuePerMinuteInt int var queuePerMinuteInt int
// For it to download from Sigma? // Used to download file categories. Not required since 2.1.1
var pipelineApikey = os.Getenv("SHUFFLE_PIPELINE_AUTH") var pipelineApikey = ""
var pipelineUrl = os.Getenv("SHUFFLE_PIPELINE_URL") var pipelineUrl = os.Getenv("SHUFFLE_PIPELINE_URL")
var executionIds = []string{} var executionIds = []string{}
@@ -2182,6 +2182,18 @@ func main() {
return 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 // Block until a signal is received
if shuffle.IsRunningInCluster() { if shuffle.IsRunningInCluster() {
log.Printf("[INFO] Running inside k8s cluster") log.Printf("[INFO] Running inside k8s cluster")
@@ -3003,6 +3015,7 @@ func handlePipeline(incRequest shuffle.ExecutionRequest) error {
} }
func deployTenzirNode() error { func deployTenzirNode() error {
// Disabled all pipeline features
if os.Getenv("SHUFFLE_SKIP_PIPELINES") == "false" || os.Getenv("SHUFFLE_PIPELINE_ENABLED") == "true" { 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") // return errors.New("Pipelines are disabled by user with SHUFFLE_SKIP_PIPELINES")
//log.Printf("[INFO] Pipelines are enabled by user") //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") 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" { if isKubernetes == "true" {
return errors.New("Kubernetes not implemented for Tenzir node") return errors.New("Tenzir not implemented for k8s")
} }
err := checkTenzirNode() err := checkTenzirNode()
@@ -3217,12 +3235,21 @@ func createAndStartTenzirNode(ctx context.Context, containerName, imageName stri
hostConfig.Mounts = []mount.Mount{} 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{ networkingConfig := &network.NetworkingConfig{
EndpointsConfig: map[string]*network.EndpointSettings{ EndpointsConfig: map[string]*network.EndpointSettings{
"tenzir-network": { "tenzir-network": {
IPAMConfig: &network.EndpointIPAMConfig{ IPAMConfig: nil,
IPv4Address: "192.168.102.100", 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") 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") _, err = createPipeline(command, "default-syslog-tcp-514")
if err != nil { if err != nil {
log.Printf("[ERROR] Failed to create tcp syslog pipeline: %s", err) log.Printf("[ERROR] Failed to create tcp syslog pipeline: %s", err)