diff --git a/src/App.vue b/src/App.vue index 2087333..9cf7df4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -9,6 +9,9 @@ export default { \ No newline at end of file diff --git a/src/api/accounts.js b/src/api/accounts.js index 1dc01fc..3ca976a 100644 --- a/src/api/accounts.js +++ b/src/api/accounts.js @@ -7,16 +7,38 @@ export async function fetchUsers(params = {}) { try { const { data } = await axios.get(`${baseUrl}/users/`, { params: params }) return data - } catch (e) { } + } catch (e) { console.error(e) } } +// role api function +export async function fetchRoles(params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/roles/`, { params: params }) + return data + } catch (e) { console.error(e) } +} + +export async function removeRole(id) { + const { data } = await axios.delete(`${baseUrl}/roles/${id}/`) + return data +} + +export async function saveRole(payload) { + const { data } = await axios.post(`${baseUrl}/roles/`, payload) + return data +} + +export async function editRole(id, payload) { + const { data } = await axios.put(`${baseUrl}/roles/${id}/`, payload) + return data +} // api key api functions export async function fetchAPIKeys(params = {}) { try { const { data } = await axios.get(`${baseUrl}/apikeys/`, { params: params }) return data - } catch (e) { } + } catch (e) { console.error(e) } } export async function saveAPIKey(payload) { diff --git a/src/api/agents.js b/src/api/agents.js index 4069ceb..b161b5f 100644 --- a/src/api/agents.js +++ b/src/api/agents.js @@ -2,30 +2,115 @@ import axios from "axios" const baseUrl = "/agents" -export async function fetchAgents() { +export async function fetchAgents(params = {}) { try { - const { data } = await axios.get(`${baseUrl}/listagentsnodetail/`) + const { data } = await axios.get(`${baseUrl}/`, { params: params }) return data - } catch (e) { } + } catch (e) { + console.error(e) + } } -export async function fetchAgentHistory(pk) { +export async function fetchAgent(agent_id, params = {}) { try { - const { data } = await axios.get(`${baseUrl}/history/${pk}/`) + const { data } = await axios.get(`${baseUrl}/${agent_id}/`, { params: params }) return data - } catch (e) { } + } catch (e) { console.error(e) } } -export async function runScript(payload) { +export async function fetchAgentHistory(agent_id, params = {}) { try { - const { data } = await axios.post(`${baseUrl}/runscript/`, payload) + const { data } = await axios.get(`${baseUrl}/${agent_id}/history/`, { params: params }) return data - } catch (e) { } + } catch (e) { console.error(e) } +} + +export async function fetchAgentChecks(agent_id, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/checks/`, { params: params }) + return data + } catch (e) { console.error(e) } +} + +export async function fetchAgentTasks(agent_id, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/tasks/`, { params: params }) + return data + } catch (e) { console.error(e) } +} + + +export async function refreshAgentWMI(agent_id) { + const { data } = await axios.post(`${baseUrl}/${agent_id}/wmi/`) + return data +} + +export async function runScript(agent_id, payload) { + const { data } = await axios.post(`${baseUrl}/${agent_id}/runscript/`, payload) + return data } export async function runBulkAction(payload) { - - const { data } = await axios.post("/agents/bulk/", payload) + const { data } = await axios.post(`${baseUrl}/bulk/`, payload) return data +} -} \ No newline at end of file +export async function fetchAgentProcesses(agent_id, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/processes/`, { params: params }) + return data + } catch (e) { + console.error(e) + } +} + +export async function killAgentProcess(agent_id, pid, params = {}) { + const { data } = await axios.delete(`${baseUrl}/${agent_id}/processes/${pid}/`, { params: params }) + return data +} + +export async function fetchAgentEventLog(agent_id, logType, days, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/eventlog/${logType}/${days}/`, { params: params }) + return data + } catch (e) { + console.error(e) + } +} + +export async function fetchAgentMeshCentralURLs(agent_id, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/meshcentral/`, { params: params }) + return data + } catch (e) { + console.error(e) + } +} + +export async function sendAgentRecoverMesh(agent_id, params = {}) { + const { data } = await axios.post(`${baseUrl}/${agent_id}/meshcentral/recover/`, { params: params }) + return data +} + +// agent notes +export async function fetchAgentNotes(agent_id, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/notes/`, { params: params }) + return data + } catch (e) { console.error(e) } +} + +export async function saveAgentNote(payload) { + const { data } = await axios.post(`${baseUrl}/notes/`, payload) + return data +} + +export async function editAgentNote(pk, payload) { + const { data } = await axios.put(`${baseUrl}/notes/${pk}/`, payload) + return data +} + +export async function removeAgentNote(pk) { + const { data } = await axios.delete(`${baseUrl}/notes/${pk}/`) + return data +} diff --git a/src/api/checks.js b/src/api/checks.js new file mode 100644 index 0000000..ec5436a --- /dev/null +++ b/src/api/checks.js @@ -0,0 +1,32 @@ +import axios from "axios" + +const baseUrl = "/checks" + +export async function fetchChecks(params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/`, { params: params }) + return data + } catch (e) { + console.error(e) + } +} + +export async function saveCheck(payload) { + const { data } = await axios.post(`${baseUrl}/`, payload) + return data +} + +export async function updateCheck(id, payload) { + const { data } = await axios.put(`${baseUrl}/${id}/`, payload) + return data +} + +export async function removeCheck(id) { + const { data } = await axios.delete(`${baseUrl}/${id}/`) + return data +} + +export async function resetCheck(id) { + const { data } = await axios.post(`${baseUrl}/${id}/reset/`) + return data +} \ No newline at end of file diff --git a/src/api/clients.js b/src/api/clients.js index a6a8ff2..04fc59c 100644 --- a/src/api/clients.js +++ b/src/api/clients.js @@ -6,12 +6,12 @@ export async function fetchClients() { try { const { data } = await axios.get(`${baseUrl}/clients/`) return data - } catch (e) { } + } catch (e) { console.error(e) } } export async function fetchSites() { try { const { data } = await axios.get(`${baseUrl}/sites/`) return data - } catch (e) { } + } catch (e) { console.error(e) } } \ No newline at end of file diff --git a/src/api/core.js b/src/api/core.js index 8bb6a56..6e61e56 100644 --- a/src/api/core.js +++ b/src/api/core.js @@ -2,7 +2,7 @@ import axios from "axios" const baseUrl = "/core" -export async function fetchCustomFields(params) { +export async function fetchCustomFields(params = {}) { try { const { data } = await axios.get(`${baseUrl}/customfields/`, { params: params }) return data @@ -12,4 +12,9 @@ export async function fetchCustomFields(params) { export async function uploadMeshAgent(payload) { const { data } = await axios.put(`${baseUrl}/uploadmesh/`, payload) return data +} + +export async function fetchDashboardInfo(params = {}) { + const { data } = await axios.get(`${baseUrl}/dashinfo/`, { params: params }) + return data } \ No newline at end of file diff --git a/src/api/scripts.js b/src/api/scripts.js index 192bdb6..62b5b70 100644 --- a/src/api/scripts.js +++ b/src/api/scripts.js @@ -10,9 +10,9 @@ export async function fetchScripts(params = {}) { } catch (e) { } } -export async function testScript(payload) { +export async function testScript(agent_id, payload) { try { - const { data } = await axios.post(`${baseUrl}/testscript/`, payload) + const { data } = await axios.post(`${baseUrl}/${agent_id}/test/`, payload) return data } catch (e) { } } @@ -34,7 +34,7 @@ export async function removeScript(id) { export async function downloadScript(id, params = {}) { try { - const { data } = await axios.get(`${baseUrl}/download/${id}/`, { params: params }) + const { data } = await axios.get(`${baseUrl}/${id}/download/`, { params: params }) return data } catch (e) { } } diff --git a/src/api/services.js b/src/api/services.js new file mode 100644 index 0000000..ddd9a04 --- /dev/null +++ b/src/api/services.js @@ -0,0 +1,31 @@ +import axios from "axios" + +const baseUrl = "/services" + +export async function getAgentServices(agent_id, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/`, { params: params }) + return data + } catch (e) { + console.error(e) + } +} + +export async function getAgentServiceDetails(agent_id, svcname, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/${svcname}/`, { params: params }) + return data + } catch (e) { + console.error(e) + } +} + +export async function editAgentServiceStartType(agent_id, svcname, payload) { + const { data } = await axios.put(`${baseUrl}/${agent_id}/${svcname}/`, payload) + return data +} + +export async function sendAgentServiceAction(agent_id, svcname, payload) { + const { data } = await axios.post(`${baseUrl}/${agent_id}/${svcname}/`, payload) + return data +} diff --git a/src/api/software.js b/src/api/software.js new file mode 100644 index 0000000..22c525e --- /dev/null +++ b/src/api/software.js @@ -0,0 +1,35 @@ +import axios from "axios" + +const baseUrl = "/software" + +export async function fetchChocosSoftware(params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/chocos/`, { params: params }) + return data + } catch (e) { + console.error(e) + } +} + +export async function fetchAgentSoftware(agent_id, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/`, { params: params }) + return data.software + } catch (e) { + console.error(e) + } +} + +export async function installAgentSoftware(agent_id, payload) { + const { data } = await axios.post(`${baseUrl}/${agent_id}/`, payload) + return data +} + +export async function refreshAgentSoftware(agent_id) { + try { + const { data } = await axios.put(`${baseUrl}/${agent_id}/`) + return data + } catch (e) { + console.error(e) + } +} \ No newline at end of file diff --git a/src/api/tasks.js b/src/api/tasks.js new file mode 100644 index 0000000..5d7eb33 --- /dev/null +++ b/src/api/tasks.js @@ -0,0 +1,32 @@ +import axios from "axios" + +const baseUrl = "/tasks" + +export async function fetchTasks(params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/`, { params: params }) + return data + } catch (e) { + console.error(e) + } +} + +export async function saveTasks(payload) { + const { data } = await axios.post(`${baseUrl}/`, payload) + return data +} + +export async function updateTask(id, payload) { + const { data } = await axios.put(`${baseUrl}/${id}/`, payload) + return data +} + +export async function removeTask(id) { + const { data } = await axios.delete(`${baseUrl}/${id}/`) + return data +} + +export async function runTask(id) { + const { data } = await axios.post(`${baseUrl}/${id}/run/`) + return data +} \ No newline at end of file diff --git a/src/api/winupdates.js b/src/api/winupdates.js new file mode 100644 index 0000000..50e9734 --- /dev/null +++ b/src/api/winupdates.js @@ -0,0 +1,22 @@ +import axios from "axios" + +const baseUrl = "/winupdate" + +// win updates api functions +export async function fetchAgentUpdates(agent_id, params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/${agent_id}/`, { params: params }) + return data + } catch (e) { console.error(e) } +} + +export async function runAgentUpdateScan(agent_id) { + const { data } = await axios.post(`${baseUrl}/${agent_id}/scan/`) + return data + +} + +export async function editAgentUpdate(id, payload) { + const { data } = await axios.put(`${baseUrl}/${id}/`, payload) + return data +} diff --git a/src/boot/axios.js b/src/boot/axios.js index 6cf263f..ee1e4c9 100644 --- a/src/boot/axios.js +++ b/src/boot/axios.js @@ -35,15 +35,12 @@ export default function ({ app, router, store }) { function (response) { return response; }, - function (error) { + async function (error) { let text if (!error.response) { text = error.message } - else if (error.config.url === "/checkcreds/") { - text = "Bad credentials" - } // unauthorized else if (error.response.status === 401) { router.push({ path: "/expired" }); @@ -52,9 +49,14 @@ export default function ({ app, router, store }) { else if (error.response.status === 403) { text = error.response.data.detail; } - else if (error.response.status === 400) { + // catch all for other 400 error messages + else if (error.response.status >= 400 && error.response.status < 500) { - if (error.response.data.non_field_errors) { + if (error.config.responseType === "blob") { + text = (await error.response.data.text()).replace(/^"|"$/g, '') + } + + else if (error.response.data.non_field_errors) { text = error.response.data.non_field_errors[0] } else { @@ -65,13 +67,6 @@ export default function ({ app, router, store }) { text = key + ": " + value[0] } } - - } - else if (error.response.status === 406) { - text = "Missing 64 bit meshagent.exe. Upload it from Settings > Global Settings > MeshCentral" - } - else if (error.response.status === 415) { - text = "Missing 32 bit meshagent-x86.exe. Upload it from Settings > Global Settings > MeshCentral" } if (text || error.response) { diff --git a/src/components/AgentTable.vue b/src/components/AgentTable.vue index 38febfe..c9d71aa 100644 --- a/src/components/AgentTable.vue +++ b/src/components/AgentTable.vue @@ -1,5 +1,5 @@