Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
13f0f117da | ||
|
|
2db4eeec05 | ||
|
|
fe5e8aa5fe | ||
|
|
13e35d24a2 | ||
|
|
0b6ae80777 | ||
|
|
5e0fab88a3 | ||
|
|
bf8797264b | ||
|
|
14bde967bd | ||
|
|
596ce69789 | ||
|
|
c5491dcb73 | ||
|
|
3f6340f0a1 | ||
|
|
351f0870a9 | ||
|
|
f2638a4c5e | ||
|
|
2bd00d5ca0 | ||
|
|
00a40dd450 | ||
|
|
cfe1cb2dbf | ||
|
|
16fb75b56c | ||
|
|
094cf45ce3 | ||
|
|
d6984b3da9 | ||
|
|
53fc6f4cde |
754
package-lock.json
generated
754
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
40
package.json
40
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "web",
|
"name": "web",
|
||||||
"version": "0.101.37",
|
"version": "0.101.40",
|
||||||
"private": true,
|
"private": true,
|
||||||
"productName": "Tactical RMM",
|
"productName": "Tactical RMM",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -10,34 +10,34 @@
|
|||||||
"format": "prettier --write \"**/*.{js,ts,vue,,html,md,json}\" --ignore-path .gitignore"
|
"format": "prettier --write \"**/*.{js,ts,vue,,html,md,json}\" --ignore-path .gitignore"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@quasar/extras": "1.16.8",
|
"@quasar/extras": "1.16.9",
|
||||||
"apexcharts": "3.44.0",
|
"apexcharts": "3.45.2",
|
||||||
"axios": "1.6.2",
|
"axios": "1.6.7",
|
||||||
"dotenv": "16.3.1",
|
"dotenv": "16.4.1",
|
||||||
"qrcode.vue": "3.4.1",
|
"qrcode.vue": "3.4.1",
|
||||||
"quasar": "2.13.0",
|
"quasar": "2.14.3",
|
||||||
"vue": "3.3.9",
|
"vue": "3.4.15",
|
||||||
"vue3-apexcharts": "1.4.4",
|
"vue3-apexcharts": "1.4.4",
|
||||||
"vuedraggable": "4.1.0",
|
"vuedraggable": "4.1.0",
|
||||||
"vue-router": "4.2.5",
|
"vue-router": "4.2.5",
|
||||||
"@vueuse/core": "10.6.1",
|
"@vueuse/core": "10.7.2",
|
||||||
"@vueuse/shared": "10.6.1",
|
"@vueuse/shared": "10.7.2",
|
||||||
"monaco-editor": "0.44.0",
|
"monaco-editor": "0.45.0",
|
||||||
"vuex": "4.1.0",
|
"vuex": "4.1.0",
|
||||||
"yaml": "2.3.4"
|
"yaml": "2.3.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@quasar/cli": "2.3.0",
|
"@quasar/cli": "2.3.0",
|
||||||
"@intlify/unplugin-vue-i18n": "1.5.0",
|
"@intlify/unplugin-vue-i18n": "2.0.0",
|
||||||
"@quasar/app-vite": "1.6.2",
|
"@quasar/app-vite": "1.7.3",
|
||||||
"@types/node": "20.10.0",
|
"@types/node": "20.11.6",
|
||||||
"@typescript-eslint/eslint-plugin": "6.13.1",
|
"@typescript-eslint/eslint-plugin": "6.19.1",
|
||||||
"@typescript-eslint/parser": "6.13.1",
|
"@typescript-eslint/parser": "6.19.1",
|
||||||
"autoprefixer": "10.4.16",
|
"autoprefixer": "10.4.17",
|
||||||
"eslint": "8.54.0",
|
"eslint": "8.56.0",
|
||||||
"eslint-config-prettier": "9.0.0",
|
"eslint-config-prettier": "9.1.0",
|
||||||
"eslint-plugin-vue": "8.7.1",
|
"eslint-plugin-vue": "8.7.1",
|
||||||
"prettier": "3.1.0",
|
"prettier": "3.2.4",
|
||||||
"typescript": "5.3.2"
|
"typescript": "5.3.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -267,7 +267,11 @@ export default {
|
|||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
|
|
||||||
const serial_number = computed(() => {
|
const serial_number = computed(() => {
|
||||||
|
if (summary.value.plat === "windows") {
|
||||||
return summary.value.wmi_detail.bios?.[0]?.[0]?.SerialNumber;
|
return summary.value.wmi_detail.bios?.[0]?.[0]?.SerialNumber;
|
||||||
|
} else {
|
||||||
|
return summary.value.wmi_detail.serialnumber;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const cpu = computed(() => {
|
const cpu = computed(() => {
|
||||||
@@ -280,7 +284,7 @@ export default {
|
|||||||
function diskBarColor(percent) {
|
function diskBarColor(percent) {
|
||||||
if (percent < 80) {
|
if (percent < 80) {
|
||||||
return dash_positive_color.value;
|
return dash_positive_color.value;
|
||||||
} else if (percent > 80 && percent < 95) {
|
} else if (percent >= 80 && percent < 95) {
|
||||||
return dash_warning_color.value;
|
return dash_warning_color.value;
|
||||||
} else {
|
} else {
|
||||||
return dash_negative_color.value;
|
return dash_negative_color.value;
|
||||||
@@ -315,7 +319,7 @@ export default {
|
|||||||
);
|
);
|
||||||
if (
|
if (
|
||||||
definition &&
|
definition &&
|
||||||
!definition.hide_in_ui &&
|
!definition.hide_in_summary &&
|
||||||
customField.value?.length > 0
|
customField.value?.length > 0
|
||||||
) {
|
) {
|
||||||
ret.push({
|
ret.push({
|
||||||
|
|||||||
@@ -137,7 +137,7 @@
|
|||||||
<q-radio
|
<q-radio
|
||||||
v-model="goarch"
|
v-model="goarch"
|
||||||
:val="GOARCH_ARM64"
|
:val="GOARCH_ARM64"
|
||||||
label="Apple Silicon (M1, M2)"
|
label="Apple Silicon (M1, M2, M3)"
|
||||||
v-show="agentOS === 'darwin'"
|
v-show="agentOS === 'darwin'"
|
||||||
/>
|
/>
|
||||||
<q-radio
|
<q-radio
|
||||||
|
|||||||
@@ -142,6 +142,11 @@
|
|||||||
v-model="localField.hide_in_ui"
|
v-model="localField.hide_in_ui"
|
||||||
color="green"
|
color="green"
|
||||||
/>
|
/>
|
||||||
|
<q-toggle
|
||||||
|
label="Hide in Summary Tab"
|
||||||
|
v-model="localField.hide_in_summary"
|
||||||
|
color="green"
|
||||||
|
/>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
<q-card-actions align="right">
|
<q-card-actions align="right">
|
||||||
<q-btn flat label="Cancel" v-close-popup />
|
<q-btn flat label="Cancel" v-close-popup />
|
||||||
@@ -172,6 +177,7 @@ export default {
|
|||||||
default_value_bool: false,
|
default_value_bool: false,
|
||||||
default_values_multiple: [],
|
default_values_multiple: [],
|
||||||
hide_in_ui: false,
|
hide_in_ui: false,
|
||||||
|
hide_in_summary: false,
|
||||||
},
|
},
|
||||||
modelOptions: [
|
modelOptions: [
|
||||||
{ label: "Client", value: "client" },
|
{ label: "Client", value: "client" },
|
||||||
|
|||||||
@@ -57,6 +57,10 @@
|
|||||||
<q-td>
|
<q-td>
|
||||||
<q-icon v-if="props.row.hide_in_ui" name="check" />
|
<q-icon v-if="props.row.hide_in_ui" name="check" />
|
||||||
</q-td>
|
</q-td>
|
||||||
|
<!-- hide in summary tab -->
|
||||||
|
<q-td>
|
||||||
|
<q-icon v-if="props.row.hide_in_summary" name="check" />
|
||||||
|
</q-td>
|
||||||
<!-- default value -->
|
<!-- default value -->
|
||||||
<q-td v-if="props.row.type === 'checkbox'">
|
<q-td v-if="props.row.type === 'checkbox'">
|
||||||
{{ props.row.default_value_bool }}
|
{{ props.row.default_value_bool }}
|
||||||
@@ -123,6 +127,13 @@ export default {
|
|||||||
align: "left",
|
align: "left",
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "hide_in_summary",
|
||||||
|
label: "Hide in Summary Tab",
|
||||||
|
field: "hide_in_summary",
|
||||||
|
align: "left",
|
||||||
|
sortable: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "default_value",
|
name: "default_value",
|
||||||
label: "Default Value",
|
label: "Default Value",
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
icon="info"
|
icon="info"
|
||||||
@click="
|
@click="
|
||||||
openURL(
|
openURL(
|
||||||
'https://quasar.dev/quasar-utils/date-utils#format-for-display'
|
'https://quasar.dev/quasar-utils/date-utils#format-for-display',
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@@ -216,7 +216,7 @@
|
|||||||
<div class="text-subtitle2">SMTP Settings</div>
|
<div class="text-subtitle2">SMTP Settings</div>
|
||||||
<q-separator />
|
<q-separator />
|
||||||
<q-card-section class="row">
|
<q-card-section class="row">
|
||||||
<div class="col-2">From:</div>
|
<div class="col-2">From email:</div>
|
||||||
<div class="col-4"></div>
|
<div class="col-4"></div>
|
||||||
<q-input
|
<q-input
|
||||||
outlined
|
outlined
|
||||||
@@ -226,6 +226,16 @@
|
|||||||
:rules="[(val) => isValidEmail(val) || 'Invalid email']"
|
:rules="[(val) => isValidEmail(val) || 'Invalid email']"
|
||||||
/>
|
/>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
|
<q-card-section class="row">
|
||||||
|
<div class="col-2">From name:</div>
|
||||||
|
<div class="col-4"></div>
|
||||||
|
<q-input
|
||||||
|
outlined
|
||||||
|
dense
|
||||||
|
v-model="settings.smtp_from_name"
|
||||||
|
class="col-6 q-pa-none"
|
||||||
|
/>
|
||||||
|
</q-card-section>
|
||||||
<q-card-section class="row">
|
<q-card-section class="row">
|
||||||
<div class="col-2">Host:</div>
|
<div class="col-2">Host:</div>
|
||||||
<div class="col-4"></div>
|
<div class="col-4"></div>
|
||||||
@@ -711,13 +721,13 @@ export default {
|
|||||||
},
|
},
|
||||||
removeEmail(email) {
|
removeEmail(email) {
|
||||||
const removed = this.settings.email_alert_recipients.filter(
|
const removed = this.settings.email_alert_recipients.filter(
|
||||||
(k) => k !== email
|
(k) => k !== email,
|
||||||
);
|
);
|
||||||
this.settings.email_alert_recipients = removed;
|
this.settings.email_alert_recipients = removed;
|
||||||
},
|
},
|
||||||
removeSMSNumber(num) {
|
removeSMSNumber(num) {
|
||||||
const removed = this.settings.sms_alert_recipients.filter(
|
const removed = this.settings.sms_alert_recipients.filter(
|
||||||
(k) => k !== num
|
(k) => k !== num,
|
||||||
);
|
);
|
||||||
this.settings.sms_alert_recipients = removed;
|
this.settings.sms_alert_recipients = removed;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<q-dialog ref="dialog" @hide="onHide">
|
<q-dialog ref="dialog" @hide="onHide">
|
||||||
<q-card class="q-dialog-plugin" style="min-width: 85vh">
|
<q-card class="q-dialog-plugin" style="min-width: 60vw">
|
||||||
<q-splitter v-model="splitterModel">
|
<q-splitter v-model="splitterModel">
|
||||||
<template v-slot:before>
|
<template v-slot:before>
|
||||||
<q-tabs dense v-model="tab" vertical class="text-primary">
|
<q-tabs dense v-model="tab" vertical class="text-primary">
|
||||||
@@ -201,7 +201,7 @@
|
|||||||
icon="info"
|
icon="info"
|
||||||
@click="
|
@click="
|
||||||
openURL(
|
openURL(
|
||||||
'https://quasar.dev/quasar-utils/date-utils#format-for-display'
|
'https://quasar.dev/quasar-utils/date-utils#format-for-display',
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@@ -315,7 +315,7 @@ export default {
|
|||||||
this.$axios.get("/core/urlaction/").then((r) => {
|
this.$axios.get("/core/urlaction/").then((r) => {
|
||||||
if (r.data.length === 0) {
|
if (r.data.length === 0) {
|
||||||
this.notifyWarning(
|
this.notifyWarning(
|
||||||
"No URL Actions configured. Go to Settings > Global Settings > URL Actions"
|
"No URL Actions configured. Go to Settings > Global Settings > URL Actions",
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,7 +178,8 @@
|
|||||||
|
|
||||||
<!-- is community script icon -->
|
<!-- is community script icon -->
|
||||||
<img
|
<img
|
||||||
v-if="props.row.script_type === 'builtin'"
|
v-if="props.node.script_type === 'builtin'"
|
||||||
|
class="vertical-middle"
|
||||||
:src="trmmLogo"
|
:src="trmmLogo"
|
||||||
style="height: 20px; max-width: 20px"
|
style="height: 20px; max-width: 20px"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -8,8 +8,25 @@
|
|||||||
<q-tooltip class="bg-white text-primary">Close</q-tooltip>
|
<q-tooltip class="bg-white text-primary">Close</q-tooltip>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
</q-bar>
|
</q-bar>
|
||||||
<q-card-section class="scroll" style="max-height: 70vh; height: 70vh">
|
<q-card-section style="height: 70vh" class="scroll">
|
||||||
<pre v-if="ret">{{ ret }}</pre>
|
<div>
|
||||||
|
Run Time:
|
||||||
|
<code>{{ ret.execution_time }} seconds</code>
|
||||||
|
<br />Return Code:
|
||||||
|
<code>{{ ret.retcode }}</code>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div v-if="ret.stdout">
|
||||||
|
Standard Output
|
||||||
|
<q-separator />
|
||||||
|
<pre>{{ ret.stdout }}</pre>
|
||||||
|
</div>
|
||||||
|
<div v-if="ret.stderr">
|
||||||
|
Standard Error
|
||||||
|
<q-separator />
|
||||||
|
<pre>{{ ret.stderr }}</pre>
|
||||||
|
</div>
|
||||||
<q-inner-loading :showing="loading" />
|
<q-inner-loading :showing="loading" />
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
</q-card>
|
</q-card>
|
||||||
@@ -34,7 +51,12 @@ export default {
|
|||||||
const { dialogRef, onDialogHide } = useDialogPluginComponent();
|
const { dialogRef, onDialogHide } = useDialogPluginComponent();
|
||||||
|
|
||||||
// main run script functionality
|
// main run script functionality
|
||||||
const ret = ref(null);
|
const ret = ref({
|
||||||
|
execution_time: "",
|
||||||
|
retcode: "",
|
||||||
|
stdout: "",
|
||||||
|
stderr: "",
|
||||||
|
});
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
|
|
||||||
async function runTestScript() {
|
async function runTestScript() {
|
||||||
|
|||||||
@@ -25,8 +25,8 @@
|
|||||||
If you have downgraded or cancelled your sponsorship, please delete
|
If you have downgraded or cancelled your sponsorship, please delete
|
||||||
your token from the Code Signing modal and refresh to get rid of this
|
your token from the Code Signing modal and refresh to get rid of this
|
||||||
banner.<br /><br />
|
banner.<br /><br />
|
||||||
For any issues or to renew your sponsorship please email
|
For any issues or to renew your sponsorship please open a ticket at
|
||||||
support@amidaware.com<br /><br
|
support.amidaware.com<br /><br
|
||||||
/></span>
|
/></span>
|
||||||
<q-btn
|
<q-btn
|
||||||
color="dark"
|
color="dark"
|
||||||
|
|||||||
@@ -63,6 +63,7 @@
|
|||||||
autofocus
|
autofocus
|
||||||
outlined
|
outlined
|
||||||
v-model="credentials.twofactor"
|
v-model="credentials.twofactor"
|
||||||
|
autocomplete="one-time-code"
|
||||||
:rules="[
|
:rules="[
|
||||||
(val) =>
|
(val) =>
|
||||||
(val && val.length > 0) || 'This field is required',
|
(val && val.length > 0) || 'This field is required',
|
||||||
|
|||||||
Reference in New Issue
Block a user