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