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