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