From 9c033c1c90a8096f967bb1c380c972f200182a8b Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Thu, 1 Dec 2022 00:44:56 +0000 Subject: [PATCH] feat: env vars --- src/components/checks/ScriptCheck.vue | 18 ++++++++++- src/components/modals/agents/BulkAction.vue | 17 +++++++++- src/components/modals/agents/RunScript.vue | 18 +++++++++-- .../modals/alerts/AlertTemplateForm.vue | 32 +++++++++++++++++++ src/components/scripts/ScriptFormModal.vue | 16 +++++++++- src/components/scripts/ScriptUploadModal.vue | 14 ++++++++ src/components/scripts/TestScriptModal.vue | 1 + src/components/tasks/AutomatedTaskForm.vue | 29 +++++++++++++++-- src/composables/scripts.js | 3 ++ src/constants/constants.ts | 21 +++++------- src/mixins/mixins.js | 2 ++ src/utils/format.js | 2 ++ 12 files changed, 152 insertions(+), 21 deletions(-) diff --git a/src/components/checks/ScriptCheck.vue b/src/components/checks/ScriptCheck.vue index 18322d3..fe348b2 100644 --- a/src/components/checks/ScriptCheck.vue +++ b/src/components/checks/ScriptCheck.vue @@ -39,6 +39,19 @@ new-value-mode="add" /> + + + + + +

Shell

