Added I2P and Lokinet support for simply translate. (#4)

Co-authored-by: BobIsMyManager <bimmgitsignature.nly8m@simplelogin.co>
Reviewed-on: https://codeberg.org/LibRedirect/libredirect/pulls/4
Co-authored-by: BobIsMyManager <bobismymanager@noreply.codeberg.org>
Co-committed-by: BobIsMyManager <bobismymanager@noreply.codeberg.org>
This commit is contained in:
BobIsMyManager 2022-07-05 22:02:32 +02:00 committed by ManeraKai
parent 72297bf42a
commit 0ea6f3845e
11 changed files with 170 additions and 13 deletions

View File

@ -66,6 +66,12 @@ npm update
npm install
```
If you are modifying any files ending with .pug, the pug cli needs to be installed with the following command (with root privileges):
```
npm install -g pug-cli
```
and then run `./script.sh` to generate pages in the background.
### Build
```
npm run build

View File

@ -26,4 +26,4 @@
"dependencies": {
"buffer": "^6.0.3"
}
}
}

0
script.sh Normal file → Executable file
View File

View File

@ -209,6 +209,9 @@
"i2p": {
"message": "I2P"
},
"loki": {
"message": "Lokinet"
},
"testInstancesLatency": {
"message": "Test Instances Latency"
}

View File

