Added automated authentication selection if it exists
This commit is contained in:
+13
-12
@@ -1447,7 +1447,7 @@ class AppBase:
|
|||||||
params = {}
|
params = {}
|
||||||
try:
|
try:
|
||||||
for item in action["authentication"]:
|
for item in action["authentication"]:
|
||||||
print("AUTH: ", key, value)
|
#print("AUTH: ", key, value)
|
||||||
params[item["key"]] = item["value"]
|
params[item["key"]] = item["value"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print("No authentication specified!")
|
print("No authentication specified!")
|
||||||
@@ -1469,11 +1469,11 @@ class AppBase:
|
|||||||
if "||" in parameter["value"]:
|
if "||" in parameter["value"]:
|
||||||
splitvalue = parameter["value"].split("||")
|
splitvalue = parameter["value"].split("||")
|
||||||
if len(splitvalue) > 1:
|
if len(splitvalue) > 1:
|
||||||
print(f'[INFO] Parsed split || options of actions["parameters"]["name"]')
|
#print(f'[INFO] Parsed split || options of actions["parameters"]["name"]')
|
||||||
action["parameters"][counter]["value"] = splitvalue[1]
|
action["parameters"][counter]["value"] = splitvalue[1]
|
||||||
|
|
||||||
except (IndexError, KeyError, TypeError) as e:
|
except (IndexError, KeyError, TypeError) as e:
|
||||||
print("Options err: {e}")
|
print("[WARNING] Options err: {e}")
|
||||||
|
|
||||||
# This part is purely for OpenAPI accessibility.
|
# This part is purely for OpenAPI accessibility.
|
||||||
# It replaces the data back into the main item
|
# It replaces the data back into the main item
|
||||||
@@ -1487,12 +1487,12 @@ class AppBase:
|
|||||||
if values != None:
|
if values != None:
|
||||||
added = 0
|
added = 0
|
||||||
for val in values:
|
for val in values:
|
||||||
print(f"VAL: {val}")
|
#print(f"VAL: {val}")
|
||||||
#parameter["value"].replace(val["key"], val["value"], -1)
|
#parameter["value"].replace(val["key"], val["value"], -1)
|
||||||
print(f'PARAM1: {action["parameters"][counter]["value"]}')
|
#print(f'PARAM1: {action["parameters"][counter]["value"]}')
|
||||||
action["parameters"][counter]["value"] = action["parameters"][counter]["value"].replace(val["key"], val["value"], 1)
|
action["parameters"][counter]["value"] = action["parameters"][counter]["value"].replace(val["key"], val["value"], 1)
|
||||||
#action["parameters"][counter]["value"].replace(r"${url}", r"$Find_URLs.valid.#.data", 1)
|
#action["parameters"][counter]["value"].replace(r"${url}", r"$Find_URLs.valid.#.data", 1)
|
||||||
print(f'PARAM2: {action["parameters"][counter]["value"]}')
|
#print(f'PARAM2: {action["parameters"][counter]["value"]}')
|
||||||
#newparams.append({
|
#newparams.append({
|
||||||
# "name": val["key"],
|
# "name": val["key"],
|
||||||
# "value": val["value"],
|
# "value": val["value"],
|
||||||
@@ -1503,7 +1503,8 @@ class AppBase:
|
|||||||
# },
|
# },
|
||||||
#})
|
#})
|
||||||
|
|
||||||
print(f'[INFO] Added param {val["key"]} for body with value {val["value"]} (using OpenAPI)')
|
#print(f'[INFO] Added param {val["key"]} for body with value {val["value"]} (using OpenAPI)')
|
||||||
|
print(f'[INFO] Added param {val["key"]} for body (using OpenAPI)')
|
||||||
added += 1
|
added += 1
|
||||||
|
|
||||||
#action["parameters"]["body"]
|
#action["parameters"]["body"]
|
||||||
@@ -1515,7 +1516,7 @@ class AppBase:
|
|||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
print(action["parameters"])
|
#print(action["parameters"])
|
||||||
for parameter in newparams:
|
for parameter in newparams:
|
||||||
action["parameters"].append(parameter)
|
action["parameters"].append(parameter)
|
||||||
|
|
||||||
@@ -1841,10 +1842,10 @@ class AppBase:
|
|||||||
#print(f"Error with subparam deletion of {subparam} in {multi_parameters} (2)")
|
#print(f"Error with subparam deletion of {subparam} in {multi_parameters} (2)")
|
||||||
pass
|
pass
|
||||||
|
|
||||||
print()
|
#print()
|
||||||
print(f"Param: {params}")
|
#print(f"Param: {params}")
|
||||||
print(f"Multiparams: {multi_parameters}")
|
#print(f"Multiparams: {multi_parameters}")
|
||||||
print()
|
#print()
|
||||||
|
|
||||||
if not multiexecution:
|
if not multiexecution:
|
||||||
#newparams.append({
|
#newparams.append({
|
||||||
|
|||||||
@@ -6103,6 +6103,11 @@ func handleAppHotloadRequest(resp http.ResponseWriter, request *http.Request) {
|
|||||||
|
|
||||||
log.Printf("[INFO] Starting app hotloading")
|
log.Printf("[INFO] Starting app hotloading")
|
||||||
|
|
||||||
|
cacheKey := fmt.Sprintf("workflowapps-sorted-100")
|
||||||
|
requestCache.Delete(cacheKey)
|
||||||
|
cacheKey = fmt.Sprintf("workflowapps-sorted-500")
|
||||||
|
requestCache.Delete(cacheKey)
|
||||||
|
|
||||||
// Just need to be logged in
|
// Just need to be logged in
|
||||||
// FIXME - should have some permissions?
|
// FIXME - should have some permissions?
|
||||||
user, err := handleApiAuthentication(resp, request)
|
user, err := handleApiAuthentication(resp, request)
|
||||||
@@ -6135,6 +6140,11 @@ func handleAppHotloadRequest(resp http.ResponseWriter, request *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cacheKey = fmt.Sprintf("workflowapps-sorted-100")
|
||||||
|
requestCache.Delete(cacheKey)
|
||||||
|
cacheKey = fmt.Sprintf("workflowapps-sorted-500")
|
||||||
|
requestCache.Delete(cacheKey)
|
||||||
|
|
||||||
resp.WriteHeader(200)
|
resp.WriteHeader(200)
|
||||||
resp.Write([]byte(fmt.Sprintf(`{"success": true}`)))
|
resp.Write([]byte(fmt.Sprintf(`{"success": true}`)))
|
||||||
}
|
}
|
||||||
@@ -6737,7 +6747,7 @@ func iterateAppGithubFolders(fs billy.Filesystem, dir []os.FileInfo, extra strin
|
|||||||
|
|
||||||
if len(removeApps) > 0 {
|
if len(removeApps) > 0 {
|
||||||
for _, item := range removeApps {
|
for _, item := range removeApps {
|
||||||
log.Printf("[WARNING] Removing duplicate: %s", item)
|
log.Printf("[WARNING] Removing duplicate app: %s", item)
|
||||||
err = DeleteKey(ctx, "workflowapp", item)
|
err = DeleteKey(ctx, "workflowapp", item)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[ERROR] Failed deleting duplicate %s: %s", item, err)
|
log.Printf("[ERROR] Failed deleting duplicate %s: %s", item, err)
|
||||||
@@ -6758,15 +6768,17 @@ func iterateAppGithubFolders(fs billy.Filesystem, dir []os.FileInfo, extra strin
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
err = increaseStatisticsField(ctx, "total_apps_created", workflowapp.ID, 1, "")
|
/*
|
||||||
if err != nil {
|
err = increaseStatisticsField(ctx, "total_apps_created", workflowapp.ID, 1, "")
|
||||||
log.Printf("Failed to increase total apps created stats: %s", err)
|
if err != nil {
|
||||||
}
|
log.Printf("Failed to increase total apps created stats: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
err = increaseStatisticsField(ctx, "total_apps_loaded", workflowapp.ID, 1, "")
|
err = increaseStatisticsField(ctx, "total_apps_loaded", workflowapp.ID, 1, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Failed to increase total apps loaded stats: %s", err)
|
log.Printf("Failed to increase total apps loaded stats: %s", err)
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//log.Printf("Added %s:%s to the database", workflowapp.Name, workflowapp.AppVersion)
|
//log.Printf("Added %s:%s to the database", workflowapp.Name, workflowapp.AppVersion)
|
||||||
|
|
||||||
@@ -6801,6 +6813,12 @@ func iterateAppGithubFolders(fs billy.Filesystem, dir []os.FileInfo, extra strin
|
|||||||
return buildLaterFirst, buildLaterList, err
|
return buildLaterFirst, buildLaterList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is getting silly
|
||||||
|
cacheKey := fmt.Sprintf("workflowapps-sorted-100")
|
||||||
|
requestCache.Delete(cacheKey)
|
||||||
|
cacheKey = fmt.Sprintf("workflowapps-sorted-500")
|
||||||
|
requestCache.Delete(cacheKey)
|
||||||
|
|
||||||
//log.Printf("BUILDLATERFIRST: %d, BUILDLATERLIST: %d", len(buildLaterFirst), len(buildLaterList))
|
//log.Printf("BUILDLATERFIRST: %d, BUILDLATERLIST: %d", len(buildLaterFirst), len(buildLaterList))
|
||||||
if len(extra) == 0 {
|
if len(extra) == 0 {
|
||||||
log.Printf("[INFO] Starting build of %d containers (FIRST)", len(buildLaterFirst))
|
log.Printf("[INFO] Starting build of %d containers (FIRST)", len(buildLaterFirst))
|
||||||
@@ -6811,6 +6829,7 @@ func iterateAppGithubFolders(fs billy.Filesystem, dir []os.FileInfo, extra strin
|
|||||||
} else {
|
} else {
|
||||||
if len(item.Tags) > 0 {
|
if len(item.Tags) > 0 {
|
||||||
log.Printf("[INFO] Successfully built image %s", item.Tags[0])
|
log.Printf("[INFO] Successfully built image %s", item.Tags[0])
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.Printf("[INFO] Successfully built Docker image")
|
log.Printf("[INFO] Successfully built Docker image")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2450,7 +2450,8 @@ const AngularWorkflow = (props) => {
|
|||||||
authentication: [],
|
authentication: [],
|
||||||
execution_variable: undefined,
|
execution_variable: undefined,
|
||||||
example: example,
|
example: example,
|
||||||
category: app.categories !== null && app.categories !== undefined && app.categories.length > 0 ? app.categories[0] : ""
|
category: app.categories !== null && app.categories !== undefined && app.categories.length > 0 ? app.categories[0] : "",
|
||||||
|
authentication_id: "",
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: overwrite category if the ACTION chosen has a different category
|
// FIXME: overwrite category if the ACTION chosen has a different category
|
||||||
@@ -2511,6 +2512,56 @@ const AngularWorkflow = (props) => {
|
|||||||
console.log("SHOULD STITCH WITH STARTNODE")
|
console.log("SHOULD STITCH WITH STARTNODE")
|
||||||
cy.add(edgeToBeAdded)
|
cy.add(edgeToBeAdded)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AUTHENTICATION
|
||||||
|
if (app.authentication.required) {
|
||||||
|
// Setup auth here :)
|
||||||
|
const authenticationOptions = []
|
||||||
|
var findAuthId = ""
|
||||||
|
if (newAppData.authentication_id !== null && newAppData.authentication_id !== undefined && newAppData.authentication_id.length > 0) {
|
||||||
|
findAuthId = newAppData.authentication_id
|
||||||
|
}
|
||||||
|
|
||||||
|
var tmpAuth = JSON.parse(JSON.stringify(appAuthentication))
|
||||||
|
for (var key in tmpAuth) {
|
||||||
|
var item = tmpAuth[key]
|
||||||
|
|
||||||
|
const newfields = {}
|
||||||
|
for (var filterkey in item.fields) {
|
||||||
|
newfields[item.fields[filterkey].key] = item.fields[filterkey].value
|
||||||
|
}
|
||||||
|
|
||||||
|
item.fields = newfields
|
||||||
|
if (item.app.name === app.name) {
|
||||||
|
authenticationOptions.push(item)
|
||||||
|
if (item.id === findAuthId) {
|
||||||
|
newAppData.selectedAuthentication = item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (authenticationOptions !== undefined && authenticationOptions !== null && authenticationOptions.length > 0) {
|
||||||
|
for (var key in authenticationOptions) {
|
||||||
|
const option = authenticationOptions[key]
|
||||||
|
if (option.active) {
|
||||||
|
newAppData.selectedAuthentication = option
|
||||||
|
newAppData.authentication_id = option.id
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//newAppData.authentication = authenticationOptions
|
||||||
|
//if (newAppData.selectedAuthentication === null || newAppData.selectedAuthentication === undefined || newAppData.selectedAuthentication.length === "") {
|
||||||
|
// newAppData.selectedAuthentication = {}
|
||||||
|
//} else {
|
||||||
|
// console.log("CAN WE SELECT AUTH?: ", authenticationOptions)
|
||||||
|
//}
|
||||||
|
} else {
|
||||||
|
newAppData.authentication = []
|
||||||
|
newAppData.authentication_id = ""
|
||||||
|
newAppData.selectedAuthentication = {}
|
||||||
|
}
|
||||||
|
|
||||||
workflow.actions.push(newAppData)
|
workflow.actions.push(newAppData)
|
||||||
setWorkflow(workflow)
|
setWorkflow(workflow)
|
||||||
|
|||||||
@@ -2010,11 +2010,11 @@ const AppCreator = (props) => {
|
|||||||
const categories = [
|
const categories = [
|
||||||
"Communication",
|
"Communication",
|
||||||
"Cases",
|
"Cases",
|
||||||
"EDR",
|
|
||||||
"Intel",
|
|
||||||
"SIEM",
|
"SIEM",
|
||||||
"Network",
|
|
||||||
"Assets",
|
"Assets",
|
||||||
|
"Intel",
|
||||||
|
"IAM",
|
||||||
|
"Network",
|
||||||
"Eradication",
|
"Eradication",
|
||||||
"Other",
|
"Other",
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user