@@ -208,7 +220,7 @@ import { runBulkAction } from "@/api/agents"; import { notifySuccess } from "@/utils/notify"; import { cmdPlaceholder } from "@/composables/agents"; import { removeExtraOptionCategories } from "@/utils/format"; -import { runAsUserToolTip } from "@/constants/constants"; +import { envVarsLabel, runAsUserToolTip } from "@/constants/constants"; // ui imports import TacticalDropdown from "@/components/ui/TacticalDropdown.vue"; @@ -284,6 +296,7 @@ export default { scriptOptions, defaultTimeout, defaultArgs, + defaultEnvVars, getScriptOptions, } = useScriptDropdown(); const { agents, agentOptions, getAgentOptions } = useAgentDropdown(); @@ -307,6 +320,7 @@ export default { script, timeout: defaultTimeout, args: defaultArgs, + env_vars: defaultEnvVars, run_as_user: false, }); const loading = ref(false); @@ -404,6 +418,7 @@ export default { targetOptions, patchModeOptions, runAsUserToolTip, + envVarsLabel, //computed modalTitle, diff --git a/src/components/modals/agents/RunScript.vue b/src/components/modals/agents/RunScript.vue index b9beede..8a24886 100644 --- a/src/components/modals/agents/RunScript.vue +++ b/src/components/modals/agents/RunScript.vue @@ -77,6 +77,18 @@ new-value-mode="add" />
+ + + + + + + i.value === this.template.action ); this.template.action_args = script.args; + this.template.action_env_vars = script.env_vars; } else if (type === "resolved") { const script = this.scriptOptions.find( (i) => i.value === this.template.resolved_action ); this.template.resolved_action_args = script.args; + this.template.resolved_action_env_vars = script.env_vars; } }, toggleAddEmail() { diff --git a/src/components/scripts/ScriptFormModal.vue b/src/components/scripts/ScriptFormModal.vue index 2382f1c..2148b5b 100644 --- a/src/components/scripts/ScriptFormModal.vue +++ b/src/components/scripts/ScriptFormModal.vue @@ -118,6 +118,17 @@ new-value-mode="add" :readonly="readonly" /> + + + + + + + Arguments: {{ element.script_args }} + + Env Vars: {{ element.env_vars }} + Timeout: {{ element.timeout }} @@ -727,6 +745,7 @@ import { useCheckDropdown } from "@/composables/checks"; import { useCustomFieldDropdown } from "@/composables/core"; import { notifySuccess, notifyError } from "@/utils/notify"; import { validateTimePeriod } from "@/utils/validation"; +import { envVarsLabel } from "@/constants/constants"; import { convertPeriodToSeconds, convertToBitArray, @@ -817,7 +836,7 @@ export default { const { dialogRef, onDialogHide, onDialogOK } = useDialogPluginComponent(); // setup dropdowns - const { script, scriptOptions, defaultTimeout, defaultArgs } = + const { script, scriptOptions, defaultTimeout, defaultArgs, defaultEnvVars } = useScriptDropdown(undefined, { onMount: true, }); @@ -914,6 +933,7 @@ export default { script: script.value, timeout: defaultTimeout.value, script_args: defaultArgs.value, + env_vars: defaultEnvVars.value, }); } else if (actionType.value === "cmd") { task.value.actions.push({ @@ -927,6 +947,7 @@ export default { // clear fields after add script.value = null; defaultArgs.value = []; + defaultEnvVars.value = []; defaultTimeout.value = 30; command.value = ""; } @@ -1089,6 +1110,7 @@ export default { script, defaultTimeout, defaultArgs, + defaultEnvVars, actionType, command, shell, @@ -1116,6 +1138,7 @@ export default { monthOptions, taskTypeOptions, taskInstancePolicyOptions, + envVarsLabel, // methods submit, diff --git a/src/composables/scripts.js b/src/composables/scripts.js index e76dfa5..d7663a7 100644 --- a/src/composables/scripts.js +++ b/src/composables/scripts.js @@ -8,6 +8,7 @@ export function useScriptDropdown(setScript = null, { onMount = false } = {}) { const scriptOptions = ref([]); const defaultTimeout = ref(30); const defaultArgs = ref([]); + const defaultEnvVars = ref([]); const script = ref(setScript); const syntax = ref(""); const link = ref(""); @@ -29,6 +30,7 @@ export function useScriptDropdown(setScript = null, { onMount = false } = {}) { ); defaultTimeout.value = tmpScript.timeout; defaultArgs.value = tmpScript.args; + defaultEnvVars.value = tmpScript.env_vars, syntax.value = tmpScript.syntax; link.value = tmpScript.script_type === "builtin" @@ -49,6 +51,7 @@ export function useScriptDropdown(setScript = null, { onMount = false } = {}) { scriptOptions, defaultTimeout, defaultArgs, + defaultEnvVars, syntax, link, diff --git a/src/constants/constants.ts b/src/constants/constants.ts index 65dd6ab..dfca122 100644 --- a/src/constants/constants.ts +++ b/src/constants/constants.ts @@ -1,15 +1,10 @@ -const GOARCH_AMD64 = "amd64"; -const GOARCH_i386 = "386"; -const GOARCH_ARM64 = "arm64"; -const GOARCH_ARM32 = "arm"; +export const GOARCH_AMD64 = "amd64"; +export const GOARCH_i386 = "386"; +export const GOARCH_ARM64 = "arm64"; +export const GOARCH_ARM32 = "arm"; -const runAsUserToolTip = - "Run in the context of the logged in user. If no user is logged in, the script will not run and an error will be returned. Not supported on Windows Server."; +export const runAsUserToolTip = + "Run in the context of the logged in user. If no user is logged in, the script will not run and an error will be returned."; -export { - GOARCH_AMD64, - GOARCH_i386, - GOARCH_ARM64, - GOARCH_ARM32, - runAsUserToolTip, -}; +export const envVarsLabel = + "Environment vars (press Enter after typing each key=value pair)" diff --git a/src/mixins/mixins.js b/src/mixins/mixins.js index 9bad73b..384ece7 100644 --- a/src/mixins/mixins.js +++ b/src/mixins/mixins.js @@ -193,6 +193,7 @@ export default { value: script.id, timeout: script.default_timeout, args: script.args, + env_vars: script.env_vars, }); } else if (cat === "Unassigned" && !script.category) { tmp.push({ @@ -200,6 +201,7 @@ export default { value: script.id, timeout: script.default_timeout, args: script.args, + env_vars: script.env_vars, }); } }); diff --git a/src/utils/format.js b/src/utils/format.js index 8a713c0..57fa393 100644 --- a/src/utils/format.js +++ b/src/utils/format.js @@ -68,6 +68,7 @@ export function formatScriptOptions(data) { value: script.id, timeout: script.default_timeout, args: script.args, + env_vars: script.env_vars, filename: script.filename, syntax: script.syntax, script_type: script.script_type, @@ -80,6 +81,7 @@ export function formatScriptOptions(data) { value: script.id, timeout: script.default_timeout, args: script.args, + env_vars: script.env_vars, filename: script.filename, syntax: script.syntax, script_type: script.script_type,