@ -9,7 +9,9 @@ const targets = [
let redirects = {
"simplyTranslate": {
"normal": [],
"tor": []
"tor": [],
"i2p": [],
"loki": []
},
"lingva": {
"normal": [],
@ -26,6 +28,10 @@ let
simplyTranslateNormalCustomRedirects,
simplyTranslateTorRedirectsChecks,
simplyTranslateTorCustomRedirects,
simplyTranslateI2PRedirectsChecks,
simplyTranslateI2PCustomRedirects,
simplyTranslateLokiRedirectsChecks,
simplyTranslateLokiCustomReidrects,
lingvaNormalRedirectsChecks,
lingvaNormalCustomRedirects,
lingvaTorRedirectsChecks,
@ -44,6 +50,10 @@ function init() {
"simplyTranslateNormalCustomRedirects",
"simplyTranslateTorRedirectsChecks",
"simplyTranslateTorCustomRedirects",
"simplyTranslateI2PRedirectsChecks",
"simplyTranslateI2PCustomRedirects",
"simplyTranslateLokiRedirectsChecks",
"simplyTranslateLokiCustomReidrects",
"lingvaNormalRedirectsChecks",
"lingvaNormalCustomRedirects",
@ -59,6 +69,10 @@ function init() {
simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects;
simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks;
simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects;
simplyTranslateI2PRedirectsChecks = r.simplyTranslateI2PRedirectsChecks;
simplyTranslateI2PCustomRedirects = r.simplyTranslateI2PCustomRedirects;
simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks;
simplyTranslateLokiCustomReidrects = r.simplyTranslateLokiCustomReidrects;
lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks;
lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects;
lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks;
@ -84,6 +98,8 @@ function setRedirects(val) {
translateRedirects: redirects,
simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal,
simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor,
simplyTranslateI2PRedirectsChecks: redirects.simplyTranslate.i2p,
simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki,
lingvaNormalRedirectsChecks,
lingvaTorRedirectsChecks: redirects.lingva.tor,
})
@ -148,11 +164,17 @@ function copyPasteSimplyTranslateCookies(test, from) {
...simplyTranslateNormalCustomRedirects,
...simplyTranslateTorRedirectsChecks,
...simplyTranslateTorCustomRedirects,
...simplyTranslateI2PRedirectsChecks,
...simplyTranslateI2PCustomRedirects,
...simplyTranslateLokiRedirectsChecks,
...simplyTranslateLokiCustomReidrects,
].includes(protocolHost)) { resolve(); return; }
if (!test) {
let checkedInstances;
if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
else if (translateProtocol == 'i2p') checkedInstances = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects]
else if (translateProtocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]
await utils.copyCookie('simplyTranslate', from, checkedInstances, 'from_lang');
await utils.copyCookie('simplyTranslate', from, checkedInstances, 'to_lang');
await utils.copyCookie('simplyTranslate', from, checkedInstances, 'tts_enabled');
@ -170,6 +192,8 @@ function pasteSimplyTranslateCookies() {
let checkedInstances;
if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
else if (translateProtocol == 'i2p') checkedInstances = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects]
else if (translateProtocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]
utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'from_lang');
utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'to_lang');
utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'tts_enabled');
@ -187,6 +211,8 @@ function redirect(url, disableOverride) {
let instancesList;
if (translateProtocol == 'normal') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
if (translateProtocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
if (translateProtocol == 'i2p') instancesList = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects];
if (translateProtocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects];
if (instancesList.length === 0) return;
const randomInstance = utils.getRandomInstance(instancesList)
@ -221,9 +247,13 @@ function switchInstance(url, disableOverride) {
if (![
...translateRedirects.simplyTranslate.normal,
...translateRedirects.simplyTranslate.tor,
...translateRedirects.simplyTranslate.i2p,
...translateRedirects.simplyTranslate.loki,
...simplyTranslateNormalCustomRedirects,
...simplyTranslateTorCustomRedirects,
...simplyTranslateI2PCustomRedirects,
...simplyTranslateLokiCustomReidrects,
...translateRedirects.lingva.normal,
...translateRedirects.lingva.tor,
@ -241,6 +271,14 @@ function switchInstance(url, disableOverride) {
if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
}
else if (translateProtocol == 'i2p') {
if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects];
//else if (translateFrontend == 'lingva') instancesList = [...lingvaI2PRedirectsChecks, ...lingvaI2PCustomRedirects];
}
else if (translateProtocol == 'loki') {
if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects];
//else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiRedirectsChecks, ...lingvaLokiCustomRedirects];
}
const i = instancesList.indexOf(protocolHost);
if (i > -1) instancesList.splice(i, 1);
@ -274,6 +312,10 @@ function initDefaults() {
simplyTranslateNormalCustomRedirects: [],
simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
simplyTranslateTorCustomRedirects: [],
simplyTranslateI2PRedirectsChecks: [...redirects.simplyTranslate.i2p],
simplyTranslateI2PCustomRedirects: [],
simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki],
simplyTranslateLokiCustomReidrects: [],
lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
lingvaNormalCustomRedirects: [],

View File

@ -35,9 +35,12 @@
"https://teddit.httpjames.space",
"https://teddit.encrypted-data.xyz",
"https://wiki.604kph.xyz",
"https://wikiless.lunar.icu",
"https://lingva.lunar.icu",
"https://searx.josie.lol",
"https://searx.org",
"https://searx.run",
"https://searx.albony.xyz",
"https://searx.kujonello.cf",
"https://search.albony.xyz",
"https://search.garudalinux.org",
@ -47,4 +50,4 @@
"authenticate": [
"https://nitter.nixnet.services"
]
}
}

View File

