diff options
-rw-r--r-- | src/assets/javascripts/search.js | 93 | ||||
-rw-r--r-- | src/pages/options/index.html | 106 | ||||
-rw-r--r-- | src/pages/options/widgets/search.js | 101 | ||||
-rw-r--r-- | src/pages/options/widgets/search.pug | 43 |
4 files changed, 304 insertions, 39 deletions
diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js index 5a91ff89..93bb10ae 100644 --- a/src/assets/javascripts/search.js +++ b/src/assets/javascripts/search.js @@ -5,8 +5,12 @@ import utils from './utils.js' const targets = [ /^https?:\/{2}search\.libredirect\.invalid/, ]; +// Ill optimise all of assets/javascripts at a later date. For now, I'll just add librex and optimse options javascript +const frontends = new Array("searx", "searxng", "whoogle", "librex") +const protocols = new Array("normal", "tor", "i2p") -let redirects = { +const redirects = {} + /* "searx": { "normal": [], "tor": [], @@ -22,7 +26,27 @@ let redirects = { "tor": [], "i2p": [] } -}; + */ +//}; + +//let tmp = "{" + +for (let i = 0; i < frontends.length; i++) { + //redirects.frontends[i] = {} + //redirects.push(frontends[i]) + //tmp = frontends[i] + //tmp = tmp + '\n"' + frontends[i] + '": {' + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + //redirects.frontends[i].protocols = [] + //tmp = tmp + '\n"' + protocols[x] + '": [],' + redirects[frontends[i]][protocols[x]] = [] + } + //tmp = tmp + "\n}," +} +//tmp = tmp + "\n}" + +//const redirects = JSON.parse(tmp) function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { @@ -30,6 +54,7 @@ function setRedirects(val) { searxNormalRedirectsChecks = [...redirects.searx.normal]; searxngNormalRedirectsChecks = [...redirects.searxng.normal]; whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; + librexNormalRedirectsChecks = [...redirects.librex.normal]; for (const instance of r.cloudflareBlackList) { const a = searxNormalRedirectsChecks.indexOf(instance); if (a > -1) searxNormalRedirectsChecks.splice(a, 1); @@ -39,12 +64,16 @@ function setRedirects(val) { const c = whoogleNormalRedirectsChecks.indexOf(instance); if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1); + + const d = librexNormalRedirectsChecks.indexOf(instance); + if (c > -1) librexNormalRedirectsChecks.splice(d, 1); } browser.storage.local.set({ searchRedirects: redirects, searxNormalRedirectsChecks, searxngNormalRedirectsChecks, whoogleNormalRedirectsChecks, + librexNormalRedirectsChecks, }); }) } @@ -71,7 +100,13 @@ let searxngTorRedirectsChecks, searxngTorCustomRedirects, searxngI2pRedirectsChecks, - searxngI2pCustomRedirects; + searxngI2pCustomRedirects, + librexNormalRedirectsChecks, + librexNormalCustomRedirects, + librexTorRedirectsChecks, + librexTorCustomRedirects, + librexI2pRedirectsChecks, + librexI2pCustomRedirects; function init() { return new Promise(async resolve => { @@ -99,6 +134,12 @@ function init() { "searxngTorCustomRedirects", "searxngI2pRedirectsChecks", "searxngI2pCustomRedirects", + "librexNormalRedirectsChecks", + "librexNormalCustomRedirects", + "librexTorRedirectsChecks", + "librexTorCustomRedirects", + "librexI2pRedirectsChecks", + "librexI2pCustomRedirects" ], r => { disableSearch = r.disableSearch; @@ -123,6 +164,12 @@ function init() { searxngTorCustomRedirects = r.searxngTorCustomRedirects; searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks; searxngI2pCustomRedirects = r.searxngI2pCustomRedirects; + librexNormalRedirectsChecks = r.librexNormalRedirectsChecks; + librexNormalCustomRedirects = r.librexNormalCustomRedirects; + librexTorRedirectsChecks = r.librexTorRedirectsChecks; + librexTorCustomRedirects = r.librexTorCustomRedirects; + librexI2pRedirectsChecks = r.librexI2pRedirectsChecks; + librexI2pCustomRedirects = r.librexI2pCustomRedirects; resolve(); } ) @@ -307,6 +354,14 @@ function redirect(url, disableOverride) { randomInstance = utils.getRandomInstance(instancesList) path = "/search"; } + else if (searchFrontend == 'librex') { + let instancesList; + if (searchProtocol == 'normal') instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; + if (searchProtocol == 'tor') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; + if (searchProtocol == 'i2p') instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; + randomInstance = utils.getRandomInstance(instancesList) + path = "/search.php"; + } if ( ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) || @@ -345,6 +400,10 @@ function switchInstance(url, disableOverride) { ...searchRedirects.whoogle.tor, ...searchRedirects.whoogle.i2p, + ...searchRedirects.librex.normal, + ...searchRedirects.librex.tor, + ...searchRedirects.librex.i2p, + ...searxNormalCustomRedirects, ...searxTorCustomRedirects, ...searxI2pCustomRedirects, @@ -356,6 +415,10 @@ function switchInstance(url, disableOverride) { ...whoogleNormalCustomRedirects, ...whoogleTorCustomRedirects, ...whoogleI2pCustomRedirects, + + ...librexNormalCustomRedirects, + ...librexTorCustomRedirects, + ...librexI2pCustomRedirects, ].includes(protocolHost)) { resolve(); return; } let instancesList; @@ -363,16 +426,19 @@ function switchInstance(url, disableOverride) { if (searchFrontend == 'searx') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; else if (searchFrontend == 'searxng') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; else if (searchFrontend == 'whoogle') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]; + else if (searchFrontend == 'librex') instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; } else if (searchProtocol == 'tor') { if (searchFrontend == 'searx') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; else if (searchFrontend == 'searxng') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; else if (searchFrontend == 'whoogle') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]; + else if (searchFrontend == 'librex') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; } else if (searchProtocol == 'i2p') { if (searchFrontend == 'searx') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]; else if (searchFrontend == 'searxng') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]; else if (searchFrontend == 'whoogle') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects]; + else if (searchFrontend == 'librex') instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; } const i = instancesList.indexOf(protocolHost); @@ -388,14 +454,20 @@ function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); + /* redirects.searx = dataJson.searx; redirects.searxng = dataJson.searxng; redirects.whoogle = dataJson.whoogle; + */ + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; searxNormalRedirectsChecks = [...redirects.searx.normal]; searxngNormalRedirectsChecks = [...redirects.searxng.normal]; + librexNormalRedirectsChecks = [...redirects.librex.normal]; for (const instance of r.cloudflareBlackList) { let i; @@ -407,6 +479,9 @@ function initDefaults() { i = searxngNormalRedirectsChecks.indexOf(instance); if (i > -1) searxngNormalRedirectsChecks.splice(i, 1); + + i = librexNormalRedirectsChecks.indexOf(instance); + if (i > -1) librexNormalRedirectsChecks.splice(i, 1) } browser.storage.local.set({ disableSearch: false, @@ -424,6 +499,7 @@ function initDefaults() { whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], whoogleI2pCustomRedirects: [], + searxNormalRedirectsChecks: searxNormalRedirectsChecks, searxNormalCustomRedirects: [], @@ -433,6 +509,7 @@ function initDefaults() { searxI2pRedirectsChecks: [...redirects.searx.i2p], searxI2pCustomRedirects: [], + searxngNormalRedirectsChecks: searxngNormalRedirectsChecks, searxngNormalCustomRedirects: [], @@ -441,6 +518,16 @@ function initDefaults() { searxngI2pRedirectsChecks: [...redirects.searxng.i2p], searxngI2pCustomRedirects: [], + + + librexNormalRedirectsChecks: librexNormalRedirectsChecks, + librexNormalCustomRedirects: [], + + librexTorRedirectsChecks: librexTorRedirectsChecks, + librexTorCustomRedirects: [], + + librexI2pRedirectsChecks: librexI2pRedirectsChecks, + librexI2pCustomRedirects: [] }, () => resolve()) }) }) diff --git a/src/pages/options/index.html b/src/pages/options/index.html index 241a20e7..80c2a039 100644 --- a/src/pages/options/index.html +++ b/src/pages/options/index.html @@ -1502,20 +1502,19 @@ <option value="searxng">SearXNG</option> <option value="searx">SearX</option> <option value="whoogle">Whoogle</option> + <option value="librex">LibreX</option> </select> </div> - <div id="searx-whoogle"> - <div class="some-block option-block"> - <h4 data-localise="__MSG_protocol__">Protocol</h4> - <select id="search-protocol"> - <option value="normal" data-localise="__MSG_normal__">Normal</option> - <option value="tor" data-localise="__MSG_tor__">Tor</option> - <option value="i2p" data-localise="__MSG_i2p__">I2P</option> - </select> - </div> + <div class="some-block option-block"> + <h4 data-localise="__MSG_protocol__">Protocol</h4> + <select id="search-protocol"> + <option value="normal" data-localise="__MSG_normal__">Normal</option> + <option value="tor" data-localise="__MSG_tor__">Tor</option> + <option value="i2p" data-localise="__MSG_i2p__">I2P</option> + </select> </div> <div class="some-block"> - <h4 data-localise="__MSG_searchNote__">Note: To use Search to its full potential, make LibRedirect as the Default Search Engine</h4> + <h4 data-localise="__MSG_searchNote__">Note: To use Search, make LibRedirect the Default Search Engine</h4> </div> <div id="searx"> <hr> @@ -1560,7 +1559,7 @@ </div> <form class="custom-instance-form"> <div class="some-block option-block"> - <input class="custom-instance" placeholder="https://searx.onion" type="url"> + <input class="custom-instance" placeholder="http://searx.onion" type="url"> <button class="add add-instance" type="submit"> <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> @@ -1581,7 +1580,7 @@ </div> <form class="custom-instance-form"> <div class="some-block option-block"> - <input class="custom-instance" placeholder="https://searx.i2p" type="url"> + <input class="custom-instance" placeholder="http://searx.i2p" type="url"> <button class="add add-instance" type="submit"> <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> @@ -1635,7 +1634,7 @@ </div> <form class="custom-instance-form"> <div class="some-block option-block"> - <input class="custom-instance" placeholder="https://searxng.onion" type="url"> + <input class="custom-instance" placeholder="http://searxng.onion" type="url"> <button class="add add-instance" type="submit"> <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> @@ -1656,7 +1655,7 @@ </div> <form class="custom-instance-form"> <div class="some-block option-block"> - <input class="custom-instance" placeholder="https://searxng.i2p" type="url"> + <input class="custom-instance" placeholder="http://searxng.i2p" type="url"> <button class="add add-instance" type="submit"> <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> @@ -1710,7 +1709,82 @@ </div> <form class="custom-instance-form"> <div class="some-block option-block"> - <input class="custom-instance" placeholder="https://whoogle.onion" type="url"> + <input class="custom-instance" placeholder="http://whoogle.onion" type="url"> + <button class="add add-instance" type="submit"> + <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> + <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> + </svg> + </button> + </div> + </form> + <div class="checklist custom-checklist"></div> + </div> + <div class="i2p"> + <div class="some-block option-block"> + <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4> + </div> + <div class="checklist"></div> + <hr> + <div class="some-block option-block"> + <h4 data-localise="__MSG_customInstances__">Custom Instances</h4> + </div> + <form class="custom-instance-form"> + <div class="some-block option-block"> + <input class="custom-instance" placeholder="http://whoogle.i2p" type="url"> + <button class="add add-instance" type="submit"> + <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> + <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> + </svg> + </button> + </div> + </form> + <div class="checklist custom-checklist"></div> + </div> + </div> + <div id="librex"> + <hr> + <div class="normal"> + <div class="some-block option-block"> + <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4> + </div> + <div class="checklist"></div> + <hr> + <div class="some-block option-block"> + <h4 data-localise="__MSG_customInstances__">Custom Instances</h4> + </div> + <form class="custom-instance-form"> + <div class="some-block option-block"> + <input class="custom-instance" placeholder="https://librex.com" type="url"> + <button class="add add-instance" type="submit"> + <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> + <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> + </svg> + </button> + </div> + </form> + <div class="checklist custom-checklist"></div> + <div class="buttons buttons-inline"> + <label class="button button-inline" id="latency-librex-label" for="latency-librex"> + <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor"> + <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"></path> + </svg> + <x data-localise="__MSG_testInstancesLatency__">Test Instances Latency</x> + </label> + <input class="button button-inline" id="latency-librex" style="display:none;"> + </div> + </div> + <div class="tor"> + <div class="some-block option-block"> + <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4> + </div> + <div class="checklist"></div> + <hr> + <div class="some-block option-block"> + <h4 data-localise="__MSG_customInstances__">Custom Instances</h4> + </div> + <form class="custom-instance-form"> + <div class="some-block option-block"> + <input class="custom-instance" placeholder="http://librex.onion" type="url"> <button class="add add-instance" type="submit"> <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> @@ -1731,7 +1805,7 @@ </div> <form class="custom-instance-form"> <div class="some-block option-block"> - <input class="custom-instance" placeholder="https://whoogle.i2p" type="url"> + <input class="custom-instance" placeholder="http://librex.i2p" type="url"> <button class="add add-instance" type="submit"> <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> diff --git a/src/pages/options/widgets/search.js b/src/pages/options/widgets/search.js index 62b8bd78..0af37343 100644 --- a/src/pages/options/widgets/search.js +++ b/src/pages/options/widgets/search.js @@ -1,8 +1,39 @@ import utils from "../../../assets/javascripts/utils.js"; +// GOAL: to never mention frontends/protocls outside these two arrays, so that adding a new frontend/protocol is as easy as adding it here. +// This may be expanded across the whole project, where almost everything becomes a template, and the frontend/protocol parts just become a JSON file. + +// ONCE FINISHED: add librex and see if it works +const frontends = new Array("searx", "searxng", "whoogle", "librex") // Add librex once /javascripts/search.js is made agnostic +const protocols = new Array("normal", "tor", "i2p") +//let frontendProtocols = (frontends.length) + +// I will leave comments of my privious attemps so that people can learn from my mistakes. :) + +/* +for (let i = 0; i < frontends.length; i++) { + this.frontends[i] = frontends[i].getElementsByClassName(protocol) +} +*/ + // There was a class here, but I deleted a bit of it + /* + this.searxDiv = searxDiv.getElementsByClassName(protocol)[0]; + this.searxngDiv = searxngDiv.getElementsByClassName(protocol)[0]; + this.librexDiv = librexDiv.getElementsByClassName(protocol)[0]; + */ + +/* + * Here I was trying to solve the issue by making a 2D array, but I later realised I was overcomplicating things +for (var i = 0; i < frontends.length; i++) { + frontendProtocols[i] = new Array(protocols.length) +} +*/ + +/* const searxDiv = document.getElementById("searx"); const searxngDiv = document.getElementById("searxng"); const whoogleDiv = document.getElementById("whoogle"); +*/ const enable = document.getElementById("search-enable"); const frontend = document.getElementById("search-frontend"); @@ -12,28 +43,69 @@ const search = document.getElementById('search_page'); function changeFrontendsSettings() { - let SearxWhoogleElement = document.getElementById("searx-whoogle"); + for (let i = 0; i < frontends.length; i++) { + const frontendDiv = document.getElementById(frontends[i]) + if (frontends[i] == frontend.value) { + frontendDiv.style.display = 'block' + } else { + frontendDiv.style.display = 'none' + } + } + + + /* if (frontend.value == 'searx') { searxDiv.style.display = 'block'; searxngDiv.style.display = 'none'; whoogleDiv.style.display = 'none'; - SearxWhoogleElement.style.display = 'block'; + librexDiv.style.display = 'none'; } else if (frontend.value == 'searxng') { searxDiv.style.display = 'none'; searxngDiv.style.display = 'block'; whoogleDiv.style.display = 'none'; - SearxWhoogleElement.style.display = 'block'; + librexDiv.style.display = 'none'; } else if (frontend.value == 'whoogle') { searxDiv.style.display = 'none'; searxngDiv.style.display = 'none'; whoogleDiv.style.display = 'block'; - SearxWhoogleElement.style.display = 'block'; + librexDiv.style.display = 'none'; } + else if (frontend.value == 'librex') { + searxDiv.style.display = 'none'; + searxDiv.style.display = 'none'; + searxngDiv.style.display = 'none'; + librexDiv.style.display = 'block'; + } + */ } + + function changeProtocolSettings() { + + + for (let i = 0; i < frontends.length; i++) { + const frontendDiv = document.getElementById(frontends[i]) + if (frontends[i] == frontend.value) { // Here we are checking if the frontend matches the current one. This skips the protocol checking for that frontend, speeding things up. + for (let x = 0; x < protocols.length; x++) { + const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0] + if (protocols[x] == protocol.value) { //if the frontend value equals the selected one, it will show. Otherwise, it will be hidden + protocolDiv.style.display = 'block' + } else { + protocolDiv.style.display = 'none' + } + } + } else { + continue + } + } + + + +/* + * "Legacy" code const normalsearxDiv = searxDiv.getElementsByClassName("normal")[0]; const torsearxDiv = searxDiv.getElementsByClassName("tor")[0]; const i2psearxDiv = searxDiv.getElementsByClassName("i2p")[0]; @@ -42,10 +114,18 @@ function changeProtocolSettings() { const torsearxngDiv = searxngDiv.getElementsByClassName("tor")[0]; const i2psearxngDiv = searxngDiv.getElementsByClassName("i2p")[0]; - const normalwhoogleDiv = whoogleDiv.getElementsByClassName("normal")[0]; const torwhoogleDiv = whoogleDiv.getElementsByClassName("tor")[0]; const i2pwhoogleDiv = whoogleDiv.getElementsByClassName("i2p")[0]; + const normalwhoogleDiv = whoogleDiv.getElementsByClassName("normal")[0]; + + + function protocolDisplay(proto) { + proto.searxngDiv = 'block' + } + protocolDisplay(protocol.value) + + if (protocol.value == 'normal') { normalsearxDiv.style.display = 'block'; normalsearxngDiv.style.display = 'block'; @@ -85,6 +165,7 @@ function changeProtocolSettings() { i2psearxngDiv.style.display = 'block'; i2pwhoogleDiv.style.display = 'block'; } + */ } browser.storage.local.get( @@ -103,6 +184,13 @@ browser.storage.local.get( } ); +for (let i = 0; i < frontends.length; i++) { + for (let x = 0; x < protocols.length; x++){ + utils.processDefaultCustomInstances('search', frontends[i], protocols[x], document) + } + utils.latency('search', frontends[i], document, location, true) +} + search.addEventListener("change", () => { browser.storage.local.set({ disableSearch: !enable.checked, @@ -113,6 +201,8 @@ search.addEventListener("change", () => { changeProtocolSettings(protocol.value); }) +/* + * more "legacy" code utils.processDefaultCustomInstances('search', 'searx', 'normal', document); utils.processDefaultCustomInstances('search', 'searx', 'tor', document); utils.processDefaultCustomInstances('search', 'searx', 'i2p', document); @@ -126,3 +216,4 @@ utils.processDefaultCustomInstances('search', 'whoogle', 'i2p', document); utils.latency('search', 'searx', document, location, true) utils.latency('search', 'searxng', document, location, true) utils.latency('search', 'whoogle', document, location, true) +*/ diff --git a/src/pages/options/widgets/search.pug b/src/pages/options/widgets/search.pug index 7e16e74f..ec075f79 100644 --- a/src/pages/options/widgets/search.pug +++ b/src/pages/options/widgets/search.pug @@ -13,17 +13,17 @@ section#search_page.option-block option(value="searxng") SearXNG option(value="searx") SearX option(value="whoogle") Whoogle + option(value="librex") LibreX - #searx-whoogle - .some-block.option-block - h4(data-localise="__MSG_protocol__") Protocol - select#search-protocol - option(value="normal" data-localise="__MSG_normal__") Normal - option(value="tor" data-localise="__MSG_tor__") Tor - option(value="i2p" data-localise="__MSG_i2p__") I2P + .some-block.option-block + h4(data-localise="__MSG_protocol__") Protocol + select#search-protocol + option(value="normal" data-localise="__MSG_normal__") Normal + option(value="tor" data-localise="__MSG_tor__") Tor + option(value="i2p" data-localise="__MSG_i2p__") I2P .some-block - h4(data-localise="__MSG_searchNote__") Note: To use Search to its full potential, make LibRedirect as the Default Search Engine + h4(data-localise="__MSG_searchNote__") Note: To use Search, make LibRedirect the Default Search Engine #searx hr @@ -34,10 +34,10 @@ section#search_page.option-block +latency('searx') .tor include ../../widgets/instances.pug - +instances('https://searx.onion') + +instances('http://searx.onion') .i2p include ../../widgets/instances.pug - +instances('https://searx.i2p') + +instances('http://searx.i2p') #searxng hr @@ -47,10 +47,10 @@ section#search_page.option-block +latency('searxng') .tor include ../../widgets/instances.pug - +instances('https://searxng.onion') + +instances('http://searxng.onion') .i2p include ../../widgets/instances.pug - +instances('https://searxng.i2p') + +instances('http://searxng.i2p') #whoogle hr @@ -60,9 +60,22 @@ section#search_page.option-block +latency('whoogle') .tor include ../../widgets/instances.pug - +instances('https://whoogle.onion') + +instances('http://whoogle.onion') + .i2p + include ../../widgets/instances.pug + +instances('http://whoogle.i2p') + + #librex + hr + .normal + include ../../widgets/instances.pug + +instances('https://librex.com') + +latency('librex') + .tor + include ../../widgets/instances.pug + +instances('http://librex.onion') .i2p include ../../widgets/instances.pug - +instances('https://whoogle.i2p') + +instances('http://librex.i2p') - script(type="module" src="./widgets/search.js") \ No newline at end of file + script(type="module" src="./widgets/search.js") |