Compare commits
	
		
			1 Commits
		
	
	
		
			v0.100.6
			...
			v0.100.7-d
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					137a5648ce | 
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "web",
 | 
			
		||||
  "version": "0.100.6",
 | 
			
		||||
  "version": "0.100.7-dev",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "productName": "Tactical RMM",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
 
 | 
			
		||||
@@ -135,6 +135,11 @@
 | 
			
		||||
            :rules="[(val) => !!val || '*Required']"
 | 
			
		||||
          />
 | 
			
		||||
        </q-card-section>
 | 
			
		||||
        <q-card-section v-if="supportsRunAsUser()" class="q-pt-none">
 | 
			
		||||
          <q-checkbox v-model="state.run_as_user" label="Run As User">
 | 
			
		||||
            <q-tooltip>{{ runAsUserToolTip }}</q-tooltip>
 | 
			
		||||
          </q-checkbox>
 | 
			
		||||
        </q-card-section>
 | 
			
		||||
 | 
			
		||||
        <q-card-section v-if="mode === 'script' || mode === 'command'">
 | 
			
		||||
          <q-input
 | 
			
		||||
@@ -203,6 +208,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";
 | 
			
		||||
 | 
			
		||||
// ui imports
 | 
			
		||||
import TacticalDropdown from "@/components/ui/TacticalDropdown.vue";
 | 
			
		||||
@@ -300,6 +306,7 @@ export default {
 | 
			
		||||
      script,
 | 
			
		||||
      timeout: defaultTimeout,
 | 
			
		||||
      args: defaultArgs,
 | 
			
		||||
      run_as_user: false,
 | 
			
		||||
    });
 | 
			
		||||
    const loading = ref(false);
 | 
			
		||||
 | 
			
		||||
