Compare commits
	
		
			3 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | bd213532a6 | ||
|  | 98a85a8b2e | ||
|  | 845ed2b44a | 
| @@ -1,8 +1,5 @@ | |||||||
| <template> | <template> | ||||||
|   <div v-if="!selectedAgent" class="q-pa-sm">No agent selected</div> |   <div v-if="!selectedAgent" class="q-pa-sm">No agent selected</div> | ||||||
|   <div v-else-if="agentPlatform.toLowerCase() !== 'windows'" class="q-pa-sm"> |  | ||||||
|     Only supported for Windows agents at this time |  | ||||||
|   </div> |  | ||||||
|   <div v-else> |   <div v-else> | ||||||
|     <q-table |     <q-table | ||||||
|       dense |       dense | ||||||
| @@ -514,6 +511,7 @@ export default { | |||||||
|         component: AutomatedTaskForm, |         component: AutomatedTaskForm, | ||||||
|         componentProps: { |         componentProps: { | ||||||
|           parent: { agent: selectedAgent.value }, |           parent: { agent: selectedAgent.value }, | ||||||
|  |           plat: agentPlatform.value, | ||||||
|         }, |         }, | ||||||
|       }).onOk(() => { |       }).onOk(() => { | ||||||
|         getTasks(); |         getTasks(); | ||||||
| @@ -528,6 +526,7 @@ export default { | |||||||
|         componentProps: { |         componentProps: { | ||||||
|           task: task, |           task: task, | ||||||
|           parent: { agent: selectedAgent.value }, |           parent: { agent: selectedAgent.value }, | ||||||
|  |           plat: agentPlatform.value, | ||||||
|         }, |         }, | ||||||
|       }).onOk(() => { |       }).onOk(() => { | ||||||
|         getTasks(); |         getTasks(); | ||||||
|   | |||||||
| @@ -158,7 +158,7 @@ | |||||||
|                   v-model="command" |                   v-model="command" | ||||||
|                   dense |                   dense | ||||||
|                   filled |                   filled | ||||||
|                   class="col-7" |                   class="col-5" | ||||||
|                 /> |                 /> | ||||||
|                 <q-input |                 <q-input | ||||||
|                   v-if="actionType === 'cmd'" |                   v-if="actionType === 'cmd'" | ||||||
| @@ -171,12 +171,14 @@ | |||||||
|                 /> |                 /> | ||||||
|                 <q-option-group |                 <q-option-group | ||||||
|                   v-if="actionType === 'cmd'" |                   v-if="actionType === 'cmd'" | ||||||
|                   class="col-2 q-pl-sm" |                   class="col-4 q-pl-sm" | ||||||
|                   inline |                   inline | ||||||
|                   v-model="shell" |                   v-model="shell" | ||||||
|                   :options="[ |                   :options="[ | ||||||
|                     { label: 'Batch', value: 'cmd' }, |                     { label: 'CMD', value: 'cmd' }, | ||||||
|                     { label: 'Powershell', value: 'powershell' }, |                     { label: 'Powershell', value: 'powershell' }, | ||||||
|  |                     { label: 'Bash', value: '/bin/bash' }, | ||||||
|  |                     { label: 'Custom', value: 'custom' }, | ||||||
|                   ]" |                   ]" | ||||||
|                 /> |                 /> | ||||||
|                 <q-btn |                 <q-btn | ||||||
| @@ -186,10 +188,20 @@ | |||||||
|                   flat |                   flat | ||||||
|                   dense |                   dense | ||||||
|                   icon="add" |                   icon="add" | ||||||
|  |                   label="Add" | ||||||
|                   color="primary" |                   color="primary" | ||||||
|                 /> |                 /> | ||||||
|               </div> |               </div> | ||||||
|             </q-form> |             </q-form> | ||||||
|  |             <div v-if="shell === 'custom'" class="col-5"> | ||||||
|  |               <q-input | ||||||
|  |                 v-model="custom_shell" | ||||||
|  |                 outlined | ||||||
|  |                 label="Custom shell" | ||||||
|  |                 stack-label | ||||||
|  |                 placeholder="/usr/bin/python3" | ||||||
|  |               /> | ||||||
|  |             </div> | ||||||
|             <div class="text-subtitle2 q-pa-sm"> |             <div class="text-subtitle2 q-pa-sm"> | ||||||
|               Actions: |               Actions: | ||||||
|               <q-checkbox |               <q-checkbox | ||||||
| @@ -305,6 +317,7 @@ | |||||||
|  |  | ||||||
|                 <!-- expires on input --> |                 <!-- expires on input --> | ||||||
|                 <q-input |                 <q-input | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   class="col-6 q-pa-sm" |                   class="col-6 q-pa-sm" | ||||||
|                   type="datetime-local" |                   type="datetime-local" | ||||||
|                   dense |                   dense | ||||||
| @@ -333,7 +346,10 @@ | |||||||
|               </q-card-section> |               </q-card-section> | ||||||
|  |  | ||||||
|               <!-- daily options --> |               <!-- daily options --> | ||||||
|               <q-card-section v-if="state.task_type === 'daily'" class="row"> |               <q-card-section | ||||||
|  |                 v-if="!isPosix && state.task_type === 'daily'" | ||||||
|  |                 class="row" | ||||||
|  |               > | ||||||
|                 <!-- daily interval --> |                 <!-- daily interval --> | ||||||
|                 <q-input |                 <q-input | ||||||
|                   :rules="[ |                   :rules="[ | ||||||
| @@ -360,6 +376,7 @@ | |||||||
|               <q-card-section v-if="state.task_type === 'weekly'" class="row"> |               <q-card-section v-if="state.task_type === 'weekly'" class="row"> | ||||||
|                 <!-- weekly interval --> |                 <!-- weekly interval --> | ||||||
|                 <q-input |                 <q-input | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   :rules="[ |                   :rules="[ | ||||||
|                     (val) => !!val || '*Required', |                     (val) => !!val || '*Required', | ||||||
|                     (val) => |                     (val) => | ||||||
| @@ -602,8 +619,11 @@ | |||||||
|                 " |                 " | ||||||
|                 class="row" |                 class="row" | ||||||
|               > |               > | ||||||
|                 <div class="col-12 text-h6">Advanced Settings</div> |                 <div v-if="!isPosix" class="col-12 text-h6"> | ||||||
|  |                   Advanced Settings (Windows only) | ||||||
|  |                 </div> | ||||||
|                 <q-input |                 <q-input | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   class="col-6 q-pa-sm" |                   class="col-6 q-pa-sm" | ||||||
|                   dense |                   dense | ||||||
|                   label="Repeat task every" |                   label="Repeat task every" | ||||||
| @@ -620,6 +640,7 @@ | |||||||
|                 /> |                 /> | ||||||
|  |  | ||||||
|                 <q-input |                 <q-input | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   :disable="!state.task_repetition_interval" |                   :disable="!state.task_repetition_interval" | ||||||
|                   class="col-6 q-pa-sm" |                   class="col-6 q-pa-sm" | ||||||
|                   dense |                   dense | ||||||
| @@ -643,6 +664,7 @@ | |||||||
|                 /> |                 /> | ||||||
|  |  | ||||||
|                 <q-checkbox |                 <q-checkbox | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   :disable="!state.task_repetition_interval" |                   :disable="!state.task_repetition_interval" | ||||||
|                   class="col-6 q-pa-sm" |                   class="col-6 q-pa-sm" | ||||||
|                   dense |                   dense | ||||||
| @@ -652,6 +674,7 @@ | |||||||
|                 <div class="col-6"></div> |                 <div class="col-6"></div> | ||||||
|  |  | ||||||
|                 <q-input |                 <q-input | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   class="col-6 q-pa-sm" |                   class="col-6 q-pa-sm" | ||||||
|                   dense |                   dense | ||||||
|                   label="Random task delay" |                   label="Random task delay" | ||||||
| @@ -668,6 +691,7 @@ | |||||||
|                 /> |                 /> | ||||||
|                 <div class="col-6"></div> |                 <div class="col-6"></div> | ||||||
|                 <q-checkbox |                 <q-checkbox | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   :disable="!state.expire_date" |                   :disable="!state.expire_date" | ||||||
|                   class="col-6 q-pa-sm" |                   class="col-6 q-pa-sm" | ||||||
|                   dense |                   dense | ||||||
| @@ -678,6 +702,7 @@ | |||||||
|                 </q-checkbox> |                 </q-checkbox> | ||||||
|                 <div class="col-6"></div> |                 <div class="col-6"></div> | ||||||
|                 <q-checkbox |                 <q-checkbox | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   :disable="state.task_type === 'runonce'" |                   :disable="state.task_type === 'runonce'" | ||||||
|                   class="col-6 q-pa-sm" |                   class="col-6 q-pa-sm" | ||||||
|                   dense |                   dense | ||||||
| @@ -688,6 +713,7 @@ | |||||||
|                 <div class="col-6"></div> |                 <div class="col-6"></div> | ||||||
|  |  | ||||||
|                 <tactical-dropdown |                 <tactical-dropdown | ||||||
|  |                   v-if="!isPosix" | ||||||
|                   class="col-6 q-pa-sm" |                   class="col-6 q-pa-sm" | ||||||
|                   label="Task instance policy" |                   label="Task instance policy" | ||||||
|                   :options="taskInstancePolicyOptions" |                   :options="taskInstancePolicyOptions" | ||||||
| @@ -755,7 +781,7 @@ | |||||||
|  |  | ||||||
| <script> | <script> | ||||||
| // composition imports | // composition imports | ||||||
| import { ref, watch, onMounted, defineComponent } from "vue"; | import { computed, ref, watch, onMounted, defineComponent } from "vue"; | ||||||
| import { useDialogPluginComponent } from "quasar"; | import { useDialogPluginComponent } from "quasar"; | ||||||
| import draggable from "vuedraggable"; | import draggable from "vuedraggable"; | ||||||
| import { saveTask, updateTask } from "@/api/tasks"; | import { saveTask, updateTask } from "@/api/tasks"; | ||||||
| @@ -850,6 +876,7 @@ export default defineComponent({ | |||||||
|   props: { |   props: { | ||||||
|     parent: Object, // parent policy or agent for task |     parent: Object, // parent policy or agent for task | ||||||
|     task: Object, // only for editing |     task: Object, // only for editing | ||||||
|  |     plat: String, | ||||||
|   }, |   }, | ||||||
|   setup(props) { |   setup(props) { | ||||||
|     // setup quasar dialog |     // setup quasar dialog | ||||||
| @@ -873,6 +900,10 @@ export default defineComponent({ | |||||||
|     const { checkOptions, getCheckOptions } = useCheckDropdown(props.parent); |     const { checkOptions, getCheckOptions } = useCheckDropdown(props.parent); | ||||||
|     const { customFieldOptions } = useCustomFieldDropdown({ onMount: true }); |     const { customFieldOptions } = useCustomFieldDropdown({ onMount: true }); | ||||||
|  |  | ||||||
|  |     const isPosix = computed(() => { | ||||||
|  |       return !!props.plat && props.plat !== "windows"; | ||||||
|  |     }); | ||||||
|  |  | ||||||
|     // add task logic |     // add task logic | ||||||
|     const task = props.task |     const task = props.task | ||||||
|       ? ref(Object.assign({}, props.task)) |       ? ref(Object.assign({}, props.task)) | ||||||
| @@ -906,6 +937,7 @@ export default defineComponent({ | |||||||
|     const actionType = ref("script"); |     const actionType = ref("script"); | ||||||
|     const command = ref(""); |     const command = ref(""); | ||||||
|     const shell = ref("cmd"); |     const shell = ref("cmd"); | ||||||
|  |     const custom_shell = ref(""); | ||||||
|     const monthlyType = ref("days"); |     const monthlyType = ref("days"); | ||||||
|     const collector = ref(false); |     const collector = ref(false); | ||||||
|     const loading = ref(false); |     const loading = ref(false); | ||||||
| @@ -960,10 +992,16 @@ export default defineComponent({ | |||||||
|           env_vars: defaultEnvVars.value, |           env_vars: defaultEnvVars.value, | ||||||
|         }); |         }); | ||||||
|       } else if (actionType.value === "cmd") { |       } else if (actionType.value === "cmd") { | ||||||
|  |         let tempShell = shell.value; | ||||||
|  |         if (shell.value === "custom" && !!custom_shell.value) { | ||||||
|  |           tempShell = custom_shell.value; | ||||||
|  |         } else { | ||||||
|  |           tempShell = shell.value; | ||||||
|  |         } | ||||||
|         task.value.actions.push({ |         task.value.actions.push({ | ||||||
|           type: "cmd", |           type: "cmd", | ||||||
|           command: command.value, |           command: command.value, | ||||||
|           shell: shell.value, |           shell: tempShell, | ||||||
|           timeout: defaultTimeout.value, |           timeout: defaultTimeout.value, | ||||||
|         }); |         }); | ||||||
|       } |       } | ||||||
| @@ -1138,6 +1176,7 @@ export default defineComponent({ | |||||||
|       actionType, |       actionType, | ||||||
|       command, |       command, | ||||||
|       shell, |       shell, | ||||||
|  |       custom_shell, | ||||||
|       allMonthsCheckbox, |       allMonthsCheckbox, | ||||||
|       allMonthDaysCheckbox, |       allMonthDaysCheckbox, | ||||||
|       allWeekDaysCheckbox, |       allWeekDaysCheckbox, | ||||||
| @@ -1151,6 +1190,7 @@ export default defineComponent({ | |||||||
|       scriptOptions, |       scriptOptions, | ||||||
|       checkOptions, |       checkOptions, | ||||||
|       customFieldOptions, |       customFieldOptions, | ||||||
|  |       isPosix, | ||||||
|  |  | ||||||
|       // non-reactive data |       // non-reactive data | ||||||
|       validateTimePeriod, |       validateTimePeriod, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user