@ -14,6 +14,7 @@
"https://invidious.sethforprivacy.com",
"https://inv.bp.projectsegfau.lt",
"https://invidious.projectsegfau.lt",
"https://invidious.lunar.icu",
"https://invidious.nerdvpn.de",
"https://inv.vern.cc",
"https://invidious.slipfox.xyz",
@ -26,7 +27,6 @@
"http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion",
"http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion",
"http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion",
"http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion",
"http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion",
"http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion",
"http://euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd.onion/",
@ -377,6 +377,12 @@
"http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion",
"http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion",
"http://translate.prnoid54e44a4bduq5due64jkk7wcnkxcp5kv3juncm7veptjcqudgyd.onion"
],
"i2p": [
"http://kmnkkp4v4ublygtnyq46oacy3qw75nrxxniriuaersumw7bfsm2a.b32.i2p"
],
"loki": [
"http://translate.priv.loki"
]
},
"lingva": {
@ -397,7 +403,8 @@
"http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion",
"http://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion",
"http://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion",
"http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion"
"http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion",
"http://searx.bsbvtqi5oq2cqzn32zt4cr2f2z2rwots3dq7gmdcnlyqoxko2wx6reqd.onion"
],
"i2p": [
"http://ransack.i2p",
@ -408,6 +415,8 @@
"https://dynabyte.ca",
"https://jsearch.pw",
"https://nibblehole.com",
"https://search.antonkling.se",
"https://search.chemicals-in-the-water.eu",
"https://procurx.pt",
"https://search.ethibox.fr",
"https://search.jpope.org",
@ -427,6 +436,7 @@
"https://searx.nixnet.services",
"https://searx.openhoofd.nl",
"https://searx.org",
"https://searx.ppeb.me",
"https://searx.pwoss.org",
"https://searx.rasp.fr",
"https://searx.ru",
@ -477,7 +487,6 @@
"https://search.ashs.club",
"https://search.bingowaves.xyz",
"https://search.bus-hit.me",
"https://search.chemicals-in-the-water.eu",
"https://search.disroot.org",
"https://search.mdosch.de",
"https://search.neet.works",
@ -489,6 +498,7 @@
"https://search.unlocked.link",
"https://search.vojkovic.xyz",
"https://search.zzls.xyz",
"https://searx.albony.xyz",
"https://searx.be",
"https://searx.becomesovran.com",
"https://searx.chocoflan.net",
@ -607,6 +617,7 @@
"https://infothema.net",
"https://tube.nilsu.org",
"https://peertube.nrsk.no",
"https://peertube.today",
"https://podlibre.video",
"https://videos.tankernn.eu",
"https://watch.autonomous-zone.earth",
@ -630,8 +641,10 @@
"https://tube.nestor.coop",
"https://live.oldskool.fi",
"https://dytube.com",
"https://video.toby3d.me",
"https://tube.thierrytalbert.fr",
"https://peertube.informaction.info",
"https://peertube.thele.me",
"https://tube.ac-amiens.fr",
"https://tube.alado.space",
"https://tube.network.europa.eu",
@ -853,6 +866,7 @@
"https://tube.1o1.io",
"https://peertube.aventer.biz",
"https://videos.rights.ninja",
"https://pertur.be",
"https://tube.pilgerweg-21.de",
"https://freediverse.com",
"https://pocketnetpeertube2.nohost.me",
@ -1582,4 +1596,4 @@
"https://peertube2.cpy.re",
"https://peertube.cpy.re"
]
}
}

View File

@ -279,6 +279,7 @@ def libremdb():
_list['tor'].append(item)
else:
_list['normal'].append(item)
mightyList['libremdb'] = _list
print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Libremdb')
@ -295,6 +296,16 @@ def simplytranslate():
for item in r.text.strip().split('\n'):
simplyTranslateList['tor'].append('http://' + item)
r = requests.get('https://simple-web.org/instances/simplytranslate_i2p')
simplyTranslateList['i2p'] = []
for item in r.text.strip().split('\n'):
simplyTranslateList['i2p'].append('http://' + item)
r = requests.get('https://simple-web.org/instances/simplytranslate_loki')
simplyTranslateList['loki'] = []
for item in r.text.strip().split('\n'):
simplyTranslateList['loki'].append('http://' + item)
mightyList['simplyTranslate'] = simplyTranslateList
print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'SimplyTranslate')
@ -308,6 +319,7 @@ def linvgatranslate():
lingvaList['tor'] = []
for item in rJson:
lingvaList['normal'].append(item)
mightyList['lingva'] = lingvaList
print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'LinvgaTranslate')
@ -432,9 +444,9 @@ for k1, v1 in mightyList.items():
mightyList[k1][k2].remove(instance)
print("removed " + instance)
else:
if not instance.endswith('.onion') and not instance.endswith('.i2p') and is_cloudflare(instance):
if not instance.endswith('.onion') and not instance.endswith('.i2p') and not instance.endswith('.loki') and is_cloudflare(instance):
cloudflare.append(instance)
if not instance.endswith('.onion') and not instance.endswith('.i2p') and is_authenticate(instance):
if not instance.endswith('.onion') and not instance.endswith('.i2p') and not instance.endswith('.loki') and is_authenticate(instance):
authenticate.append(instance)
peertube()

View File