@@ -316,6 +323,7 @@ export default {
 | 
			
		||||
      () => state.value.osType,
 | 
			
		||||
      (newValue) => {
 | 
			
		||||
        state.value.custom_shell = null;
 | 
			
		||||
        state.value.run_as_user = false;
 | 
			
		||||
 | 
			
		||||
        if (newValue === "windows") {
 | 
			
		||||
          state.value.shell = "cmd";
 | 
			
		||||
@@ -337,6 +345,13 @@ export default {
 | 
			
		||||
      loading.value = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const supportsRunAsUser = () => {
 | 
			
		||||
      const modes = ["script", "command"];
 | 
			
		||||
      return (
 | 
			
		||||
        state.value.osType === "windows" && modes.includes(state.value.mode)
 | 
			
		||||
      );
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // set modal title and caption
 | 
			
		||||
    const modalTitle = computed(() => {
 | 
			
		||||
      return props.mode === "command"
 | 
			
		||||
@@ -387,6 +402,7 @@ export default {
 | 
			
		||||
      osTypeOptions,
 | 
			
		||||
      targetOptions,
 | 
			
		||||
      patchModeOptions,
 | 
			
		||||
      runAsUserToolTip,
 | 
			
		||||
 | 
			
		||||
      //computed
 | 
			
		||||
      modalTitle,
 | 
			
		||||
@@ -394,6 +410,7 @@ export default {
 | 
			
		||||
      //methods
 | 
			
		||||
      submit,
 | 
			
		||||
      cmdPlaceholder,
 | 
			
		||||
      supportsRunAsUser,
 | 
			
		||||
 | 
			
		||||
      // quasar dialog plugin
 | 
			
		||||
      dialogRef,
 | 
			
		||||
 
 | 
			
		||||
@@ -128,6 +128,11 @@
 | 
			
		||||
          />
 | 
			
		||||
          <q-checkbox v-model="state.save_all_output" label="Save all output" />
 | 
			
		||||
        </q-card-section>
 | 
			
		||||
        <q-card-section v-if="agent.plat === 'windows'">
 | 
			
		||||
          <q-checkbox v-model="state.run_as_user" label="Run As User">
 | 
			
		||||
            <q-tooltip>{{ runAsUserToolTip }}</q-tooltip>
 | 
			
		||||
          </q-checkbox>
 | 
			
		||||
        </q-card-section>
 | 
			
		||||
        <q-card-section>
 | 
			
		||||
          <q-input
 | 
			
		||||
            v-model.number="state.timeout"
 | 
			
		||||
@@ -173,6 +178,7 @@ import { useScriptDropdown } from "@/composables/scripts";
 | 
			
		||||
import { useCustomFieldDropdown } from "@/composables/core";
 | 
			
		||||
import { runScript } from "@/api/agents";
 | 
			
		||||
import { notifySuccess } from "@/utils/notify";
 | 
			
		||||
import { runAsUserToolTip } from "@/constants/constants";
 | 
			
		||||
import {
 | 
			
		||||
  formatScriptSyntax,
 | 
			
		||||
  removeExtraOptionCategories,
 | 
			
		||||
@@ -220,6 +226,7 @@ export default {
 | 
			
		||||
      script,
 | 
			
		||||
      args: defaultArgs,
 | 
			
		||||
      timeout: defaultTimeout,
 | 
			
		||||
      run_as_user: false,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    const ret = ref(null);
 | 
			
		||||
@@ -273,6 +280,7 @@ export default {
 | 
			
		||||
 | 
			
		||||
      // non-reactive data
 | 
			
		||||
      outputOptions,
 | 
			
		||||
      runAsUserToolTip,
 | 
			
		||||
 | 
			
		||||
      //methods
 | 
			
		||||
      formatScriptSyntax,
 | 
			
		||||
 
 | 
			
		||||
@@ -51,6 +51,11 @@
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
        </q-card-section>
 | 
			
		||||
        <q-card-section v-if="agent.plat === 'windows'">
 | 
			
		||||
          <q-checkbox v-model="state.run_as_user" label="Run As User">
 | 
			
		||||
            <q-tooltip>{{ runAsUserToolTip }}</q-tooltip>
 | 
			
		||||
          </q-checkbox>
 | 
			
		||||
        </q-card-section>
 | 
			
		||||
        <q-card-section v-if="state.shell === 'custom'">
 | 
			
		||||
          <q-input
 | 
			
		||||
            v-model="state.custom_shell"
 | 
			
		||||
@@ -117,6 +122,7 @@ import { ref } from "vue";
 | 
			
		||||
import { useDialogPluginComponent } from "quasar";
 | 
			
		||||
import { sendAgentCommand } from "@/api/agents";
 | 
			
		||||
import { cmdPlaceholder } from "@/composables/agents";
 | 
			
		||||
import { runAsUserToolTip } from "@/constants/constants";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "SendCommand",
 | 
			
		||||
@@ -134,6 +140,7 @@ export default {
 | 
			
		||||
      cmd: null,
 | 
			
		||||
      timeout: 30,
 | 
			
		||||
      custom_shell: null,
 | 
			
		||||
      run_as_user: false,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    const loading = ref(false);
 | 
			
		||||
@@ -156,6 +163,9 @@ export default {
 | 
			
		||||
      loading,
 | 
			
		||||
      ret,
 | 
			
		||||
 | 
			
		||||
      // non reactivete data
 | 
			
		||||
      runAsUserToolTip,
 | 
			
		||||
 | 
			
		||||
      // methods
 | 
			
		||||
      submit,
 | 
			
		||||
      cmdPlaceholder,
 | 
			
		||||
 
 | 
			
		||||
@@ -128,6 +128,18 @@
 | 
			
		||||
              :rules="[(val) => val >= 5 || 'Minimum is 5']"
 | 
			
		||||
              hide-bottom-space
 | 
			
		||||
            />
 | 
			
		||||
            <q-checkbox
 | 
			
		||||
              v-model="formScript.run_as_user"
 | 
			
		||||
              label="Run As User (Windows only)"
 | 
			
		||||
            >
 | 
			
		||||
              <q-tooltip
 | 
			
		||||
                >Setting this value on the script model will always override any
 | 
			
		||||
                'Run As User' checkboxes in the UI and force this script to
 | 
			
		||||
                always be 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.
 | 
			
		||||
              </q-tooltip>
 | 
			
		||||
            </q-checkbox>
 | 
			
		||||
            <q-input
 | 
			
		||||
              label="Syntax"
 | 
			
		||||
              type="textarea"
 | 
			
		||||
@@ -253,6 +265,7 @@ export default {
 | 
			
		||||
          default_timeout: 90,
 | 
			
		||||
          args: [],
 | 
			
		||||
          script_body: "",
 | 
			
		||||
          run_as_user: false,
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    if (props.clone) script.value.name = `(Copy) ${script.value.name}`;
 | 
			
		||||
 
 | 
			
		||||
@@ -44,6 +44,7 @@ export default {
 | 
			
		||||
        timeout: props.script.default_timeout,
 | 
			
		||||
        args: props.script.args,
 | 
			
		||||
        shell: props.script.shell,
 | 
			
		||||
        run_as_user: props.script.run_as_user,
 | 
			
		||||
      };
 | 
			
		||||
      try {
 | 
			
		||||
        ret.value = await testScript(props.agent, data);
 | 
			
		||||
 
 | 
			
		||||
@@ -3,4 +3,13 @@ const GOARCH_i386 = "386";
 | 
			
		||||
const GOARCH_ARM64 = "arm64";
 | 
			
		||||
const GOARCH_ARM32 = "arm";
 | 
			
		||||
 | 
			
		||||
export { GOARCH_AMD64, GOARCH_i386, GOARCH_ARM64, GOARCH_ARM32 };
 | 
			
		||||
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 {
 | 
			
		||||
  GOARCH_AMD64,
 | 
			
		||||
  GOARCH_i386,
 | 
			
		||||
  GOARCH_ARM64,
 | 
			
		||||
  GOARCH_ARM32,
 | 
			
		||||
  runAsUserToolTip,
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user