Allows users to enable/disable tor from the config menu, which will forward all requests through Tor. Also adds support for setting environment variables for alternative proxy support. Setting the following variables will forward requests through the proxy: - WHOOGLE_PROXY_USER (optional) - WHOOGLE_PROXY_PASS (optional) - WHOOGLE_PROXY_TYPE (required) - Can be "http", "socks4", or "socks5" - WHOOGLE_PROXY_LOC (required) - Format: "<ip address>:<port>" See #30
123 lines
3.5 KiB
JavaScript
123 lines
3.5 KiB
JavaScript
// Whoogle configurations that use boolean values and checkboxes
|
|
CONFIG_BOOLS = [
|
|
"nojs", "dark", "safe", "alts", "new_tab", "get_only", "tor"
|
|
];
|
|
|
|
// Whoogle configurations that use string values and input fields
|
|
CONFIG_STRS = [
|
|
"near", "url"
|
|
];
|
|
|
|
|
|
const setupSearchLayout = () => {
|
|
// Setup search field
|
|
const searchBar = document.getElementById("search-bar");
|
|
const searchBtn = document.getElementById("search-submit");
|
|
|
|
// Automatically focus on search field
|
|
searchBar.focus();
|
|
searchBar.select();
|
|
|
|
searchBar.addEventListener("keyup", function(event) {
|
|
if (event.keyCode === 13) {
|
|
event.preventDefault();
|
|
searchBtn.click();
|
|
} else {
|
|
handleUserInput(searchBar);
|
|
}
|
|
});
|
|
};
|
|
|
|
const fillConfigValues = () => {
|
|
// Request existing config info
|
|
let xhrGET = new XMLHttpRequest();
|
|
xhrGET.open("GET", "/config");
|
|
xhrGET.onload = function() {
|
|
if (xhrGET.readyState === 4 && xhrGET.status !== 200) {
|
|
alert("Error loading Whoogle config");
|
|
return;
|
|
}
|
|
|
|
// Allow for updating/saving config values
|
|
let configSettings = JSON.parse(xhrGET.responseText);
|
|
|
|
CONFIG_STRS.forEach(function(item) {
|
|
let configElement = document.getElementById("config-" + item.replace("_", "-"));
|
|
configElement.value = configSettings[item] ? configSettings[item] : "";
|
|
});
|
|
|
|
CONFIG_BOOLS.forEach(function(item) {
|
|
let configElement = document.getElementById("config-" + item.replace("_", "-"));
|
|
configElement.checked = !!configSettings[item];
|
|
});
|
|
};
|
|
|
|
xhrGET.send();
|
|
};
|
|
|
|
const setupConfigLayout = () => {
|
|
// Setup whoogle config
|
|
const collapsible = document.getElementById("config-collapsible");
|
|
collapsible.addEventListener("click", function() {
|
|
this.classList.toggle("active");
|
|
let content = this.nextElementSibling;
|
|
if (content.style.maxHeight) {
|
|
content.style.maxHeight = null;
|
|
} else {
|
|
content.style.maxHeight = content.scrollHeight + "px";
|
|
}
|
|
|
|
content.classList.toggle("open");
|
|
});
|
|
|
|
fillConfigValues();
|
|
};
|
|
|
|
const loadConfig = event => {
|
|
event.preventDefault();
|
|
let config = prompt("Enter name of config:");
|
|
if (!config) {
|
|
alert("Must specify a name for the config to load");
|
|
return;
|
|
}
|
|
|
|
let xhrPUT = new XMLHttpRequest();
|
|
xhrPUT.open("PUT", "/config?name=" + config + ".conf");
|
|
xhrPUT.onload = function() {
|
|
if (xhrPUT.readyState === 4 && xhrPUT.status !== 200) {
|
|
alert("Error loading Whoogle config");
|
|
return;
|
|
}
|
|
|
|
location.reload(true);
|
|
};
|
|
|
|
xhrPUT.send();
|
|
};
|
|
|
|
const saveConfig = event => {
|
|
event.preventDefault();
|
|
let config = prompt("Enter name for this config:");
|
|
if (!config) {
|
|
alert("Must specify a name for the config to save");
|
|
return;
|
|
}
|
|
|
|
let configForm = document.getElementById("config-form");
|
|
configForm.action = '/config?name=' + config + ".conf";
|
|
configForm.submit();
|
|
};
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
setTimeout(function() {
|
|
document.getElementById("main").style.display = "block";
|
|
}, 100);
|
|
|
|
setupSearchLayout();
|
|
setupConfigLayout();
|
|
|
|
// Focusing on the search input field requires a delay for elements to finish
|
|
// loading (seemingly only on FF)
|
|
setTimeout(function() { document.getElementById("search-bar").focus(); }, 250);
|
|
});
|