Fixed issue with loss of data when swapping actions - now copying!
This commit is contained in:
@@ -681,7 +681,12 @@ class AppBase:
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
raise e
|
raise json.dumps({
|
||||||
|
"success": False,
|
||||||
|
"reason": "You may be running an old version of this action. Please delete and remake the node.",
|
||||||
|
"exception": f"TypeError: {e}",
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
except:
|
except:
|
||||||
e = ""
|
e = ""
|
||||||
@@ -2389,7 +2394,11 @@ class AppBase:
|
|||||||
for parameter in action["parameters"]:
|
for parameter in action["parameters"]:
|
||||||
check, value, is_loop = parse_params(action, fullexecution, parameter, self)
|
check, value, is_loop = parse_params(action, fullexecution, parameter, self)
|
||||||
if check:
|
if check:
|
||||||
raise "Value check error: %s" % Exception(check)
|
raise json.dumps({
|
||||||
|
"success": False,
|
||||||
|
"reason": "Parameter {parameter} has an issue",
|
||||||
|
"exception": f"Value Check Error: {check}",
|
||||||
|
})
|
||||||
|
|
||||||
# Custom format for ${name[0,1,2,...]}$
|
# Custom format for ${name[0,1,2,...]}$
|
||||||
#submatch = "([${]{2}([0-9a-zA-Z_-]+)(\[.*\])[}$]{2})"
|
#submatch = "([${]{2}([0-9a-zA-Z_-]+)(\[.*\])[}$]{2})"
|
||||||
@@ -2726,8 +2735,11 @@ class AppBase:
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
raise e
|
raise json.dumps({
|
||||||
#break
|
"success": False,
|
||||||
|
"reason": "You may be running an old version of this action. Please delete and remake the node.",
|
||||||
|
"exception": f"TypeError: {e}",
|
||||||
|
})
|
||||||
|
|
||||||
# Forcing async wait in case of old apps that use async
|
# Forcing async wait in case of old apps that use async
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ docker push ghcr.io/frikky/$NAME:$VERSION
|
|||||||
docker push ghcr.io/frikky/$NAME:nightly
|
docker push ghcr.io/frikky/$NAME:nightly
|
||||||
docker push ghcr.io/frikky/$NAME:latest
|
docker push ghcr.io/frikky/$NAME:latest
|
||||||
|
|
||||||
#### BLACKARCH ###
|
#### KALI ###
|
||||||
NAME=shuffle-app_sdk_kali
|
NAME=shuffle-app_sdk_kali
|
||||||
docker build . -f Dockerfile_kali -t frikky/shuffle:app_sdk_kali -t frikky/$NAME:$VERSION -t docker.pkg.github.com/frikky/shuffle/$NAME:$VERSION -t ghcr.io/frikky/$NAME:$VERSION
|
docker build . -f Dockerfile_kali -t frikky/shuffle:app_sdk_kali -t frikky/$NAME:$VERSION -t docker.pkg.github.com/frikky/shuffle/$NAME:$VERSION -t ghcr.io/frikky/$NAME:$VERSION
|
||||||
|
|
||||||
@@ -33,4 +33,3 @@ docker build . -f Dockerfile_blackarch -t frikky/shuffle:app_sdk_blackarch -t fr
|
|||||||
docker push frikky/shuffle:app_sdk_blackarch
|
docker push frikky/shuffle:app_sdk_blackarch
|
||||||
docker push ghcr.io/frikky/$NAME:$VERSION
|
docker push ghcr.io/frikky/$NAME:$VERSION
|
||||||
docker push ghcr.io/frikky/$NAME:nightly
|
docker push ghcr.io/frikky/$NAME:nightly
|
||||||
|
|
||||||
|
|||||||
@@ -5810,8 +5810,10 @@ func initHandlers() {
|
|||||||
|
|
||||||
// Triggers
|
// Triggers
|
||||||
r.HandleFunc("/api/v1/hooks/new", shuffle.HandleNewHook).Methods("POST", "OPTIONS")
|
r.HandleFunc("/api/v1/hooks/new", shuffle.HandleNewHook).Methods("POST", "OPTIONS")
|
||||||
|
r.HandleFunc("/api/v1/hooks", shuffle.HandleNewHook).Methods("POST", "OPTIONS")
|
||||||
r.HandleFunc("/api/v1/hooks/{key}", handleWebhookCallback).Methods("POST", "GET", "PATCH", "PUT", "DELETE", "OPTIONS")
|
r.HandleFunc("/api/v1/hooks/{key}", handleWebhookCallback).Methods("POST", "GET", "PATCH", "PUT", "DELETE", "OPTIONS")
|
||||||
r.HandleFunc("/api/v1/hooks/{key}/delete", shuffle.HandleDeleteHook).Methods("DELETE", "OPTIONS")
|
r.HandleFunc("/api/v1/hooks/{key}/delete", shuffle.HandleDeleteHook).Methods("DELETE", "OPTIONS")
|
||||||
|
r.HandleFunc("/api/v1/hooks/{key}", shuffle.HandleDeleteHook).Methods("DELETE", "OPTIONS")
|
||||||
|
|
||||||
// OpenAPI configuration
|
// OpenAPI configuration
|
||||||
r.HandleFunc("/api/v1/verify_swagger", verifySwagger).Methods("POST", "OPTIONS")
|
r.HandleFunc("/api/v1/verify_swagger", verifySwagger).Methods("POST", "OPTIONS")
|
||||||
|
|||||||
@@ -1265,6 +1265,7 @@ const ParsedAction = (props) => {
|
|||||||
|
|
||||||
//<TextareaAutosize
|
//<TextareaAutosize
|
||||||
// <CodeMirror
|
// <CodeMirror
|
||||||
|
//fullWidth
|
||||||
var datafield = (
|
var datafield = (
|
||||||
<TextField
|
<TextField
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
@@ -1321,7 +1322,6 @@ const ParsedAction = (props) => {
|
|||||||
</InputAdornment>
|
</InputAdornment>
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
fullWidth
|
|
||||||
multiline={multiline}
|
multiline={multiline}
|
||||||
helperText={returnHelperText(data.name, data.value)}
|
helperText={returnHelperText(data.name, data.value)}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
|||||||
@@ -2568,6 +2568,7 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
// Takes an action as input, then runs through and updates the relevant fields
|
// Takes an action as input, then runs through and updates the relevant fields
|
||||||
// based on previous actions'
|
// based on previous actions'
|
||||||
// Uses lots of synonyms
|
// Uses lots of synonyms
|
||||||
|
// autocomplete
|
||||||
const RunAutocompleter = (dstdata) => {
|
const RunAutocompleter = (dstdata) => {
|
||||||
// **PS: The right action should already be set here**
|
// **PS: The right action should already be set here**
|
||||||
// 1. Check execution argument
|
// 1. Check execution argument
|
||||||
@@ -5292,15 +5293,34 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Does this one find the wrong one?
|
// Does this one find the wrong one?
|
||||||
var newSelectedAction = selectedAction;
|
var newSelectedAction = JSON.parse(JSON.stringify(selectedAction))
|
||||||
newSelectedAction.name = newaction.name;
|
newSelectedAction.name = newaction.name;
|
||||||
newSelectedAction.parameters = JSON.parse(
|
newSelectedAction.parameters = JSON.parse(JSON.stringify(newaction.parameters))
|
||||||
JSON.stringify(newaction.parameters)
|
|
||||||
);
|
|
||||||
newSelectedAction.errors = [];
|
newSelectedAction.errors = [];
|
||||||
newSelectedAction.isValid = true;
|
newSelectedAction.isValid = true;
|
||||||
newSelectedAction.is_valid = true;
|
newSelectedAction.is_valid = true;
|
||||||
|
|
||||||
|
// Simmple action swap autocompleter
|
||||||
|
if (selectedAction.parameters !== undefined && newSelectedAction.parameters !== undefined && selectedAction.id === newSelectedAction.id) {
|
||||||
|
//console.log("OLD: ", selectedAction, "NEW: ", newSelectedAction)
|
||||||
|
for (var paramkey in selectedAction.parameters) {
|
||||||
|
const param = selectedAction.parameters[paramkey];
|
||||||
|
if (param.value === null || param.value === undefined || param.value.length === 0) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
const newParamIndex = newSelectedAction.parameters.findIndex(paramdata => paramdata.name === param.name)
|
||||||
|
console.log("INDEX: ", newParamIndex)
|
||||||
|
if (newParamIndex < 0) {
|
||||||
|
console.log("NOT FOUND: ", param)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("FOUND: ", param)
|
||||||
|
newSelectedAction.parameters[newParamIndex].value = param.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (newSelectedAction.app_name === "Shuffle Tools") {
|
if (newSelectedAction.app_name === "Shuffle Tools") {
|
||||||
const iconInfo = GetIconInfo(newSelectedAction);
|
const iconInfo = GetIconInfo(newSelectedAction);
|
||||||
console.log("ICONINFO: ", iconInfo);
|
console.log("ICONINFO: ", iconInfo);
|
||||||
@@ -5327,6 +5347,7 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Takes an action as input, then runs through and updates the relevant fields
|
// Takes an action as input, then runs through and updates the relevant fields
|
||||||
// based on previous actions'
|
// based on previous actions'
|
||||||
newSelectedAction = RunAutocompleter(newSelectedAction);
|
newSelectedAction = RunAutocompleter(newSelectedAction);
|
||||||
@@ -9253,7 +9274,7 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
workflow.triggers[selectedTriggerIndex].parameters = [];
|
workflow.triggers[selectedTriggerIndex].parameters = [];
|
||||||
workflow.triggers[selectedTriggerIndex].parameters[0] = {
|
workflow.triggers[selectedTriggerIndex].parameters[0] = {
|
||||||
name: "cron",
|
name: "cron",
|
||||||
value: isCloud ? "*/15 * * * *" : "120",
|
value: isCloud ? "*/25 * * * *" : "60",
|
||||||
};
|
};
|
||||||
workflow.triggers[selectedTriggerIndex].parameters[1] = {
|
workflow.triggers[selectedTriggerIndex].parameters[1] = {
|
||||||
name: "execution_argument",
|
name: "execution_argument",
|
||||||
@@ -9327,12 +9348,12 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
if (e.target.value === "cloud") {
|
if (e.target.value === "cloud") {
|
||||||
console.log("Set cloud config");
|
console.log("Set cloud config");
|
||||||
workflow.triggers[selectedTriggerIndex].parameters[0].value =
|
workflow.triggers[selectedTriggerIndex].parameters[0].value =
|
||||||
"*/15 * * * *";
|
"*/25 * * * *";
|
||||||
} else {
|
} else {
|
||||||
console.log("Set cloud config");
|
console.log("Set cloud config");
|
||||||
|
|
||||||
workflow.triggers[selectedTriggerIndex].parameters[0].value =
|
workflow.triggers[selectedTriggerIndex].parameters[0].value =
|
||||||
"120";
|
"60";
|
||||||
}
|
}
|
||||||
|
|
||||||
setWorkflow(workflow);
|
setWorkflow(workflow);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
NAME=shuffle-orborus
|
NAME=shuffle-orborus
|
||||||
VERSION=0.9.45
|
VERSION=0.9.46
|
||||||
|
|
||||||
echo "Running docker build with $NAME:$VERSION"
|
echo "Running docker build with $NAME:$VERSION"
|
||||||
#docker rmi frikky/shuffle:$NAME --force
|
#docker rmi frikky/shuffle:$NAME --force
|
||||||
|
|||||||
Reference in New Issue
Block a user