@ -1765,6 +1765,8 @@
<select id="translate-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>
<option value="loki" data-localise="__MSG_loki__">Lokinet</option>
</select>
</div>
<hr>
@ -1820,6 +1822,48 @@
</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://simplytranslate.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 class="loki">
<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://simplytranslate.loki" 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="lingva">
<div class="normal">

View File

@ -22,6 +22,8 @@ function changeFrontendsSettings() {
function changeProtocolSettings() {
const normalSimplyTranslateDiv = document.getElementById("simplyTranslate").getElementsByClassName("normal")[0];
const torSimplyTranslateDiv = document.getElementById("simplyTranslate").getElementsByClassName("tor")[0];
const i2pSimplyTranslateDiv = document.getElementById("simplyTranslate").getElementsByClassName("i2p")[0];
const lokiSimplyTranslateDiv = document.getElementById("simplyTranslate").getElementsByClassName("loki")[0];
const normalLingvaDiv = document.getElementById("lingva").getElementsByClassName("normal")[0];
const torLingvaDiv = document.getElementById("lingva").getElementsByClassName("tor")[0];
@ -29,14 +31,34 @@ function changeProtocolSettings() {
if (protocol.value == 'normal') {
normalSimplyTranslateDiv.style.display = 'block';
normalLingvaDiv.style.display = 'block';
torLingvaDiv.style.display = 'none';
torSimplyTranslateDiv.style.display = 'none';
torLingvaDiv.style.display = 'none';
i2pSimplyTranslateDiv.style.display = 'none';
lokiSimplyTranslateDiv.style.display = 'none';
}
else if (protocol.value == 'tor') {
normalSimplyTranslateDiv.style.display = 'none';
normalLingvaDiv.style.display = 'none';
torLingvaDiv.style.display = 'block';
torSimplyTranslateDiv.style.display = 'block';
torLingvaDiv.style.display = 'block';
i2pSimplyTranslateDiv.style.display = 'none';
lokiSimplyTranslateDiv.style.display = 'none';
}
else if (protocol.value == 'i2p') {
normalSimplyTranslateDiv.style.display = 'none';
normalLingvaDiv.style.display = 'none';
torSimplyTranslateDiv.style.display = 'none';
torLingvaDiv.style.display = 'none';
i2pSimplyTranslateDiv.style.display = 'block';
lokiSimplyTranslateDiv.style.display = 'none';
}
else if (protocol.value == 'loki') {
normalSimplyTranslateDiv.style.display = 'none';
normalLingvaDiv.style.display = 'none';
torSimplyTranslateDiv.style.display = 'none';
torLingvaDiv.style.display = 'none';
i2pSimplyTranslateDiv.style.display = 'none';
lokiSimplyTranslateDiv.style.display = 'block';
}
}
@ -66,10 +88,12 @@ translate.addEventListener("change", () => {
})
utils.processDefaultCustomInstances('translate', 'simplyTranslate', 'normal', document)
utils.processDefaultCustomInstances('translate', 'simplyTranslate', 'normal', document);
utils.processDefaultCustomInstances('translate', 'simplyTranslate', 'tor', document);
utils.processDefaultCustomInstances('translate', 'simplyTranslate', 'i2p', document);
utils.processDefaultCustomInstances('translate', 'simplyTranslate', 'loki', document);
utils.processDefaultCustomInstances('translate', 'lingva', 'normal', document);
utils.processDefaultCustomInstances('translate', 'lingva', 'tor', document);
utils.latency('translate', 'simplyTranslate', document, location, true)
utils.latency('translate', 'lingva', document, location, true)
utils.latency('translate', 'lingva', document, location, true)

View File

@ -17,6 +17,8 @@ section#translate_page.option-block
select#translate-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
option(value="loki" data-localise="__MSG_loki__") Lokinet
hr
#simplyTranslate
@ -28,6 +30,13 @@ section#translate_page.option-block
.tor
include ../../widgets/instances.pug
+instances('http://hxecvvetgrznmprg.onion')
.i2p
include ../../widgets/instances.pug
+instances('http://simplytranslate.i2p')
.loki
include ../../widgets/instances.pug
+instances('http://simplytranslate.loki')
#lingva
.normal
include ../../widgets/instances.pug